Condiciones

if,else

En Ruby, nil y false significan falso, todo lo demás (incluyendo true, 0) significan verdadero. En Ruby, nil es un objeto: por tanto, tiene sus métodos, y lo que es más, puedes añadir los métodos que se quieran.

Veamos un ejemplo de if,else:

xyz = 5  
if xyz > 4  
  puts 'La variable xyz es mayor que 4'  
  puts 'Puedo poner más instrucciones dentro del if'
  if xyz == 5  
    puts 'Se puede anidar un bloque if,else,end dentro de otro' 
  else  
    puts "Parte del bloque anidado"  
  end  
else  
  puts 'La variable xyz no es mayor que 4'
  puts 'También puedo poner múltiples sentencias' 
end

elsif

else se ejecutaba si la condición en if no se cumplía. Para poder tomar más decisiones, en función del valor de la variable, se usa elsif:

#usando if,else anidados
 
puts 'Hola, cuál es tu nombre?'
STDOUT.flush
nombre = gets.chomp
puts 'Hola, ' + nombre + '.'
 
if nombre == 'Mojamuto'
  puts 'Pedazo de nombre!!!'
else
  if name == 'Enjuto'
    puts '...este nombre no es moco de pavo...'
  end
end
#usando elsif
 
puts 'Hola, cuál es tu nombre?'
STDOUT.flush
nombre = gets.chomp
puts 'Hola, ' + nombre + '.'
 
if nombre == 'Mojamuto'
  puts 'Pedazo de nombre!!!'
elsif nombre == 'Enjuto'
  puts '...este nombre no es moco de pavo...'
end
#otra modificación, usando el || ("o" lógico)
 
puts 'Hola, cuál es tu nombre?'
STDOUT.flush
nombre = gets.chomp
puts 'Hola, ' + nombre + '.'
 
if nombre = 'Mojamuto' || nombre = 'Enjuto'
  puts 'Pedazo de nombre!!!'
end

Además de la igualdad, existen otros operadores condicionales:

== igual
!= distinto
>= mayor o igual que
<= menor o igual que
> mayor que
< menor que

case

Esta instrucción es muy parecida al if: se crean una serie de condiciones, y se ejecuta la primera condición que se cumpla. Por ejemplo:

xyz = 10

if xyz % 2 == 0
  puts 'La variable xyz es par'
else
  puts 'La variable xyz es impar'
end

es equivalente a:

xyz = 10
 
par = case
  when xyz % 2 == 0 then true
  when xyz % 2 != 0 then false
end
 
puts par

unless

Ruby tiene una forma contraria al if: la instrucción unless. Y digo contraria, por que en if se ejecutaba el bloque (do … end) si se cumplía la condición; con unless se ejecutará el bloque mientras NO se cumpla.

nombre = 'Pepe'
unless nombre == 'Enjuto' 
  puts 'Ese nombre no tiene arte ninguno'
end
 
=begin
  Si el nombre no es Enjuto, 
  siempre se ejecutará el bloque.
=end

Ejercicios

Escribe un método que pregunte por un año, y sea capaz de:

  1. decir si es, o no es bisiesto.
  2. poner la cantidad de minutos que tiene el año.
Si no se indica lo contrario, el contenido de esta página se ofrece bajo Creative Commons Attribution 3.0 License