Menu
Coddy logo textTech

Bucles anidados

Parte de la sección Fundamentos del Journey de Ruby de Coddy — lección 46 de 88.

Puedes colocar un bucle dentro de otro bucle para crear un bucle anidado. El bucle interno se ejecuta completamente por cada iteración del bucle externo, lo que hace que este patrón sea útil para trabajar con cuadrículas, tablas o combinaciones.

for i in 1..2
  for j in 1..3
    puts "i=#{i}, j=#{j}"
  end
end

Esto genera seis líneas. Para cada valor de i, el bucle interno recorre todos los valores de j.

Primero i es 1 mientras j recorre 1, 2, 3. Luego i pasa a ser 2 y j vuelve a recorrer 1, 2, 3.

Un ejemplo práctico es crear un patrón de multiplicación simple:

for row in 1..3
  for col in 1..3
    print "#{row * col} "
  end
  puts ""
end

Esto imprime una cuadrícula de productos de 3x3. El print mantiene los valores en la misma línea, y puts "" se mueve a una nueva línea después de que se completa cada fila. También puedes mezclar diferentes tipos de bucles, como un bucle times dentro de un bucle for.

challenge icon

Desafío

Fácil

Lee dos números enteros de la entrada:

  1. rows - el número de filas
  2. cols - el número de columnas

Utiliza bucles anidados para imprimir un rectángulo hecho de asteriscos (*) con las dimensiones dadas. Cada fila debe contener cols asteriscos separados por espacios, y cada fila debe estar en su propia línea.

Utiliza print para los asteriscos dentro de una fila y puts para pasar a la siguiente línea después de cada fila.

Por ejemplo, si las entradas son 3 y 4, la salida debería ser:

* * * *
* * * *
* * * *

Si las entradas son 2 y 5, la salida debería ser:

* * * * *
* * * * *

Hoja de referencia

Los bucles anidados te permiten colocar un bucle dentro de otro. El bucle interno se ejecuta completamente por cada iteración del bucle externo.

for i in 1..2
  for j in 1..3
    puts "i=#{i}, j=#{j}"
  end
end

Esto genera seis líneas en total. Para i=1, j itera a través de 1, 2, 3. Luego, para i=2, j itera nuevamente a través de 1, 2, 3.

Usa print para mantener la salida en la misma línea y puts "" para pasar a una nueva línea:

for row in 1..3
  for col in 1..3
    print "#{row * col} "
  end
  puts ""
end

Puedes mezclar diferentes tipos de bucles, como usar un bucle times dentro de un bucle for.

Pruébalo tú mismo

# Leer entrada
rows = gets.to_i
cols = gets.to_i

# TODO: Escribe tu código a continuación
# Usa bucles anidados para imprimir un rectángulo de asteriscos
# Usa print para los asteriscos dentro de una fila y puts para pasar a la siguiente línea
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos