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

Sequência da instruções do While

Olá

Quando coloco o mostra abaixo do contador a contagem no browser inicia no 4. Porque isso acontece?

  var contador = 2;

    while ( contador <= 100 ) {

        contador = contador + 2;
        mostra( contador );

    }

Obrigado

7 respostas

Porque antes de entrar na função mostra, o valor do contador que era 2, ganha mais 2, ficando com 4

Olá Giuseppe, tudo bem?

Caso queira exibir o 2 na sua contagem basta fazer como o Guilherme falou e inverter a ordem das instruções, ficando com:

var contador = 2;

 while ( contador <= 100 ) {
        mostra( contador );
        contador = contador + 2;
}

Oi Giuseppe, sua dúvida foi solucionada?

olá a dúvida não foi totalmente elucidada. Eu já tinha feito o teste, invertendo a ordem das instruções. O que eu não saquei ainda é a lógica por trás.

se a função do mostra( contador ) é só fazer o output, pq ele interfere no resultado da soma do contador = contador + 2?

solução!

Veja bem. Vamos comparar o seu código como mandou e a versão como mandei:

O seu:

var contador = 2;

    while ( contador <= 100 ) {

        contador = contador + 2;
        mostra( contador );

    }

Nesse caso o contador inicialmente é definido como 2, certo?

Ao entrar no while, qual a primeira instrução que ele realiza? contador = contador + 2;. Repare que a função mostra() só será chamada depois (com o valor do contador já sendo 4). Então a função mostra() não está alterando o valor, ele que foi alterado antes na linha anterior.

O meu:

var contador = 2;

    while ( contador <= 100 ) {

        mostra( contador );
        contador = contador + 2;

    }

Repare que agora, dentro do while, antes de fazer qualquer alteração no valor da variável contador, a função mostra() é chamada, exibindo então o valor 2 antes que ele fosse alterado para 4.

Ficou melhor agora? :)

Fala Daniel!

Vc nem imagina o quanto ficou claro. Cristalino, cara. Puta explicação simples e boa. Eu sempre me pego meio confuso na ordem dessas instruções que vão dentro de while e if.

Mas com tua ajuda, algo que eu não sacava, agora é óbvio.

Oi Giuseppe, que bom que consegui ajudar. Fico feliz :)

Qualquer dúvida é só abrir outro tópico, ok?