Tutorial Ruby #03 Estructuras de decisión y Bucles


Continuando con los tutoriales de programación Ruby hablaremos ahora con las estructuras de control que nos brinda este lenguaje de programación.

Una de las ventajas y al mismo tiempo un poco confuso para los programadores experimentados es que en Ruby no se usan llaves “{” “}” en nuestro ámbito de programación, ni tampoco terminamos nuestras instrucciones con un “;”.

Condicionales

If/else y unless

Ruby tiene algo mas que el if/else como condicional primaria, sino que también tenemos a unless, mientras que If analiza una condición verdadera y de ahí sigue el flujo de instrucciones, unless hace justamente lo opuesto, analiza una condicional y si es falsa se ejecutan las instrucciones dentro del ámbito.
Ejemplo de if:

a  =  5
b  =  7
if a<b
    puts  "a es menor de b"
else
    puts  "b es menor de a"
end

En este caso como a es menor que b por lo que la condicion es verdadera nos imprimirá el mensaje dentro del if
Ejemplo unless:

a  =  5
b  =  7
unless a<b
    puts  "b es menor de a"
else
    puts  "a es menor de b"
end

Pero en este caso como unless necesita que la condición sea falsa, nos va a imprimir lo que esta dentro de else. También podemos poner nuestro condicional en una sola instrucción si es que nuestro programa es algo simple.

puts "a es menor a b" if a < b
puts "b es menor a a" until a < b

Switch/Case

Aunque en otros lenguajes de programación lo conocemos como un “switch” aqui se usa la palabra reservada “case” y su uso es prácticamente igual.

case calificacion
    when [0..69] #Esta es una variable del tipo Range
        puts "Reprobado"
    when [70..100]
        puts "Aprobado"
    else
        puts "No existe esa calificación o fue mal escrita"
end

NOTA 1: Los comentarios de una sola linea podemos anteponerlos con “#”
NOTA 2: Dentro de nuestro Case podemos usar variables de tipo string, numéricos o en el caso de este ejemplo usamos de clase Range
NOTA 3: Mientras que en otros lenguajes se usa default como opción final en cuanto no tengamos como evaluar, en ruby usaremos Else como si fuera un if.

Bucles

Ruby también nos da una variedad de diferentes palabras reservadas para usar bucles aparte de las tradicionales while, do-while y for, veamos todas una por una en un ejemplo rápido

While, Do-while y until

Si tienen dudas con la diferencia entre un While y un Do-while pueden consultar el tutorial de Javascript donde se explica la diferencia, pues recuerden que una vez que aprendes un lenguaje, prácticamente es mismo aprender uno nuevo con algunas diferencias que se lleguen a explicar

While

while a<10
    puts a
    a+=1
end

do-while

Realmente no se conoce como do-while en ruby pero como es lo mas parecido a otros lenguajes lo subtitule de esa forma

begin
    puts a
    a+=1
end while a<10

until

Until es lo mismo que cuando vimos unless mientras la condición sea falsa se va a cumplir la condicion

until a<10
    a+=1
    puts "a no es menor a 10"
end
---------------
begin
    puts "a no es menor a 10"
    a+=1
end until a<10

De igual forma podemos poner nuestro while y until en una sola instrucción.

a+=1 while a<20 #Para While
a+=1 until a>20 #Para Until

Loop

Cuando conocí Loop se me hizo extraño pues realmente consiste de ciclar una instrucción indefinidamente y la única forma de salirse es con la palabra reservada break

loop do
    puts a
    a+=1
    break if a>100
end

For

Por ultimo nos falta la instrucción For que se nos simplifica mucho mas, aunque al principio puede confundir

for i in (0..10)
    puts i
end

Mientras que en otros lenguajes usamos la sintaxis for(i=0;i<10;i++) con Ruby lo reducimos a el nombre de la variable y de donde a donde sera su intervalo.

Por ultimo y como recordatorio, podemos usar cuatro comandos que nos ayudaran en nuestros bucles

  • break: Termina el bucle
  • next: Se adelanta a la siguiente interacción del bucle
  • redo: Se repite el bucle ignorando anulando la evaluación de la condición
  • retry: Se repite el bucle repitiendo de igual forma la evaluación de la condición

Existen otros tipos de bucles que podemos encontrar en este lenguaje pero las veremos en futuros tutoriales, con que se aprendan estas principales sera mas que suficiente (por ahora).

Espero que les guste estos tutoriales y de serlo, espero que lo puedan compartir,