Oii, Otavio! Tudo bem?
A sua ideia é excelente! Pensar em como deixar o programa dinâmico e capaz de lidar com qualquer quantidade de dados é exatamente o espírito da programação. Parabéns pela iniciativa de ir além do exercício proposto!
Como você mencionou que ainda não aprendeu sobre vetores (listas/arrays), a melhor forma de resolver isso é utilizando uma estrutura de repetição (como o while) combinada com uma variável que chamamos de acumuladora.
A lógica do "Acumulador"
Imagine que você tem uma caixa vazia (a variável soma).
- Você pergunta ao usuário: "Quantos números vamos somar?" (Digamos que ele diga 3).
- Você entra num loop que vai rodar 3 vezes.
- Na 1ª vez: Pede o número, joga na caixa e soma.
- Na 2ª vez: Pede o outro número, joga na caixa e soma com o que já estava lá.
- E assim por diante...
Dessa forma, você não precisa criar num1, num2, num3... Você usa uma única variável para ler o número da vez e já soma ele imediatamente ao total.
Uma ideia de solução utilizando o while, que é uma estrutura comum em lógica de programação:
function somaDinamica() {
// 1. perguntamos quantos números o usuário quer somar
let quantidade = parseInt(prompt("Quantos números você deseja somar?"));
let contador = 1;
let somaTotal = 0; // Esta é a variável acumuladora (começa com 0)
// 2. enquanto o contador for menor ou igual à quantidade desejada...
while (contador <= quantidade) {
// pedimos o número da vez
let numeroDigitado = parseInt(prompt(`Digite o ${contador}º número:`));
// 3. adicionamos esse número ao nosso total acumulado
// É o mesmo que fazer: somaTotal = somaTotal + numeroDigitado
somaTotal += numeroDigitado;
// avançamos o contador
contador++;
}
// 4. exibimos o resultado final
alert(`A soma dos ${quantidade} números é igual a ${somaTotal}.`);
}
O que mudou aqui?
somaTotal: Ela começa zerada. Cada vez que o usuário digita um número, nós "acumulamos" o valor nela. Não precisamos guardar os números individuais, apenas o resultado da soma deles.quantidade: É o limite do nosso loop. Se o usuário digitar 10, o while vai rodar 10 vezes.prompt dinâmico: Usamos o ${contador} dentro do texto do prompt para ele mostrar "1º número", "2º número", etc., automaticamente.
Essa lógica resolve o problema sem precisar de vetores, apenas reutilizando as variáveis dentro do loop!
Espero que esse exemplo ajude a clarear como implementar sua ideia.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!