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

Por que meu código não funciona?

Eu vi como o professor fez e vi onde está erro, porém não entendi por que não funciona assim também.

<meta charset="UTF-8">
<script>
    function pulaLinha() {
        document.write("<br>");
    }

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }

    var contador = 20
    while(contador <= 20){
        mostra(contador);
        contador = contador - 1;
    }

    mostra("FIM")

</script>
2 respostas

Oi Ita, tudo bem?

Seu código não está funcionando pois ele entrou em um loop infinito! Vamos entender melhor o que acontece no while:

var contador = 20;
while(contador <= 20){
        mostra(contador);
        contador = contador - 1;
}

Veja que a sua condição do while é: contador <= 20, ou seja, se o número for menor ou igual a 20, ele sempre entrará nesse loop.

Agora, dentro do loop, você diminui a variável contador em -1, ou seja, contador será 19, 18, 17... assim por diante. Mas temos um problema aí, pois todos esses valores são menores que 20, ou seja, esse loop é infinito, nunca irá terminar.

Precisamos então, de uma condição que saia de fato desse loop. Por isso usamos:

var contador = 20;
while(contador >= 0){
        mostra(contador);
        contador = contador - 1;
}

Dessa maneira, o contador será subtraído em -1, até chegar em 0. Assim, o loop será finito, e não infinito, e não causará erros no seu programa.

Espero ter ajudado, bons estudos =)

solução!

Oush de novo eu sem me ligar no loop infinito. Obrigada!!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software