|
Introducción a la programación |
Introducción a la lógica
Estamos realizando un cálculo complejo siguiendo (por ejemplo) algún método iterativo en el cual, como condición de parada, necesitamos que sucedan varias cosas:
- No exceder de una cierta tolerancia o cota del error
- No exceder de un número máximo de iteraciones
- Tener un número mínimo de cifras exactas en el resultado
y estas condiciones deben comprobarse A LA VEZ. ¿Cómo lo hacemos? Bueno, espero que quede claro tras la siguiente (necesaria y breve) introducción a la lógica.
En primer lugar, tenemos las proposiciones. Una proposición es una afirmación de la que se puede decir sin ambigüedad y de forma excluyente que es cierta o falsa. El valor lógico de la verdad es 1, y el valor lógico de la mentira es 0.
Por ejemplo: ''María es una chica'' es una proposición, puesto que afirmamos algo sin ambigüedad alguna y, además, o es verdad, o no lo es. O es chica, o no lo es.
Sin embargo: ''si no tienes dinero, eres pobre o gastas mucho'' no es una proposición. No es una afirmación de la que se pueda decir sin ambigüedad y de forma excluyente que sea verdad o mentira. No tener dinero puede ser consecuencia de un robo, o de muchas otras cosas. Sin embargo, esto lo podemos dividir en proposiciones más sencillas: ''no tienes dinero'' (evidentemente, o es verdad o no lo es), ''eres pobre'' (cierto o no) y ''gastas mucho'' (verdad o mentira). Estas proposiciones están unidas mediante lo que se llaman CONECTORES LOGICOS. Estos son los siguientes:
| o | || |
| y | && |
| no | ! |
| o exclusivo | XOR |
| condicional | -> "si... entonces..." |
| doble condicional | <-> "... si y sólo si..." |
He usado la notación de C para los tres primeros, por no tener disponibles los símbolos lógicos O:)
Si tenemos dos proposiciones p, q unidas por alguno de estos conectores, el valor de verdad de la proposición compuesta, según el valor de verdad de p y de q, viene dado en la siguiente tabla (llamada Tabla de Verdad):
| p | q | !p | p && q | p || q | p -> q | p <-> q | p XOR q |
|---|---|---|---|---|---|---|---|
| 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 |
| 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 |
| 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 |
Claramente, p && q será cierta cuando sean ciertas p y q. No podemos decir "verdad" y "mentira" a la vez y pretender que esto sea cierto. Sin embargo, p || q es cierta cuando es cierta una de las dos proposiciones. Si tengo "verdad" o "mentira", está claro que una o la otra (si no las dos) es cierto.
Para aclarar el XOR, pondré un ejemplo: O estás vivo o estás muerto, pero ni puedes estar las dos cosas a la vez ni puedes estar ninguna, por eso sólo es cierto cuando únicamente una de las dos proposiciones es cierta.
Una forma proposicional que es SIEMPRE VERDAD se llama TAUTOLOGIA. Si es SIEMPRE FALSA se llama CONTRADICCION.
Siempre tendremos que p || (!p) es tautología, mientras que p && (!p) es contradicción.
Cuando -> es tautología, se llama IMPLICACION. Cuando <-> es tautología, se llama DOBLE IMPLICACION y la simbolizaré con <|=|>
Voy a poneros las propiedades de &&, || (podeis convenceros haciendo las tablas de verdad), que muchas veces os serán útiles:
- Leyes asociativas
- p || (q || r) <|=|> (p || q) || r
- p && (q && r) <|=|> (p && q) && r
- Leyes conmutativas
- p || q <|=|> q || p
- p && q <|=|> q && p
- Leyes distributivas
- p && (q || r) <|=|> (p && q) || (p && r)
- p || (q && r) <|=|> (p || q) && (p || r)
p && 1 <|=|> p (1 es tautología)
p || 0 <|=|> p (0 es contradicción)
p && p <|=|> p p || p <|=|> p p || (!p) <|=|> 1 p && (!p) <|=|> 0 p <|=|> !(!p)
Como consecuencia, se tiene (podeis comprobarlo):
!1 <|=|> 0 !0 <|=|> 1 !(p && q) <|=|> !p || !q !(p || q) <|=|> !p && !q
Estas dos últimas se conocen como "Leyes de De Morgan", y son muy importantes. Además, pueden generalizarse a n proposiciones.
Espero que con esto tengais un pequeño instrumento que os ayude a pensar en términos lógicos a la hora de evaluar una condición. Al fin y al cabo, vosotros quereis que la máquina haga algo si el resultado lógico es 0 o 1, así que esto es precisamente lo que necesitais.
Muy pero Muy interesante el articulo, solo que tengo una critica. Explican todo muy bien, pero donde se supone que tenemos que hacer los ejercisios, en que programa!!! en un notepad?? en un Word¡?¡ en un Exel?? en Dreamweaver?, en una hoja?? Aguardo su respuesta!! Gracias.
















































