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.

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.

Uma grade 3 por 3 com uma seta serpenteando: entra pela primeira linha visitando as três colunas da esquerda para a direita, desce para a segunda linha e repete, depois a terceira. Ao lado, uma conta destaca 3 voltas externas vezes 3 voltas internas igual a 9 visitas.
Para cada linha (laço externo), todas as colunas (laço interno): 3 x 3 = 9 visitas.

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 dadosUm laçoDois laços aninhados
10 itens10 execuções100 execuções
100 itens100 execuções10.000 execuções
1.000 itens1.000 execuções1.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.