Condicionais Avançadas: Else If, Switch e Ternários

O que vais aprender nesta aula:

  • Lidar com múltiplas opções usando else if
  • A estrutura elegante switch para menus e casos fixos
  • O operador ternário ? : para decisões rápidas numa linha

🧠 Teoria (com Analogia e Contexto Real)

Nem tudo na vida é "Sim" ou "Não" (preto ou branco). Muitas vezes temos várias opções.

🚦 Analogia do Semáforo

No trânsito, não tens apenas "Pára" e "Anda".

  • SE (if) estiver Verde 🟢 ➜ Avança.
  • SENÃO SE (else if) estiver Amarelo 🟡 ➜ Abranda.
  • SENÃO (else) estiver Vermelho 🔴 ➜ Pára.

Porque é que isto importa? Imagina um sistema de chat que mostra o estado do utilizador: "Online", "Ausente", "Ocupado" ou "Offline". Um simples if/else não chegaria. Precisamos de verificar várias condições em cadeia.

💡 Sabias que? O Operador Ternário é o favorito dos profissionais para coisas simples. Em vez de escrever 5 linhas de código para definir se um número é par ou ímpar, fazes tudo numa só linha!

💻 Prática (Orientada e Progressiva)

Vamos expandir o nosso leque de decisões:

Exemplo 1: A escada `else if`

Verifica condições sequencialmente. Assim que encontra uma verdadeira, pára.

let hora = 14;

if (hora < 12) {
    console.log("Bom dia! ☀️");
} else if (hora < 20) {
    console.log("Boa tarde! 🌤️"); // Entra aqui porque 14 < 20
} else {
    console.log("Boa noite! 🌙");
}

Exemplo 2: O `switch` (Ideal para casos fixos)

Quando queres verificar o valor exato de uma variável (como um menu).

let fruto = "Banana";

switch (fruto) {
    case "Laranja":
        console.log("Laranjas custam 0.59€");
        break; // O break é obrigatório para não saltar para o próximo!
    case "Banana":
        console.log("Bananas custam 0.99€");
        break;
    default:
        console.log("Desculpe, não temos " + fruto);
}

Exemplo 3: O Operador Ternário `? :`

Sintaxe: condição ? valor_se_verdadeiro : valor_se_falso

let idade = 20;
// Se idade >= 18 for verdade, status recebe "Adulto", senão recebe "Menor"
let status = idade >= 18 ? "Adulto" : "Menor";

console.log(status); // "Adulto"

✅ Verificação de Conhecimento

1. Para que serve a palavra `break` no switch?

Para partir o código e gerar um erro.
Para impedir que o código continue a executar os casos seguintes (fall-through).
Serve para fazer uma pausa de 1 segundo.

2. Quando devo usar `switch` em vez de `else if`?

Sempre, o switch é mais rápido.
Quando estou a comparar intervalos (ex: idade entre 10 e 20).
Quando tenho valores discretos/fixos para verificar (ex: dias da semana, opções de menu).

3. Qual é o resultado de: `true ? 10 : 20`?

10
20
true

🧩 Desafio Prático

Tradutor de Cores (Switch)

Cria um programa que recebe uma cor em inglês ("Red", "Blue", "Green") e a traduz para português.

Usa um switch para fazer a tradução.

Requisitos:

  • Variável corIngles
  • Casos para "Red", "Blue", "Green"
  • Um default para "Cor desconhecida"
let corIngles = "Blue";

// Teu switch aqui
Mostrar Solução
let corIngles = "Blue";

switch (corIngles) {
    case "Red":
        console.log("Vermelho");
        break;
    case "Blue":
        console.log("Azul");
        break;
    case "Green":
        console.log("Verde");
        break;
    default:
        console.log("Cor desconhecida");
}

📌 Explicação: O switch verifica o valor da variável corIngles. Quando encontra "Blue", executa o código e o break faz com que saia do switch imediatamente, sem testar o resto.