Módulo 16 - Projeto final, pensando como programador

Parte 2: cada real no seu lugar, com SENÃO SE e acumuladores

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

O que você vai aprender

  • Criar um acumulador por categoria e zerar todos antes do laço.
  • Escrever a escada de SENÃO SE que direciona cada valor ao acumulador certo.
  • Manter o total geral crescendo fora da escada, para toda despesa.
  • Rastrear os acumuladores num teste de mesa, despesa a despesa.

Quatro cofrinhos e uma pergunta por despesa

Imagine quatro cofrinhos etiquetados na mesa: moradia, alimentação, transporte e outros. A cada despesa registrada, você olha a etiqueta da categoria e coloca o valor no cofrinho certo. No fim do mês, cada cofrinho conta a sua parte da história, e a soma dos quatro conta a história inteira. A parte 2 do projeto é exatamente essa cena em pseudocódigo: os cofrinhos são acumuladores (módulo 9), e a mão que escolhe o cofrinho é a escada de SENÃO SE (módulo 8).

totalMoradia <- 0
totalAlimentacao <- 0
totalTransporte <- 0
totalOutros <- 0
totalGeral <- 0

// Cinco cofrinhos zerados, prontos para receber as somas

Antes do laço, todo acumulador nasce zerado. Sem isso, a primeira soma seria em cima de lixo.

A primeira linha de qualquer solução com acumulador é o zeramento, e vale repetir o porquê: a instrução totalMoradia <- totalMoradia + valor precisa de um totalMoradia anterior para funcionar. Se ele nunca recebeu um valor inicial, a soma parte de um conteúdo indefinido, e o total final vira loteria. Zerar os cinco antes do laço é o equivalente a conferir que os cofrinhos estão vazios antes de começar o mês: barato, rápido e evita uma discussão enorme na hora de contar o dinheiro.

A escada de SENÃO SE: um guichê por categoria

Com os dados validados pela parte 1, a decisão fica limpa. A categoria só pode ser 1, 2, 3 ou 4, então a escada tem três degraus de teste e um SENÃO final que captura o resto: se categoria = 1, o valor soma em moradia; senão se categoria = 2, soma em alimentação; senão se categoria = 3, soma em transporte; senão, soma em outros. Só um degrau executa por despesa, como você aprendeu no módulo 8, e é isso que garante que nenhum real entra em dois cofrinhos ao mesmo tempo.

se categoria = 1 então
    totalMoradia <- totalMoradia + valor
senão se categoria = 2 então
    totalAlimentacao <- totalAlimentacao + valor
senão se categoria = 3 então
    totalTransporte <- totalTransporte + valor
senão
    totalOutros <- totalOutros + valor
fim
totalGeral <- totalGeral + valor

// Só um cofrinho recebe o valor; o total geral recebe sempre

A escada roteia o valor para um cofrinho; o total geral, fora dela, soma toda despesa.

Repare na última linha, fora da escada: totalGeral <- totalGeral + valor. A posição dela não é acaso, é decisão de projeto. O total geral cresce com TODA despesa, independentemente da categoria, então ele não pertence a nenhum degrau. Se essa linha morasse dentro do se categoria = 1, o total geral só contaria despesas de moradia, e o relatório final mentiria com convicção. Posição de linha é significado: dentro do SE é condicional, fora do SE é incondicional.

🎮 Jogo da aula

Rastreie os cofrinhos

Duas despesas passam pela engrenagem da parte 2. Rastreie os acumuladores linha a linha e escolha o que o escreva final mostra.

totalGeral <- 0
totalAlimentacao <- 0

valor <- 40
categoria <- 2
se categoria = 2 então
    totalAlimentacao <- totalAlimentacao + valor
fim
totalGeral <- totalGeral + valor

valor <- 25
categoria <- 3
se categoria = 2 então
    totalAlimentacao <- totalAlimentacao + valor
fim
totalGeral <- totalGeral + valor

escreva(totalAlimentacao, " / ", totalGeral)

O teste de mesa: vendo os totais crescerem

Antes de declarar a parte 2 pronta, ela passa pelo raio-X do módulo 13: o teste de mesa. Simule três despesas no papel: 1200 na categoria 1, 300 na categoria 2 e 200 na categoria 2 de novo. A tabela abaixo rastreia os acumuladores depois de cada despesa. Acompanhe linha por linha, de preferência cobrindo as de baixo com a mão: prever antes de conferir é a recuperação ativa que fixa o raciocínio.

Despesa (valor, categoria)totalMoradiatotalAlimentacaototalGeral
início (antes do laço)000
1200, categoria 1120001200
300, categoria 212003001500
200, categoria 212005001700

O teste de mesa da parte 2: cada despesa mexe em exatamente dois acumuladores.

Teste rápido

Se a linha “totalGeral <- totalGeral + valor” fosse movida para DENTRO do degrau “se categoria = 1”, o que aconteceria?

Perguntas frequentes

Por que usar quatro variáveis em vez de uma lista de totais?
As duas soluções funcionam. Com quatro categorias fixas, variáveis nomeadas deixam o pseudocódigo legível para quem está consolidando os fundamentos. Uma lista indexada pela categoria (módulo 11) é a evolução natural quando as categorias crescem, e fica como desafio na aula 5.
A escada precisa testar a categoria 4?
Não, e isso é proposital. Como a parte 1 garante que a categoria é 1, 2, 3 ou 4, o SENÃO final só é alcançado quando ela vale 4. Testar de novo seria redundância. Esse é o dividendo da validação na entrada: as decisões seguintes ficam mais curtas e mais claras.
E se duas condições da escada fossem verdadeiras ao mesmo tempo?
Na escada de SENÃO SE isso não acontece por construção: os testes rodam de cima para baixo e o primeiro verdadeiro executa e encerra a escada. Como a categoria é um único número, apenas um teste pode ser verdadeiro de qualquer forma. A escada garante a exclusividade até em casos mais ambíguos.
Por que o teste de mesa soma os cofrinhos no final?
É uma verificação de consistência: a soma das partes precisa ser igual ao todo. Se os quatro totais por categoria não somarem o total geral, existe um vazamento (valor que não entrou em nenhum cofrinho) ou uma duplicidade (valor que entrou em dois). É um detector de bugs barato e poderoso.
Posso somar o total geral depois, no relatório, em vez de acumular?
Pode: totalGeral <- totalMoradia + totalAlimentacao + totalTransporte + totalOutros, calculado uma vez na parte 3, dá o mesmo resultado. São dois desenhos válidos. O projeto acumula dentro do laço para exercitar o padrão do acumulador; o importante é escolher UM desenho e não misturar os dois.
O que acontece se eu esquecer de zerar um acumulador?
No pseudocódigo, a variável sem valor inicial é conteúdo indefinido, e somar em cima disso gera resultado imprevisível. Nas linguagens reais o sintoma varia: algumas travam com erro, outras assumem lixo de memória. Em todos os casos a regra é a mesma: acumulador nasce zerado, sempre antes do laço.

Fontes

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