Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Querendo entender a lógica da condição While com contador

Minha dúvida neste código, apesar de funcionar é a seguinte. Lá no final, na condição While eu coloquei +3 e não entendo porque a resposta repete 4 vezes e não 3 como eu esperava. Sou iniciante na programação e meu pensamento é o seguinte: primeiro sorteio errado + 3, depois 6 e 9, ou seja deveriam ser 3 mensagens de que não acertei e não 4. Se alterar o código e colocar + 4 serão 3 mensagens e não duas como espero. Alguém sabe me explicar esta lógica?

<meta charset="UTF-8">

<script>

    function pulaLinha() {

        document.write("<br>");
    }

    function mostra(frase) {

        document.write(frase);
        pulaLinha();
    }

    function sorteia() {

        return Math.round(Math.random() * 100);
    }

    // funções pulaLinha, mostra e sorteia omitidas


    var numeroPensado = sorteia();

    var chute = parseInt(prompt("Já pensei. Qual você acha que é?"));

    if(chute == numeroPensado) {

        mostra("Uau! Você acertou, pois eu pensei no " + numeroPensado);
    } else {

        var contador = 1;

        while( contador <= 10 ) {

            mostra("Já era, você errou!");
            contador = contador + 3;
        }

    }
</script>
2 respostas
solução!

Olá Leonardo, Vamos fazee um teste de mesa no seu while? Olha só:

Iteração | contador antes do teste | teste (<= 10) | contador depois do teste 1 | 1 | 1 <= 10 (true) | 1 + 3 = 4 2 | 4 | 4 <= 10 (true) | 4 + 3 = 7 3 | 7 | 7 <= 10 (true) | 7 + 3 = 10 4 | 10 | 10 <= 10 (true) | 10 + 3 = 13 5 | 13 | 13 <= 10 (false)

Portanto, imprime 4 vezes a mensagem. Espero que tenho ajudado.

Renato, muito obrigado pela explicação, ajudou muito!