LOOP (Bucle)
loop do puts "QUIERES EJECUTAR OTRO CICLO? s/n" respuesta = gets.chomp if respuesta == "n" break end puts "Volvemos a otro Ciclo" end
TIMES(Repetir X numero de veces)
iteracion = 1 10.times do |time| puts "Iterador #{time+1}º llamada" iteracion += 1 end #RESULTADO: # Iterador 1º llamada # Iterador 2º llamada # Iterador 3º llamada # Iterador 4º llamada # Iterador 5º llamada # Iterador 6º llamada # Iterador 7º llamada # Iterador 8º llamada # Iterador 9º llamada # Iterador 10º llamada
UPTO(Subir hasta)
1.upto(10) do |number| print "#{number}" end #RESULT: 12345678910
DOWNTO(Bajar hasta)
10.downto(1) do |number| print "#{number}" end #RESULT: 10987654321
STEP
1.step(10,2) do |number| print "#{number}" end #RESULT: 13579
IF(Si)
Con Modificadores de Declaración cuando es una sola expresión
medicion = 30 if medicion > 0 puts "Entro" end
medicion = 30 puts "Entro" if medicion > 0
FOR…IN
arrayEjemplo= [1,2,3,4,5] for number in arrayEjemplo print number end #RESULTADO=12345
**Esto es azúcar sintáctico ya que internamente se hace:
arrayEjemplo= [1,2,3,4,5] arrayEjemplo.each do |number| print number end #RESULTADO=12345
WHILE (Mientras que)
vidas = 3 while vidas > 0 puts "Sigo vivo. Tengo #{vidas} vidas" vidas -= 1 end
Con Modificador de Declaración cuando es una sola expresión:
medicion = 0 while medicion < 1000 medicion = medicion+1 end
medicion = 0 medicion = medicion+1 while medicion < 1000
UNTIL (Hasta que)
vidas = 3 until vidas == 0 puts "Sigo vivo. Tengo #{vidas} vidas" vidas -= 1 end
EACH (Para cada)
-
Strings:
"RUBEN".each_char do |char| puts "CARACTER --> #{char}" end #RESULTADO: # CARACTER --> R # CARACTER --> U # CARACTER --> B # CARACTER --> E # CARACTER --> N
('a'..'f').each do |char| puts "Letra actual --> "+char end #Letra actual --> a #Letra actual --> b #Letra actual --> c #Letra actual --> d #Letra actual --> e #Letra actual --> f
(1..5).each do |char| puts "Numero actual --> "+char.to_s end #Numero actual --> 1 #Numero actual --> 2 #Numero actual --> 3 #Numero actual --> 4 #Numero actual --> 5
-
Arrays:
array_example = [1,2,3,4,5,6] array_example.each do |number| puts number end
-
Colecciones de Hash:
contactos = { Alberto: 000000000, Barreto: 111111111, Carmelo: 222222222 } contactos.each do |key,value| puts "La llave es #{key} y el valor es #{value}" end #RESULTADO: #La llave es Alberto y el valor es 000000000 #La llave es Barreto y el valor es 111111111 #La llave es Carmelo y el valor es 222222222 contactos.each_key do |key| puts "La llave es #{key}" end contactos.each_value do |value| puts "El valor es #{value}" end
Implementar Iterador
def three_times yield yield yield end three_times { puts "HOLA" } # RESULTADO: # HOLA # HOLA # HOLA
Fibonacci
def fib_up_to(max) i1, i2 = 1, 1 # asignación paralela (i1 = 1 y i2 = 1) while i1 <= max yield i1 i1, i2 = i2, i1+i2 end end fib_up_to(1000) {|f| print f, " " } #RESULTADO: # 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
INSTRUCCIONES DE CONTROL DE BUCLES
Break –> Termina el bucle inmediatamente
Redo –> Repite el bucle desde el principio sin volver a evaluar la condición o ir a buscar el siguiente elemento en un iterador
Next –> Salta al final del bucle a partir de la próxima iteracion.
Retry –> Reinicia cualquier tipo de bucle iterador