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”.
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: Rastreando variáveis: o filme do programa, quadro a quadro.
Os objetivos desta aula. 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”.
Veja o essencial, parte por parte.
O estado é a fotografia do instante. O estado do programa é o conjunto dos valores de todas as variáveis num dado instante.
Flagrando o quadro errado. O rastreio vira arma de caça quando o resultado sai errado.
Do papel para as ferramentas de verdade. Rastrear de cabeça, sem anotar: depois da terceira volta do laço, a memória inventa valores.
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
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ço | contador | soma | contador < 3? |
|---|---|---|---|
| antes do laço | 0 | 0 | V (entra) |
| 1ª volta | 1 | 1 | V (continua) |
| 2ª volta | 2 | 3 | V (continua) |
| 3ª volta | 3 | 6 | F (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.