5.1.3.+Sentencia+if+en+escalera+(IF-ELSE-IF)

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?: 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).**
 * 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".



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