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
endEsto 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 ""
endEsto 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.
Desafío
FácilLee dos números enteros de la entrada:
rows- el número de filascols- 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
endEsto 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 ""
endPuedes 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íneaEsta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4Operadores Parte 2
Operadores lógicos Parte 1Operadores lógicos Parte 2Repaso - Lógica simpleOperadores lógicos Parte 3Operadores lógicos Parte 47Calculadora para dividir la cuenta
Mensaje de bienvenidaObtener la entrada del usuario10FizzBuzz con un giro
Descripción general del juegoEl método FizzBuzz2Variables y tipos de datos
Números y variablesTipo de dato StringTipo de dato BooleanTipo de dato SymbolComprobación de tipos de datosConvenciones de nomenclaturaResumen: Creación de variables5Toma de decisiones
Sentencia IfIf - ElseRepaso - Calculadora simpleIf - Else anidadosSentencia Unless8Bucles
Bucle For con rangosBucle WhileBreakNextRepaso - FactorialBucle TimesBucle UntilBucles anidadosRepaso - Entrada dinámica3Operadores Parte 1
Operadores aritméticosOperador móduloAtajos aritméticosResumen - Matemáticas simplesOperadores de comparación6Entrada y Salida Básica
Salida con putsSalida con print y pSalida con variablesEntrada con getsMétodo chompConversión de tiposResumen - Calculadora de edadResumen - Verdadero o falso