Operadores Lógicos: E, OU, NÃO
O que vais aprender nesta aula:
- O operador E (
&&) - Tudo tem de ser verdade - O operador OU (
||) - Basta um ser verdade - O operador NÃO (
!) - Inverte o valor - Como tomar decisões complexas combinando várias regras
🧠 Teoria (com Analogia e Contexto Real)
Na vida real, raramente tomamos decisões baseadas numa única coisa. Geralmente, há várias condições envolvidas.
✈️ Analogia do Aeroporto
Imagina que vais apanhar um avião:
- Operador E (&&): Para embarcar, precisas de Bilhete E Cartão de Cidadão. Se faltar um deles, não embarcas.
- Operador OU (||): Para te identificares, podes mostrar o Cartão de Cidadão OU o Passaporte. Basta ter um deles para funcionar.
- Operador NÃO (!): É o detetor de metais. Se NÃO tiveres metal, passas. Se tiveres, apita.
Porque é que isto importa? É a base de toda a lógica de negócio. "Se o utilizador for Premium E tiver saldo, aplica desconto". "Se o campo email estiver vazio OU a password for curta, mostra erro".
! (NÃO) é muitas vezes chamado de "Bang". Podes usá-lo duas vezes (!!) para converter qualquer valor num booleano verdadeiro ou falso puro.
💻 Prática (Orientada e Progressiva)
Vamos testar a lógica do computador:
Exemplo 1: Operador E (&&)
Só devolve true se ambos forem verdadeiros.
let tenhoBilhete = true;
let tenhoCC = true;
let possoEmbarcar = tenhoBilhete && tenhoCC;
console.log(possoEmbarcar); // true
// Se perder o CC...
tenhoCC = false;
console.log(tenhoBilhete && tenhoCC); // false
Exemplo 2: Operador OU (||)
Devolve true se pelo menos um for verdadeiro.
let souSocio = false;
let tenhoConvite = true;
// Entra se for sócio OU se tiver convite
let podeEntrar = souSocio || tenhoConvite;
console.log(podeEntrar); // true
Exemplo 3: Operador NÃO (!)
Inverte o valor booleano.
let estaChovendo = true;
let vouAPraia = !estaChovendo;
console.log(vouAPraia); // false (porque está a chover)
* ganha ao +, na lógica o && (E) tem prioridade sobre o || (OU).
Usa parênteses para garantir que a lógica está correta:
(A || B) && C.
✅ Verificação de Conhecimento
1. O resultado de true && false é?
2. O resultado de false || true é?
3. O que faz o operador ! (Ex: !true)?
🧩 Desafio Prático
Sistema de Aprovação Escolar
Um aluno passa de ano se:
- A média for igual ou superior a 10 (
media >= 10) - E tiver menos de 10 faltas (
faltas < 10)
Cria um programa que diga se o aluno passou ou não.
// Testa com media=12 e faltas=5 (Deve passar)
// Testa com media=15 e faltas=15 (Não deve passar)
Mostrar Solução
let media = 12;
let faltas = 5;
// Regra: Média >= 10 E Faltas < 10
let passouDeAno = media >= 10 && faltas < 10;
console.log("O aluno passou? " + passouDeAno);
📌 Explicação: Usámos o operador && porque AMBAS as condições são obrigatórias. Se o aluno tiver boas notas mas muitas faltas, chumba. Se tiver poucas faltas mas más notas, chumba também.