Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] 06 Desafio: Calculadora de despesas

inicio
peça para que o usuário informe um valor;
enquanto o valor digitado for diferente de 0 some os valores;
quando zero for digitado pelo usuário apresente a soma total como resposta final.
fim algoritmo

1 resposta
solução!

Olá, Gabriel. Como vai?

O seu pseudocódigo está excelente e demonstra uma ótima compreensão de como funcionam os laços de repetição baseados em uma condição de parada, que neste caso é a digitação do número zero.

Para que o seu algoritmo funcione de forma 100% precisa na prática, há apenas um pequeno detalhe na ordem das etapas que precisamos ajustar. Do jeito que está estruturado, o programa pede o valor uma única vez antes de entrar no laço. Se o usuário digitar um número diferente de zero, o laço começará, mas ficará somando esse mesmo número infinitamente, pois o programa não pede um novo valor dentro do laço.

A estrutura ideal para esse tipo de problema segue a seguinte lógica:

  1. Inicializar uma variável para acumular a soma (começando em 0).
  2. Pedir o primeiro valor.
  3. Entrar no laço enquanto o valor for diferente de 0.
  4. Dentro do laço, somar o valor atual ao total.
  5. Ainda dentro do laço, pedir o próximo valor (para atualizar a condição e não criar um loop infinito).
  6. Exibir o resultado quando o laço terminar.

Veja como o seu pseudocódigo fica corrigido e mais completo:

inicio
    declarar soma = 0;
    declarar valor;
    
    peça para que o usuário informe um valor;
    guarde o valor digitado;
    
    enquanto o valor digitado for diferente de 0 faça:
        soma = soma + valor;
        peça para que o usuário informe um valor;
        guarde o valor digitado;
    fim enquanto
    
    apresente a soma total como resposta final;
fim algoritmo

Para ajudar a visualizar como essa lógica se comporta em uma linguagem de programação real, veja este exemplo estruturado em JavaScript:

let soma = 0;
let valor;

// O loop continuará rodando enquanto o valor digitado não for 0
do {
    valor = parseFloat(prompt("Informe um valor (ou digite 0 para sair):"));
    
    // Se o usuário digitou um número válido, adiciona à soma
    if (!isNaN(valor)) {
        soma = soma + valor;
    }
    
} while (valor !== 0);

console.log("A soma total das despesas é: " + soma);
  • Diferença técnica importante: No JavaScript utilizei o laço do...while. Ele é perfeito para esse cenário porque garante que o bloco de código seja executado pelo menos uma vez antes de testar se a condição (valor diferente de zero) é verdadeira, tornando o código mais enxuto.

Espero que possa ter lhe ajudado!