1
resposta

[Dúvida] Desafio 1 - numero 6

Faço uma sugestão para aplicações futuras e diferentes da proposta, pois ainda não sei como utilizar variáveis compostas ou vetores, que se consiste em utilizar a interatividade com o usuario para que ele pegunte quantos numeros quer somar, e com isso utilizar a function funcaosoma para numerar corretamente cada prompt e conseguir somar adequadamente todos os n numeros digitados. Alguém que saiba fazer essa ideia poderia compartilhar comigo?

//Ao clicar no botão soma, peça 2 números inteiros e exiba o resultado da soma em um alerta.
let contador=0
function funcaosoma(){
    contador=contador+1
    return parseInt(prompt(`Digite o ${contador}° numero: `));
    
}
function soma() {
   let num1 = funcaosoma()
   let num2 = funcaosoma()
   let soma;
   soma =  num1 + num2;
   alert(`A soma entre os numeros ${num1} e ${num2} é igual a ${soma}.`);
}
1 resposta

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).

  1. Você pergunta ao usuário: "Quantos números vamos somar?" (Digamos que ele diga 3).
  2. Você entra num loop que vai rodar 3 vezes.
  3. Na 1ª vez: Pede o número, joga na caixa e soma.
  4. Na 2ª vez: Pede o outro número, joga na caixa e soma com o que já estava lá.
  5. 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.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!