Los condicionales le permiten a nuestros programas tomar decisiones cuando se están ejecutando.
Ruby ofrece varias formas para crear condicionales. La sintaxis más simple es la siguiente:
if <condición># código que se ejecuta si se cumple la condiciónend
La <condicion>
debe ser algo que evalúe a true
o false
. Por ejemplo, el siguiente código siempre va a imprimir "Hola Mundo":
if trueputs "Hola Mundo"end
El siguiente código nunca va a imprimir "Hola Mundo":
if falseputs "Hola Mundo"end
El siguiente código sólo va a imprimir "Hola Mundo" si el usuario ingresa "Make it Real" (tienen que ser exacto):
text = gets.chompif text == "Make it Real"puts "Hola Mundo"end
if <condición># código que se ejecuta si se cumple la condiciónelse# código que se ejecuta si no se cumple la condiciónend
Imagina que queremos escribir un programa que imprima "El número está entre 10 y 20" si el valor de una variable está efectivamente entre 10 y 20. ¿Cómo te imaginas que lo podríamos solucionar?
Una opción es usar condiciones anidadas, de esta forma:
num = 15if num >= 10if num <= 20puts "El número está entre 10 y 20"endend
En Ruby, al igual que en otros lenguajes de programación, se pueden crear condiciones compuestas utilizando Y, O o negación.
La Y se representa con el operador &&
. Por ejemplo:
num = gets.chomp.to_iif num >= 10 && num <= 20puts "El número está entre 10 y 20"end
El &&
sólo evalúa a verdadero si los dos lados de la condición evalúan a verdadero.
EL O se representa con el operador ||
. Por ejemplo:
color = gets.chompif color == "negro" || color == "blanco"puts "el color es negro o blanco"end
La negación se representa con el operador !
. Por ejemplo, la siguiente condición sólo se cumple si no es cierto que 5 sea igual a 6:
if !(5 == 6)puts "5 es diferente de 6"end
En general es preferible evitar la negación si es posible. En este caso podemos mejorar la condición utilizando el operador !=
:
if 5 != 6puts "5 es diferente de 6"end
Cuando escribes &&
o ||
, a cada lado debe ir una expresión booleana (que evalúa a true
o false
).
Podemos crear tablas para saber cuál sería el resultado para cada cada caso:
Expresión | Resultado |
|
|
|
|
|
|
|
|
Fíjate que para que el resultado sea true
los dos lados del &&
deben ser true
.
Hagamos lo mismo para el o (||
):
Expresión | Resultado | | |
`true | | true` |
|
`true | | false` |
|
`false | | true` |
|
`false | | false` |
|
Con el ó cualquiera de los lados puede ser true
para que el resultado sea true
.
La negación es más simple:
Expresión | Resultado |
|
|
|
|