Lógica y tablas de verdad

16
Estructuras de Programación Una característica básica de un programador, es la capacidad de aplicar soluciones a problemas generales. Esto implica la habilidad de: Entender y formular problemas Aplicar soluciones creativas Expresar las soluciones de manera clara, en un lenguaje apropiado Tipos de Lenguajes: (Sintaxis + Semántica) Lenguaje Natural: Son los lenguajes usados por las personas para comunicarse. Son lenguajes no diseñados por las personas, sino que aparecieron con el uso. Aunque tienen algunas reglas sintácticas, permiten expresiones confusas o incoherentes. Por ej: aunque una frase contenga faltas de ortografía, se entiende el contenido. Ej: La micro se está demorando mucho (El micro… / Se está demorando… / Mucho se está… ). Además se puede decir lo mismo de otra forma: La micro está atrasada. / … demasiado. Lenguaje Formal: Son lenguajes diseñados por las personas, para un propósito específico. Por ej: la notación matemática permite usa un lenguaje formal útil para expresar las relaciones entre números y símbolos. Los químicos usan un lenguaje para representar las estructuras químicas, etc. Un lenguaje de programación es un lenguaje formal que ha sido diseñado para expresar cálculos y entregar instrucciones precisas a un computador. Los lenguajes formales tienen reglas sintácticas rigurosas, que deben ser respetadas por quienes los utilizan. Por ej: 3 + 3 = 6 (siempre). H2O = agua en cualquier parte. Las reglas sintácticas se basan en dos elementos: Símbolos: Son los elementos básicos del lenguaje, como letras o palabras. Estructura: Se refiere a la forma en que los símbolos se ordenan dentro de una sentencia. Ejemplos: Cuando se lee una sentencia o frase en castellano, hay que averiguar la estructura de esa frase (en forma inconsciente). Esto se llama análisis gramatical (parsing). Por ej: la frase “la micro está atrasada”. La micro es el sujeto y está atrasada es el predicado. Una vez que se ha analizado la frase, se puede entender su significado, o semántica de la frase. Tanto los lenguajes naturales como formales tienen reglas sintácticas, pero hay algunas diferencias: Ambigüedad: El lenguaje natural (LN) está lleno de ambigüedades que se entienden por el contexto de la frase. Un lenguaje formal (LF) debe ser no ambiguo. Redundancia: Un LN tiene muchos sinónimos, una misma cosa se puede decir de diferentes formas. Un LF debe ser no redundante. Sentido Literal: El LN contiene metáforas y se dicen cosas sin sentido. Un LF expresa claramente una idea. El significado de un programa computacional es literal y no ambiguo, y puede ser entendido completamente mediante el análisis de sus símbolos y estructura. Nivel de Lenguaje: Un lenguaje se considera de alto nivel mientras más se parece al lenguaje natural. Un lenguaje se considera de bajo nivel mientras más se parece al lenguaje del computador . El lenguaje de más bajo nivel es el lenguaje del computador (ceros y unos). Los lenguajes de programación son lenguajes intermedios También hay un lenguaje de bajo nivel llamado ASSEMBLER (casi computador). Corresponde al conjunto de instrucciones de máquina que contiene cada CPU. 1 / 16

description

Elementos de lógica aplicada a la programación

Transcript of Lógica y tablas de verdad

Page 1: Lógica y tablas de verdad

Estructuras de Programación

Una característica básica de un programador, es la capacidad de aplicar soluciones a problemas generales. Esto implica la habilidad de:

• Entender y formular problemas• Aplicar soluciones creativas• Expresar las soluciones de manera clara, en un lenguaje apropiado

Tipos de Lenguajes: → (Sintaxis + Semántica)

• Lenguaje Natural: Son los lenguajes usados por las personas para comunicarse. Son lenguajesno diseñados por las personas, sino que aparecieron con el uso. Aunque tienen algunas reglassintácticas, permiten expresiones confusas o incoherentes. Por ej: aunque una frase contenga faltas de ortografía, se entiende el contenido.

• Ej: La micro se está demorando mucho (El micro… / Se está demorando… / Mucho se está… ). Además se puede decir lo mismo de otra forma: La micro está atrasada. / … demasiado.

• Lenguaje Formal: Son lenguajes diseñados por las personas, para un propósito específico. Por ej: la notación matemática permite usa un lenguaje formal útil para expresar las relaciones entre números y símbolos. Los químicos usan un lenguaje para representar las estructuras químicas, etc.

• Un lenguaje de programación es un lenguaje formal que ha sido diseñado para expresar cálculos y entregar instrucciones precisas a un computador.

• Los lenguajes formales tienen reglas sintácticas rigurosas, que deben ser respetadas por quienes los utilizan. Por ej: 3 + 3 = 6 (siempre). H2O = agua en cualquier parte.

• Las reglas sintácticas se basan en dos elementos:• Símbolos: Son los elementos básicos del lenguaje, como letras o palabras.• Estructura: Se refiere a la forma en que los símbolos se ordenan dentro de una sentencia.• Ejemplos:

• Cuando se lee una sentencia o frase en castellano, hay que averiguar la estructura de esa frase (en forma inconsciente). Esto se llama análisis gramatical (parsing).

• Por ej: la frase “la micro está atrasada”. La micro es el sujeto y está atrasada es el predicado. Una vez que se ha analizado la frase, se puede entender su significado, o semántica de la frase.

• Tanto los lenguajes naturales como formales tienen reglas sintácticas, pero hay algunas diferencias:• Ambigüedad: El lenguaje natural (LN) está lleno de ambigüedades que se entienden por el

contexto de la frase. Un lenguaje formal (LF) debe ser no ambiguo.• Redundancia: Un LN tiene muchos sinónimos, una misma cosa se puede decir de diferentes

formas. Un LF debe ser no redundante.• Sentido Literal: El LN contiene metáforas y se dicen cosas sin sentido. Un LF expresa

claramente una idea.

• El significado de un programa computacional es literal y no ambiguo, y puede ser entendido completamente mediante el análisis de sus símbolos y estructura.

Nivel de Lenguaje:

• Un lenguaje se considera de alto nivel mientras más se parece al lenguaje natural.• Un lenguaje se considera de bajo nivel mientras más se parece al lenguaje del computador .• El lenguaje de más bajo nivel es el lenguaje del computador (ceros y unos).• Los lenguajes de programación son lenguajes intermedios• También hay un lenguaje de bajo nivel llamado ASSEMBLER (casi computador). Corresponde al

conjunto de instrucciones de máquina que contiene cada CPU.

1 / 16

Page 2: Lógica y tablas de verdad

Estructuras de Programación

Generaciones de Lenguajes de Programación:

• Los lenguajes de programación han evolucionado con el avance de la tecnología.• La 1GL: Corresponde al lenguaje de máquina, no usa traductores ni compiladores. Se

programa conectando interruptores electrónicos, los cuales representaban los 0s y 1s.• Ventaja: genera un código eficiente y rápido.• Desventajas: Lento de programar, difícil de encontrar los errores.

• 2GL: Corresponde al lenguaje ASSEMBLER, que consiste en códigos nemotécnicos más fáciles de entender que los 0s y 1s. Ej: ADD, MOV, DIV, etc. Utiliza alguna estructuración lógica.• Ventaja sigue generando código rápido y eficiente, es más fácil de entender.• Desventaja: Lento de programar, difícil de encontrar los errores.

• 3GL: Utiliza una sintaxis más entendible para las personas, agrega tipos de datos y estructuraslógicas más eficientes (programación estructurada).• Ventajas: Más fácil de entender y encontrar los errores.• Desventaja: Requiere traducción. Genera programas menos eficientes.• Ejemplos: Fortran, COBOL, C, BASIC, Pascal, Java, etc.

• 4GL: Cada generación de lenguaje se aleja más del código de máquina. Resulta más fácil programar y es más fácil de entender por las personas. Además con una sola instrucción hacenlo mismo que varias instrucciones de un lenguaje de más bajo nivel.• Ventajas: Muy fácil de entender y rápido de programar, portabilidad.• Desventajas: Requiere traducción, código menos eficiente.• Ej: Phyton, PowerBuilder, Perl, etc.

• 5GL: Orientados a resolver problemas mediante el uso de restricciones de tipo lógico, en vez de algoritmos. El programador sólo define el problema, y el computador lo resuelve. En general son lenguajes de inteligencia artificial.• Ej: Lisp, Prolog, etc.

Traducción de Programas:

• El computador sólo entiende su propio lenguaje de máquina. Luego los programas escritos en lenguajes de alto nivel deben ser traducidos a lenguaje de máquina.

• Existen diversas formas de traducción:• Intérpretes: Un intérprete lee un programa con código de alto nivel y lo ejecuta. Procesa el

programa de a poco (una línea por vez). Lee la línea, verifica la sintaxis, traduce a código de máquina y la ejecuta, luego continúa con la línea siguiente.

• Compilador: Primero debe pasar por una etapa de revisión de la sintaxis y traducción completa del programa a código de máquina. A partir de un código fuente, genera un código objeto (ejecutable). Una vez que el programa está compilado, se puede ejecutar repetidas veces sin tener que traducirlo nuevamente.

2 / 16

Page 3: Lógica y tablas de verdad

Estructuras de Programación

Conceptos de Programación:

Programa:• Secuencia de instrucciones usualmente llamadas sentencias, que especifican cómo ejecutar un

cálculo determinado (resolver una ecuación, ordenar una lista de objetos, etc.)• Cada lenguaje tiene características propias, pero en general un programa se compone de:

• Entradas (input): Lee datos desde el teclado, un archivo, o similar.• Salidas (output): Envía datos a la pantalla, impresora, un archivo, o similar.• Cálculos: Ejecuta operaciones matemáticas como sumas o multiplicaciones.• Ejecución condicional: Verifica ciertas condiciones y luego ejecuta una secuencia

apropiada de sentencias.• Ejecución repetitiva: Ejecuta alguna acción repetitiva, usualmente con alguna variación.

¿Qué es programar?

• Diseñar y aplicar una solución para un problema.• Habilidades:

• Análisis Separa el problema en problemas más pequeños. → Entender el problema.• Abstracción Concentrarse en el problema y abstraerse de los detalles→• Razonamiento lógico Para el procesamiento con condiciones múltiples→• Reutilización de código Uso de funciones y procedimientos. Evitar redundancia.→• Aplicar herramientas como ordenamiento, selección, recursividad, etc.• Manejo de estructuras de datos.• Evitar errores (y detectarlos)• Y por supuesto … conocer bien el lenguaje

La 1ª unidad tratará la teoría necesaria para desarrollar el razonamiento lógico.

3 / 16

Page 4: Lógica y tablas de verdad

Estructuras de Programación

4. LÓGICA Y TABLAS DE VERDAD.

4.1. Introducción.

Un computador se puede programar para tomar decisiones basadas en ciertos enunciados, por ejemplo: “el resultado de un cálculo es mayor que 100”. Tales enunciados pueden ser verdaderos o falsos, es decir contienen un valor de verdad; es decir un enunciado puede ser verdadero o falso, pero no ambas cosas. Algunos enunciados son compuestos por axiomas, más algunos elementos de conexión entre ellos.

Ejemplo 1:

a) “Las rosas son rojas y las violetas son azules”, es un enunciado compuesto mediante la conexión “y”

b) “El es inteligente o estudia todas las noches”, es un enunciado compuesto mediante la conexión “o”.

c) “¿Para dónde va?”, no es un enunciado ya que no posee un valor de verdad.

La propiedad de un enunciado compuesto es que su valor de verdad está completamente determinado por los valores de verdad de sus axiomas, junto con la forma en que están conectados. Para entender los valores de verdad es necesario entender los tipos de conexiones entre enunciados. Se usarán las letras p, q, r, como identificadores de un enunciado cualquiera.

4.2. Conjunción.

Dos enunciados cualquiera se pueden combinar con la palabra “y” para formar un enunciado compuesto denominado conjunción. La siguiente tabla muestra los valores de verdad de un enunciado compuesto por una conjunción:

p q p ^ q

VVFF

VFVF

VFFF

El enunciado “p ^ q” es verdadero sólo en el caso que los dos axiomas son verdaderos.

Ejemplo 2: Considerar los cuatro enunciados siguientes:

a) París está en Francia y 2 + 2 = 4.b) París está en Francia y 2 + 2 = 5.c) París está en Inglaterra y 2 + 2 = 4.d) París está en Inglaterra y 2 + 2 = 5.

Sólo el enunciado (a) es verdadero, puesto que los axiomas que lo componen son verdaderos.

4.3 Disyunción.

Dos enunciados cualquiera se pueden combinar con la palabra “o” para formar un enunciado compuesto denominado disyunción. La siguiente tabla muestra los valores de verdad de un enunciado compuesto por una disyunción:

4 / 16

Page 5: Lógica y tablas de verdad

Estructuras de Programación

p q p v q

VVFF

VFVF

VVVF

El enunciado “p v q” es verdadero en el caso que cualquiera de los dos axiomas sea verdaderos. Dicho de otra forma, el enunciado “p v q” es falso sólo en el caso que los dos axiomas sean falsos.

Ejemplo 3: Considerar los cuatro enunciados siguientes:

a) París está en Francia o 2 + 2 = 4.b) París está en Francia o 2 + 2 = 5.c) París está en Inglaterra o 2 + 2 = 4.d) París está en Inglaterra o 2 + 2 = 5.

Sólo el enunciado (d) es falso. Cada uno de los otros enunciados es verdadero puesto que al menos uno de sus axiomas que los componen es verdadero.

Observación: la palabra española “o” se usa comúnmente de dos formas. Algunas veces se usa enel sentido de “p o q o ambos”, es decir, al menos una de las dos alternativas se cumple. Otras veces se usa en el sentido “p o q pero no ambos”, es decir sólo se debe cumplir una de las alternativas. Por ejemplo la siguiente frase: “El estudiará en la Universidad de Concepción o en la Universidad de la Frontera”, en este caso el “o” se usa en el segundo sentido y se denomina disyunción exclusiva (XOR).

4.4 Negación.

Dado cualquier enunciado p, se puede formar otro enunciado, denominado negación de p, por ejemplo escribiendo “Es falso que ...” antes de p, o insertando en p la palabra “no”. La notación simbólica de esto puede tener dos formas: ~p p (se lee no p). Ambas formas se pueden combinar dentro de un conjunto de enunciados.

La siguiente tabla muestra los valores de verdad de un enunciado compuesto por una negación:

p p

VF

FV

Si p es verdadero entonces p es falso; y si p es falso entonces p es verdadero.

Ejemplo 4: Considerar los enunciados siguientes:

a) París está en Francia .b) Es falso que París está en Francia.c) París no está en Francia.

d) 2 + 2 = 5.e) Es falso que 2 + 2 = 5.f) 2 + 2 ≠ 5.

Entonces (b) y (c) son c/u la negación de (a). Por otro lado, (e) y (f) son c/u la negación de (d). Ya que (a) es verdadero, entonces (b) y (c) son falsos; y como (d) es falso, entonces (e) y (f) sonverdadero.

4.5. Proposiciones y Tablas de Verdad.

5 / 16

Page 6: Lógica y tablas de verdad

Estructuras de Programación

Con el uso repetido de las conectiva lógicas: y, o, no, se pueden construir enunciados compuestos que son más elaborados. En el caso que los axiomas p, q, … de un enunciado compuesto P(p, q, …) sean variables, el enunciado compuesto se denomina una proposición.

El valor de verdad de una proposición depende exclusivamente de los valores de verdad de sus variables, es decir, el valor de verdad de una proposición se conoce una vez que se conozcan los valores de verdad de sus variables. Por ejemplo la tabla de verdad de la proposición ~(p ^ q) se construye de la siguiente forma:

p q q p ^ q ~(p ^ q)

VVFF

VFVF

FVFV

FVFF

VFVV

Observar que las primeras dos columnas de la tabla son las variables p, q, … y que la tabla contiene suficientes filas para permitir todas las combinaciones posibles de V y F para estas variables (para 2 variables se requieren 4 filas, para 3 variables se requieren 8 filas, para 4 variables se requieren 16 filas), en general, para n variables se requieren 2n filas. Luego la tabla contiene una columna para cada etapa elemental de la construcción del enunciado, el valor de verdad de cada columna siguiente es determinado por las anteriores con las definiciones de las conectivas lógicas ^ v ~. Finalmente en la última columna se obtiene el valor de verdad de la proposición completa. En rigor sólo interesan las columnas que contienen las variables y la columna que contiene la proposición, el resto de columnas intermedias se utilizan solamente para ayudar a construir la tabla de verdad.

4.6. Tautologías y Contradicciones.

Algunas proposiciones P(p, q, …) contienen sólo valores V en la última columna de sus tablas de verdad, es decir, son verdaderas para cualquier valor de verdad de sus variables. A tales proposiciones se les denomina tautologías. Análogamente, una proposición P(p, q, …) se denomina contradicción si contiene sólo valores F en la,última columna de su tabla de verdad, es decir, es falsa para cualquier valor de verdad de sus variables. Por ej. la proposición “p o no p”, es decir “p v p” es una tautología; y la proposición “p y no p”, es decir “p ^ p” es una contradicción. Esto se puede verificar por sus tablas de verdad:

p p p v p

VF

FV

VV

p p p ^ p

VF

FV

FF

Se puede observar que la negación de una tautología es una contradicción, ya que siempre será falsa. Por otro lado, la negación de una contradicción es una tautología, ya que siempre será verdadera.

Sea P(p, q, …) una tautología, y sean P1(p, q, …), P2(p, q, …) proposiciones cualesquiera. Como el valor de verdad de P(p, q, …) no depende de los valores de verdad particulares de sus variables p,q, … entonces se puede reemplazar p por P1 , q por P2, … en la tautología P(p, q, …), es decir:

Principio de sustitución: Si P(p, q, …) es una tautología, entonces P(P1, P2, …) es una tautología para proposiciones cualquiera P1, P2, …

6 / 16

Page 7: Lógica y tablas de verdad

Estructuras de Programación

Ejemplo 5: La tabla de verdad (p v p) resultó ser una tautología. Reemplazando “p” por “q ^ r” seobtiene la proposición (q ^ r) v ~(q ^ r), que por el principio de sustitución también debería ser una tautología. Esto se puede verificar en la siguiente tabla de verdad.

q r q ^ r ~(q ^ r) (q ^ r) v ~(q ^ r)

VVFF

VFVF

VFFF

FVVV

VVVV

4.7. Equivalencia Lógica: Álgebra de Proposiciones.

Dos proposiciones P(p, q, …) y Q(p, q, …) son lógicamente equivalentes, o simplemente equivalentes o iguales, denotado por: P(p, q, …) Ξ Q(p, q, …), si tienen idénticas tablas de verdad. Por ejemplo considerar las tablas de verdad de ~(p ^ q) y (p v q).

p q p ^ q ~(p ^ q)

VVFF

VFVF

VFFF

FVVV

p q p q p v q

VVFF

VFVF

FFVV

FVFV

FVVV

Las tabas de verdad son las mismas, es decir, ambas proposiciones son falsas en el primer caso y verdaderas en los otros tres casos, luego ambas proposiciones son lógicamente equivalentes.

~(p ^ q) Ξ (p v q)

Ejemplo 6: Considerar el enunciado “Es falso que las rosas son rojas y las violetas son azules”. Este enunciado se puede escribir de la forma ~(p ^ q), en donde p es “las rosas son rojas” y q es “las violetas son azules”. Sin embargo por las tablas de verdad anteriores ~(p ^ q) es lógicamenteequivalente con (p v q), luego el enunciado original se puede expresar mediante otro enunciado equivalente “Las rojas no son rojas o las violetas no son azules”. En general las proposiciones satisfacen muchas equivalencias lógicas, o leyes, como las descritas en la tabla siguiente:

Leyes de idempotencia1a. p v p Ξ p 1b. p ^ p Ξ p

Leyes asociativas2a. (p v q) v r Ξ p v (q v r) 2b. (p ^ q) ^ r Ξ p ^ (q ^ r)

Leyes conmutativas3a. p v q Ξ q v p 3b. p ^ q Ξ q ^ p

Leyes distributivas4a. p v (q ^ r) Ξ (p v q ) ^ (p v r) 4b. p ^ (q v r ) Ξ (p ^ q) v (p ^ r)

Leyes de identidad5a. p v F Ξ p 5b. p ^ V Ξ p6a. p v V Ξ V 6b. p ^ F Ξ F

Leyes de complementos7a. p v p Ξ V 7b. p ^ p Ξ F8a. V Ξ F 8b. F Ξ V

Ley de involución9. ~p Ξ p

Leyes de Morgan10a. ~(p v q) Ξ p ^ q 10b. ~(p ^ q) Ξ p v q

7 / 16

Page 8: Lógica y tablas de verdad

Estructuras de Programación

4.8. Enunciado Condicional y Bicondicional.

El condicional p q frecuentemente se lee “→ p implica q” o “p sólo si q”El condicional p q se lee “↔ p si y sólo si q”

Los valores de verdad de p q y p q se indican en las tablas siguientes:→ ↔

p q p q→

VVFF

VFVF

VFVV

p q p q↔

VVFF

VFVF

VFFV

Observar que el condicional p q es falso sólo cuando de una verdad se desprende una falsedad, →por otro lado el condicional p q es verdadero cuando ambos axiomas son iguales, es decir, ↔ambos son verdaderos o ambos son falsos.

Considerar la siguiente proposición: p v q:

p q p p v q

VVFF

VFVF

FFVV

VFVV

Observar que la tabla de verdad es idéntica a la tabla de verdad de p q. Así que se puede decir →que p q es lógicamente equivalente a la proposición → p v q, es decir: p q → Ξ p v q.

En otras palabras, el enunciado condicional “Si p entonces q” es lógicamente equivalente al enunciado “no-p o q”.

Considerar la proposición p q y las otras proposiciones condicionales simples que contienen p, q→q p→ p → q q → p

Estas proposiciones se denominan respectivamente: la recíproca, inversa y contrarrecírpoca de la proposición p q. Las tablas de verdad respectivas son:→

p q p q→ q p→ p q p → q q → p

VVFF

VFVF

VFVV

VVFV

FFVV

FVFV

VVFV

VFVV

Observar que un enunciado condicional y su recíproco o su inverso no son lógicamente equivalentes, pero en la tabla se puede ver que un enunciado condicional y su contrarrecíproco sí son lógicamente equivalentes.

Teorema 1: Un enunciado condicional p q y su contrarrecíproco → q → p son lógicamente equivalentes, es decir: p q → Ξ q → p.

Ejemplo 7: (a) Considerar los siguientes enunciados sobre un triángulo A:p q: Si A es equilátero, entonces A es isósceles.→

8 / 16

Page 9: Lógica y tablas de verdad

Estructuras de Programación

q p: Si A es isósceles, entonces A es equilátero.→En este caso p q es verdadero, pero su recíproco q p es falso.→ →

Ejercicios:

1) Sea p = “Marcos es millonario” y sea q = “Marcos es feliz”. Escribir las siguientes proposiciones en forma simbólica:a) Marcos es pobre, pero feliz.b) Marcos ni es millonario ni es feliz.c) Marcos o es millonario o es infeliz.d) Marcos es pobre o si no él es tanto millonario como infeliz.

2) Sea p = “Ana habla francés” y q = “Ana habla danés”. Formar una frase verbal sencilla que describa las siguientes proposiciones: (a) p v q; (b) p ^ q; (c) p ^ ~q (d) ~p v ~q; (e) ~~p; (f) ~(~p ^ ~q).

3) Encontrar las tablas de verdad de las siguientes proposiciones: (a) p v ~q; (b) ~p ^ ~q; (c) ~(~p ^ q); (d) ~(~p v ~q).

4) Encontrar las tablas de verdad de las siguientes proposiciones: (a) (p ^ ~p) v r; (b) ~p v (q ^ ~r); (c) (p v ~r) ^ (q v ~r).

5) Demostrar la ley de distribución: p ^ (q v r) Ξ (p ^ q) v (p ^ r), construyendo las tablas de verdad apropiadas.

6) Demostrar que p v (p ^ q) Ξ p, construyendo las tablas de verdad apropiadas.7) Escribir la negación de c/u de los siguientes enunciados, de la manera más sencilla posible:

a) Él es bajo pero inteligente.b) Ella es rubia o de ojos azules.c) El ni es rico ni es feliz.d) El se retiró o no fue a clases hoy.e) Ni Marcos ni Pedro son infelicesf) Ana habla español o francés pero no alemán

8) Encontrar las tablas de verdad de las siguientes proposiciones: (a) (~p v q) p; →(b) q (↔ ~q ^ p)

9) Encontrar las tablas de verdad de las siguientes proposiciones: (a) (p ↔ ~q) (→ ~p ^ q); (b) (~q v p) (q ↔ → ~p).

10)Determinar la contrarrecíproca de cada enunciado: (a) Si él tiene coraje, él ganará; (b) Sólo si no está cansado, él ganará.

11)Encontrar:a) La contrarrecíproca de p q.→b) La contrarrecírpoca de ~p q.→c) La contrarrecíproca de la recíproca de p → ~q.d) La recíproca de la contrarrecíproca de ~p → ~q.

9 / 16

Page 10: Lógica y tablas de verdad

Estructuras de Programación

ANEXO: Pasos para armar la tabla de verdad de una proposición, por ej: ~(p ^ ~q)

Paso usual:p q ~q p ^ ~q ~(p ^ ~q)

VVFF

VFVF

FVFV

FVFF

VFVV

Otra forma de armar la tabla de verdad para la misma proposición, es armar una tabla sólo con los valores de las variables y usar columnas para cada nueva variable y conectivas lógicas de la proposición, por ejemplo:

p q ~ (p ^ ~ q)

VVFF

VFVF

Paso

A continuación se copian los valores de verdad de las variables en las columnas que corresponda:

p q ~ (p ^ ~ q)

VVFF

VFVF

VVFF

VFVF

Paso 1 1

A continuación de asignan los valores de verdad de los conectores lógicos, desde el más interior hasta el más exterior (1º ~q).

p q ~ (p ^ ~ q)

VVFF

VFVF

VVFF

FVFV

VFVF

Paso 1 2 1

2º se debe definir los valores del conector lógico ^

p q ~ (p ^ ~ q)

VVFF

VFVF

VVFF

FVFF

FVFV

VFVF

Paso 1 3 2 1

10 / 16

Page 11: Lógica y tablas de verdad

Estructuras de Programación

3º se deben definir los valores de la segunda negación (más exterior), que representa ~(p ^ ~q)

p q ~ (p ^ ~ q)

VVFF

VFVF

VFVV

VVFF

FVFF

FVFV

VFVF

Paso 4 1 3 2 1

En cada paso se deben evaluar los valores de verdad del paso anterior.

11 / 16

Page 12: Lógica y tablas de verdad

Estructuras de Programación

Álgebra de Boole. Compuertas Lógicas.

Sea B un conjunto en el cual se han definido dos operaciones binarias, + y *, y una operación unitaria denotada '. Sean 0 y 1 dos elementos de B. Entonces la sextupla (B, +, *, ', 0, 1), si se cumplen los siguientes axiomas para los elementos a, b, c, cualesquiera en el conjunto B.

1) Leyes conmutativas:

(1.a) a + b = b + a (1.b) a * b = b * a

2) Leyes distributivas:(2.a) a + (b * c) = (a + b) * (a + c) (2.b) a * (b + c) = (a * b) + (a * c)

3) Leyes de identidad:(3.a) a + 0 = a (3.b) a * 1 = a

4) Leyes de complemento:(4.a) a + a' = 1 (4.b) a * a' = 0

Al elemento ' se le llama complemento. + suma. * producto.

Es costumbre obviar el uso del elemento *. Por ejemplo a * b = abOrden de precedencia. (se puede modificar con el uso de paréntesis):

1 = '2 = *3 = +

Por ejemplo: a + b * c significa a + (b * c)

Circuitos y Compuertas Lógicas.

• Son circuitos que pueden tener un o más dispositivos de entrada y un sólo dispositivo de salida.

• En cada instante determinado, cada dispositivo de entrada tiene exactamente un bit de información (0 ó 1).

• Estos datos son procesados por el circuito para producir un bit de salida, ya sea un 1 o un 0 enel dispositivo de salida.

• A los dispositivos de entrada se le pueden asignar sucesiones de bits, que son procesadas por el circuito, bit por bit, para generar una sucesión similar de bits de salida.

• Un bit se puede interpretar como un voltaje que pasa a través de los dispositivos. Un 1 se interpreta como un voltaje positivo (alto) y un 0 se interpreta como un voltaje negativo (bajo).

• Las sucesiones de bits se procesan de izquierda a derecha.• Los circuitos lógicos se construyen a partir de ciertos circuitos elementales llamados

compuertas lógicas.

Compuerta OR

• La salida de la compuerta OR se denota: Y = A + B.• Su comportamiento es idéntico al OR lógico• Desde el punto de vista eléctrico, se puede considerar como un circuito con interruptores

paralelos.Tabla de vedad de la compuerta OR:

12 / 16

Page 13: Lógica y tablas de verdad

Estructuras de Programación

A B A + B

0011

0101

0111

Por ej: se tienen las siguiente secuencias de bit:A = 11000110B = 10010101

Entonces la compuerta OR genera la siguiente secuencia: 11010111Dibujar circuito equivalente...

• La compuerta OR puede tener más de dos entradas, por ej. la sgte figura: Y = A + B + C + D• La salida será 0 sólo si todas las entradas son 0, luego las siguientes entradas:

• A = 10000101 Dibujar circuito equivalente...• B = 10100001• C = 00100100• D = 10010101

OR general la salida: Y = 10110101

Compuerta AND.

• La salida de una compuerta AND se designa como el producto de sus entradas: Y = A * B = AB• La salida de AND genera 1 sólo cuando todas sus entradas tienen el valor 1

Tabla de vedad de la compuerta AND:

A B A * B

0011

0101

0001

Dibujar circuito equivalente...

13 / 16

Page 14: Lógica y tablas de verdad

Estructuras de Programación

• Es equivalente a tener un circuito eléctrico con dos interruptores en serie, todos deben estar cerrados para que pase la corriente.

• Una compuerta AND también puede tener más de dos entradas, por ej. la figura sgte muestra una compuerta AND con cuatro entradas. Y = A * B * C * D = ABCD.

Dibujar circuito equivalente...

• Si se tienen las siguientes entradas:• A = 11100111• B = 01111011• C = 01110011• D = 11101110

AND genera la salida: Y = 01100010

Compuerta NOT

• También se denomina inversor. Tiene una sola entrada y genera una salida que es el complemento de la entrada. Y = A.

• El valor de salida de Y es el opuesta al valor de entrada.

Tabla de vedad de la compuerta NOT:

A A

01

10

Circuitos Lógicos.

• Las tablas de verdad de las compuertas OR, AND y NOT son idénticas a las proposiciones de disyunción (p v q), conjunción (p ^ q) y negación (~p).

• La diferencia es que en este caso se usan 1 y 0 en vez de V y F.• En general un circuito lógico L tiene varias entradas y una sola salida. Las entradas atraviesan

un conjunto de compuertas lógicas AND, OR, NOT, las cuales generalmente alimentan a una compuerta final OR.

• Dado un circuito lógico L, se desea conocer el efecto sobre L de cualquier entrada arbitraria. Esto se hace definiendo una tabla de verdad para L. a partir de las tablas de verdad de las compuertas que componen el circuito L. Esto se hace paso a paso.

• Por ej: se tiene el sgte circuito L: ← Hacer ejercicios más simples previo a este

14 / 16

Page 15: Lógica y tablas de verdad

Estructuras de Programación

• Para determinar l tabla de verdad de Y, se debe partir con las tablas de verdad de las compuertas lógicas

• Ahora es posible ver las posibilidades para Y, recordando el comportamiento de las distintas compuertas lógicas.

A 0 0 0 0 1 1 1 1

B 0 0 1 1 0 0 1 1

C 0 1 0 1 0 1 0 1

A 1 1 1 1 0 0 0 0

B 1 1 0 0 1 1 0 0

• A*B*C = 00000001. (toma el valor 1 cuando todas las entradas son 1)• A*B*C = 00000100.• A*B = 00110000.Ahora, las salidas de las compuertas AND se deben combinar en la compuerta OR para hacer la

15 / 16

A*B*C

A*B*C

A*B

= A*B*C + A*B*C + AB

Page 16: Lógica y tablas de verdad

Estructuras de Programación

tabla de verdad del circuito L. Ahora el comportamiento de OR es 1 si cualquiera de las entradas es 1.

A*B*C 0 0 0 0 0 0 0 1

A*B*C 0 0 0 0 0 1 0 0

A*B 0 0 1 1 0 0 0 0

Y 0 0 1 1 0 1 0 1

Ejercicios:

1. Dadas las siguientes sucesiones de bits, determinar las salidas generadas por (a) una compuerta AND y (b) una compuerta OR:

(a) (b) (c)A=110001 A=10001111 A=101100111000B=101101 B=00111100 B=000111001101

2. Dada las siguientes sucesiones de bits, determinar las salidas generadas por una compuerta NOT.

(a) A=110001 (b) A=10001111 (c) A=101100111000

3. Dadas las siguientes sucesiones de bits, encontrar las tablas de verdad indicadas:

A=1100110110B=1110000111C=1010010110

(a) A+B+C (b) A*B*C (c) C*(A+B) (d) A*(B+C)

4. Dadas cinco entradas a un circuito A, B, C, D y E. Encontrar todas las posibles combinaciones de sucesiones de bits que se pueden dar.

5. Dadas tres entradas A, B y C. Encontrar las tablas de verdad de las siguientes combinaciones:

A*B*C A*B*C A*B*C A*B*C A*B*C A*B*C A*B*C A*B*C

6. Encontrar la expresión de Boole y la tabla de verdad para el siguiente circuito lógico:

16 / 16