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

Por que o && não funciona e o || sim?

Rapaz, penei pra chegar nesse resultado. Foi bem difícil eu achei. Minha cabeça já estava doendo kkk.

O código tá funcionando e faz o que o exercício pede mas, apesar de eu mesmo ter escrito e ver que funcionou, não entendi direito o por quê funcionou entende?

Nessa linha: "if(contador == 33 || contador == 37)", eu estava utilizando o && que significa "E", e não estava funcionando. Daí troquei para o || que significa "OU" e deu certo. Mas apesar de tudo não entendi direito porquê deu certo.

Por que não funciona com o && e sim só com o ||?

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

    function pulaLinha() {

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

    function mostra(frase) {

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

    var contador = 30;

    while (contador <= 40) {

        if(contador == 33 || contador == 37) {

            contador = contador + 1;
        } else {

            mostra(contador);
            contador = contador + 1;
        }
    }

    mostra("FIM");

</script>
3 respostas
solução!

Olá, boa tarde

Vinícius, o seu programa está dentro de um laço de repetição, certo?

Logo, o programa vai verificar cada número antes do incremento para testar se ele é o número 33 OU (||) o 37.

A cada passada ele irá testar se é um ou outro.

Já o operador E (&&) ele testa "uma coisa e outra coisa". Como se o código dependesse de 2 testes lógicos diferentes para ser verdade.

Só que nesse exercício, tem apenas um teste, com 2 possibilidades, por isso, o operador OU é o que entende essa lógica.

Ajudei ou te confundi mais?

Espero ter clareado as ideias... Depois, passa um feedback se ajudou em algo.

Bom domingo!

Olá!

Eu entendi sua explicação mas acho que ficou um pouquinho confusa, mas nada que uma leitura mais atenta não ajude.

Pra falar a verdade, logo depois que postei o tópico eu mesmo consegui responder essa dúvida de um jeito que fazia sentido para mim.

Meu pensamento mais ou menos foi assim:

Por exemplo, se eu usar "E"(&&), as duas coisas, (AO MESMO TEMPO), precisam obedecer a condição especificada para o valor ser tratado como "verdadeiro" pois, se apenas uma das coisas não obedecer a condição, o valor recebido será tratado como "falso".

Já no "OU"(||), eu não tenho necessidade que as duas coisas concordem com a condição especificada para que seja "verdadeiro", bastando apenas um das coisas obedeça a condição pra que o valor seja como "verdadeiro".

Eu aprendi da seguinte forma (lembrei o exemplo), o operador AND (&&) serviria se tivéssemos por exemplo, além do 33 e do 37, existisse uma outra cláusula como por exemplo, terminar com 7.

Aí, nesse caso, sim, o operador AND serviria. Pois são duas cláusulas diferentes.

Como, queremos um número ou outro na mesma cláusula, utilizamos o operador OR. (||). Que excluirá um ou outro, a cada passada pelo laço.

Acho que agora, consegui ser mais clara.

Faz mais sentido?