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.
Desafio
InicianteNeste 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()
}
}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
4Operadores de Comparação e Lógicos
Operadores de Comparação - Parte 1Operadores de Comparação - Parte 2Operador Lógico ANDOperador Lógico OROperador Lógico NOTFundamentos de Precedência de OperadoresRecapitulação - Fazendo Comparações7Fluxo de Controle: Loops
O Loop `for` ExplicadoLoop For - BásicoLoop For - Apenas CondiçãoA Palavra-chave `break`A Palavra-chave `continue`Loops AninhadosRecapitulação - Repetindo Ações2Variáveis e Tipos de Dados Básicos
O que é uma variávelInferência de Tipo com `:=`Inteiros (int)Números de Ponto FlutuanteBooleanosStringsValores ZeroConstantesConvenções de NomenclaturaRecapitulação - Variáveis e Tipos5Entrada/Saída Básica
Saída FormatadaVerbos de FormataçãoImprimindo TiposObtendo Entrada Básica do UsuárioRecapitulação - Entrada e Saída8Funções
Entendendo FunçõesDeclarando uma FunçãoChamando FunçõesParâmetros de FunçãoRetornando um Único ValorRetornando Múltiplos ValoresValores de Retorno NomeadosFundamentos de Escopo de FunçãoRecapitulação - Criando Código Reutilizável3Operadores Básicos
Operadores AritméticosOperador de DivisãoO Operador MóduloOperador de AtribuiçãoOperadores de Atribuição CompostaIncremento e DecrementoRecapitulação - Cálculos6Fluxo de Controle: Condicionais
A Instrução `if`A Palavra-chave `else`A Palavra-chave `else if`Sombreamento de Variáveis no `if`Inicializando VariáveisA Instrução `switch`Switch com ExpressõesSwitch sem ExpressãoA Palavra-chave `fallthrough`Recapitulação - Tomando DecisõesPratique por conta própria: Compilador de Go online