1
resposta

[SUGESTÃO] Evitando Loops Infinitos com while (Kelly Costa)

  • A alternativa correta é:
    Quando utilizamos loops com contadores, precisamos garantir que um dia eles cheguem até a condição de parada do loop. No código acima, o contador não tem seu valor alterado e para resolver o loop infinito basta decrementá-lo a cada iteração, adicionando a linha contador-- dentro do loop.

  • Explicação:
    No código abaixo:

let qtdNumeros = parseInt(prompt('Digite a quantidade de números para o cálculo da média:'));
let soma = 0;
let contador = 0;

while (contador < qtdNumeros) {
let entrada = prompt(Digite o número ${contador + 1}:);
let numero = parseFloat(entrada);

// Verifica se a entrada é um número válido
if (!isNaN(numero)) {
    soma += numero;
    contador++;
} else {
    alert('Por favor, digite um número válido!');
}

}

let media = soma / qtdNumeros;
alert('A média é: ' + media);

  • O valor de contador nunca muda dentro do loop.
    A condição contador > 0 sempre será verdadeira, resultando em um loop infinito.
    Para que o loop pare, é necessário diminuir o valor do contador a cada iteração:

contador--;

  • Alternativas incorretas:
    "contador++": Isso aumentaria o valor, afastando ainda mais da condição de parada (contador > 0).
    "qtdNumeros++": Alterar a quantidade total de números não resolve o loop.
    "while(contador > qtdNumeros)": Isso não faz sentido lógico, pois o contador inicia com o mesmo valor de qtdNumeros.
1 resposta

Sim, muito legal a proposta dessa resolução.

Usei dessa forma aqui:

let qtdNumeros = prompt('Digite a quantidade de números para o cálculo da média:');
let soma = 0;
let contador = qtdNumeros;

while (contador > 0) {
let numero = parseInt(prompt('Digite o número:'));
soma += numero;
contador--; // Adicionar a linha contador-- dentro do while, para que o valor do contador diminua a cada iteração. Com isso, o contador chegará a zero em algum momento e o loop será interrompido corretamente.!
}

let media = soma / qtdNumeros;
console.log(media);