Módulo 4 - Matrizes: tabelas, grades e tabuleiros

Percorrer a matriz com laços aninhados

8 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 08/07/2026

O que você vai aprender

  • Percorrer todas as células de uma matriz com dois laços aninhados.
  • Associar o laço externo às linhas e o interno às colunas.
  • Somar, contar e achar o maior valor varrendo a matriz inteira.
  • Prever a ordem em que as células são visitadas.

Dois laços para uma tabela

No módulo passado você viu que dois laços aninhados varrem uma grade: o de fora conta as linhas, o de dentro conta as colunas. A matriz é justamente essa grade cheia de dados, então percorrê-la é a aplicação mais natural do aninhamento. A cada volta do laço externo, você fixa uma linha; o laço interno então percorre todas as colunas daquela linha, visitando cada célula. Quando o interno termina, o externo avança para a próxima linha e o interno recomeça. O resultado é uma varredura completa, casa por casa, na mesma ordem em que você leria uma página: da esquerda para a direita, de cima para baixo.

matriz <- [
  [3, 1, 4],
  [1, 5, 9],
  [2, 6, 5]
]
soma <- 0
para linha de 0 até 2 faça
  para coluna de 0 até 2 faça
    soma <- soma + matriz[linha][coluna]
  fim
fim
escreva("Soma de tudo: ", soma)   // 3+1+4+1+5+9+2+6+5 = 36

O laço externo fixa a linha; o interno soma cada coluna dela. Ao fim, soma tem o total das 9 células.

Uma grade 3 por 3 com uma seta em formato de serpente numerando a ordem de visita das células de 1 a 9: percorre a linha de cima da esquerda para a direita, desce e volta para a segunda linha, e assim por diante. À esquerda, o rótulo laço externo aponta para as linhas; no topo, laço interno aponta para as colunas.
A varredura visita as 9 células em ordem: linha por linha (externo), coluna por coluna (interno).

Somar, contar e achar o maior

Com o padrão da varredura montado, qualquer pergunta sobre a matriz inteira vira uma variação do mesmo esqueleto. Quer a soma de tudo? Um acumulador que cresce a cada célula, como no exemplo. Quer contar quantas células valem zero? Um contador que ganha mais um sempre que a célula da vez é zero. Quer o maior valor da tabela? Uma variável maior que começa pequena e é atualizada sempre que uma célula a supera, exatamente a técnica que você usou com listas, agora dentro do laço duplo. O que muda de um problema para outro não é a estrutura dos laços, é só o que você faz com a célula da vez.

🎮 Jogo da aula

Quantas células passam no teste?

Este laço duplo conta quantos valores da matriz são maiores que 4. Varra a grade e escolha o total.

matriz <- [
  [3, 7, 1],
  [8, 2, 5]
]
quantos <- 0
para linha de 0 até 1 faça
  para coluna de 0 até 2 faça
    se matriz[linha][coluna] > 4 então
      quantos <- quantos + 1
    fim
  fim
fim
escreva(quantos)

Cuidado com os limites de cada dimensão

Um detalhe que derruba iniciante: os dois laços têm limites diferentes, e confundi-los estoura a matriz. O laço externo vai até o número de LINHAS menos um; o interno, até o número de COLUNAS menos um. Numa matriz 2 por 3 (duas linhas, três colunas), o externo vai de 0 a 1 e o interno de 0 a 2. Usar o mesmo limite nos dois, comum quando se copia e cola o laço, faz o programa pedir uma célula que não existe (a linha 2 numa matriz de duas linhas) e quebrar, ou pior, pular colunas. Antes de escrever a varredura, pare e responda: quantas linhas? quantas colunas? Esses dois números comandam os dois laços.

Teste rápido

Numa varredura de matriz com dois laços aninhados, o que o laço EXTERNO controla e o que o INTERNO controla?

Perguntas frequentes

Por que preciso de dois laços para percorrer a matriz?
Porque a matriz tem duas dimensões. Um laço só percorre uma fila; para visitar linhas E colunas você precisa de um laço para cada dimensão. O externo escolhe a linha, o interno percorre as colunas dela. É a aplicação direta dos laços aninhados que você viu no módulo anterior.
Qual laço fica por fora, o das linhas ou o das colunas?
Por convenção, o das linhas fica por fora e o das colunas por dentro, seguindo a ordem linha-coluna dos índices e a leitura natural de cima para baixo. Você pode inverter (percorrer coluna por coluna), mas mudaria a ordem de visita das células. Para a maioria dos casos, linha por fora é o padrão.
Como somo só uma linha, em vez da matriz toda?
Aí basta um laço simples: fixe a linha e percorra só as colunas dela com um único laço, somando matriz[linha][coluna]. Você vê exatamente isso na última aula deste módulo, sobre operações por linha, coluna e diagonal. A varredura dupla é para quando você precisa da tabela inteira.
O custo dos laços aninhados vale o alerta aqui também?
Vale. Uma matriz de N linhas por N colunas tem N ao quadrado células, então a varredura completa faz N ao quadrado passos. Para tabelas pequenas e médias é irrelevante; para grades muito grandes (imagens de milhões de pixels), o custo importa e se estuda a fundo no módulo de eficiência.
Posso usar continuar e interromper dentro da varredura?
Pode, com atenção. O continuar pula uma célula e segue; o interromper sai do laço em que está, normalmente o interno, então o externo continua na próxima linha. Sair da varredura inteira de uma vez exige uma variável de controle ou reestruturar, como visto na aula de laços aninhados.
Como descubro quantas linhas e colunas a matriz tem?
O número de linhas é o tamanho da lista externa (quantas listas internas existem). O número de colunas é o tamanho de uma linha (quantos itens uma lista interna tem). As linguagens têm funções para medir o tamanho de uma lista; no pseudocódigo, pense em quantidade de linhas e quantidade de colunas.

Fontes

Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.