Olá, Estudante. Como vai?
Fico muito feliz em ver você interagindo e pensando nos desvios de lógica! Essa é a mentalidade exata de quem desenvolve softwares robustos: tentar prever onde o usuário pode errar para proteger o sistema.
Sobre a sua resposta: quase isso! Você teve uma excelente intuição ao pensar em usar o "menor", mas se mudarmos a linha principal para Faça enquanto o valor for menor ou igual a zero, o seu programa vai fazer o oposto do que queríamos. Ele fecharia na mesma hora em que você digitasse uma despesa positiva (como R$ 50,00) e ficaria preso rodando apenas se você digitasse números negativos ou zero.
Para ajustar isso sem quebrar a sua condição de parada (que é o número zero), a melhor estratégia é adicionar uma estrutura de validação (um Se) logo após o usuário digitar o valor.
Como estruturar o fluxo com a validação
O segredo é deixar o laço principal rodando enquanto for diferente de zero, mas, assim que o valor entra, o programa testa se ele é válido antes de somar. Veja como o seu algoritmo ficaria blindado e impecável:
< Início >
i - Faça enquanto o valor da despesa for diferente de Zero.
ii - Digite um valor por vez: < Valor da Despesa >; < Nome da Despesa >
- Se o
< Valor da Despesa > for menor que Zero:
Exiba a mensagem: "Valor inválido! Despesas não podem ser negativas."
(O programa ignora esse valor e volta para o passo ii sem somar) - Caso Contrário:
O processo acumula o valor digitado no campo < Valor Total >.
iii - Se for digitado “0”: o Valor Total final é exibido e o processo de repetição é encerrado.
< Fim >
Por que essa é a melhor abordagem?
Ao colocar um filtro de "Se for menor que zero" dentro da repetição, você cria uma camada de proteção. Se o usuário digitar sem querer -15 em vez de 15, o programa avisa o erro, descarta o número negativo e dá uma nova chance para ele digitar o valor correto, mantendo o programa aberto.
Esse encadeamento de um teste lógico (Se) dentro de uma repetição (Enquanto) é a espinha dorsal de qualquer sistema de caixa ou controle financeiro do mercado de trabalho!
Conseguiu perceber como o Se ajuda a filtrar o valor sem precisar fechar o programa inteiro? Se quiser testar mais alguma melhoria, como você faria se o usuário tentasse deixar o < Nome da Despesa > em branco?
Espero que possa ter lhe ajudado!