// Inicializa o total.
total = 0
// Recebe os valores repetidamente
enquanto (valor !== 0):
receber(valor)
somar(valor, total)
// Exibe o valor depois do loop
exibir(total)
Fim```
// Inicializa o total.
total = 0
// Recebe os valores repetidamente
enquanto (valor !== 0):
receber(valor)
somar(valor, total)
// Exibe o valor depois do loop
exibir(total)
Fim```
Olá, Pedro Henrique. Como vai?
Excelente resolução! Você aplicou um conceito fundamental da programação chamado sentinela. Em computação, um sentinela é um valor especial (no seu caso, o número $0$) usado para sinalizar o fim de um processo de repetição.
Essa estrutura é perfeita para situações onde não sabemos de antemão quantas despesas o usuário vai digitar — pode ser apenas uma ou podem ser cem.
Gostaria de destacar os pontos fortes da sua lógica sob a ótica do Pensamento Computacional:
No mundo real da programação, existe um detalhe importante: a ordem das ações dentro do enquanto. No seu código atual, se o usuário digitar $0$, o programa pode tentar somar esse $0$ ao total antes de sair do loop. Embora somar zero não mude o resultado, em outros contextos (como uma divisão), isso poderia causar um erro.
Uma forma muito comum de escrever essa lógica em linguagens como Python ou JavaScript é garantir que o valor seja verificado imediatamente após ser recebido:
// Versão refinada
total = 0
valor = 1 // Iniciamos com um valor diferente de 0 para o loop começar
enquanto (valor != 0):
obter(valor)
total = total + valor
exibir(total)
Esse padrão que você usou é conhecido como Acumulador. A variável total vai "acumulando" os valores a cada volta do laço. Esse é o "coração" de sistemas de caixa de supermercado e aplicativos de finanças!
Parabéns pela consistência nos desafios. Você está construindo uma base de lógica muito sólida.
Espero que possa ter lhe ajudado!