Observa de nuevo el organigrama del cajero, donde si opción = 1 significaba que el usuario deseaba introducir dinero y cuando el usuario tecleaba el valor 2 (opción=2) quería decir que deseaba retirar dinero. ¿Qué pasaría si en opción almaceno el valor 5? ó dicho de otra forma ¿Qué pasaría si la variable opción = 5?. El lector podrá comprobar aterrado que el organigrama funciona de la misma forma que si hubiera tecleado el valor 2; es decir, que si opción = 2 y lo mismo ocurriría si tecleo el valor 12345 o -345678. Esto se debe a que la sentencia if realmente comprueba si se cumple o no una condición; en este caso comprueba si se cumple que (opción=1), si se cumple quiere decir que opción = 1, pero si no se cumple quiere decir que opción puede contener cualquier valor distinto de 1.
Esta forma de actuar de la sentencia de selección if nos puede llegar a plantear ciertos problemas. Por ejemplo en la sentencia:
leer la variable sexo.
if (sexo="Varón") then
escribe "eres un chico"
else
escribe "eres una chica"
endif
Si el usuario teclea "hombre"; es decir sexo="hombre" el programa le contestaría: "eres una chica", lo cuál probablemente no sería de su agrado. En lugar de esto, ¿no sería mejor hacer un programa que realizara lo siguiente?:
  • Si el usuario teclea "Varón" escribiría "eres un chico"
  • Si el usuario teclea "Hembra" escribiría "eres una chica"
  • Si el usuario teclea cualquier otro valor escribiría "el contenido de la variable sexo sólo puede ser: Hembra o Varón. Por favor teclee de nuevo la respuesta".
Otra situación, ¿cómo haríamos si en el organigrama del cajero tenemos las opciones: 1-Meter dinero, 2-Retirar dinero, 3- Consultar saldo?.
Todos estos problemas nos los resuelve con gran eficacia la sentencia if-else-if o sentencia if en escalera.
La sentencia if-else-if se distingue de las otras sentencias if porque ésta puede evaluar más de una condición. Un ejemplo puede ser:
si (opción=1) entonces
escribe "introduce la cantidad de dinero a meter"
leer cantmet
saldo=saldo+cantmet
de lo contrario si (opción = 2) entonces
escribe "introduce la cantidad de dinero a retirar"
leer cantret
saldo =saldo-cantret
de lo contrario si (opción = 3) entonces
escribe "su saldo es",saldo
de lo contrario
escribe "debe elegir una opción numerada del 1 al 3".
fin if.
de forma genérica:
si condición 1 entonces
sentencias 1.
de lo contrario si condición 2 entonces
sentencias 2.
de lo contrario si condición 3 entonces
sentencias 3.
de lo contrario
sentencias 4.
fin if.
La sentencia if-else-if funciona de la siguiente manera.
1.- evalúa condición 1, si es verdadera entonces ejecuta "sentencias 1" y se acaba la sentencia if-else-if. Si la condición 1 es falsa entonces va a evaluar la siguiente condición (paso 2).
2.- evalúa condición 2, si es verdadera entonces ejecuta "sentencias 2" y se acaba la sentencia if-else-if. Si la condición 2 es falsa entonces se va a evaluar la siguiente condición (paso 3).
3.- evalúa condición 3, si es verdadera entonces se ejecuta "sentencias 3" y se acaba la sentencia if-else-if. Si la condición 3 es falsa entonces como ya no hay más condiciones quiere decir que no se ha cumplido ni la condición 1, ni la 2 ni la 3; por tanto se ejecuta el paso 4 (de lo contrario).
4.- como no se ha cumplido ninguna condición se ejecuta "sentencias 4".
El organigrama de esta sentencia se puede ver en la figura siguiente (figura nº 9).

1_o.jpg

Hay lenguajes que no admiten la sentencia if-else-if, en este caso se emplearían las “IF ANIDADAS” (ver el apartado siguiente).

En una sentencia if-else-if se pueden evaluar tantas condiciones como se deseen; es decir podemos poner tantas líneas de lo contrario si condición x como queramos. Al igual que el resto de las sentencias if los lenguajes de programación suelen escribir de forma distinta esta sentencia en función del número de sentencias que se ejecuten en cada alternativa. Si en cada alternativa hay una sola sentencia se escribe de una forma mientras que si hay varias se escribe de otra.

Recuerda que: Una sentencia if-else-if evalúa sucesivamente un conjunto de condiciones y cuando encuentra una que sea verdadera, entonces ejecuta un conjunto de instrucciones y acaba la sentencia if. En caso de que no encuentre ninguna condición verdadera, entonces se ejecutan las instrucciones que están en la opción "de lo contrario".