Capítulo 08: Seleção Múltipla (ESCOLHA-CASO)

🎯 Objetivo da Aula

Nem tudo na vida é sim ou não. Às vezes temos uma lista de opções (como um menu de lanchonete). Nesta aula, você aprenderá a estrutura ESCOLHA-CASO (switch/case), que é ideal para situações onde uma única variável pode ter vários valores definidos e fixos.


🏢 O Cenário Prático (Seu Desafio)

Situação: Você está projetando a URA (Unidade de Resposta Audível) do SAC da FastLog. O Menu:

  1. Falar com Atendimento
  2. Rastrear Pedido
  3. Reclamações
  4. Sair

Missão: Criar um programa que direcione o usuário para o setor correto de forma limpa, sem precisar escrever quatro se e senao grudados.


🧠 Fundamentos: A Teoria Traduzida

🚦 Exemplo 1: Cotidiano (Semáforo)

escolha (cor) { caso "verde": seguir | caso "vermelho": parar }

📦 Exemplo 2: Técnico (Status de Pedido)

escolha (status) { caso 1: "Processando" | caso 2: "Despachado" | caso 3: "Entregue" }

graph TD
    A[Usuário consulta Pedido] --> B{Status?}
    B -->|1| C[Em Processamento]
    B -->|2| D[Despachado / Em Rota]
    B -->|3| E[Entregue ao Cliente]
    
    style B fill:#8e44ad,stroke:#fff,color:#fff

📖 Exemplo Guiado: Menu do SAC

A estrutura escolha-caso é ideal para menus. Observe como o pare é essencial para não executar os casos seguintes:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
programa {
	funcao inicio() {
		inteiro opcao
		
		escreva("1. Atendimento\n2. Rastreio\n3. Financeiro\n")
		escreva("Escolha uma opção: ")
		leia(opcao)
		
		escolha (opcao) {
			caso 1: 
				escreva("Direcionando para atendente humano...")
				pare
			caso 2:
				escreva("Digite o código de rastreio...")
				pare
			caso 3:
				escreva("Aguarde o setor financeiro...")
				pare
			caso contrario:
				escreva("ERRO: Opção inválida!")
		}
	}
}

🛠️ Prática Obrigatória 1: Calculadora Simples

Crie um programa que peça dois números e exiba um menu de operações: 1: + | 2: - | 3: * | 4: /. Use o escolha para calcular o resultado.

✅ Resultado Esperado

1
2
3
4
5
N1: 10
N2: 5
1. Soma | 2. Subtração | 3. Multiplicação | 4. Divisão
Opção: 3
MULTIPLICAÇÃO: 50

🛠️ Prática Obrigatória 2: Classificação de Clientes FastLog

Peça o código da categoria do cliente: 1 - Bronze, 2 - Prata, 3 - Ouro. Exiba o benefício correspondente (Ex: “5% de desconto”, “10% de desconto”, “15% de desconto”).

✅ Resultado Esperado

1
2
CATEGORIA (1, 2, 3): 2
CLIENTE PRATA: Você tem 10% de desconto!

🔥 Desafio de Fixação (Opcional): Status de Pedido

Crie um programa que receba o código de status de um pedido (1: Processando, 2: Despachado, 3: Entregue) e exiba a mensagem amigável para o cliente da FastLog.


📤 Instruções de Entrega (Microsoft Teams)

Após validar seus códigos:

  1. Sempre use o caso contrario para tratar entradas inválidas.
  2. Salve os arquivos com a extensão .por (Ex: Atividade_08_SeuNome.por).
  3. Envie no Microsoft Teams na tarefa “Capítulo 08 - Estrutura Escolha”.

🔑 Gabarito de Código

Prática 1:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
programa {
	funcao inicio() {
		real n1, n2
		inteiro op
		escreva("N1: ") leia(n1)
		escreva("N2: ") leia(n2)
		escreva("1. + | 2. - | 3. * | 4. /\nOpção: ") leia(op)
		
		escolha (op) {
			caso 1: escreva("SOMA: ", n1 + n2) pare
			caso 2: escreva("SUBTRAÇÃO: ", n1 - n2) pare
			caso 3: escreva("MULTIPLICAÇÃO: ", n1 * n2) pare
			caso 4: escreva("DIVISÃO: ", n1 / n2) pare
			caso contrario: escreva("OPÇÃO INVÁLIDA")
		}
	}
}

Desafio:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
programa {
	funcao inicio() {
		inteiro status
		escreva("Status (1, 2, 3): ") leia(status)
		escolha(status) {
			caso 1: escreva("Pedido em Processamento") pare
			caso 2: escreva("Pedido Despachado / Em Rota") pare
			caso 3: escreva("Pedido Entregue") pare
			caso contrario: escreva("Status Desconhecido")
		}
	}
}