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 = 2Para 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 9O 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.
Desafio
FácilLeia 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 7Na 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 linhaEsta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
4Operadores Parte 2
Operadores Lógicos (AND, OR)Operadores Lógicos Parte 2 (NOT)Recapitulação - Lógica SimplesLógica Vetorizada Parte 1Lógica Vetorizada Parte 27Calculadora de Divisão de Conta
Mensagem de Boas-vindasObtendo a Entrada do Usuário10FizzBuzz com um Toque Especial
Visão Geral do JogoA Função FizzBuzz2Variáveis e Tipos de Dados
Tipo de Dado NuméricoTipo de Dado InteiroTipo de Dado CaractereTipo de Dado LógicoVerificando Tipos de DadosConvenções de NomenclaturaValores Ausentes: NARecapitulação - Criação de Variáveis8Laços de Repetição
Laço ForLaço WhileBreakNext (Continue)Recapitulação - FatorialGeração de Sequências (seq, :)Laços AninhadosRecapitulação - Entrada Dinâmica3Operadores Parte 1
Operadores AritméticosDivisão Inteira e MóduloOperadores de AtribuiçãoRecapitulação - Matemática SimplesOperadores de Comparação6IO Básico
Saída com PrintCat para SaídaSaída com VariáveisLendo Entrada com readline()Básico de Conversão de TiposRecapitulação - Calculadora de IdadeRecapitulação - Verdadeiro ou Falso9Funções
Declarando uma FunçãoArgumentos de FunçãoValores de RetornoRecapitulação - Função SigmaRecapitulação - Função de ValidaçãoValores de Parâmetro Padrão