Loop Aninhado
Parte da seção Fundamentos do Journey de Swift da Coddy — lição 49 de 86.
Um loop aninhado é simplesmente um loop dentro de outro loop. O loop interno completa todas as suas iterações para cada iteração individual do loop externo.
for row in 1...3 {
for col in 1...2 {
print("Row \(row), Col \(col)")
}
}
// Saída:
// Row 1, Col 1
// Row 1, Col 2
// Row 2, Col 1
// Row 2, Col 2
// Row 3, Col 1
// Row 3, Col 2Para cada valor de row, o loop interno percorre completamente todos os valores de col. Assim, com 3 iterações externas e 2 iterações internas, o código interno é executado 6 vezes no total (3 × 2).
Loops aninhados são comumente usados para trabalhar com estruturas em forma de grade ou para gerar padrões.
Aqui está um exemplo que imprime um retângulo simples de asteriscos:
for row in 1...2 {
for col in 1...4 {
print("*", terminator: "")
}
print("") // Mover para a próxima linha
}
// Saída:
// ****
// ****O terminator: "" impede que o print adicione uma nova linha, para que os asteriscos apareçam na mesma linha. Após o término do loop interno, o print("") muda para a próxima linha.
Desafio
FácilLeia dois números inteiros da entrada: rows e cols. Use loops aninhados para imprimir uma grade de números onde cada célula exibe o produto do seu número de linha e número de coluna.
Você receberá as seguintes entradas:
- Primeira linha: número de linhas (ex:
"3") - Segunda linha: número de colunas (ex:
"4")
Requisitos:
- Use um loop externo para as linhas (1 até
rows) - Use um loop interno para as colunas (1 até
cols) - Imprima o produto dos números da linha e coluna atuais
- Separe os valores na mesma linha com um espaço
- Cada linha deve estar em sua própria linha
Dica: Use terminator: " " para manter os valores na mesma linha e, em seguida, use print("") após o loop interno para mudar para a próxima linha.
Por exemplo, se rows for 3 e cols for 4, a saída deve ser:
1 2 3 4
2 4 6 8
3 6 9 12 Folha de consulta
Um loop aninhado (nested loop) é um loop dentro de outro loop. O loop interno completa todas as suas iterações para cada iteração individual do loop externo.
for row in 1...3 {
for col in 1...2 {
print("Row \(row), Col \(col)")
}
}
// Output:
// Row 1, Col 1
// Row 1, Col 2
// Row 2, Col 1
// Row 2, Col 2
// Row 3, Col 1
// Row 3, Col 2Com 3 iterações externas e 2 iterações internas, o código é executado 6 vezes no total (3 × 2).
Loops aninhados são úteis para estruturas em grade e padrões:
for row in 1...2 {
for col in 1...4 {
print("*", terminator: "")
}
print("") // Move para a próxima linha
}
// Output:
// ****
// ****Use terminator: "" para evitar que o print adicione uma nova linha, mantendo a saída na mesma linha. Use print("") após o loop interno para mudar para a próxima linha.
Experimente você mesmo
let rows = Int(readLine()!)!
let cols = Int(readLine()!)!
// TODO: Escreva seu código abaixo
// Use loops aninhados para imprimir uma grade de multiplicação
// Loop externo: itere pelas linhas (1 até rows)
// Loop interno: itere pelas colunas (1 até cols)
// Imprima o produto de row * column
// Use print(..., terminator: " ") para manter os valores na mesma linha
// Use print("") após o loop interno para mudar para a próxima 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 1
Operadores AritméticosOperador de MóduloAtribuição CompostaRecapitulação - Matemática SimplesOperadores de Comparação7IO Básico
Função PrintInterpolação de StringsEntrada ReadLineConversão de TiposRecapitulação - Até 120Recapitulação - Verdadeiro ou Falso10Funções
Declarar uma FunçãoParâmetros e ArgumentosValores de RetornoRótulos de ArgumentosRecapitulação - Função SigmaRecapitulação - Função de ValidaçãoValores Padrão13Iterando sobre Sequências
Iterando sobre ElementosO Método EnumeratedIterando sobre Strings P1Iterando sobre Strings P22Variáveis
Let vs VarAnotações de TipoNúmerosStringBooleanosConvenções de NomenclaturaRecapitulação - Inicializar Variáveis5Operadores Parte 2
Operadores Lógicos Parte 1Operadores Lógicos Parte 2Recapitulação - Lógica SimplesOperadores Lógicos Parte 3Operador Ternário8Calculadora de Divisão de Conta
Mensagem de Boas-vindasObtendo Entrada11FizzBuzz com um Diferencial
Visão Geral do JogoA Função FizzBuzz3Opcionais
O que são OpcionaisDesembrulhando com If LetGuard LetOperador de Coalescência NulaRecapitulação - Desembrulho Seguro6Tomada de Decisão
Estrutura IfIf - ElseRecapitulação - Calculadora SimplesEstrutura SwitchSwitch com Intervalos9Loops
Loop For-InLoop WhileLoop Repeat-WhileBreakContinueRecapitulação - FatorialIntervalos em LoopsLoop AninhadoRecapitulação - Entrada Dinâmica12Fundamentos de Arrays
Declarando um ArrayAcessando ElementosModificando ArraysMétodos de ArrayRecapitulação - Lista de ProdutosRecapitulação - Array InvertidoTuplas15Rastreador de Despesas Diárias
Visão Geral do ProjetoSair do Programa