Hablemos un poco de lógica; aquí sólo resumiremos las ideas, porque
ya se vieron en clases. Primero que nada, recordemos que aquí al hablar de lógica
nos referimos a una lógica formal, exacta, en que las cosas o son falsas o son
verdaderas, y no hay términos intermedios. Una expresión puede ser falsa
o verdadera, y combinándolas de distintas maneras obtenemos expresiones que a su vez
pueden ser falsas o verdaderas. Escribiremos "V" para verdadero, "F" para falso.
Cada expresión, entonces, tiene un "valor de verdad", que es V o F. La expresión "el sol es azul"
vale F, la expresión "la U es campeón" es V, etcétera. Y estas se combinan
de acuerdo a la lógica: si yo niego algo, su valor cambiar. Por ejemplo, "la U no es campeón"
valdrá F, y "el sol no es azul" valdrá V. En general, si una expresión X
vale V, su negación vale F, y si la expresión vale F, su negación vale V.
La negación de X la escribimos "~X", y podemos resumir lo recién dicho con esta tabla:
Hay operaciones que involucran más de una expresión. Por ejemplo, el "o". Si yo digo
que "X o Y" es cierto, lo que estoy diciendo es que al menos una de ellas es cierta.
Como cuando uno le dice a alguien "ok, yo te llamo, o te mando un mail". Ahí uno está afirmando
que al menos una de las dos cosas va a ser cierta (no se excluye que puedan ser ciertas las dos). O sea
que el resultado de "X o Y" será falso únicamente cuando X sea falso
y Y también sea falso. Lo resumimos en la tabla siguiente.
Otras operaciones importantes son el "y", en que uno dice que ambas partes tienen que ser ciertas,
y el "o exclusivo", que dice que una, y solamente una de las partes es cierta. Las tablas correspondientes
son
| |
X | Y | X o Y (exclusivo) |
V | V | F |
V | F | V |
F | V | V |
F | F | F |
|
Bueno. ¿Y para qué sirve todo esto? Pues para hartas cosas. Por un lado, es la forma de
analizar la lógica de las afirmaciones, y la lógica de los razonamientos exactos. Y por otro
lado, es la forma en que opera el computador. El computador sólo entiende ceros y unos, y los
entiende como "falso" y "verdadero", respectivamente. Y todas sus operaciones las hace en base a
"puertas lógicas", en que las señales que entran al circuito son ceros o unos, y lo que
sale del circuito es el resultado de alguna de las operaciones.
Como ejemplo, uno puede sumar un par de números. En binario (el lenguaje de ceros y unos que entiende
el computador), los números 0, 1, 2, 3, etc, se escriben 0, 1, 10, 11, etc... Es como si tomaramos
nuestros números normales, y quitáramos todos los que incluyen algo distinto del 0 y el 1.
Al sumar, entonces, tenemos 0+0=0, 0+1=1, 1+0=1, 1+1=10. Como un cero a la izquierda no afecta, esto se puede escribir
0 + 0 = 00
0 + 1 = 01
1 + 0 = 01
1 + 1 = 10
Si separamos el primer dígito y el segundo dígito del resultado, vemos que el primer dígito
es 1 cuando los dos sumandos son 1, y es 0 en caso contrario. El segundo dígito es 1 cuando uno de
los sumandos es 1 y el otro es 0. En otras palabras: el primero dígito corresponde a hacerle un "y" lógico
a los sumandos, y el segundo corresponde a hacerles un "o exclusivo". Así que si el computador sabe
hacer operaciones lógicas, entonces también puede sumar.
Lo que uno hace, al estudiar sistemas complejas, es tratar de construir en ellos circuitos lógicos. Si uno
logra construir circuitos lógicos, entonces significa que -en principio- es posible construir ahí un computador:
en otras palabras: se puede calcular cualquier cosa.
La idea es hacer circuitos como los de la izquierda, en que por un lado estén las expresiones que uno
quiere evaluar, y por el otro salga el resultado. Si la puerta es un "y", y entran un falso y un verdadero, tiene
que salir un falso. Etcétera.
Recuerden: siempre se hace la equivalencia 0=FALSO, 1=VERDADERO. Es arbitrario (podría haberse
escogido al revés), pero es esto lo que se escogió. El computador dice "¿hay golpecito
de corriente?", y si la respuesta es sí, interpreta un 1, y si es no, interpreta un 0.