Está en la página 1de 25

Informe Investigativo

Algorítmica

 Unidad I: Conceptos Básicos

1. Problema:
un problema computacional o problema abstracto es una relación entre un conjunto de
instancias y un conjunto de soluciones. Un problema abstracto permite establecer
formalmente la relación deseada entre cada instancia del problema y su correspondiente
solución. Un problema abstracto se convierte en un problema concreto cuando las
instancias y soluciones están codificadas en forma de lenguajes formales.

Un problema algorítmico consiste de:

 Un problema a resolver.
 Una entrada, que nos dice cuáles o cómo son las instancias que esperamos
resolver.
 Una salida que nos dice qué es lo que esperamos obtener y con qué
características.

Los problemas abstractos suelen definirse en dos partes: en la primera se describe al


conjunto de instancias y en la segunda se describe la solución esperada para cada
instancia. Por ejemplo, el problema de ordenación de números enteros se suele definir
como sigue:

 Instancia: Una sucesión finita de números enteros (a1,a2,…a n)


 Solución: Una permutación (a´1,a´2,…a´n) de la sucesión de entrada tal que (a´1 <
a´2 < … < a´n)
2. Lógica:

Es una versión abreviada dé instrucciones reales para las computadoras: es una técnica
para diseños de programas que permiten definir las estructuras de datos, las operaciones
que se aplicaran a los datos y la lógica que tendrá el programa de computadora para
solucionar un determinado problema.
metodología para la solución de problemas:
Para resolver plantear una posible solución de cualquier tipo de problema existen
diferentes tipos de problemas según el caso. En la solución propuesta para resolver
problemas por computadora, existe una metodología de 7 pasos:
1: Deducción o planteamiento del problema
2: Análisis del problema
3: Diseño del algoritmo
4: Codificación
5: Prueba y depuración
6: Documentación
7: Mantenimiento

3. Algoritmo:

Un algoritmo es una secuencia de instrucciones secuenciales, gracias al cual pueden


llevarse a cabo ciertos procesos y darse respuesta a determinadas necesidades o
decisiones. Se trata de conjuntos ordenados y finitos de pasos, que nos permiten resolver
un problema o tomar una decisión.

Los algoritmos no tienen que ver con los lenguajes de programación, dado que un mismo
algoritmo o diagrama de flujo puede representarse en diversos lenguajes de
programación, es decir, se trata de un ordenamiento previo a la programación.

Visto así, un programa no es otra cosa que una serie compleja de algoritmos ordenados y
codificados mediante un lenguaje de programación para su posterior ejecución en
un computador.
Tipos de algoritmos:

 Algoritmos computacionales. Un algoritmo cuya resolución depende del cálculo, y


que puede ser desarrollado por una calculadora o computadora sin dificultades.
 Algoritmos no computacionales. Aquellos que no requieren de los procesos de un
computador para resolverse, o cuyos pasos son exclusivos para la resolución por
parte de un ser humano.
 Algoritmos cualitativos. Se trata de un algoritmo en cuya resolución no
intervienen cálculos numéricos, sino secuencias lógicas y/o formales.

 Algoritmos cuantitativos. Todo lo contrario, es un algoritmo que depende de


cálculos matemáticos para dar con su resolución.
 Algoritmos de búsqueda: Estos localizan uno o varios elementos que representen
una serie de propiedades dentro de una estructura de datos.
 Algoritmos de ordenamiento: Reorganizan los elementos de un listado según una
relación de orden. Estos destacan el ordenamiento por inserción, por mezcla, por
selección, de burbuja y el ordenamiento rápido.
 Programación dinámica: Este método reduce el tiempo de ejecución de un
algoritmo, al dividir problemas en subproblemas y almacenar su solución, para que
no haya que volver a calcularlos.
 Algoritmos voraces: Adoptan la decisión óptima en cada paso local con el objetivo
de llegar a la mejor solución global.
 Algoritmos probabilísticos: Utilizan un cierto grado de azar para proporcionar un
resultado. De media proporcionan una buena solución al problema

Características de los algoritmos:

 Precisos: Son objetivos, no tienen ambigüedad.


 Ordenados: Presentan una secuencia clara para poder llegar a la solución.
 Finitos: Contienen un número específico de pasos.
 Concretos: Ofrecen una solución determinada para la situación o problema
planteado.
 Definidos: El mismo algoritmo debe dar el mismo resultado al recibir la misma
entrada

Todo algoritmo debe tener tres partes:

 Entrada: Información dada al algoritmo, o conjunto de instrucciones que generen


los valores con que ha de trabajar, en caso de que no tenga datos de entrada.
 Proceso: Cálculos necesarios para que a partir de un dato de entrada se llegue a
los resultados.
 Salida: Resultados finales o transformaciones que ha sufrido la información de
entrada a través del proceso.
4. Desarrollo de algoritmos cualitativos:
Los algoritmos cualitativos son aquellos que se realizan por medio de las palabras, lo que
quiere decir que las órdenes vienen dadas en forma verbal. Los algoritmos cualitativos son
todos aquellos algoritmos en los que los pasos que lo componen se describen de una
forma narrada con un lenguaje natural.

Los algoritmos cualitativos se emplean con frecuencia en la vida cotidiana para resolver
problemas. Por ejemplo: las instrucciones de uso que traen los equipos electrónicos, las
instrucciones para el montaje de un equipo, las técnicas de laboratorio para evaluar
ácidos, etc.

Un algoritmo cualitativo podrá tener tanto detalle como se quiera. Además, para alcanzar
el mismo objetivo podrán tomarse distintos algoritmos o caminos.

Pasos a seguir para elaborar un algoritmo cualitativo:

 Se debe leer la formulación del problema tantas veces como sea necesario, hasta
poder entenderlo por completo. En caso de tener alguna duda sobre el significado
de alguna condición o pregunta debe ser aclarada. Lo ideal sería aprender el
enunciado de memoria.
 Se debe establecer con claridad cuáles son los datos de entrada con los que se
cuenta para la resolución del problema.
 Determinar y aclarar los resultados o la información que sea solicitada, tanto en los
niveles intermedios como al final.

5. Componentes de un algoritmo cuantitativo:


Los algoritmos cuantitativos son aquellos algoritmos que utilizan operaciones algebraicas
y cálculos numéricos específicos para definir un proceso, obteniendo valores concretos.
Por ejemplo, el resultado de una resta o una multiplicación. Por su parte los algoritmos
cuantitativos son aquellos que se realizan por medio de cálculos matemáticos.

Partes de un algoritmo cuantitativo:

Todo algoritmo cuenta con tres partes bien diferenciadas: entrada, proceso y salida. Esto
permite que el proceso tenga un ordenamiento secuencial, lo cual disminuye en gran
medida la gama de posibles errores, ayudando a solucionar más fácil y más rápido los
problemas que se planteen.
 Entrada: corresponde a las instrucciones iniciales que dan pie al algoritmo, en el
cual se toman los datos iniciales y se motiva a que se lea. Se le puede llamar
también punto de partida, inicio o cabecera.
 Proceso: se refiere a las elaboraciones cuantitativas que el algoritmo ofrece
puntualmente. Es el cuerpo correspondiente donde se realiza la formulación de las
instrucciones. Se le puede llamar también secuencia de declaraciones.
 Salida: finalmente, se encuentran las instrucciones puntuales que el algoritmo
dictamina para mostrar sus resultados, es decir, sus resoluciones o comandos. Se
le puede llamar también fin o pie.

Pasos a seguir para elaborar un algoritmo cuantitativo

Todos estos pasos poseen la misma importancia. Si se deja de analizar alguno de ellos se
tendrán problemas durante el desarrollo del algoritmo.

1. Primer paso

Definir qué comparaciones y/o cálculos numéricos son necesarios para poder alcanzar el
resultado final:

 Todas las comparaciones y cálculos numéricos intermedios.


 Todas las comparaciones y cálculos numéricos finales.

2. Segundo paso

Tomar en consideración todos los tipos de restricciones y condiciones para poder llegar a
la solución del problema.

Diferencias con algoritmo cualitativo:

Exactitud

Los algoritmos cuantitativos son bastante precisos, ya que las instrucciones que se deben
dar para efectuar los correspondientes cálculos numéricos deben ser bastante exactos
para poder obtener el resultado deseado, tal como se caracteriza el lenguaje matemático.

Por otro lado, los algoritmos cualitativos tienen más propensión a que hayan obviado
algún paso o a que puedan ser malinterpretados por el lector, debido a que el lenguaje
narrativo con que se indican las instrucciones puede tener ciertas imprecisiones
intrínsecas.
Pasos o instrucciones

Los algoritmos son cuantitativos cuando tienen instrucciones o pasos que involucran
cualquier tipo de cómputo numérico. Por ejemplo, el algoritmo para resolver el área de un
triángulo, para solucionar la factorial de un número natural o para calcular el promedio de
unos datos.

Por otro lado, los algoritmos son cualitativos cuando en sus instrucciones o pasos no se
tienen involucrados cálculos numéricos. Ejemplos: las instrucciones para realizar una
receta de cocina, para realizar una actividad física o para ensamblar un aparato que viene
desarmado de fábrica.

6. Datos:
Es un conjunto de reglas que hay que seguir para realizar una tarea o resolver un problema.
Información sobre algo concreto que permite su conocimiento exacto o sirve para deducir
las consecuencias derivadas de un hecho.

Un dato es una representación simbólica (numérica, alfabética, algorítmica, espacial, etc.)


de un atributo o variable cuantitativa o cualitativa. Los datos describen hechos empíricos,
sucesos y entidades. Es un valor o referente que recibe el computador por diferentes
medios, los datos representan la información que el programador manipula en la
construcción de una solución o en el desarrollo de un algoritmo.

Estos (o este) dato/s, pueden describir y codificar, pues, información relativa a cantidad,
cualidad, hechos, información estadística, y otras formas básicas de unidades simbólicas y
de significado. Incluso el dato puede construirse a partir de un símbolo o una serie de
símbolos, para ser interpretados posteriormente, surgiendo aplicaciones como la
criptografía. El dato en sí, se puede considerar como la unidad individual en el conjunto de
datos

TIPOS DE DATOS:

un tipo de dato informático o simplemente tipo es un atributo de los datos que indica al
ordenador (y/o al programador/programadora) sobre la clase de datos que se va a
manejar. Esto incluye imponer restricciones en los datos, como qué valores pueden tomar
y qué operaciones se pueden realizar.

Los tipos de datos más comunes son: números enteros, números con signo(negativos),
números de coma flotante (decimales), cadenas alfanuméricas (y Unicode), estados, etc.
Un tipo de dato es un espacio en memoria con restricciones. Por ejemplo, el tipo "int"
representa, generalmente, un conjunto de enteros de 32 bits cuyo rango va desde el -
2.147.483.648 al 2.147.483.647, así como las operaciones que se pueden realizar con los
enteros, como son la suma, la resta, y la multiplicación. Los colores, por su parte, se
representan como tres bytes denotando la cantidad de rojo, verde y azul, y una cadena de
caracteres representando el nombre del color (en este caso, las operaciones permitidas
incluyen la adición y la sustracción, pero no la multiplicación).

En un sentido amplio, un tipo de datos define un conjunto de valores y las operaciones


sobre esos valores. Casi todos los lenguajes de programación explícitamente incluyen la
notación del tipo de datos, aunque lenguajes diferentes pueden usar terminologías
diferentes. La mayor parte de los lenguajes de programación permiten al programador
definir tipos de datos adicionales, normalmente combinando múltiples elementos de
otros tipos y definiendo las operaciones del nuevo tipo de dato. Por ejemplo, un
programador puede crear un nuevo tipo de dato llamado "Persona", contemplando que el
dato interpretado como "Persona" incluya un nombre y una fecha de nacimiento.

Un tipo de dato puede ser también visto como una limitación impuesta en la
interpretación de los datos en un sistema de tipificación, describiendo la representación,
la interpretación y la estructura de los valores u objetos almacenados en la memoria del
ordenador. El sistema de tipificación usa información de los tipos de datos para
comprobar la verificación de los programas que acceden o manipulan los datos.

Tipos de datos primitivos (o elementales)

Los tipos de datos hacen referencia al tipo de información que se trabaja, donde la unidad
mínima de almacenamiento es el dato, también se puede considerar como el rango de
valores que puede tomar una variable durante la ejecución del programa.

Caracteres

El tipo de dato carácter es un dígito individual el cual se puede representar como


numéricos (0 al 9), ¡letras (a-z) y símbolos (!"$&/\).

Caracteres Unicode

El tipo de dato carácter Unicode es una "extensión" del tipo de dato carácter, permite
ampliar los símbolos de escritura, provee exactamente hasta 65535 caracteres diferentes.

Nota: En el lenguaje java la codificación Unicode permite trabajar con todos los caracteres
de distintos idiomas.
Numéricos

Este tipo de dato puede ser real o entero, dependiendo del tipo de dato que se vaya a
utilizar.

Enteros: son los valores que no tienen punto decimal, pueden ser positivos o negativos y
el cero.

Reales: estos caracteres almacenan números muy grandes que poseen parte entera y
parte decimal.

Booleanos

Este tipo de dato se emplea para valores lógicos, los podemos definir como datos
comparativos dicha comparación devuelve resultados lógicos (Verdadero o Falso).

Tipos compuestos

Los tipos compuestos se derivan de uno o más datos primitivos. A las distintas maneras de
formar o combinar estos datos se les conocen con el nombre de “Estructura de datos”. Al
combinarlo podemos crear un nuevo tipo, por ejemplo:

"array-de-enteros" es distinto al tipo "entero".

 Un Vector (o arreglo del original en inglés array) almacena un número de


elementos del mismo tipo en un orden específico. Los arrays pueden ser estáticos
(con una medida fija) o dinámicos (crecer durante su ciclo de vida).
 Un Registro o Tupla.
 Un Conjunto.

Esos espacios internos de la memoria son grupos de bits biestables denominados campos;
a éstos se les asigna una única dirección de memoria y su capacidad o valor máximo que
se puede almacenar en ellos dependerá del tamaño del grupo. Los campos pueden ser de
dos clases:

 Campos variables.
 Campos constantes.

CAMPOS VARIABLES:
Son todos aquellos campos que permiten que el contenido almacenado en el espacio de
memoria asignado, pueda ser alterado en el transcurso de la ejecución del programa; o
sea, en un momento tiene un valor y más adelante puede tener otro distinto, pero nunca
más de un valor al mismo tiempo. Esta clase de campos, que en lo sucesivo se
denominarán simplemente variables, se identifican por un nombre con el cual actúan
durante todo el transcurso del proceso, por lo tanto, deben ser únicos. El nombre dado a
la variable debe iniciar con una letra seguida, si se quiere, de letras o dígitos. Es el
programador quien da nombre a sus variables teniendo en cuenta la regla anterior.

Clasificación de las variables

 Por su Contenido

Variable Numéricas: Son aquellas en las cuales se almacenan valores numéricos, positivos
o negativos, es decir almacenan números del 0 al 9 y el punto decimal.

Ejemplo: IVA<-0.15, pi <- 3.1416, costo<-2500

Variables Lógicas: Son aquellas que solo pueden tener dos valores (verdadero o falso),
estos representan el resultado de una comparación entre otros datos.

Variables Alfanuméricas: Está formada por caracteres alfanuméricos (letras, números y


caracteres especiales).

Ejemplo: ‘H’, «hola mundo», ‘F’

 Por su Uso

Variables de Trabajo: Variables que reciben el resultado de una operación matemática


completa y que se usan normalmente dentro de un programa. Ejemplo:

Suma <- a + b /c

Variables Contadores: Se utilizan para llevar el control del número de ocasiones en que se
realiza una operación o se cumple una condición.

Variables Acumuladores: Forma que toma una variable y que sirve para llevar la suma
acumulativa de una serie de valores que se van leyendo o calculando progresivamente.

CAMPOS CONSTANTES:
Es otra forma de manejar el grupo de elementos asignados en memoria, pero que a
diferencia de las variables su contenido no puede cambiar durante el proceso. Esta clase
de campos se identifica directamente por la información que tiene almacenada y es
asignada desde el momento en que se hace la compilación. Pueden existir campos
constantes, o simplemente constantes, de tipo numérico, carácter o lógico. Por ejemplo: Pi
<- 3.1416.
7. Operadores:
Operadores: Son elementos que relacionan de forma diferente, los valores de una o más
variables y/o constantes. Es decir, los operadores nos permiten manipular valores.

Tipos de Operadores:

 Aritméticos
 Lógicos
 Relacionales

Operadores Aritméticos: Permiten la realización de operaciones matemáticas con los


valores (variables y constantes), pueden ser utilizados con tipos de datos enteros o reales.

Operadores Relacionales: Permiten realizar comparaciones de tipo numérico, carácter o


lógico, y tienen la misma prioridad en su evaluación.

 Se utilizan para establecer una relación entre dos valores.


 Compara estos valores entre si y esta comparación produce un resultado
(verdadero o falso).
 Los operadores relacionales comparan valores del mismo tipo (numéricos o
cadenas).
 Tienen el mismo nivel de prioridad en su evaluación.
 El operador relacional tiene menor prioridad que los aritméticos.

Operadores Lógicos: Operan sobre información lógica, uniendo condiciones simples para
formar condiciones compuestas.

8. Comandos:
Un comando es dictar una orden capaz de ser interpretada y procesada por el lenguaje
informático, teniendo una importancia a nivel de interacción con la PC, y con el tiempo
relegado a la configuración y optimización para acceder a los bastidores de la
performance, generalmente listos para salvarnos cuando el sistema colapsa.

Función de la línea de comandos

Para abrir una ventana con una línea de comandos y poder trabajar con ella, debemos
buscar el icono de la aplicación correspondiente a la línea de comandos de la siguiente
forma:
 En Windows: podemos optar por la forma más rápida, que es introduciendo el
texto CMD en el cuadro de búsqueda, con lo que nos saldrá un único resultado
consistente en un icono que parece un cuadro negro en el que hay algo escrito en
blanco. O bien podemos optar por buscar su icono, llamado “Símbolo del sistema”.

 En macOS: tendremos que ir a la carpeta de aplicaciones y, en esta, buscar el icono


Terminal que está en la carpeta Utilidades.

 En Linux o Unix: cada distribución puede ser un caso diferente de las demás, pero
en general hay que buscar un icono en las utilidades del sistema llamado
“intérprete de comandos” o “línea de comandos”.

Diferencia entre comandos internos y externos

En la práctica del MS-DOS se distinguen dos clasificaciones, una a nivel interno que implica
que la ejecución de los mismos puede llevarse a cabo en cualquier momento,
independientemente si está cargado o no el MS-DOS porque actúan en la memoria, y un
otro grupo denominado de nivel externo, porque necesitan que el sistema cargue los
archivos correspondientes para que su funcionalidad tenga efecto.

9. Estructuras de control:
Las estructuras de control son el conjunto de reglas que permiten controlar el flujo de
ejecución de las instrucciones de un algoritmo o de un programa.

La mayoría de los lenguajes de programación actuales soportan o utilizan las mismas


estructuras de control o, al menos, son muy parecidas. Lo que varía entre uno y otro es la
sintaxis con la que se escriben y, por lo tanto, con la que los compiladores o intérpretes lo
traducen a lenguaje de máquina.

¿Para qué sirven las estructuras de control?

Las estructuras de control nos dan el poder de alterar, controlar o modificar el orden o el
flujo en el que se ejecutan las instrucciones de un software a voluntad. Gracias a las
estructuras de control podemos abstraer algoritmos o secuencias de instrucciones en un
software para lograr su objetivo.

Pronto verás los tipos básicos de estructuras de control con ejemplos. Vale la pena señalar
que los ejemplos no se escribirán en un lenguaje de programación en específico, sino que se
mostrarán a modo de pseudocódigo para explicar el concepto general y no atarlo a la
sintaxis de un lenguaje en particular

tipos de estructuras de control

Secuenciales o de secuencia

Esta es la estructura básica, ya que nos permite asegurar que una instrucción se ejecuta
después de la otra siguiendo el orden en que fueron escritas. Es la base de la
programación estructurada. De ahí que el comando GOTO sea desestimado como una
buena práctica: un programa bien pensado, diseñado e implementado no necesitará esta
sentencia.

Selectivas, de selección o condicionales

Este tipo de estructuras de control nos sirven cuando necesitamos que se evalúe el valor
de alguna variable o de alguna condición para decidir qué instrucciones ejecutar a
continuación.

Selectivas simples

Evalúan un valor o una condición y determinan las instrucciones a ejecutar en caso de


cumplirse la condición.

Selectivas dobles

Evalúan un valor o una condición. Determinan las instrucciones a ejecutar en caso de


cumplirse la condición y también las instrucciones a ejecutar en caso de no cumplirse.

Selectivas múltiples o anidadas

Permiten combinar selectivas simples y dobles para crear estructuras y condiciones más
complejas cuando el algoritmo en cuestión lo necesite.

Iterativas, de iteración, de repetición o repetitivas

Este tipo de estructuras de control nos sirven cuando necesitamos que se ejecute un
conjunto específico de instrucciones en diversas ocasiones. La cantidad de veces que se
repite dicho bloque de acciones puede ser estático o puede depender del valor de alguna
variable o de alguna condición.

Iterativas con cantidad fija de iteraciones

Se utilizan cuando a priori se conoce la cantidad de ocasiones que debe repetirse un


bloque de instrucciones. Normalmente, usan una variable de iteración o índice para
contar la cantidad de repeticiones que se han realizado.

El valor inicial <valor1> de la <variable> irá aumentando o disminuyendo según el paso


<valor3> hasta llegar al valor <valor2>. Si no se especifica el valor de paso, se
sobrentiende que el aumento es de uno en uno.

Iterativas con cantidad variable de iteraciones

Se utilizan cuando la cantidad de ocasiones que debe repetirse un bloque de instrucciones


está determinada por una condición. Por lo regular, existen dos variantes: repetir un
bloque de instrucciones mientras se cumpla una condición o repartirlo hasta que se
cumpla una condición.

 Unidad II: Operadores y expresiones

1.- Operador asignación:


Los operadores de asignación almacenan un valor en el objeto especificado por el
operando izquierdo. Hay dos tipos de operaciones de asignación: asignación simple, en la
que el valor del segundo operando se almacena en el objeto especificado por el primer
operando.

Asignación simple

El operador de asignación simple (=) hace que el valor del segundo operando se almacene
en el objeto especificado por el primer operando. Si ambos objetos son de tipos
aritméticos, el operando derecho se convierte al tipo de la izquierda antes de almacenar el
valor.

Los objetos de const y volatile se pueden asignar a valores L de tipos que solo son volatile,
o que no son const o volatile.
La asignación a objetos de tipo de clase (struct, unión y class) se realiza mediante una
función denominada operator=. El comportamiento predeterminado de esta función de
operador es realizar una asignación de copia basada en miembros de los miembros de
datos no estáticos del objeto y clases base directas; sin embargo, este comportamiento se
puede modificar mediante operadores sobrecargados. Para obtener más información, vea
Sobrecarga de operadores. Los tipos de clase también pueden tener operadores de
asignación de copia y asignación de movimiento. Para obtener más información, consulte
Copiar constructores y copiar operadores de asignación y Mover constructores y mover
operadores de asignación.

Asignación compuesta

Los operadores de asignación compuesta se muestran en la tabla Operadores de


asignación. Estos operadores tienen el formato e1op= e2, donde e1 es un valor L
modificable que noconst es y e2 es:

 un tipo aritmético
 un puntero, si op es + o -
 un tipo para el que existe una sobrecarga coincidente operator *op*= para el tipo
de e1

El formulario integrado e1op= e2 se comporta como e1=e1ope2, pero e1 solo se evalúa


una vez.

La asignación compuesta a un tipo enumerado genera un mensaje de error. Si el operando


izquierdo tiene el tipo de puntero, el operando derecho debe tener el tipo de puntero o
debe ser una expresión de constante que se evalúa como 0. Cuando el operando izquierdo
es de tipo integral, el operando derecho no debe ser de tipo apuntador.

2.- operadores aritméticos:


Los operadores aritméticos se usan para calcular un valor de dos o más números, o cambiar
el signo de un número de positivo a negativo o viceversa.

Operador Propósito Ejemplo


+ Suma dos números. [Subtotal]+[ImpuestoSobreVentas]
Busca la diferencia entre dos números o
- [Precio]-[Descuento]
indica el valor negativo de un número.
* Multiplica dos números. [Cantidad]*[Precio]
Operador Propósito Ejemplo
/ Divide el primer número entre el segundo. [Total]/[RecuentoDeElementos]
Redondea ambos números a enteros,
\ divide el primer número entre el segundo [Registradas]\[Salas]
y, después, trunca el resultado a un entero.
Divide el primer número entre el segundo y
Resto [Registradas] Resto [Salas]
después devuelve únicamente el resto.
Eleva un número a la potencia de un
^ Número ^ Exponente
exponente.

Operadores Aritméticos y su prioridad

Prioridad Operador Significado Ejemplo


1 () Paréntesis (2+3)*5 = 25
^ Exponenciación 4^2 = 16
2 √ Radicación √9 = 3
MOD Residuo de la división 5 MOD 2 = 1
* Multiplicación 2*4 = 8
3
/ División 5/2 = 2.5
+ Suma 3+4=7
4
- Resta 8-5=3

3.-Operadores relacionales:
Los operadores relacionales son símbolos que se usan para comparar dos valores. Si el
resultado de la comparación es correcto la expresión considerada es verdadera, en caso
contrario es falsa.

La comparación, 8>4 (ocho mayor que cuatro) es verdadera, se representa por el valor 1,
en cambio, 8<4 (ocho menor que cuatro) es falsa, se representa por el valor 0. En la
primera columna de la tabla, se dan los símbolos de los operadores relacionales, en la
segunda, el nombre de dichos operadores, y a continuación su significado mediante un
ejemplo.

Operador Nombre Ejemplo Significado


< menor que a<b a es menor que b
> mayor que a>b a es mayor que b
== igual a a==b a es igual a b
~= no igual a a~=b a no es igual a b
<= menor que o igual a a<=5 a es menor que o igual a b
>= mayor que o igual a a>=b a es menor que o igual a b

MATLAB no dispone del tipo de dato boolean (true, false), si la expresión es verdadera da
como resultado 1, si es falsa da como resultado 0.

>> 5>4
ans = 1
>> 5>6
ans = 0

El carácter ~ se obtiene manteniendo pulsada la tecla Alt y pulsando en el teclado


numérico las teclas 126. Corresponde al carácter ASCII decimal 126.

Se debe tener especial cuidado en no confundir el operador asignación con el operador


relacional igual a. Las asignaciones se realizan con el símbolo =, las comparaciones con ==.

Si dos escalares a y b se comparan el resultado puede ser verdadero (1) o falso (0) de
acuerdo con la tabla anterior.

Si a y b son vectores de la misma dimensión, se compara cada elemento a(i) con b(i) el
resultado es que el elemento (i) del vector resultado u(i) puede contener un 1 ó 0.

Si se comparan dos matrices (de las mismas dimensiones) la comparación se hace


elemento a elemento y el resultado es otra matriz de la misma dimensión con unos y
ceros de acuerdo con el resultado de la comparación.

>> a=[15 6 9 4 11 7 14]


a= 15 6 9 4 11 7 14
>> b=[8 20 9 2 19 7 10]
b= 8 20 9 2 19 7 10
>> u=a>=b
u=
1 0 1 1 0 1 1

Un vector o una matriz como u que contiene unos y ceros es un tipo especial de vector o
matriz denominado lógico y se utiliza mucho en MATLAB. Sirven para evaluar expresiones
compuestas de tipo lógico, cuyo resultado, por tanto, resultará cierto o falso, true o false.
4.-Operadores lógicos:
Este tipo de operadores permite obtener solo dos resultados, por lo que se conocen
también como booleanos, porque hacen uso de los principios del álgebra de Boole. Los
resultados son Verdadero o Falso. La sintaxis especifica una serie de reglas de
construcción que deberán cumplir las fórmulas para ser sintácticamente correctas. Los
elementos que estudiaremos en una fórmula, en lógica proposicional son:

 Símbolos: p, q, r...

 Operadores: negación, conjunción, disyunción, condicional, disyunción exclusiva

 Paréntesis: ()

Las reglas de construcción sintácticas son:

 Un símbolo sólo no es una fórmula

 Los operadores unarios se anteponen al símbolo. Los operadores binarios se sitúan


entre los símbolos.

 Los paréntesis han de estar bien formados, y ha de haber tantos paréntesis de


abertura como de cierre:

o Son correctos: (p), p and (q), p or ((not q) and r) ...

o No son correctos: (), (p (or) q), p and (q or (not r) ...

 Son fórmulas:

o p, not p, p and q, p xor (not q), not (p -> q) ...

Hemos hablado de operadores unarios y binarios. Los primeros afectan sólo a un símbolo
o fórmula, en cambio los segundos afectan a los 2 símbolos o fórmulas que haya a su
izquierda y derecha.

Una fórmula es cualquier combinación de elementos que cumplan las reglas sintácticas.
Por ejemplo, si tengo un símbolo p: "hace frío". La fórmula not p equivale a "no hace frío".

De los símbolos no hay nada más que decir, son letras minúsculas del alfabeto. En cuanto
a los operadores lógicos, no vamos a verlos todos, sólo los necesarios para comprender la
lógica que después aplicaremos a la programación. Cada operador está representado por
un símbolo:
Tabla de prioridad (precedencia) y asociatividad de los operadores de mayor a menor
prioridad:

Nota: Aunque los paréntesis no son un operador, se han considerado ya que son los
primeros que se interpretan.

La asociatividad de los operadores indica cómo se evalúan las expresiones. Por ejemplo, el
operador not se evalúa de derecha a izquierda, en la expresión not p se evalúa p, y
después se aplica la negación de p. Sin embargo, el operador and se evalúa de izquierda a
derecha, en la expresión p and q se evalúa p, y después se evalúa p and q. Esto puede
parecer inútil, pero sabiendo que 0 and cualquier valor siempre es 0, si evaluamos p and
q, y p es 0, no hace falta evaluar q.

Los operadores se interpretan según su prioridad para la correcta agrupación de las


expresiones. Primero los de mayor prioridad y después los de menor prioridad. Es decir,
ante la fórmula not p or q podríamos dudar si interpretarla (not p) or q o not (p or q). La
fórmula correcta es la primera, ya que el operador not tiene más prioridad que el
operador or. De todas formas, ante la duda, es mejor utilizar paréntesis.

Lo primero es asignar símbolos. Se pone un símbolo por cada acción simple que no se
puede descomponer en otras:
 p: Llueve

 q: Me mojo

 r: Tengo un paraguas

Ahora pasamos a formalizar las sentencias:

not p
p -> q
r -> p
((not p) and (r)) -> not q

Propiedades

Algunos conectivos lógicos tienen propiedades que se pueden expresar en teoremas que
contienen el conectivo. Algunas de estas propiedades que una conectiva lógica puede
tener son:

 Asociatividad: En una expresión que contiene dos o más del mismo conectivo
asociativo en una línea, el orden de las operaciones, no importa, siempre y cuando
la secuencia de los operandos no cambia.

 Conmutatividad: Los operandos del conectivo pueden ser intercambiados (uno por
el otro), mientras que la preservación de
equivalencia lógica de la expresión original.

 Distributividad: Un conectivo denotado por · distribuye sobre otra que conecta


denotado por el signo +, · si a · (b + c) = (a · b) + (a · c) para todos los operandos a,
b, c.

 Idempotencia: Cuando los operandos de una operación son iguales, el compuesto


es lógicamente equivalente al operando.

 Absorción: Un par de conectivos and, or satisface la ley de absorción si a and (a or


b) = a para todos los operandos a, b.

 Afinidad: Cada variable siempre hace una diferencia en el valor de verdad de la


operación o nunca hace una diferencia.

 Dualidad: Para leer las asignaciones de valores de verdad para la operación desde
arriba hacia abajo en su tabla de verdad es lo mismo que tomar el complemento
de lectura de la tabla de la misma u otra conectiva desde abajo hacia arriba.
 Preservación de la verdad: El compuesto todos los argumentos son tautologías es
una tautología en sí.

 Falsedad de preservación: El compuesto de todos los argumentos son


contradicciones es una contradicción en sí.

 Involutividad (para conectivos unarios): f(f(a)) = a. Por ejemplo, negación en la


lógica clásica

Lenguaje natural

En la gramática de los lenguajes naturales, dos frases pueden unirse mediante una
conjunción gramatical para formar una oración gramaticalmente compuesta. Algunas de
estas conjunciones gramaticales, pero no todas, son funciones de verdad. Por ejemplo,
considere las siguientes frases:

A: Juan subió la montaña.


B: Eduardo subió la montaña.
C: Juan subió la montaña y Eduardo subió la montaña.
D: Juan subió la montaña, por lo tanto, Eduardo subió la montaña.

Las expresiones «y» y «por lo tanto» son conjunciones gramaticales que unen las
oraciones (A) y (B) para formar las oraciones compuestas (C) y (D). La y de (C) es un
conector lógico, ya que da el valor de verdad de (C) que está completamente determinado
por el valor de (A) y (B), tiene sentido para el estado (A) y (B) con el resultado (C). Del
mismo modo, por lo tanto, en (D) es conector lógico, ya que para (A) y (B) con el resultado
(D).

Lenguajes formales

En los lenguajes formales, las funciones de verdad son representadas por símbolos
inequívocos. Estos símbolos se llaman "conectivos lógicos", "operadores lógicos",
"operadores proposicionales", o, en la lógica clásica, la "de funciones conectivos de
verdad." Véase fórmulas bien formadas para saber las reglas que permiten las nuevas
fórmulas bien formadas sean construidas al juntar otras fórmulas bien formadas utilizando
conectivos de funciones de verdad.

Los conectivos lógicos pueden ser utilizados para conectar más de dos afirmaciones,
entonces es común hablar de "conector lógico n-ario".

Ejemplo Análogo Ejemplo de uso en Tabla de


Conectiva Notación
de uso natural el lenguaje natural verdad
Negación no No está lloviendo.

Está lloviendo y la calle está


Conjunción y
mojada.

Está lloviendo o la calle está


Disyunción o
mojada.

Condicional si... Si está lloviendo, entonces


material entonces la calle está mojada.

Está lloviendo si y solo si la


Bicondicional si y solo si
calle está mojada.

Negación Ni está lloviendo ni la calle


ni... ni
conjunta está mojada.

Disyunción o bien... o O bien está lloviendo, o bien


excluyente bien la calle está mojada.
Lista de conectivos lógicos comunes
Lista de conectivos lógicos Valor de verdad Diagrama
comunes Nombre / Símbolo
P= 0 1 desmall

Conectivos lógicos
Verdad/Tautología ⊤ 1 1
comúnmente usados:
Falso/Contradicción ⊥ 0 0
 Negación (no): ¬, ~
 Conjunción lógica (y): Proposición P 0 1
∧, y, ∙
 Disyunción lógica (o): Negación ¬ 1 0

Conectivos binarios Q= 0 1 0 1
En el caso de la
disyunción 'o', tiene Conjunción ∧ 0 0 0 1
dos significados
Conjunción Opuesta ↑ 1 1 1 0
diferentes: "Inclusivo"
y "Exclusivo". Disyunción ∨ 0 1 1 1
Inclusivo: En este caso,
para que la Disyunción Opuesta ↓ 1 0 0 0
proposición sea cierta,
Condicional material → 1 1 0 1
tiene que ser
verdadero uno o todos
O exclusivo 0 1 1 0
los elementos de la
premisa.
Bicondicional ↔ 1 0 0 1
Exclusivo: El 'o'
exclusivo o Xor. En una Implicación Opuesta ← 1 0 1 1
premisa, p o q es
Proposición P 0 0 1 1
verdadero, pero no
ambos pueden serlo. Proposición Q 0 1 0 1

 Condicional material
(Si... entonces): →, ⇒, ⊃
 Bicondicional (si y solo sí): ↔, ≡, =

Nombres alternativos para bicondicional son "sii", "xnor" y "bi-implicación."

Por ejemplo, el significado de los estados está lloviendo y estoy en el interior se


transforma cuando los dos se combinan con conectivos lógicos:

 Está lloviendo (P)


 Está lloviendo y estoy dentro de casa (P ∧ Q)
 Está lloviendo o estoy dentro de casa (P ∨ Q)
 Si está lloviendo, entonces estoy en casa. (P → Q)
 Si estoy en casa, entonces está lloviendo. (P ← Q)
 Estoy dentro si y solo si está lloviendo (P ↔ Q)
 No está lloviendo (¬ P)

Por declaración P = Está lloviendo; Q = Estoy dentro de casa.

También es común considerar la fórmula siempre verdadera y la fórmula siempre falsa


como conectivos

 Verdadero (⊤, 1 o T)
 Falso (⊥, 0 o F)

Recíproca, contrarrecíproca e inversa

La contrarrecíproca ¬q→¬p de una implicación p→q tiene la misma tabla de verdad que
p→q. La contrarrecíproca es falsa solo cuando ¬p es falsa y ¬q es verdadera, esto es, solo
cuando p es verdadera y q es falsa. Por otra parte, ni la recíproca, q→p, ni la inversa,
¬p→¬q, tienen los mismos valores de verdad que p→q para todos los posibles valores de
p y q. Cuando dos fórmulas tienen siempre los mismos valores de verdad, las llamamos
equivalentes, de tal forma que una implicación y su contrarrecíproca son equivalentes. La
recíproca y la inversa de una implicación también son equivalentes.

 q→p es la recíproca de p→q


 ¬q→¬p es la contrarrecíproca de p→q
 ¬p→¬q es la inversa de p→q

Ejemplo: Recíproca, contrarrecíproca e inversa de "Sí viene Juan, no iré de acampada".

 Recíproca: Si no voy de acampada, entonces viene Juan.


 Contrarrecíproca: Si voy de acampada, entonces no viene Juan.
 Inversa: Si no viene Juan, entonces iré de acampada.

Coimplicación

Aquí podemos encontrar la implicación o condicionalidad mutua. Si p y q son


proposiciones, entonces podemos formar la proposición bicondicional p ↔ q, leída «p si y
solo si q». Si p y q son los enunciados «Estoy en casa» y «Está lloviendo», entonces p ↔ q
denota «Estoy en casa si y solo si está lloviendo».

Algunas formas alternativas en que se expresa «p si y solo si q» en español:

 p es necesario y suficiente para q


 si p entonces q, y recíprocamente
 p si y solo si q

También podría gustarte