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

Erro usando o !=

Fiz o exercício usando "if" e "diferente de" e ainda assim mostram os números 33 e 37. Vi no forum que algumas alternativas possíveis com != mas não encontro meu erro. Se puderem ajudar agradeço.

var contador = 30;

while (contador <=40){

    if (contador !=33 && contador !=37); {
        mostra (contador)
        contador = contador + 1
    }
}

    mostra ("FIM");
7 respostas

A principio vejo que seu código tem um ";" depois o parêntese de fechar do if, além disso acredito que a lógica de colocar o contador dentro do "if" não deixará você finalizar seu loop.

Quando chegar no valor 33 o valor de contador não irá mais ser incrementado.

solução!

Seu erro é que a incrementação está dentro do if, ou seja, vai virar um loop infinito, pois quando chega no 33 ele não atende nenhuma das condiçoes, e o valor do contador não muda.

Execute seu código da seguinte maneira:

while (contador <=40){

if (contador !=33 && contador !=37); {
    mostra (contador)     
}
contador = contador + 1

} mostra ("FIM");

Christina,

faltam pontos e virgulas em algumas linhas, há ponto e vírgula antes da abertura de chave do 'if', e o contador precisa ficar fora do 'if'.

E muito cuidado ao usar operadores lógicos associados à negação, porque a lógica booleana é diferente daquilo que queremos dizer literalmente.

<script>

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

var contador = 30;

while(contador <= 40){

    if (contador != 33 && contador != 37) {
        mostra(contador);
    }

    contador = contador + 1;
}

mostra("FIM");

</script>

Pode explicar melhor o que seria essa lógica booleana? Obrigada!

Bruna,

não dá pra explicar tudo sobre o assunto por aqui. Tem muito material na internet, mas procure por explicações aplicadas à programação (há usos em outras áreas do conhecimento).

Na verdade não é essa incógnita toda por trás não... Tem as combinações e &&( and) e ||(or)

1 - Se vc usa um "!=" Quer dizer que pra ser verdadeiro tem que ser diferente da sua condição aplicada

2 - se vc usa os operadores lógicos && as duas condições aplicadas devem ser verdadeiras Exemplo: Int a = 1; Int b = 2; If(a != 0 && b != 0) // aqui ele valida os dois parâmetros, e se os dois atenderem, ele cai no teu

3 se vc usa a condição || (or) If(a != 0 && b != 0) ele nem olha o parâmetro b, pois no "ou" basta uma só condição ser verdadeira, pra ele entrar na instrução. Não tem muito seguredo..

Resumindo...se vc usa &&(and) pra entrar na sua condição, os dois parâmetros tem que ser verdadeiros

Quando vc usa || (ou) qqr uma das condições devem ser verdadeiras, uma delas estiver, ele entra no seu bloco abaixo do IF

Mas o único problema mesmo, foi declarar a incrementaçao dentro do bloco if, a sua lógica estava correta

Stéfany,

Você explicou sobre alguns usos de operadores lógicos em javascript. Lógica booleana ou álgebra booleana (que foi a pergunta) é algo um pouco mais complexo. Foi a isto que me referi ser complicado explicar por aqui.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software