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

Exerc. 4: nao entendi a logica

Olá, pq inserir o numero= numero + 1 vai fazer com que ele nao mostre o numero 33 e 37?


    var numero = 30;

        while(numero <= 40) {

        if (numero == 33) {

           numero = numero + 1; }

         if (numero == 37) {

         numero = numero + 1; }

        else  { mostra ("Os números de 1 a 40 são " + numero); 

            numero = numero + 1;
        }

        }
6 respostas
solução!

Boa noite, Ana! Como vai?

A primeira coisa que é preciso entender é que o JavaScript vai lendo o seu código de cima pra baixo! Então, imagine que em vez da variável numero começar em 30, ela comece em 33! Sendo assim, temos a primeira linha do nosso código que inicializa a variável numero:

var numero = 33;

Em seguida, o próximo passo que o JavaScript dará é avaliar se entra ou não no while, sendo que ele só entrará caso a expressão do while seja verdadeira!

while( numero <= 40 ) {
     // Restante do código omitido.
}

Como numero vale 33 e esse valor é menor ou igual a 40, isso devolve true e o JavaScript entra no while!

Bacana! Continuando, agora precisamos avaliar o primeiro if! Onde, novamente, o conteúdo interno do if só será executado caso a expressão seja verdadeira!

if ( numero == 33 ) {
     numero = numero + 1;
}

Como numero vale 33 e esse valor é igual a 33, o conteúdo interno do if é executado! E nesse conteúdo interno, tudo que é feito é atualizar o valor da variável numero incrementando seu valor de 1, ou seja, fazendo numero passar a valer 34!

E, com isso, conseguimos entender que o objetivo de fazer numero = numero + 1 é justamente incrementar o valor da variável numero! De modo que quando essa variável tiver o valor 33 ou 37, tais valores serão pulados!

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, minha aluna!

Oi, Ana, tudo bem?

a variável numero tá fazendo a função de um contador. Esse contador está guardando os números que estão na condição do seu while. Bem, quando entramos no if no deparamos com if (numero == 33) execute esse comando numero = numero +1. O problema da questão mostrar todos os números que estão entre 30 a 40, menos 33 e 37, certo? Nesse momento, o sua variável contadora, numero soma o valor 33 +1, resultando em 34. O mesmo é para if (numero == 37) .

Ou seja, a sua variável contadora numero está guardando os números entre 30 a 40. A cada volta do while esse contatador soma + 1. O seu if fala para ele adicionar +1 quando chegar em 33 e em 37, assim, esses dois valores não irão ser mostrados.

Espero ter te ajudado, Ana :}

Ah, acho que estou quase entendendo... na verdade nao é que a expressao contador = contator + 1 nesse caso signifique que é para pular o numero, o que ele vai fazer é : toda vez que aparecer o 33 ele voltaria na variavel numero e acrescentaria um , entao o 33 vira 31? Se for isso, entao porque nao aprece o 31 duas vezes?

Ana, na realidade o 33 irá virar 34! Exatamente como no passo a passo que demonstrei no meu primeiro comentário!

Eu consegui obter o mesmo resultado usando uma abordagem diferente. Gostaria da ajuda de alguém, afim de verificar se a forma como fiz é válida ou não.

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

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

var numero = 30;

while(numero <= 40)  {

    if(numero !== 33  &&  numero !== 37)  {

        mostra(numero);
        numero = numero + 2;
     }
}

mostra("FIM");

Estou tendo problema neste mesmo exercício. Não vejo diferença entre o meu codigo (a nao ser o nome da var.

<meta charset="UTF-8">

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

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

    //todos os números entre 30 e 40 (inclusive 30 e 40)
    //os números 33 e 37 não devem ser impressos!

    var num = 30

    while(num <= 40) {
        if(num == 33);
            num = num + 1;

        if(num == 37) {
            num = num + 1;
        }

        else {
            mostra(num);
            num = num + 1;

        }
    }

</script>

O retorno ta sendo...

31
33
35
39
41

O que pode estar acontecendo neste código?

Edit: Assim que digitei aqui no forum ja encontrei o erro. Estava faltando um { (rsrsrsrs)