Menu
CoddyTech

Loops Aninhados

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

Laços aninhados são laços colocados dentro de outro laço. O laço interno é executado completamente a cada iteração do laço externo.

Vamos criar uma tabuada para os números de 1 a 3 usando loops aninhados:

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

Após executar este código, obtemos uma tabuada em que 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 é executado 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"

Depois que o loop interno termina, imprimimos uma nova linha com fmt.Println().

Em seguida, o loop externo define i=2 e o loop interno recomeça, com j voltando a 1:

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

Por fim, o loop externo define i=3 e o loop interno é executado 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"

Cada loop tem seu próprio contador (i e j), e rows e cols nunca mudam: eles apenas indicam aos loops quando parar. Esse padrão é muito útil para trabalhar com tabelas de dados ou criar estruturas semelhantes a grades.

challenge icon

Desafio

Iniciante

Neste desafio, você vai 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 ficar assim: * * * (com um espaço no final). A saída esperada é:

* * * 
* * * 
* * * 

Use um contador novo para cada loop (por exemplo, i para as linhas e j para os asteriscos em uma linha) e compare-o com rows ou columns. Não altere rows e columns: cada linha precisa de columns novamente.

Experimente você mesmo

package main

import "fmt"

func main() {
	// Número de linhas e colunas na nossa grade
	rows := 3
	columns := 3
	
	// TODO: Crie um loop aninhado para imprimir uma grade de asteriscos (*)
	// O loop externo deve percorrer as linhas
	// O loop interno deve percorrer as 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 da grade
		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

Pratique por conta própria: Compilador de Go online