Menu
Coddy logo textTech

Laços Aninhados

Parte da seção Fundamentos do Journey de R da Coddy — lição 44 de 78.

Você pode colocar um loop dentro de outro loop para criar um loop aninhado. O loop interno é executado completamente para cada iteração do loop externo, tornando isso útil ao trabalhar com combinações ou padrões em grade.

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

Saída:

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, o loop interno percorre todos os valores de j. Quando i é 1, j vai de 1 a 2. Então i torna-se 2, e j recomeça de 1 a 2 novamente.

Um exemplo prático é a criação de um padrão de multiplicação simples:

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

Saída:

1  2  3  
2  4  6  
3  6  9

O loop externo controla as linhas, enquanto o loop interno lida com cada coluna dentro dessa linha. Após completar cada linha, imprimimos uma nova linha para mudar para a próxima linha.

challenge icon

Desafio

Fácil

Leia dois números da entrada: rows e cols.

Use loops aninhados para imprimir um retângulo de números onde cada célula contém a soma do seu número de linha e número de coluna. As linhas são numeradas de 1 até rows, e as colunas são numeradas de 1 até cols.

Imprima cada linha em sua própria linha, com os valores separados por um único espaço. Use cat() para a saída, adicionando uma nova linha após cada linha.

Por exemplo, se as entradas forem 3 e 4, a saída deve ser:

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

Na primeira linha (linha 1), os valores são 1+1=2, 1+2=3, 1+3=4, 1+4=5. Na segunda linha (linha 2), os valores são 2+1=3, 2+2=4, 2+3=5, 2+4=6, e assim por diante.

Folha de consulta

Um loop aninhado é um loop colocado dentro de outro loop. O loop interno é executado completamente para cada iteração do loop externo.

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

Para cada valor de i, o loop interno percorre todos os valores de j.

Exemplo criando um padrão de multiplicação:

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

O loop externo controla as linhas, enquanto o loop interno lida com cada coluna dentro dessa linha. Use cat("\n") para imprimir uma nova linha após completar cada linha.

Experimente você mesmo

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

# TODO: Escreva seu código abaixo
# Use loops aninhados para imprimir um retângulo onde cada célula contém linha + coluna
# Use cat() para imprimir valores separados por espaços, com uma nova linha após cada linha
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos