Olá, Wagner. Como vai?
Excelente estruturação do desafio! Você aplicou conceitos muito importantes de Pensamento Computacional, como a Abstração (ao focar apenas nos números e ignorar as descrições das despesas) e a Algoritmização (ao definir um fluxo claro de início, meio e fim).
Sua ideia de somar "de baixo para cima" até encontrar um valor vazio é uma lógica de controle de fluxo muito interessante. Para ajudar na visualização desse processo, podemos pensar nele como uma pilha de dados que o computador processa sequencialmente.
Aqui estão alguns pontos técnicos para agregar valor ao seu projeto:
1. A lógica da "Sentinela"
Em computação, esse valor vazio ou o "0" que você definiu para encerrar a soma é chamado de sentinela. É uma condição de parada que diz ao algoritmo: "não há mais dados para processar".
2. Tradução para Lógica de Programação
Embora você tenha definido que a soma ocorre da última para a primeira linha, na prática da programação costumamos percorrer a lista do início ao fim ou usar uma estrutura de repetição que acumula os valores conforme eles entram. Veja como seria o raciocínio:
soma_total = 0
Enquanto (valor_recebido nao for vazio):
Ler valor_recebido
Se valor_recebido for numero:
soma_total = soma_total + valor_recebido
Senao se valor_recebido for vazio:
valor_recebido = 0
Interromper Ciclo (Break)
Imprimir soma_total
Dicas de Boas Práticas e Refinamento:
- Validação de Dados: Como você especificou que a coluna só aceita números, é importante que o algoritmo tenha um tratamento de erro. Caso o cliente digite uma letra por engano, o sistema deve avisar que o formato é inválido antes de tentar somar.
- Eficiência: O fato de o algoritmo não se importar se são 10 ou 100 despesas mostra que sua solução é escalável. Isso é fundamental no desenvolvimento de software profissional.
- Sentido da Soma: Na maioria das linguagens, percorrer de cima para baixo ou de baixo para cima não altera o resultado final da soma (propriedade comutativa), mas a sua escolha de começar pela última linha pode ser muito útil se o sistema precisar priorizar lançamentos mais recentes em uma atualização futura.
Sua descrição em linguagem natural está pronta para ser transformada em código real, pois os critérios de parada e as regras de entrada estão muito bem delimitados!
Espero que possa ter lhe ajudado!