Pruebas y lógica buleana
Las pruebas y condiciones
1. Principio
En el anterior capítulo ha podido familiarizarse con las expresiones utilizando los operadores, tanto de cálculo, como de comparación (igualdad por ejemplo) o buleanos. Estos operadores y expresiones tienen todo su sentido cuando se usan en las condiciones (que llamamos también uniones condicionales). Una expresión evaluada es verdadera (el resultado es diferente de cero) o falsa. Dependiendo de este resultado, el algoritmo va a realizar una acción u otra. Es el principio de condición.
Gracias a los operadores buleanos, la expresión puede ser compuesta: varias expresiones están relacionadas entre ellas con ayuda de un operador buleano, eventualmente agrupadas con los paréntesis, para modificar la prioridad.
(a=1 O (b*3=6)) Y c>10
Es una expresión totalmente válida. Esta será verdadera si cada uno de sus componentes respeta las condiciones impuestas. Esta expresión es verdadera si a vale 1 y c es superior a 10 o si b vale 2 (2*3=6) y c es superior a 10.
Retome el algoritmo del capítulo anterior, que calculaba los dos resultados posibles de una ecuación de segundo grado. El enunciado simplificado decía que por razones prácticas, solo funcionará el caso en el que la ecuación tiene dos soluciones. Dicho de otra manera, el algoritmo no es falso en este supuesto, pero es incompleto. Faltan las condiciones para probar el valor del determinante: ¿es positivo, negativo o nulo? Y en estos casos, ¿qué hacer y cómo hacerlo?
Imagine un segundo algoritmo que permite ir de un punto A a un punto B. En realidad no va a hacerlo aquí, porque es muy complejo en una gran red de carreteras. Hay numerosos sitios en Internet que le permiten establecer un trayecto con sus indicaciones. Es el resultado lo que es interesante. Las indicaciones son sencillas: continuar todo recto, girar a la derecha en el próximo cruce, recorra tres kilómetros y en la rotonda, tome la tercera salida dirección a B. En la mayor parte de los casos, si sigue este trayecto llegará a buen puerto. Pero, ¿qué sucede con las situaciones inesperadas? ¿Por donde va a ir si la carretera de la derecha en el próximo cruce se ha convertido en vía de sentido prohibido (algunas veces sucede, también con un GPS, tenga...
El álgebra buleana
1. El origen de las pruebas
Las pruebas realizadas tanto en algoritmia como en programación, son pruebas lógicas o recuerdan a la lógica. El capítulo Las variables y los operadores, ya ha abordado brevemente este punto cuando se han presentado los operadores buleanos. Los operadores llamados lógicos Y, O y NO son representaciones de la lógica. ¿De qué lógica hablamos?
Fundamentalmente, la lógica es la misma para todo el mundo, aunque evidentemente la interpretación de los resultados pueda variar de un individuo a otro (en estadística, por ejemplo). La lógica es universal. En caso de haber existido, el señor Spock no lo hubiera dicho mejor. Pero hasta hace poco (en la escala de la humanidad), no había ningún medio de representarla realmente, en forma de símbolos, de aserciones, etc. No había ninguna representación formal de la lógica.
Un ordenador es lógica (incluso si le podemos solicitar cosas ilógicas, es usted el que lo programa después de todo). La lógica es la base de numerosas aplicaciones matemáticas, electrónicas y de inteligencia artificial. En informática, el hardware es electrónico y depende de la lógica. Los programas dependen tanto de las pruebas como de los cálculos que aprovechan la lógica y deben funcionar en los circuitos electrónicos. Sin lógica, no hay electrónica, ni ordenadores, ni programas.
Esto es lo que hace que los operadores, condiciones y pruebas no se puedan hacer de cualquier manera. No hay nada más lógico que un ordenador, pero también nada más estúpido: el ordenador va a ejecutar tontamente (incluso la noción de tontamente le es desconocida) exactamente lo que le pide, incluso si el resultado implica un error. Esto le importa poco desde el momento en que la sintaxis es correcta.
De esta manera:
PROGRAMA ESTUPIDO
VAR
frio, desnudo, salir en Buleano
INICIO
frio←VERDADERO
desnudo←VERDADERO
Si frio=VERDADERO Y desnudo =VERDADERO Entonces
salir←VERDADERO
FinSi
FIN
Este algoritmo se puede interpretar de esta manera: "Si hace frio fuera y estoy desnudo, entonces...
Ejercicios
Ejercicio 1
Escriba, usando comparaciones, un algoritmo que muestre el estado del agua (hielo, líquido, vapor) en función de su temperatura.
Ejercicio 2
Escriba el mismo algoritmo, pero utilizando dos variables buleanas para comprobar el estado del agua, sin comparaciones en los SI.
Ejercicio 3
Escriba un algoritmo que determine la categoría deportiva de un usuario en función de su edad:
-
6 a 7 años: benjamín
-
8 a 9 años: alevín
-
10 a 11 años: infantil
-
12 años y más: cadete
Escriba el programa Python asociado.
Ejercicio 4
Escriba un algoritmo que permita saber cuál es el día de la semana, utilizando el siguiente método y después conviértalo a Python:
-
Conserve las dos últimas cifras del año.
-
Añada 1/4 de esta cifra, ignorando el resto: división entera.
-
Añada el día del mes.
-
Según el mes, añada el valor indicado:
-
Enero = 1
-
Febrero = 4
-
Marzo = 4
-
Abril = 0
-
Mayo = 2
-
Junio = 5
-
Julio = 0
-
Agosto = 3
-
Septiembre = 6
-
Octubre = 1
-
Noviembre = 4
-
Diciembre = 6
-
Si el año es bisiesto y el mes es enero o febrero, restamos 1.
-
Según el siglo, añada el valor indicado:
-
Años 1600 = 6
-
Años 1700 = 4
-
Años 1800 = 2
-
Años 1900 = 0
-
Años 2000 = 6
-
Años 2100 = 4
-
Divida la suma por 7 y guarde el resto: un módulo.
-
Este resto es el día de la semana buscado.
-
1 para...