Comparadores e Booleanos

O que vais aprender nesta aula:

  • O tipo de dado Boolean (Verdadeiro ou Falso)
  • Comparar valores (Maior que, Menor que)
  • A diferença crucial entre == e ===
  • Como o computador toma decisões baseadas em comparações

🧠 Teoria (com Analogia e Contexto Real)

Até agora, lidámos com números e texto. Mas para o computador tomar decisões, ele precisa de respostas simples: Sim ou Não.

🛑 Analogia do Porteiro da Discoteca

Imagina um segurança à entrada de uma discoteca. Ele faz perguntas e compara a resposta com as regras:

  • "A tua idade é maior ou igual a 18?" (idade >= 18)
  • "O teu nome está igual ao da lista?" (nome === "João")
  • "O teus ténis são diferentes de 'chinelos de praia'?" (calcado !== "chinelos")

O segurança só tem duas respostas possíveis: true (Entra) ou false (Não entra).

Porque é que isto importa? Sem comparações, o software não teria inteligência. É assim que o login verifica a password, que o jogo sabe se bateste na parede, ou que o banco verifica se tens saldo suficiente.

💡 Sabias que? O JavaScript tem dois tipos de igualdade. O == (comparação solta) e o === (comparação estrita). A regra de ouro dos profissionais é: Usa sempre === para evitar surpresas!

💻 Prática (Orientada e Progressiva)

Vamos fazer perguntas ao JavaScript. Experimenta na consola:

Exemplo 1: Maior e Menor

let idade = 20;

console.log(idade > 18);  // true (20 é maior que 18)
console.log(idade < 10);  // false (20 não é menor que 10)
console.log(idade >= 20); // true (20 é maior ou igual a 20)

Exemplo 2: Igualdade Estrita (===)

Verifica se o valor E o tipo são iguais.

let numeroSecreto = 5;

console.log(numeroSecreto === 5);   // true (É igual)
console.log(numeroSecreto === 10);  // false (Não é igual)
console.log(numeroSecreto !== 5);   // false (Não é diferente, ou seja, é igual)

Exemplo 3: O Perigo do == (Apenas para conhecimento)

O == ignora o tipo de dado. Isto pode causar bugs!

console.log(5 == "5");  // true (O quê!? Um número igual a texto?)
console.log(5 === "5"); // false (Muito mais seguro. Número não é texto.)
⚠️
Dica Profissional: Nunca confundas = (atribuir valor) com === (comparar valor).
let x = 10; (Coloca 10 dentro de x)
x === 10 (Pergunta: x é igual a 10?)

✅ Verificação de Conhecimento

1. Qual é o resultado de 10 >= 10?

true
false
undefined

2. Porque devemos preferir === em vez de ==?

Porque é mais bonito no código.
Porque verifica o Valor e o Tipo, evitando erros estranhos.
Porque o == já não existe no JavaScript moderno.

3. O que devolve a expressão "Ana" !== "ana"?

false (são iguais)
true (são diferentes)
erro

🧩 Desafio Prático

Verificador de Elegibilidade para Votar

Cria um programa que verifica se uma pessoa pode votar.

No nosso sistema fictício, para votar é preciso ter 18 anos ou mais.

Objetivo:

  • Define uma variável idadeEleitor.
  • Define uma variável idadeMinima com valor 18.
  • Cria uma variável podeVotar que guarde o resultado da comparação (true ou false).
  • Mostra o resultado na consola.
// Testa com idadeEleitor = 16 e depois com 20
Mostrar Solução
let idadeMinima = 18;
let idadeEleitor = 20;

// A comparação devolve true ou false
let podeVotar = idadeEleitor >= idadeMinima;

console.log("Pode votar? " + podeVotar); // Pode votar? true

📌 Explicação: A variável podeVotar é do tipo Boolean. Ela não guarda número nem texto, guarda o estado da verdade daquela condição. Isto será fundamental quando aprendermos os if e else.