1
resposta

[Dúvida] O meu programa não sai do loop. O que estaria errado?

alert('Boas vindas ao jogo do número secreto, o seu objetivo é adivinhar o numero secreto'); let numeroSecreto = 10; console.log(numeroSecreto) let chute while (chute!=numeroSecreto) { prompt("Este ainda não é o numero secreto, tente novamente!")

    if (chute == numeroSecreto)
         {
        alert(`Isso ai! Você descobriu o número secreto ${numeroSecreto}`);

        } else {
            if (chute>numeroSecreto)
                alert(`O numero secreto é maior que ${chute}`)
            else {
                alert(`O numero secreto é menor que ${chute}`)
            }
        }

}

1 resposta

Olá, Vinícius!

Vamos juntos resolver esse mistério do loop infinito!

Entendendo o problema:

O seu código está entrando em um loop infinito porque a variável chute não está sendo inicializada dentro do loop. Isso significa que ela sempre terá o valor undefined, e a condição while (chute != numeroSecreto) sempre será verdadeira, fazendo com que o loop continue indefinidamente.

Por que isso acontece?

  • Variável chute indefinida: A variável chute é declarada, mas não recebe um valor inicial dentro do loop. Sem um valor definido, ela sempre será diferente do numeroSecreto.

  • Falta de atualização: O valor de chute não é atualizado dentro do loop, ou seja, o jogador não tem a oportunidade de digitar um novo número a cada tentativa.

Como resolver:

Para corrigir esse problema, precisamos:

  1. Inicializar a variável chute dentro do loop: Isso permitirá que o jogador digite um novo valor a cada tentativa.

  2. Utilizar o valor digitado: O valor digitado pelo usuário deve ser atribuído à variável chute para que a comparação com o numeroSecreto seja feita corretamente.

Veja o código abaixo:

alert('Boas vindas ao jogo do número secreto, o seu objetivo é adivinhar o numero secreto');
let numeroSecreto = 10;
console.log(numeroSecreto);

let chute;

while (true) { // Loop infinito (será interrompido pelo break)
    chute = parseInt(prompt("Digite um número:"));

    if (chute == numeroSecreto) {
        alert(`Isso ai! Você descobriu o número secreto ${numeroSecreto}`);
        break; // Interrompe o loop quando o chute for correto
    } else {
        if (chute > numeroSecreto) {
            alert(`O número secreto é menor que ${chute}`);
        } else {
            alert(`O número secreto é maior que ${chute}`);
        }
    }
}

Explicando as mudanças:

  • Inicialização dentro do loop: A variável chute agora é inicializada dentro do loop while, permitindo que o usuário digite um novo valor a cada tentativa.

  • Loop infinito: Utilizamos um loop while (true) para criar um loop infinito. O break dentro do if será usado para interromper o loop quando o número secreto for adivinhado.

  • Comparação: A condição chute == numeroSecreto verifica se o valor digitado pelo usuário é igual ao número secreto.

Com essas modificações, seu código estará funcionando corretamente e o loop infinito será corrigido.

Espero ter ajudado.