Resumen: Entrega nº 43 del curso Bases de la programación Nivel I.
Codificación aprenderaprogramar.com: CU00144A

 

 

PARADOJA DEL SI (IF ... THEN ... ELSE) BURLADO POR UN INTERVALO. INCORRECCIÓN DE COMPARACIONES DOBLES.

Supongamos que se nos presenta un problema con una decisión tal que si una variable toma un valor comprendido en un intervalo hay que mostrar un mensaje y si está fuera de ese intervalo, otro mensaje.

Podríamos escribir (variable = A, intervalo 50 – 75, mensaje si está dentro del intervalo es Arabia, si está fuera es Eusebio):

 

 

Si 50 < A < 75 Entonces

Mostrar “Arabia”

SiNo

Mostrar “Eusebio”

FinSi

 

También:

Si A > 50 y A < 75 Entonces

Mostrar “Arabia”

SiNo

Mostrar “Eusebio”

FinSi

 

 

En principio, si A = 160 en ambos casos deberíamos obtener en pantalla el mensaje “Eusebio”. Sin embargo, con la sintaxis 50 < A < 75 nos podemos encontrar con que el ordenador nos devuelve “Arabia” ¿Por qué? Pues simplemente porque el lenguaje utilizado no admita comparaciones dobles del tipo x < y < z. Ante esta situación, o bien se produce un error o bien se evalúa x < y y si se cumple, se pasan a ejecutar las instrucciones contenidas en el Entonces.

Este “resultado inesperado” puede ocasionar un buen quebradero de cabeza, ya que en un programa extenso no será nada fácil detectar este error. Como remedio, usaremos siempre la escritura de condiciones una detrás de otra y no de forma múltiple, tanto en el pseudocódigo como en el código. Y como dice el refrán, “a perro muerto se acabó la rabia”.

  

 

 

 

 

 

Para acceder a la información general sobre este curso y al listado completo de entregas pulsa en este link:  Ver curso completo.

Para  hacer un comentario o consulta utiliza los foros aprenderaprogramar.com, abiertos a cualquier persona independientemente de su nivel de conocimiento.

 

Descargar archivo: