¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Algoritmia - Técnicas fundamentales de programación
  3. Técnicas fundamentales de programación
Extrait - Algoritmia - Técnicas fundamentales de programación Ejemplos en Python (numerosos ejercicios corregidos)
Extractos del libro
Algoritmia - Técnicas fundamentales de programación Ejemplos en Python (numerosos ejercicios corregidos)
2 opiniones
Volver a la página de compra del libro

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...