4
respostas

Contador iniciando em 0

Olá Prezados. Porque quando eu inicio o contador em 0 , os numeros pares vão até 102, mesmo colocando ** while( i <= 100)** ? Qual é lógica?

<meta charset="UTF-8">

<script>

function pulaLinha() {

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

function mostra(frase) {

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


var i = 0;

while(i <= 100) {

    i = i + 2;
    mostra("<br>" + i);
}

mostra("<br>Fim");

</script>
4 respostas

Olá, acabei de iniciar na Alura e estou começando a conhecer programação agora, então caso eu fale bobagens me desculpe. Acredito que a lógica é: Como 'i' é menor IGUAL a 100, no momento que ele chegar em 100 ainda haverá uma contagem a ser feita, por isso está somando 102. Talvez se você colcoar apenas < funcione ?!

Espero que dê certo!

Olá, boa tarde! Para mim não fez tanto sentido assim, segue um exemplo de uns de nossos colegas, repare que ele inciou o contador como dois, se esta lógica procedesse no momento em que o contador fosse 100 também, ele também deveria exibir o 102.

<meta charset="UTF-8">
<script>

    function pulaLinha() {

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

    function mostra(frase) {

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

        var pares = 2;
        var limite = 100

        while( pares <= limite ) {

            mostra("OS numeros pares sao " + pares);
            pares = pares + 2;
        }


            mostra("FIM");

</script>

Olá novamente, então, acho que achei o erro! Compare:

    var i = 0;
    while(i <= 100) {

        i = i + 2;
        mostra("<br>" + i);

Veja que no teu programa: Primeiro: ele garante que a variável é <=100. Segundo: caso seja verdade ele soma +2 a variável. Terceiro: escreve no console o resultado. Dessa forma, quando i=100, ele verá que é verdadeiro ( 100 <= 100), somará 2, e mostrará no console o valor 102. Neste caso, a solução que eu lhe disse funcionará !

Agora no programa do nosso colega:

     var pares = 2;
    var limite = 100

    while( pares <= limite ) {

        mostra("OS numeros pares sao " + pares);
        pares = pares + 2;
    }

Repare que o programa dele fará as ações em outra ordem. Primeiro: verá se a condição é verdadeira. Segundo: escreverá o valor da variável no console. Terceiro: somará +2 ao valor da variável. Dessa forma, a variável no programa dele também atinge o valor de 102, porém este valor nunca é escrito no console. Aqui, se fizessemos a alteração que eu sugeri, substituir <= por <, o programa iria apenas escrever até o número 98, uma vez que este escreve no console ANTES de fazer a soma. Veja também que a variável dele começa com 2, e mesmo assim aparecerá no console. Visto que ele mostrará o valor antes de soma-lo. Caso você trocasse sua variável para 2, o primeiro valor do console é 4, uma vez que ele primeiro soma e depois escreve.

O problema está na ordem de execução das linhas. Acho que é isso, espero que eu tenha sido claro e que esteja certo kkk.

Olá Rafael, muitíssimo obrigado pela atenção! Sim, um pouco antes desta explicação, eu notei isto também!

Se eu escrevo da seguinte maneira abaixo, ele me mostra o 102

while(i<=100) {

        i++;
        mostra(i);

}

No enetanto se eu escrevo da maneira abaixo, mostra o 100. Mesmo iniciando o contador com 0

while(i<=100) {

        mostra(i);
        i++;

}

Novamente, grato pela ajuda!