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
