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.