Está en la página 1de 13

Lógica de programación

Módulo 1. Lógica y algoritmos

Unidad 1: Lógica
Lógica: disciplina que formaliza el estudio de los métodos de razonamiento.

Objetivos de la lógica:

 Eliminar la ambigüedad del lenguaje natural.


 Establecer reglas que determinen la validez de un razonamiento.

Tema 1. Lógica proposicional


Conceptos fundamentales en lógica: el juicio y la proposición.
Juicio: acto mental mediante el cual pensamos un determinado enunciado.
Proposición: significado de un pensamiento. Son enunciados aseverativos que transmiten
información.
Se debe poder definir si es verdadera o falsa en un momento del tiempo.
Principios fundamentales de la lógica proposicional:

 Principio de tercero excluido: Dadas dos proposiciones contradictorias entre sí, no


pueden ser ambas falsas.
 Principio de identidad: Toda proposición es idéntica en sí misma, es decir, no puede
ser y no ser al mismo tiempo.
El objetivo de la lógica proposicional es determinar las estructuras en las que las
proposiciones intervienen y las reglas que regulan las combinaciones.

Las proposiciones simples pueden combinarse de diferente manera, para generar


proposiciones más complejas, utilizando entre ellas determinados operadores llamados
conectores lógicos. Por ejemplo:
“Si termino los trabajos prácticos a tiempo, entonces puedo ir al cine”
Proposiciones: Termino los trabajos prácticos a tiempo – puedo ir al cine.
El valor de la segunda, depende del valor que posee la primera.
Conectivo lógico: SI – ENTONCES
Cada proposición (Simple o compleja) tendrá asociado un valor de verdad.
El valor de verdad puede ser Verdadero o Falso.
¿Cómo determinamos si una proposición compleja es verdadera o falsa?
Depende de los valores de verdad asignados a las proposiciones simples que la componen
Y de los conectores lógicos que las relacionan.
Variables proposicionales: son formas simples de representar una proposición, para poder
realizar operaciones sobre las proposiciones.
EJEMPLO:
P: Juan sabe hablar inglés.
P puede ser verdadera o falsa
Negación:
El conectivo lógico de negación invierte el valor de verdad de una proposición.
Representado por el símbolo <<¬>>.
Si definimos ¬p (se lee como no p): Podemos decir que ¬p es verdadera si p es falsa, y ¬p
es falsa si p es verdadera.

Tabla de verdad de p y ¬p

P ¬P
V F
F V
Conjunción:
Conecta dos proposiciones simples mediante el término <<y>>. Se representa con el
símbolo << ^>>.
EJEMPLO
A Lucas le gusta caminar y a José le gusta correr.
P: A Lucas le gusta caminar.
Q: A José le gusta correr.
Esta conjunción puede ser representada como p^q.
Es verdadera sólo si p y q lo son.
Tabla de verdad de p ^ q:

P Q P ^Q
V V V
F V F
V F F
F F F

Disyunción:
Une dos proposiciones simples mediante el término <<o>>. Se representa con el símbolo
<<v>>.
EJEMPLO
Andrés viaja a Londres o viaja a París.
P: Andrés viaja a Londres
Q: Andrés viaja a París.
El resultado de la disyunción de p y q será falso solo cuando ambas sean falsas.
Tabla de verdad de p v q:

P Q PvQ
V V V
F V V
V F V
F F F
Ejercicio 1: tomando en consideración las proposiciones complejas enunciadas
anteriormente, cuáles serían sus respectivos valores de verdad bajo las siguientes
afirmaciones
Turquía se encuentra en Europa y en Asia.
FALSO – es una conjunción y no pueden ser sus dos proposiciones verdaderas.
La lapicera es roja o azul. (La lapicera es verde)
FALSO – es una disyunción con ambas proposiciones falsas.
La Tierra es redonda, rota sobre su eje y gira alrededor del sol.
VERDADERO – es una conjunción con todas sus proposiciones verdaderas
Si Marcos practica fútbol y natación, entonces es deportista. (Marcos practica natación).
FALSO – Una disyunción con una de sus proposiciones falsas.

Tema 2. Álgebra de Boole.


El álgebra de Boole se puede definir como un sistema matemático basado en los valores 1
(verdadero) y 0 (falso), en conjunto con las operaciones AND, OR y NOT. Las variables no
pueden tomar valores diferentes a 1 y 0, y se denominan variables booleanas.

Operación AND.
Se representa con el símbolo «·». Se corresponde con la conjunción de las proposiciones
lógicas.
Para resolver operaciones booleanas podemos seguir el siguiente procedimiento
Dado dos valores booleanos. A=1 y B=0
Transcribimos la operación
A·B = ¿?
Reemplazar las variables.
1·0 = ¿?
Ejecutamos la operación. En este caso (AND), corresponde a la conjunción en
proposiciones lógicas. (1 = VERDADERO y 0 = FALSO).
Recordemos que el resultado de una conjunción es verdadero solo si ambas
proposiciones son verdaderas.
1 · 0 = 0 (FALSO)
Otro ejemplo A =1 y B = 1
A · B = ¿?
1 · 1 = ¿?
1(V) · 1(V) = 1(VERDADERO)

La operación AND establece que, dadas dos variables booleanas, su resultado es igual a
1 si ambas variables son 1 y es 0 en todos los otros casos

Operación OR.
Se representa con el símbolo <<+>>. Se corresponde con la disyunción de las proposiciones
lógicas.
EJEMPLO
Dados A = 1 y B = 0
A + B = ¿?
1 + 0 = ¿?
El resultado de una disyunción es falso solo si ambas proposiciones son falsas, y verdadero
en los otros casos.
Entonces:
1(V) + 0(F) = 1 (VERDADERO)

La operación OR establece que, dadas dos variables booleanas, su resultado es igual a 0


si ambas variables son 0 y es 1 en todos los otros casos.
Operación NOT
Se representa con el símbolo «`». Corresponde a la negación de las proposiciones lógicas.
EJEMPLO
A=1
A` = ¿? (NOT A)
1` = ¿?
1(V) ` = 0 (F)
La operación NOT establece que, dada una variable booleana cuyo valor es igual a 1, el
resultado de aplicar esta operación será 0. Si la variable es igual a 0, el resultado de
aplicar esta operación será igual a 1.
(INVIERTE EL RESULTADO).

Leyes de Morgan:
(A AND B) ` = A` OR B`
(A OR B) ` = A` AND B`
Tema 4. Funciones lógicas
Una función lógica es la expresión que define las operaciones para realizar sobre un
conjunto de variables, para obtener un resultado.
Por ejemplo, dada la siguiente función:
s = (A + B) · [(C · A) + (D · B`)].
` = NOT
· = AND
+ = OR
Para resolver la función, primero debemos obtener los valores de las variables
A=0
B=0
C=1
D=0
Escribimos la función
s = (A + B) · [(C · A) + (D · B`)]
Reemplazamos valores.
s = (0 + 0) · [(1 · 0) + (0 · 0`)].
Realizamos las operaciones
s = 0 · [0 + (0 · 1’)]
s = 0 · [ 0 + (0 ·0)]
s = 0 · [0 + 0]
s=0·0
s=0

Ejercicio 2
A=1
B=0
C=1
D=1
(A · C) + (B · B’)
(1 · 1) + (0 · 0’)
1 + (0 · 1)
1+0
1
[(A’ · B’) + D] · A’
[(1’ · 0’) + 1] · 1’
[(0 · 1) + 1] · 0
[0 + 1] · 0
1·0
0
[(A + B) ´ · (C + D)]+B
[(1 + 0)’ · (1 + 1)] + 0
[(1)’ · (1)] + 0
[0 ·1] + 0
0+0
0
(A + B) · [(C · A) + (D · B`)]
(1 +0) · [(1 · 1) + (1 · 0`)]
1 · [1 + 1]
1·1
1

A B A AND B (A AND B)’ A’ B’ A’ OR B’


0 0 0 1 1 1 1
0 1 0 1 1 0 1
1 0 0 1 0 1 1
1 1 1 0 0 0 0
Unidad 2. Algoritmos.
Podemos definir un algoritmo como un conjunto definido de instrucciones, con un orden y
una cantidad determinada y finita. Los algoritmos permiten llevar a cabo una actividad
mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad.

La programación es la actividad que permite la construcción de programas informáticos


(software) mediante el desarrollo de algoritmos

Tema 1. Características de los algoritmos

 Ordenados: define la secuencia en la que se deben realizar los pasos.


 Finitos: los pasos de un algoritmo deben ser determinados y, eventualmente, tener
un paso final.
 Definidos: dado un problema determinado, si se sigue en el mismo algoritmo, se
debe llegar a los mismos resultados bajo las mismas condiciones.
Ejercicio 5
Indica cuál es el problema que identificas en el algoritmo planteado. Tené presente que un
algoritmo siempre debe cumplir con las siguientes características: ser ordenado, definido y
finito.

 Estacionar el automóvil.
 Obtener las herramientas a utilizar.
 Aflojar los tornillos de la rueda pinchada.
 Sacar la rueda pinchada.
 Levantar el automóvil.
 Obtener la rueda buena del automóvil.
 Poner los tornillos en la rueda nueva.
 Poner la rueda buena en el automóvil.
 Bajar el automóvil.
 Volver a circular.
RESPUESTA:
El algoritmo está desordenado. Y se podrían agregar algunas instrucciones.

 Estacionar el automóvil.
 Bajar del automóvil
 Obtener las herramientas a utilizar.
 Obtener la rueda buena del automóvil.
 Levantar el automóvil
 Aflojar los tornillos de la rueda pinchada.
 Sacar la rueda pinchada.
 Poner la rueda buena en el automóvil.
 Poner los tornillos de la rueda nueva.
 Guardar las herramientas.
 Guardar la rueda pinchada.
 Subir al automóvil
 Volver a circular.
Tema 2. Partes de un algoritmo
Así como cada algoritmo posee las mismas características, también tiene las mismas
partes. Para cada algoritmo, se puede definir que tendrá:

 Entrada: siempre poseen una entrada (INPUT)


 Proceso: se refiere a los pasos definidos, en los que manipulamos la entrada para
llegar a un resultado
 Salida: una vez que terminamos de aplicar todos los pasos, siempre obtenemos
resultados (OUTPUT).

ENTRADA PROCESO SALIDA


Tema 3. Tipos de algoritmo
Los algoritmos pueden ser clasificados de diferentes maneras de acuerdo con el lenguaje
con el que son descritos sus pasos, respecto con el objetivo o función que buscan realizar y
en relación con la estrategia que utilizan para llegar al resultado.
LENGUAJE
Podemos calificar a los algoritmos en virtud de si se escriben con un lenguaje natural o a
través de cálculos numéricos.
Cualitativos: se utilizan palabras para definir los pasos.
Cuantitativos: se utilizan números y operadores.

FUNCIÓN
Búsqueda
Ordenamiento
Encaminamiento.

ESTRATEGIA
Determinista: cada paso del algoritmo es lineal. Esto significa que cada paso (a excepción
del primero) tiene un solo predecesor y un único sucesor (a excepción del último).
Probabilístico: este tipo de algoritmo utiliza valores pseudoaleatorios como entrada para
llegar a una solución. Se ejecutan una cantidad de veces suficiente para determinar un
nivel de confianza en su resultado.
Voraz: los algoritmos voraces evalúan cada una de las posibilidades y eligen la mejor de
ellas.
Tema 4. Pasos de solución de problemas
Abundante evidencia sugiere que un enfoque sistemático, basado en pasos bien definidos,
puede ayudarlo a encontrar soluciones reales, sostenibles y escalables, sea cual sea el
problema.
Algo que nos puede ayudar cuando tenemos problemas complejos es separar el problema
en problemas más pequeños que podamos manipular. De esta forma, el análisis de
problemas complejos se hace más simple.
Identificación del problema
Identificar un problema consiste en darse cuenta de que existe y de que podemos darle
una solución. Puede ser detectado por nosotros o puede surgir de un pedido en particular.
Interpretación del problema. Análisis
El análisis del problema es el proceso en el que se estudian e interpretan el problema y
las posibles soluciones. Se debe definir claramente qué se debe resolver y cómo lo vamos
a resolver.
Existen varios métodos, también llamados paradigmas, que nos permiten analizar un
problema, es decir, encontrar posibles pasos, resultados y soluciones a un problema.
Abstracción
Abstraerse del problema es concentrarse en lo que es importante para solucionarlo.
Formular la estrategia de resolución
Se necesita elaborar un plan: el conjunto de pasos que se deben seguir para llegar al
resultado deseado. Se debe establecer cómo se debe resolver y cuál es el alcance de la
solución.
Verificar la estrategia de resolución
Es muy importante verificar que los pasos descritos en el paso anterior funcionen de la
manera deseada. Para ello, debemos probar el plan, ejecutar esos pasos y validar que el
resultado sea el deseado.
Ajustar la estrategia
En el caso de que la prueba no haya dado los resultados deseados, debemos cambiar el
plan, teniendo en cuenta la nueva información.
Si en el camino encontramos muchos cortes en una ruta particular, podemos tomar otra
ruta que sea más rápida en el próximo viaje.
Es importante realizar prueba ya ajustar la estrategia hasta que tengamos un resultado
deseado.

IDENTIFICACIÓN DEL PROBLEMA

INTERPRETACIÓN DEL
PROBLEMA

ABSTRACCIÓN

FORMULAR LA ESTRATEGIA

VERIFICAR LA ESTRATEGIA

AJUSTAR LA ESTRATEGIA

Aplicación de las soluciones


En la resolución de un problema dentro de la ingeniería del software, se deben diseñar
muchos algoritmos para solucionarlos. Una estrategia es escribirlos (o pensarlos) en un
lenguaje natural (pseudocódigo), para que luego pueda ser traducido al lenguaje de
programación en el cual se decida aplicarlo. Entre los lenguajes más populares, se
encuentran: C, C++, Java, Python, C# (de .Net), Visual Basic, etc. Esta puesta en marcha no
es más que una especie de traducción en la cual se debe respetar la sintaxis y semántica
de un lenguaje particular. Cabe destacar que un mismo algoritmo puede ser escrito en
cualquiera de estos lenguajes.

También podría gustarte