1
resposta

Dúvida em uma parte do código do "adivinha_mais" da aula 09.08 Manipulando arrays

O código é:

<meta charset="UTF-8">

<input/>
<button>Compare com o meu segredo</button>

<script>
    function sorteia() {

       return Math.round(Math.random() * 10);

    }

    function sorteiaNumeros(quantidade) {

        var segredos = [];

        var numero = 1;

        while(numero <= quantidade) {

              var numeroAleatorio = sorteia();
              var achou = false;

            // DÚVIDA AQUI
            if (numeroAleatorio !== 0) { 
                     for(var posicao = 0; posicao < segredos.length; posicao++) {

                           if(segredos[posicao] == numeroAleatorio){
                                achou = true;
                                break;
                           }

                     }

                     if (achou == false) {
                           segredos.push(numeroAleatorio);
                           numero++;
                     }
              }

        }

        return segredos;

    }

    var segredos = sorteiaNumeros(5);

    console.log(segredos);

    var input = document.querySelector("input");
    input.focus();

    function verifica() {

       var achou = false;

       for(var posicao = 0; posicao < segredos.length; posicao++) {

              if(input.value == segredos[posicao]) {

                     alert("Você ACERTOU!");
                     achou = true;
                     break;
              } 
       }

       if(achou == false) {

              alert("Você ERROU!");
       }

       input.value = "";
       input.focus();

    }

    var button = document.querySelector("button");

    button.onclick = verifica;

</script>

Minha dúvida é: como o código continua rodando com o if (numeroAleatorio !== 0) { ...} caso seja sorteado o número 0? Penso que if (numeroAleatorio == 0) o código todo dentro do if não rodaria mais.

Alguém consegue me explicar?

1 resposta

Olá, Brendha, tudo bem?

Ótima observação!

Imagine que o programa será lido de cima para baixo, a cada linha. Ao chegar na condição if (numeroAleatorio !== 0) ele não entrará nessa condição, portanto, o if não será executado, logo, ele voltará para a primeira instrução do nosso while que seria var numeroAleatorio = sorteia(); chamando novamente um número aleatório. Caso esse novo número seja 0 novamente, ele não entrará no if e repetirá o comando novamente. Ou seja, ele executará a mesma instrução, até que venha um numeroAleatorio !== 0 que entrará na condição if.

Espero ter ajudado.

Caso surja dúvidas, estou à disposição.

Abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!