Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Software que imprime os números de 30 a 40, exceto 33 e 37.

Estou no exercício em que é pedido pro aluno programar um software que imprime os números de 30 a 40, exceto 33 e 37.

Por que na hora de definir os parâmetros do if dentro do while ao inves de simplesmente escrever:

var numero = 30;

while (numero <= 40) {

    if(numero != 33, 37) {

        document.write(numero + "<br>");
        numero = numero + 1;
    }

eu tenho que escrever:

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

Como é que o navegador interpreta o primeiro caso?

3 respostas

Olá Lucas, tudo bem? Assumindo que ambas são aceitas pela linguagem, para mim, fica mais “visível” da forma solicitada. Mas esse código está funcionando? A impressão que tenho aí é que o incremento está também dentro do if, ou seja, uma vez que o número atingir 33 ele irá pular o incremento e ficará em um loop infinito, ou está apenas faltando uma chave aí no fim do document.write. Abraço!

solução

Oi Lucas Nakahara a sintaxe(ss) da linguagem deve ser obedecida.Quando trabalhamos com operadores lógicos em uma condição devemos fazer dessa forma:

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

Pois será avaliada se numero != 33 && numero != 37

Nesse caso:

numero != 33, 37

Ele vai avaliar se numero != 33 e só. Não se esqueça que poderíamos ter assim:

numero != 33 || soma <31 || multiplicação >3

Ou seja multiplas variáveis sem definilas fica dificil saber o que estará sendo avaliado.

Espero ter ajudado e bons estudos.

Oi Lucas, como já foi citado aqui, essa é uma situação de operadores Lógicos.

Vamos lá, respondendo a tua pergunta, o separador && funciona para comparações Singulares.

Este caso que você passou: " != 1, 2, 3" é como se estivesse passando uma Lista de argumentos para que sejam verificados, o que a linguagem não permite, pois existem diversos fatores para que uma Lista seja percorrida.

Para isso, existem os métodos nas quais as classes estendem, em um array, por exemplo, você poderia passar mais argumentos:

var arrayT = new Array(1, 2, 3);
console.log(arrayT.find(function(elemento){
    return elemento == 3;
}));

Veja por exemplo, esta função que eu montei que realiza o mesmo procedimento que você criou:

Array(40 - 30 + 1).fill().map((_, idx) => 30 + idx).forEach((element) => {
  element != 33 && element != 37 ? console.log(element) : delete element;
});

Repare que utilizo os mesmo operadores lógicos, pois esta é a forma mais segura de classificar um elemento.