¡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 y videos
  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 PHP (numerosos ejercicios corregidos)
Extractos del libro
Algoritmia - Técnicas fundamentales de programación Ejemplos en PHP (numerosos ejercicios corregidos) Volver a la página de compra del libro

Pruebas y lógica booleana

Pruebas y condiciones

1. Consideraciones iniciales

En el capítulo anterior ha podido familiarizarse con las expresiones que utilizan operadores, ya sean de cálculo, de comparación o booleanos. Estos operadores y expresiones cobran todo su sentido cuando se utilizan en condiciones (también conocidas como ramas condicionales). Una expresión evaluada es verdadera (el resultado es distinto de cero) o falsa. Dependiendo del resultado, el algoritmo realizará una acción u otra. Este es el principio de la condición.

Mediante operadores booleanos, la expresión se puede componer: se enlazan varias expresiones mediante un operador booleano, posiblemente agrupadas con paréntesis para cambiar su prioridad.

(a=1 O (b*3=6)) Y c>10 

es una expresión perfectamente válida. Será verdadera si cada uno de sus componentes cumple las condiciones impuestas. Esta expresión es verdadera si a es 1 y c es mayor que 10 o si b es 2 (2*3=6) y c es mayor que 10.

Tomemos el algoritmo del capítulo anterior que calcula los dos resultados posibles de una ecuación de segundo grado. El enunciado simplificado decía que, por razones prácticas, sólo funciona el caso en que la ecuación tiene dos soluciones. En otras palabras, el algoritmo no es erróneo en este caso, pero es incompleto. Le faltan condiciones para comprobar el valor del determinante: ¿es positivo, negativo o cero? Y en estos casos, ¿qué debemos hacer y cómo debemos hacerlo?

Imagine un segundo algoritmo para ir del punto A al punto B. En realidad, no lo hará aquí, porque es una tarea muy compleja en una gran red de carreteras. Hay muchos sitios web que permiten establecer una ruta con indicaciones. Lo interesante es el resultado. Las indicaciones son sencillas: siga recto, gire a la derecha en el siguiente cruce, conduzca tres kilómetros y, en la rotonda, tome la tercera salida en dirección B. En la mayoría de los casos, si sigue esta ruta llegará sano y salvo. ¿Pero qué pasa con los imprevistos? ¿Adónde irá si la carretera de la derecha en el siguiente cruce se ha convertido en una calle de sentido único (esto puede ocurrir a veces, incluso con un GPS, así que tenga cuidado) o si unas obras le impiden tomar la tercera salida de la rotonda?

Siga la misma ruta: siga...

Álgebra booleana

1. El origen de las pruebas

Las pruebas que se realizan tanto en algoritmos como en programación son pruebas lógicas o, mejor dicho, pruebas que hacen uso de la lógica. En el capítulo dedicado a las variables y los operadores ya se abordó brevemente este punto al hablar de los operadores booleanos. Los operadores lógicos Y, O y NO son representaciones de la lógica. ¿De qué tipo de lógica estamos hablando?

Básicamente, la lógica es la misma para todos, aunque obviamente la interpretación de los resultados puede variar de un individuo a otro (en estadística, por ejemplo). La lógica es universal. Pero, hasta hace poco, no había forma de representarla en términos reales, en forma de símbolos, afirmaciones, etcétera. No existía una representación formal de la lógica.

Pero un ordenador es lógico (aunque pueda pedirle que haga cosas ilógicas; al fin y al cabo, es usted quien lo programa). La lógica es incluso la base de muchas aplicaciones matemáticas, electrónicas y de inteligencia artificial.

En informática, el hardware es electrónico y depende de la lógica y los programas dependen de pruebas y cálculos que apelan a la lógica y tienen que funcionar en circuitos electrónicos. Sin lógica, no puede haber electrónica ni ordenadores ni programas.

Por eso, los operadores, las condiciones y las pruebas no se deben poner de cualquier manera. No hay nada más lógico que un ordenador, pero tampoco hay nada más estúpido: ejecutará ingenuamente exactamente lo que le pida, aunque el resultado conduzca a un error o sea falso, siempre que las pruebas estén bien planteadas y se pueda deducir de ellas una respuesta lógica. Así que:

PROGRAMA ESTUPIDO  
VAR  
  calor, gorro, salir en Booleano 
INICIO  
  calorimages/flechegauche.PNGVERDADERO  
  gorroimages/flechegauche.PNGVERDADERO  
  Si calor=VERDADERO Y gorro=VERDADERO Entonces  
    Salirimages/flechegauche.PNGVERDADERO  
  FinSi  
FIN 

Este algoritmo se puede interpretar así: "Si hace calor fuera y me pongo un sombrero, entonces puedo salir". Para usted y para mí, seres humanos, este...

Ejercicios

Ejercicio 1

Escriba un algoritmo que utilice el teclado para leer tres nombres comunes y le diga si están en orden alfabético.

Ejercicio 2

Utilizando comparaciones, escriba un algoritmo que lea las horas y los minutos del teclado y muestre la hora un minuto después. Por ejemplo, si el usuario teclea 20 y luego 33, el algoritmo debería responder:

"Dentro de un minuto, serán 20 hora(s) 34 minuto(s)".

Nota: se supone que el usuario introduce una hora válida.

Ejercicio 3

Escriba el mismo algoritmo, pero utilizando dos variables booleanas para comprobar si los minutos son iguales a 60 y las horas a 24, sin comparaciones en los SI.

Ejercicio 4

Escriba un algoritmo que determine la categoría deportiva de un usuario en función de su edad:

18 a 19 años: junior

De 20 a 22 años: promesa

23 a 39 años: senior

40 años o más: veterano

Escribe el programa PHP equivalente.

Ejercicio 5

Una compañía de seguros de coche debe aplicar un recargo en función de la edad, el sexo y el número de años de carné de conducir del interesado.

Los hombres mayores de 22 años pagan la prima adicional.

Las mujeres de entre 20 y 30 años pagan la prima adicional.

Las personas con más de 5 años de experiencia al volante no pagan la prima adicional.

Escriba un algoritmo para determinar si la persona debe o no pagar la prima adicional.

Escribe...