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

Não deu

Olá. Srs.

No meu chrome le da seguinte forma: 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 -1 FIM

meu código foi igual a resposta de vocÊs.

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

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

var numeros = 20;

while(numeros <=20 && numeros >=0) {
       numeros--;
       mostra(numeros);
       }

 mostra("FIM");

</script>
3 respostas

Olá Igor,

vamos dar uma olhada em como seu while está se comportando :

var numeros = 20;
while(numeros <=20 && numeros >=0) {
       numeros--; //subtrai 1 de numeros
       mostra(numeros); //mostra o numeros
}

Inicialmente o numeros começa com o valor 20, que satisfaz a condição numeros <=20 && numeros >=0. Então ele entra no while e primeiro ocorre a subtração, ou seja, numeros assume o valor 19 e depois ele mostra a informação. Por isso ele imprimiu primeiro 19 e não 20.

Essa também é a causa do porque ele vai imprimir -1, porque em algum momento do while o numeros terá valor 0, que satisfaz numeros <=20 && numeros >=0, então vai entrar no while, subtrair 1 e, consequentemente, mostrar o -1.

Para ele mostrar o 20 e não mostrar o -1, precisa inverter a ordem dentro do while, ou seja, primeiro mostra o numeros e depois subtrai 1 dele.

solução!

Opa Igor, está quase, muito perto... é um detalhezinho simples. Vou te dar uma dica, mas sem te dar o código de mão beijada, ok?

O resultado final tem que imprimir 20 19 18... 1 0.

Repara que a sua variável começa com 20, aí você entra no while, lá dentro você decrementa ela e depois mostra. Então quando mostra ela já está 19 na primeira passagem. Lá na última passagem, a variável vai estar em 0, então ele vai entrar no while também. Logo em seguida você decrementa e depois imprime, ou seja, imprime -1.

Consegue visualizar o que ficou errado? Há uma coisa que você está fazendo em ordem invertida.

Veja se consegue visualizar e qualquer coisa, avise.

Entendi.

while(numeros <=20 && numeros >=0) { mostra(numeros); numeros--; }

A ordem realmente importa aqui! rs

Tenho que prestar mais atenção. Obrigado, colegas!