Categorías destacadas
programacion php    
Artículo
53
¡votar!

 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
110 111 10
100 010 01
011 011 01
001 001 10

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.

Publicado por:
ulises eduardo
Recomendar
a un amigo
Compartir
en redes
 
Comentarios
Pablo Alejandro dice:

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.

17/06/2010, a las 23:42:07
 
BBDD
Entornos de desarrollo
Entretenimiento
Herramientas
Internet
Lenguajes de script
Lenguajes imperativos
Lenguajes orientados a objeto
Otros lenguajes
Plataformas
Teoría
Varios
Copyright © 1998-2011 Programación en Castellano. Todos los derechos reservados
Datos legales | Politica de privacidad | Contacte con nosotros | Publicidad

Diseño web y desarrollo web. Un proyecto de los hermanos Carrero.

Red internet:
Juegos gratis | Servidores dedicados
Más internet: Password | Directorio de weblogs | Favicon