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

Dúvida em relação ao while

Boa tarde!

Gostaria de saber pq qdo mudo minha condição (numero<=20), o programa fica carregando e ao final diz que houve erro.

<meta charset="UTF-8">

<script>
    function pulaLinha(){
        document.write("<br>");
        document.write("<br>");
    }

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

    var numero = 20;

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

    mostra("FIM");

</script>
2 respostas
solução!

Olá Aluno, aparentemente vc tem um problema de loop infinito, o que pode estar ocasionando uma sobrecarga no seu navegador. Tentei executar seu código aqui, e quase tive que reiniciar o navegador.

Vamos analisar:

vc declara numero = 20 - OK

depois vc diz que a condição pra ele executar a função mostra(), é enquanto numero for menor ou igual à 20, e então vc faz o decremento de número.

Acontece que como vc está decrementando, e sua condição numero <= 20 sempre será verdade, ou seja o programa executará eternamente, e nunca chegará a condição de parada (em programação chamamos de loop infinito).

Esse problema dependendo da linguagem que se está trabalhando causa um enchimento da pilha de processos (stack overflow) e o sistema trava fazendo com que o kernel do sistema o interrompa para não consumir todos os recursos dos demais sistemas do computador.

Solução:

Vc precisa então estabelecer uma forma que seja possível alcançar a condição de parada. Vc pode solucionar isso de duas formas:

1. Alterar a condição de parada:

mantém a declaração: var numero = 20;

altera a condição de parada para while (numero >= 0){...}

2. Alterar a declaração e o passo:

altera a declaração para: var numero = 0;

mantém a condição de parada while (numero <= 20){...}

altera o passo do número para incrementar ao invés de decrementar: numero = numero + 1;

Muito obrigada Gabriel pela resposta!

Consegui entender o problema.