Menu
CoddyTech

Laço 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.

let rows = 3
let cols = 2
for row in 1...rows {
    for col in 1...cols {
        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 2

Para cada valor de row, o loop interno recomeça e percorre todos os valores de col, de 1 até cols. Então, com rows = 3 e cols = 2, o código interno é executado 6 vezes no total (3 × 2). rows e cols nunca mudam: eles apenas indicam aos loops quando parar.

Loops aninhados são comumente usados para trabalhar com estruturas semelhantes a grades 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("")  // Vá para a próxima linha
}
// Saída:
// ****
// ****

O terminator: "" impede que print adicione uma quebra de linha, então os asteriscos aparecem na mesma linha. Depois que o loop interno termina, print("") passa para a próxima linha.

challenge icon

Desafio

Fácil

Leia dois números inteiros da entrada: rows e cols. Use loops aninhados para imprimir uma grade de números em que cada célula exibe o produto do número da sua linha pelo número da sua coluna.

Você receberá as seguintes entradas:

  • Primeira linha: número de linhas (por exemplo, "3")
  • Segunda linha: número de colunas (por exemplo, "4")

Requisitos:

  • Use um loop externo para as linhas (de 1 a rows)
  • Use um loop interno para as colunas (de 1 a cols)
  • Imprima o produto dos números da linha e da coluna atuais
  • Separe os valores na mesma linha com um espaço
  • Cada linha deve ficar 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 passar para a próxima linha.

Por exemplo, se rows for 3 e cols for 4, a saída deverá ser:

1 2 3 4 
2 4 6 8 
3 6 9 12 

Use um novo contador para cada loop (por exemplo, row para as linhas e col para os números em uma linha) e compare-o com rows ou cols. Não altere rows e cols: cada linha precisa de cols novamente.

Experimente você mesmo

let rows = Int(readLine()!)!
let cols = Int(readLine()!)!

// TODO: Escreva seu código abaixo
// Use laços aninhados para imprimir uma tabuada em formato de grade
// Laço externo: percorra as linhas (1 até rows)
// Laço interno: percorra as 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 laço interno para passar à próxima 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

Pratique por conta própria: Playground de Swift