1
resposta

[Sugestão] Desafio: Calculadora de despesas

1 valor inicial de zero
2 Campo para inserção da despesa em linha seguinte a digitada quando for diferente de zero
3 se ocorrer a digitação 0, some todas as linhas acima e destaque o valor total.

1 resposta

Olá, Fernando. Como vai?

Excelente sugestão de desafio! A construção de uma calculadora de despesas acumulativa é um exercício clássico e perfeito para praticar os pilares do pensamento computacional, especialmente a decomposição (dividir o problema em passos), o reconhecimento de padrões e o uso de estruturas de repetição e condição.

Para enriquecer ainda mais o seu tópico e ajudar os colegas do fórum que queiram implementar a sua ideia, vou demonstrar como transformar a sua lógica de passos em um pseudocódigo estruturado e, em seguida, em um programa funcional utilizando JavaScript (que é muito utilizado aqui nos cursos da Alura).


Traduzindo a lógica para o Pensamento Computacional

Podemos mapear os seus três pontos da seguinte forma:

  1. Inicialização: Criamos uma variável acumuladora chamada total e começamos ela com o valor 0.
  2. Repetição (Loop): Precisamos de um laço que continue pedindo valores para o usuário por tempo indeterminado.
  3. Condição de Parada: Dentro do laço, se o valor digitado for 0, o programa para de pedir dados, faz a soma final e exibe o destaque. Se for diferente de 0, ele soma o valor ao total e continua.

Exemplo Prático em JavaScript

Aqui está uma implementação simples desse desafio que pode ser testada diretamente no console do navegador ou em um ambiente como o VS Code:

// 1. Valor inicial de zero
let totalDespesas = 0;
let continuar = true;

alert('Bem-vindo à Calculadora de Despesas! Digite os valores ou insira 0 para encerrar e somar.');

// 2. Loop para inserção das despesas em linhas seguintes
while (continuar) {
    let entrada = prompt('Digite o valor da despesa (ou 0 para sair):');
    
    // Convertemos a entrada de texto para número decimal
    let valor = parseFloat(entrada);

    // Validação simples para garantir que o usuário digitou um número válido
    if (isNaN(valor)) {
        alert('Por favor, digite um número válido.');
        continue;
    }

    // 3. Se ocorrer a digitação 0, para o loop e destaca o total
    if (valor === 0) {
        continuar = false; 
    } else {
        // Acumula o valor na variável totalDespesas
        totalDespesas = totalDespesas + valor;
        console.log(`Despesa adicionada: R$ ${valor.toFixed(2)} | Total atual: R$ ${totalDespesas.toFixed(2)}`);
    }
}

// Destaque do valor total após a digitação do zero
alert(`=== RESULTADO FINAL ===\nO valor total de todas as despesas inseridas é: R$ ${totalDespesas.toFixed(2)}`);
console.log(`=== TOTAL DE DESPESAS: R$ ${totalDespesas.toFixed(2)} ===`);

Por que esse desafio é ótimo?

Como você bem pontuou pela sua experiência como Fiscal de Tributos, a entrada de dados em formato de "lista de linhas" onde o gatilho de encerramento é um caractere ou número específico (conhecido na programação como valor sentinela) simula exatamente como sistemas reais de contabilidade, caixas de mercado e preenchimento de planilhas fiscais funcionam.

Parabéns por compartilhar essa dinâmica com a comunidade! Com certeza vai exercitar muito o raciocínio lógico de quem aceitar o desafio.

Espero que possa ter lhe ajudado!