Algoritmos y Programación — Parte III
Estructuras de selección
Estructuras de selección
Existen problemas que requieren permitir o evitar la ejecución de ciertas instrucciones en función de una condición determinada. Las estructuras condicionales permiten a un programa ejecutar o no una secuencia de instrucciones, según una expresión lógica.
Condicional simple — If..then
Al ejecutarse una sentencia if, se evalúa la expresión (que puede estar entre paréntesis o no) que sigue a la palabra reservada “if”. Si la expresión equivale a true
, se ejecutan las instrucciones encerradas en el condicional; en caso contrario (la expresión vale false
), no se ejecutarán las instrucciones encerradas en el condicional y la ejecución continuará en la sentencia siguiente del programa.
i = rand(10)
if i > 5 then
puts “#{i} es mayor a 5”
end
Condicional con opción por defecto — If..else
La estructura if..else funciona de manera similar a la anterior, con la diferencia de que cuando la condición equivale a false
, se ejecutan las instrucciones posteriores al “else”. Las secuencias de instrucciones del if y las del else son mutuamente excluyentes, es decir, solo una de las secuencias de instrucciones podrá ser ejecutada.
i = rand(10)
if i > 5 then
puts “#{i} es mayor a 5”
else
puts “#{i} es menor o igual a 5”
end
Condicional anidado — If..then..elsif..else
La estructura condicional anidada permite implementar decisiones con más de 2 alternativas de ejecución de instrucciones. Esto es posible porque la instrucción que evalúa a false
es a su vez un condicional if.
i = rand(20)
if i > 15 then
puts “#{i} es mayor a 15”
elsif i >= 10 then
puts “#{i} está entre 10 y 15”
else
puts “#{i} es menor a 10”
end
Condicional Case (o Switch)
El condicional case se utiliza para seleccionar una de entre múltiples alternativas. Es especialmente útil cuando la selección se basa en el valor de una variable simple (selector) o de una expresión de control simple. La expresión de control o selector se evalúa y se compara con cada una de las opciones constantes enumeradas posteriores a la palabra reservada “when”. Si el valor es igual a alguna de las opciones, entonces se ejecutarán las instrucciones encerradas dentro de esa opción.
n = rand(4)case n
when 0 then
puts “Hoy comes carne”
when 1 then
puts “Hoy comes pollo”
when 2 then
puts “Hoy comes pescado”
else
puts “Hoy comes huevos”
end### Otro ejemplo del uso del Case
n = rand(4)
opc = case
when n == 0 then
“Carne”
when n == 1 then
“Pollo”
when n == 2 then
“Pescado”
else
“Huevos”
endputs opc
Condicional Ternario o Expresión Condicional (?)
Es una expresión que equivale a uno de dos valores dependiendo del valor que tome la expresión de control (condición): si la expresión condicional equivale a true, entonces se devuelve el primer valor como resultado; en caso contrario, se devuelve como resultado el segundo valor. Tiene la forma (condición) ? valor1 : valor2
y es equivalente a un condicional con opción por defecto if..else.
i = rand(10)
resultado = (i >= 5) ? “mayor o igual” : “menor”
puts “#{i} es #{resultado} a 5”
La publicación anterior trata sobre El Teorema del Programa Estructurado. La siguiente será sobre las Estructuras Iterativas.
Ejercicios propuestos
- Escriba el código Ruby que simule el lanzamiento de 2 dados convencionales.
- Que pida 3 números y los muestre en pantalla de menor a mayor.
- Que pida 3 números y los muestre en pantalla de mayor a menor.
- Escriba el código Ruby que verifique si un número dado es un impar entre 7 y 17 o no.
- Escriba el código Ruby que, dado un número del 0 al 9, muestre su equivalente en Castellano (texto).
- Escriba el código Ruby que verifique si un año dado es bisiesto o no y devuelva el texto “Bisiesto” o “No bisiesto” según el caso.