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":
iftrueputs"Hola Mundo"end
El siguiente código nunca va a imprimir "Hola Mundo":
iffalseputs"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
Else (de lo contrario)
Condiciones compuestas
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:
Operadores lógicos
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:
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:
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:
En general es preferible evitar la negación si es posible. En este caso podemos mejorar la condición utilizando el operador !=:
Tablas de verdad
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
true && true
true
true && false
false
false && true
false
false && false
false
Fíjate que para que el resultado sea true los dos lados del &&deben sertrue.
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.