🪜 Condicional Múltipla: SE...SENÃO SE

Até agora, vimos caminhos com apenas duas saídas (Sim ou Não). Mas o que fazer quando temos 3, 4 ou 10 opções? Embora possamos colocar um se dentro de outro, o Portugol oferece uma estrutura muito mais elegante: o se…senao se.

🧩 O Conceito de Exclusividade Mutua

Diferente de vários blocos se independentes, a estrutura múltipla funciona como uma escada: assim que o computador encontra uma condição verdadeira, ele executa o bloco e pula todas as outras, saindo da estrutura imediatamente.


🗳️ Caso de Estudo: Sistema de Votação

No Brasil, a obrigatoriedade do voto segue faixas etárias distintas. Veja a diferença entre a abordagem “bagunçada” e a “profissional”:

❌ Abordagem Ineficiente (SEs independentes)

O computador pergunta a idade 4 vezes, mesmo que a primeira já tenha sido verdadeira.

1
2
3
4
se (idade < 16) { escreva("Não vota") }
se (idade >= 16 e idade < 18) { escreva("Opcional") }
se (idade >= 18 e idade < 70) { escreva("Obrigatório") }
se (idade >= 70) { escreva("Opcional") }

✅ Abordagem Profissional (Múltipla)

O computador para na primeira resposta positiva. Mais rápido e legível.

1
2
3
4
5
6
7
8
9
se (idade < 16) {
    escreva("Não pode votar")
} senao se (idade < 18) {
    escreva("Voto opcional")
} senao se (idade < 70) {
    escreva("Voto obrigatório")
} senao {
    escreva("Voto opcional (acima de 70)")
}

📊 Visualizando a “Escada Lógica”

graph TD
    A[Início] --> B{Idade < 16?}
    B -- Sim --> C[Não Vota]
    B -- Não --> D{Idade < 18?}
    D -- Sim --> E[Opcional]
    D -- Não --> F{Idade < 70?}
    F -- Sim --> G[Obrigatório]
    F -- Não --> H[Opcional]
    
    C --> I[Fim]
    E --> I
    G --> I
    H --> I

    style B fill:#fff3e0,stroke:#ff9800
    style D fill:#fff3e0,stroke:#ff9800
    style F fill:#fff3e0,stroke:#ff9800

📋 Menus de Opções

O se...senao se é perfeito para menus, onde o usuário escolhe apenas um item por vez.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
programa {
    funcao inicio() {
        inteiro opcao
        escreva("1. Internet | 2. Cancelar | 3. Suporte\nEscolha: ")
        leia(opcao)

        se (opcao == 1) {
            escreva("Contratando plano...")
        } senao se (opcao == 2) {
            escreva("Iniciando cancelamento...")
        } senao se (opcao == 3) {
            escreva("Chamando atendente...")
        } senao {
            escreva("Opção inválida!")
        }
    }
}

O Sentinela Final: O último senao (sem o se) funciona como uma rede de segurança. Ele captura qualquer valor que não tenha sido previsto nas condições anteriores (como o usuário digitar “99” em um menu de 1 a 3).


🏁 Resumo do Capítulo

A condicional múltipla organiza seu raciocínio e torna o software mais veloz. No próximo capítulo, veremos o Caso de Estudo II, focando em resoluções mais complexas! 🚀