Menu
Coddy logo textTech

Bucles anidados

Parte de la sección Fundamentos del Journey de R de Coddy — lección 44 de 78.

Puedes colocar un bucle dentro de otro bucle para crear un bucle anidado. El bucle interno se ejecuta por completo en cada iteración del bucle externo, lo que resulta útil cuando se trabaja con combinaciones o patrones tipo cuadrícula.

for (i in 1:3) {
  for (j in 1:2) {
    cat("i =", i, ", j =", j, "\n")
  }
}

Salida:

i = 1 , j = 1 
i = 1 , j = 2 
i = 2 , j = 1 
i = 2 , j = 2 
i = 3 , j = 1 
i = 3 , j = 2

Para cada valor de i, el bucle interno recorre todos los valores de j. Cuando i es 1, j va de 1 a 2. Luego i se convierte en 2, y j comienza de nuevo de 1 a 2.

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

for (row in 1:3) {
  for (col in 1:3) {
    cat(row * col, " ")
  }
  cat("\n")
}

Resultado:

1  2  3  
2  4  6  
3  6  9

El bucle externo controla las filas, mientras que el bucle interno maneja cada columna dentro de esa fila. Después de completar cada fila, imprimimos un salto de línea para pasar a la siguiente línea.

challenge icon

Desafío

Fácil

Lee dos números de la entrada: rows y cols.

Usa bucles anidados para imprimir un rectángulo de números donde cada celda contenga la suma de su número de fila y su número de columna. Las filas se enumeran del 1 al rows, y las columnas se enumeran del 1 al cols.

Imprime cada fila en su propia línea, con los valores separados por un solo espacio. Usa cat() para la salida, añadiendo una nueva línea después de cada fila.

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

2 3 4 5 
3 4 5 6 
4 5 6 7

En la primera fila (fila 1), los valores son 1+1=2, 1+2=3, 1+3=4, 1+4=5. En la segunda fila (fila 2), los valores son 2+1=3, 2+2=4, 2+3=5, 2+4=6, y así sucesivamente.

Hoja de referencia

Un bucle anidado es un bucle colocado dentro de otro bucle. El bucle interno se ejecuta completamente por cada iteración del bucle externo.

for (i in 1:3) {
  for (j in 1:2) {
    cat("i =", i, ", j =", j, "\n")
  }
}

Para cada valor de i, el bucle interno recorre todos los valores de j.

Ejemplo de creación de un patrón de multiplicación:

for (row in 1:3) {
  for (col in 1:3) {
    cat(row * col, " ")
  }
  cat("\n")
}

El bucle externo controla las filas, mientras que el bucle interno maneja cada columna dentro de esa fila. Usa cat("\n") para imprimir una nueva línea después de completar cada fila.

Pruébalo tú mismo

# Leer entrada
con <- file("stdin", "r")
rows <- as.integer(suppressWarnings(readLines(con, n = 1)))
cols <- as.integer(suppressWarnings(readLines(con, n = 1)))
close(con)

# TODO: Escribe tu código a continuación
# Usa bucles anidados para imprimir un rectángulo donde cada celda contenga fila + columna
# Usa cat() para imprimir valores separados por espacios, con una nueva línea después de cada fila
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