Módulo 9 - Repetir ENQUANTO for preciso

O contador: ensinando o programa a contar

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

O que você vai aprender

  • Entender o que é um contador e para que ele serve.
  • Escrever a receita: criar zerado antes do laço, somar 1 dentro dele.
  • Ler a linha contador <- contador + 1 sem estranhar.
  • Evitar o clássico erro de “uma volta a mais, uma a menos”.

O programa que conta

O cobrador de ônibus de antigamente tinha um aparelhinho de metal na mão: a cada passageiro, um clique, e o número no visor subia. A catraca moderna faz o mesmo sem o polegar de ninguém. Esse aparelho é a imagem perfeita do contador: uma memória que começa em zero no início do expediente e recebe mais um a cada evento. No fim do dia, o número no visor é a resposta da pergunta “quantos passaram?”. O programa de computador reproduz as três partes: zerar no começo, clicar a cada evento, ler o total no final.

Você convive com dezenas de contadores por dia sem chamar por esse nome. O número vermelho em cima do ícone de mensagens é um contador de não lidas. O “37 curtidas” do post é um contador de corações tocados. O “3 tentativas restantes” do cartão é um contador de senhas erradas, contando para baixo. Todos seguem a mesma anatomia que você vai escrever agora, e é por isso que este padrão merece uma aula inteira: quem domina o contador lê metade dos laços do mundo de graça.

A receita do contador em pseudocódigo

passageiros <- 0
enquanto o expediente não terminou faça
  espere alguém passar pela catraca
  passageiros <- passageiros + 1
fim
escreva("Passageiros do dia: ", passageiros)
// se passaram 148 pessoas, a tela mostra: Passageiros do dia: 148

As três partes do contador: nasce zerado antes, soma 1 dentro, é usado depois do laço.

A linha que assusta à primeira vista é passageiros <- passageiros + 1, porque parece dizer que um número é igual a ele mesmo mais um. A leitura correta usa o que você aprendeu no módulo 3 sobre atribuição: o lado direito calcula PRIMEIRO, com o valor atual da caixa; o resultado é guardado DEPOIS, substituindo o que havia. Se passageiros vale 41, o lado direito calcula 42, e 42 entra na caixa no lugar do 41. Não é uma equação, é um clique no aparelhinho do cobrador escrito por extenso.

🎮 Jogo da aula

Monte o contador da catraca

Os passos do algoritmo da catraca estão embaralhados. Toque na ordem correta, do primeiro ao último.

    A ordem que o jogo exige não é frescura: cada parte da receita tem um território. A criação com zero fica fora do laço porque só deve acontecer uma vez; se ficasse dentro, cada volta apagaria a contagem anterior e o visor viveria entre 0 e 1. O incremento fica dentro porque é ele que registra o evento. E a leitura do total fica depois do fim porque, antes disso, o número ainda está crescendo. Errar o território de uma dessas linhas é a fonte mais comum de contador maluco.

    Onde começa e onde para: o erro do “um a mais, um a menos”

    Contadores também servem para controlar o próprio laço: “repita 5 vezes” vira “conte de 1 a 5”. Nesse uso, dois detalhes definem quantas voltas acontecem: o valor inicial e a comparação da condição. Contando de 1 enquanto contador <= 5, são 5 voltas. Contando de 0 enquanto contador < 5, também 5. Mas contando de 1 com contador < 5, são só 4, e de 0 com <= 5, são 6. Essa diferença de uma volta tem até apelido entre programadores, o erro de “off-by-one”, e derruba gente experiente.

    Teste rápido

    A variável pontos vale 9. O que acontece ao executar pontos <- pontos + 1?

    Perguntas frequentes

    Todo contador precisa começar em zero?
    Não. Zero é o padrão quando você conta ocorrências (nenhum passageiro passou ainda). Mas um contador que numera voltas pode nascer em 1, e um de contagem regressiva nasce no total e vai diminuindo. O que importa é escolher o início de olho na primeira e na última volta.
    Por que a criação do contador fica fora do laço e o incremento fica dentro?
    Porque cada linha tem uma frequência: a criação deve acontecer uma única vez, e o incremento, uma vez por evento. Se a criação entrar no laço, cada volta rezera a contagem e o total nunca passa de 1. Se o incremento sair do laço, o clique acontece uma vez só, não importa quantas voltas existam.
    Posso somar de 2 em 2 ou de 10 em 10?
    Pode: contador <- contador + 2 conta de dois em dois, útil para números pares ou para pontuações que valem mais de um. Também dá para diminuir, com contador <- contador - 1, criando contagens regressivas como a dos foguetes e a das tentativas de senha.
    O que é o erro de “off-by-one” que os programadores tanto citam?
    É o laço que executa uma volta a mais ou a menos que o planejado, quase sempre por causa da dupla valor inicial e comparação (< contra <=). O antídoto é testar as pontas: calcular o valor do contador na primeira e na última volta e conferir com a intenção.
    O contador some quando o laço termina?
    Não: a variável continua existindo com o valor final, e é justamente esse valor que interessa. O escreva depois do fim usa o total acumulado. É como o visor do cobrador ao fim do expediente: o laço acabou, o número ficou.
    Contador é coisa só de exercício de curso?
    É um dos padrões mais usados em software de verdade: mensagens não lidas, curtidas, itens no carrinho, tentativas de login, pessoas na fila do estabelecimento. Sempre que uma tela mostra “quantos”, existe um contador com esta mesma receita por trás.

    Fontes

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