Menu
Coddy logo textTech

Loops Aninhados

Parte da seção Fundamentos do Journey de GO da Coddy — lição 49 de 109.

Loops Aninhados são loops colocados dentro de outro loop. O loop interno é executado completamente para cada iteração do loop externo.

Vamos criar uma tabela de multiplicação para os números de 1 a 3 usando loops aninhados:

for i := 1; i <= 3; i++ {
    for j := 1; j <= 3; j++ {
        fmt.Printf("%d×%d=%d\t", i, j, i*j)
    }
    fmt.Println()
}

Após executar este código, obtemos uma tabela de multiplicação onde cada linha representa um valor da variável do loop externo (i) multiplicado por todos os valores da variável do loop interno (j). A saída será exibida na tela:

1×1=1   1×2=2   1×3=3   
2×1=2   2×2=4   2×3=6   
3×1=3   3×2=6   3×3=9   

Vamos entender como isso funciona passo a passo:

Primeiro, o loop externo define i=1 e o loop interno executa completamente:

i=1, j=1: prints "1×1=1"
i=1, j=2: prints "1×2=2"
i=1, j=3: prints "1×3=3"

Após o loop interno terminar, imprimimos uma nova linha com fmt.Println().

Então o loop externo define i=2 e o loop interno executa novamente:

i=2, j=1: prints "2×1=2"
i=2, j=2: prints "2×2=4"
i=2, j=3: prints "2×3=6"

Finalmente, o loop externo define i=3 e o loop interno executa uma última vez:

i=3, j=1: prints "3×1=3"
i=3, j=2: prints "3×2=6"
i=3, j=3: prints "3×3=9"

Este padrão de loops dentro de loops é muito útil para trabalhar com tabelas de dados ou criar estruturas em forma de grade.

challenge icon

Desafio

Iniciante

Neste desafio, você praticará o uso de loops aninhados para imprimir um padrão simples. O loop externo percorrerá as linhas e o loop interno percorrerá as colunas para criar uma pequena grade de caracteres.

Complete os loops aninhados para imprimir uma grade 3x3 de asteriscos (*). Cada asterisco deve ser seguido por um espaço, então cada linha deve se parecer com * * * (com um espaço no final). O resultado esperado é:

* * * 
* * * 
* * * 

Folha de consulta

Loops aninhados são loops colocados dentro de outro loop. O loop interno é executado completamente para cada iteração do loop externo.

for i := 1; i <= 3; i++ {
    for j := 1; j <= 3; j++ {
        fmt.Printf("%d×%d=%d\t", i, j, i*j)
    }
    fmt.Println()
}

O loop externo controla as linhas, enquanto o loop interno controla as colunas. Para cada iteração do loop externo, o loop interno completa todas as suas iterações antes de passar para a próxima iteração do loop externo.

Experimente você mesmo

package main

import "fmt"

func main() {
	// Número de linhas e colunas em nossa grade
	rows := 3
	columns := 3
	
	// TODO: Crie um loop aninhado para imprimir uma grade de asteriscos (*)
	// O loop externo deve iterar pelas linhas
	// O loop interno deve iterar pelas colunas
	for i := 0; i < rows; i++ {
		// Adicione seu loop interno aqui para imprimir asteriscos em cada coluna
		
		// Isso imprime uma nova linha após cada linha
		fmt.Println()
	}
}
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