Arrays en Ruby Let’s learn Japanese Basic I y II – Lecciones en video
Dec 22

Ruby ofrece estructuras condicionales o de control como if/else, case(switch) y otras que vere en esta entrada.

Declaracion if

Un bloque de codigo dado es ejecutado solo si la condicion es verdadera(true).

if condicion
   # codigo a ejecutar si la condicion es verdadera
end

Por ejemplo:

edad = 23
if edad >= 18
   puts "Mayor de edad."
end
Mayor de edad.

En ruby es considerado verdadero todo aquello que no sea false o nil.

Declaracion if…else

Se puede definir un bloque de codigo a ser ejecutado cuando la condicion no se cumpla usando else(si no):

if condicion
   # codigo a ejecutar si la condicion es verdadera
else
   # codigo a ejecutar si la condicion es falsa
end

Por ejemplo:

edad = 15
if edad >= 18
   puts "Mayor de edad."
else
   puts "Menor de edad."
end
Menor de edad.

Declaracion if…elsif…else

Mediante el uso de elsif podemos agregar condiciones con su respectivo bloque de codigo:

if condicion1
   # codigo a ejecutar si condicion1 es verdadera
elsif condicion2
   # codigo a ejecutar si condicion 1 es falsa y condicion2 verdadera
else
   # codigo si ninguna de las condiciones anteriores era verdadera
end

Por ejemplo:

idioma = "es"
if idioma == "en"
   puts "Welcome to my website."
elsif idioma == "es"
   puts "Bienvenido a mi sitio."
else
   puts "Idioma desconocido."
end
Bienvenido a mi sitio.

Ojo que es elsif y NO elseif como se podria esperar.

Otra cosa importante a notar es que se puede separar la condicion del codigo a ejecutar de tres formas diferentes, con una nueva linea como en los ejemplos, mediante el uso de la palabra clave then(entonces) luego de la condicion, o usando punto y coma.

idioma = "es"
if idioma == "en" then puts "Welcome to my website."
elsif idioma == "es" then puts "Bienvenido a mi sitio."
else puts "Idioma desconocido." end

La esctructura que obtenemos es “si (condicion) entonces (codigo)“. Como else no requiere condicion, se puede escribir el codigo junto sin necesidad de usar un separador, y el end tambien se puede agregar en la misma linea.

Y luego el tercer caso usando punto y coma.

idioma = "es"
if idioma == "en" ; puts "Welcome to my website."
elsif idioma == "es" ; puts "Bienvenido a mi sitio."
else puts "Idioma desconocido." end

Como nota, el uso de punto y coma en general se puede utilizar para escribir multiples lineas en una sola, por ejemplo:

numero = 12 ; puts "El numero es #{numero}"
El numero es 12

Declaracion unless

Esta declaracion que significa “a menos que” ejecuta un bloque de codigo si la condicion es falsa o nil.

unless condicion
   # codigo a ejecutar si la condicion es falsa o nil
end

Por ejemplo:

edad = 15
unless edad > 18
   puts "No puedes acceder a este sitio para mayores."
end
No puedes acceder a este sitio para mayores.

Declaracion unless…else

Asi como if, unless tambien dispone de else.

unless condicion
   # codigo a ejecutar si la condicion es falsa o nil
else
   # codigo a ejecutar si la condicion es verdadera
end

Por ejemplo:

edad = 20
unless edad > 18
   puts "No puedes acceder a este sitio para mayores."
else
   puts "Bienvenido al sitio."
end
Bienvenido al sitio.

Modificadores para if y unless

Ruby dispone de los llamados “modifiers” que permiten mover la estructura de control al final de la expresion, en esta entrada solo vere los modificadores de if y unless pero tambien hay para while y until, veamos la estructura.

codigo if condicion

La idea con if sigue siendo la misma, ejecutar el “codigo” si la condicion es verdadera, por ejemplo:

puntaje = 75
puts 'Aprobado.' if puntaje >= 60
Aprobado.

Para unless seria:

puntaje = 75
puts 'Aprobado.' unless puntaje < 60
Aprobado.

Esto nos permite poner el codigo de una forma un poco mas leible, este ultimo ejemplo se podria leer como “Escribir Aprobado a menos que el puntaje sea menor a 60″.

Declaracion case

Esta nos permite probar “casos” al comparar la expresion dada en “case” con las expresiones dadas en “when” y luego ejecutando el codigo correspondiente. En caso que ningun caso coincida se ejecuta el bloque de codigo bajo else:

case expr0
when expr1, expr2
   # codigo a ejecutar si expr0 coindice con expr1 o expr2
when expr3
   # codigo a ejecutar si expr0 coincide con expr3
else
   # codigo a ejecutar si no coindice con ningun caso
end

Por ejemplo:

puntaje = 75
case puntaje
when 100
   puts "Puntaje perfecto"
when 80..100
   puts "Excelente"
when 60..80
   puts "Aprobado"
else
   puts "Reprobado"
end
Aprobado

En este ejemplo hay 3 casos definidos ademas del else, el primero compara “puntaje” con el valor 100, el siguiente con el rango de 80 a 100 y el tercero con el rango de 60 a 80. Cabe mencionar que cuando un when es exitoso los demas casos no son evaluados.

Tambien aprovecho de mencionar que al igual que en la estructura if, la expresion puede ser separada del codigo mediante una linea nueva, la palabra clave then o un punto y coma.

Operador ternario

Ruby tambien cuenta con el operador ternario que nos provee de un atajo para tomar decisiones, la estructura es la siguiente:

( condicion ) ? expresion si verdadero : expresion si falso

La condicion es evaluada y devuelve “expresion si verdadero” cuando es verdadera y “expresion si falso” cuando es falsa, veamos un ejemplo:

edad = 17
puts ( edad >= 18 ) ? "Es mayor" : "No es mayor"
No es mayor

El parentesis no es obligacion. Al evaluar “edad >=18″ que resulta ser verdadero el operador ternario devuelve “Es mayor”, esto lo muestro en pantalla anteponiendo el metodo puts, tambien podria almacenar el resultado en una variable como:

edad = 17
es_o_no = ( edad >= 18 ) ? "Es mayor" : "No es mayor"
puts es_o_no

Que daria el mismo resultado, y asi acaba esta entrada.

etiquetas: , , , , , , ,


Dejar un comentario