Módulo 13 - O raio-X do algoritmo

Rastreando variáveis: o filme do programa, quadro a quadro

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

O que você vai aprender

  • Definir o que é o estado de um programa em um instante da execução.
  • Rastrear contadores e acumuladores dentro de um laço, volta por volta.
  • Flagrar o momento exato em que uma variável assume um valor errado.
  • Usar o rastreio para diferenciar “o que eu quis” de “o que eu escrevi”.

O estado é a fotografia do instante

No módulo 3 você guardou valores em caixas; no módulo 9, viu contadores e acumuladores crescerem dentro de laços. O rastreio junta as duas ideias numa imagem só: o programa é um filme, e o estado é a fotografia de todas as caixas em um instante. A linha “soma <- soma + valor” não é uma frase, é um corte no filme: antes dela a caixa soma tinha um valor, depois dela tem outro. Bugs são quadros fora do roteiro, e a única forma de flagrar um quadro é olhar o filme devagar, quadro a quadro, em vez de assistir ao trailer.

Na prática, você não precisa fotografar todas as variáveis do programa: rastreie as que MUDAM no trecho que interessa. Num laço que soma compras da padaria, os personagens são o contador de voltas e o acumulador da soma; o preço do pão, que não muda, pode ficar fora da tabela. Essa escolha de personagens é metade da habilidade: com o tempo, você bate o olho num algoritmo e já sabe quais duas ou três caixas contam a história inteira.

contador <- 0
soma <- 0
enquanto contador < 3 faça
  contador <- contador + 1
  soma <- soma + contador
fim
escreva(soma)
// saída esperada: 6 (1 + 2 + 3)

Um laço com contador e acumulador: o alvo perfeito para um rastreio volta a volta.

Volta do laçocontadorsomacontador < 3?
antes do laço00V (entra)
1ª volta11V (continua)
2ª volta23V (continua)
3ª volta36F (sai do laço)

O filme do laço: cada volta é um quadro, e a condição decide se o filme continua.

Flagrando o quadro errado

O rastreio vira arma de caça quando o resultado sai errado. Suponha que o programa da soma acima mostrasse 3 em vez de 6. Sem rastreio, você reescreveria o algoritmo no chute. Com rastreio, você percorre a tabela e encontra a PRIMEIRA linha em que o valor anotado foge do esperado: a soma que deveria acumular e não acumula, o contador que pula um número, a condição que sai uma volta antes. A partir dessa linha, o suspeito está cercado: o erro é a própria instrução daquela linha ou alguma anterior que preparou o valor errado.

🎮 Jogo da aula

O acumulador que esquecia

Este algoritmo deveria somar os 3 valores digitados, mas sempre mostra só o último. Rastreie a variável soma no papel e toque a linha culpada.

Esse bug do acumulador que esquece é um clássico absoluto: quase todo programador cai nele uma vez, porque “soma <- valor” e “soma <- soma + valor” parecem irmãs à primeira leitura. Repare como o rastreio o denuncia sem esforço: na primeira volta, as duas versões produzem o mesmo estado (soma igual ao primeiro valor), e é por isso que testes preguiçosos com um valor só não pegam nada. Na segunda volta, os filmes divergem. Moral da história: rastreie pelo menos duas voltas de qualquer laço.

Do papel para as ferramentas de verdade

O que você faz no papel tem versão profissional: as linguagens reais oferecem depuradores, ferramentas que pausam o programa em qualquer linha (o ponto de parada) e mostram o estado de todas as variáveis naquele instante, como a sua tabela, só que automática. Existe também o truque universal do “escreva de espionagem”: espalhar comandos escreva temporários no meio do código para o programa narrar o próprio estado enquanto roda. As ferramentas mudam; a pergunta é sempre a mesma que a sua tabela responde: “quanto vale cada caixa NESTE ponto?”. Quem domina o rastreio no papel aprende qualquer depurador em uma tarde.

Teste rápido

No laço “contador <- 0; enquanto contador < 2 faça; contador <- contador + 1; fim”, qual é o estado de contador logo APÓS a primeira volta completa?

Perguntas frequentes

O que significa, na prática, o “estado” do programa?
É a resposta completa para a pergunta “quanto vale cada variável agora?”. Se o programa tem as caixas contador e soma, o estado num instante pode ser “contador vale 2, soma vale 3”. Cada linha executada pode alterar essa fotografia, e a sequência de fotografias é a execução inteira.
Preciso rastrear todas as variáveis do programa?
Não: rastreie as que mudam no trecho investigado. Constantes e valores que só são lidos podem ficar fora da tabela. Em geral, duas ou três colunas contam a história; se a sua tabela tem oito colunas, provavelmente o trecho escolhido está grande demais.
Como rastrear um laço sem me perder nas voltas?
Uma linha da tabela por volta, sempre com uma coluna extra para a condição do laço (verdadeira ou falsa). Assim você enxerga três coisas de uma vez: a evolução do contador, a do acumulador e o momento exato em que a condição vira falsa e o laço termina.
E se a variável nunca muda como eu esperava?
Parabéns: o rastreio acabou de achar o bug. Ou falta a linha que deveria alterá-la, ou a linha existe mas substitui em vez de acumular, ou ela está fora do laço quando deveria estar dentro. A primeira linha da tabela em que o valor foge do esperado aponta o suspeito.
As linguagens reais têm alguma ferramenta que faz esse rastreio?
Têm: o depurador, presente em todo ambiente de programação sério. Ele pausa a execução em pontos de parada e mostra o valor de cada variável, como uma tabela de rastreio automática. A técnica manual continua valendo porque ensina QUAIS valores olhar; a ferramenta só mostra, não interpreta.
Rastreio serve para textos e valores lógicos também?
Serve para qualquer tipo de caixa. Rastrear um texto que vai sendo montado pedaço a pedaço, ou um valor lógico que alterna entre V e F, segue a mesma tabela. O estado do programa inclui tudo o que está guardado, seja número, texto ou lógico.

Fontes

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