Módulo 3 - Laços sob controle
Laços dentro de laços
9 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 08/07/2026
O que você vai aprender
- Escrever um laço dentro de outro para varrer linhas e colunas.
- Entender que o laço interno roda por completo a cada volta do externo.
- Calcular o total de execuções multiplicando as voltas dos dois laços.
- Reconhecer quando o custo multiplicado do aninhamento vira um problema.
Ouvir o resumo desta aula
Um recap de cerca de 2 minutos na voz do Valim, para ouvir no trânsito ou na academia.
Ler a transcrição do resumo
Resumo da aula: Laços dentro de laços.
Os objetivos desta aula. Escrever um laço dentro de outro para varrer linhas e colunas. Entender que o laço interno roda por completo a cada volta do externo. Calcular o total de execuções multiplicando as voltas dos dois laços. Reconhecer quando o custo multiplicado do aninhamento vira um problema.
Veja o essencial, parte por parte.
Um laço para a linha, dois para a tabela. Laços aninhados são um laço dentro de outro.
O laço de dentro roda inteiro a cada volta do de fora. A chave para entender laços aninhados é essa frase: o laço interno completa TODAS as suas voltas a cada UMA volta do externo.
O custo que explode. Aqui vem o alerta mais importante do módulo.
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
Um laço para a linha, dois para a tabela
Um laço só resolve uma dimensão: uma fila de nomes, uma sequência de preços. Mas muita informação vive em duas dimensões, em linhas e colunas: o tabuleiro de xadrez, a planilha de notas, a grade de horários. Para percorrer uma tabela dessas, um laço não basta; precisa de dois, encaixados. O laço de fora caminha pelas linhas; para cada linha, o laço de dentro caminha por todas as colunas daquela linha. O resultado é uma varredura completa, casa por casa, como quem lê uma página inteira palavra por palavra, linha após linha. Esse é o motor por trás das matrizes, o tema do próximo módulo.
para linha de 1 até 3 faça
para coluna de 1 até 3 faça
escreva("(", linha, ",", coluna, ") ")
fim
quebra_de_linha()
fim
// imprime a grade 3x3:
// (1,1) (1,2) (1,3)
// (2,1) (2,2) (2,3)
// (3,1) (3,2) (3,3)O laço externo conta as linhas; o interno, as colunas. São 3 x 3 = 9 posições visitadas.
O laço de dentro roda inteiro a cada volta do de fora
A chave para entender laços aninhados é essa frase: o laço interno completa TODAS as suas voltas a cada UMA volta do externo. É como um relógio: enquanto o ponteiro das horas anda uma casa, o dos minutos dá a volta completa. No exemplo da grade, quando o laço externo está na linha 1, o interno percorre as colunas 1, 2 e 3 inteiras antes de o externo avançar para a linha 2. Quem tenta acompanhar os dois ao mesmo tempo se perde; o jeito certo é congelar o externo numa linha e seguir o interno até o fim, depois avançar o externo uma casa e repetir. Teste de mesa com laços aninhados é isso: uma tabela de duas colunas anotando o valor de cada laço.
🎮 Jogo da aula
Quantas vezes o corpo executa?
O bloco escreva está dentro de dois laços aninhados. Calcule quantas vezes ele executa no total.
total <- 0
para i de 1 até 4 faça
para j de 1 até 3 faça
total <- total + 1
fim
fim
escreva(total)O custo que explode
Aqui vem o alerta mais importante do módulo. Como o total de execuções é o produto das voltas, os laços aninhados ficam caros rápido. Dois laços de 10 voltas dão 100 execuções, tranquilo. Dois de 1.000 voltas dão 1 milhão. Dois de 10.000 dão 100 milhões, e o programa que era instantâneo começa a travar. Pior: dobrar o tamanho dos dados não dobra o trabalho, quadruplica, porque os dois laços crescem juntos. Essa relação, em que o custo cresce com o quadrado do tamanho, tem nome e um módulo inteiro reservado para ela mais adiante (eficiência e Big-O). Por enquanto, guarde a intuição: laço dentro de laço percorrendo os mesmos dados grandes é um sinal amarelo que pede atenção.
| Tamanho dos dados | Um laço | Dois laços aninhados |
|---|---|---|
| 10 itens | 10 execuções | 100 execuções |
| 100 itens | 100 execuções | 10.000 execuções |
| 1.000 itens | 1.000 execuções | 1.000.000 execuções |
Um laço cresce em linha reta; dois aninhados crescem ao quadrado. A diferença vira abismo com dados grandes.
Teste rápido
Um laço externo dá 50 voltas e, dentro dele, um laço interno dá 20 voltas. Quantas vezes o corpo do laço interno executa no total?
Perguntas frequentes
- Como calculo quantas vezes o corpo de laços aninhados executa?
- Multiplique as voltas de cada laço. Um externo de N voltas com um interno de M dá N vezes M execuções. Com três laços aninhados, multiplicam-se os três. É por isso que aninhar muitos laços sobre dados grandes fica caro tão depressa: o custo é um produto, não uma soma.
- O laço interno recomeça do zero a cada volta do externo?
- Sim. A cada nova volta do externo, o laço interno reinicia seu contador e percorre todas as voltas de novo, do começo. É como o ponteiro dos minutos, que dá a volta inteira a cada casa do ponteiro das horas. Por isso o interno executa muito mais vezes que o externo.
- Laços aninhados são sempre ruins por causa do custo?
- Não. Para tabelas pequenas ou médias, são o jeito natural e correto de fazer, e o custo é irrelevante. O alerta vale quando os dados são grandes e crescem: aí dois laços sobre os mesmos milhares de itens podem travar o programa, e vale procurar um algoritmo mais esperto, tema dos módulos de busca e eficiência.
- O interromper sai dos dois laços aninhados?
- Não: o interromper sai apenas do laço em que está, normalmente o interno. O externo continua sua próxima volta. Para sair dos dois de uma vez, usa-se uma variável de controle que o laço externo também observa, ou se estrutura o código de outra forma. É uma pegadinha clássica do aninhamento.
- Quantos laços posso aninhar?
- Tecnicamente vários, mas o custo e a legibilidade limitam na prática. Dois níveis são comuns (tabelas), três aparecem às vezes (grades tridimensionais), e a partir daí costuma ser sinal de que o problema pede outra abordagem. Cada nível novo multiplica o custo e dificulta a leitura.
- Para que servem laços aninhados no dia a dia da programação?
- Para tudo que é bidimensional ou combinatório: percorrer uma planilha, desenhar uma grade de pixels, comparar cada item com todos os outros (achar duplicados), montar a tabuada, varrer um tabuleiro de jogo. Sempre que os dados formam uma tabela ou você precisa cruzar todos os pares, o aninhamento aparece.
Fontes
Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.