Spec Sistemas Com Python • Trilha Progressiva em 4 Níveis


🧭 Navegação Pedagógica


🎯 Nível 1: Fundamentos

Problema 02.1 — Pattern Matching Estrutural com match-case

Contexto: Pattern Matching Estrutural com match-case no contexto de Estruturas de Decisão e Pattern Matching (match-case).

Requisitos de Execução:

  1. Mapear códigos de status e comandos utilizando a sintaxe nativa match comando: case ....

Resultado Esperado

Comandos avaliados e roteados via match-case do Python.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_02_1_SeuNome
  2. Envie na tarefa: Atividade Cap 02 - Estruturas de Decisão e Pattern Matching (match-case)
🔑 Gabarito de Código & Solução Comentada
def processar_comando(comando: str) -> str:
    match comando.strip().lower():
        case "iniciar":
            return "Servico inicializado."
        case "parar":
            return "Servico encerrado."
        case _:
            return "Comando desconhecido."

print(processar_comando("iniciar"))

🔍 Nível 2: Prática

Problema 02.2 — Desestruturação de Sequências e Dicionários no match-case

Contexto: Desestruturação de Sequências e Dicionários no match-case no contexto de Estruturas de Decisão e Pattern Matching (match-case).

Requisitos de Execução:

  1. Desestruturar dicionários de eventos recebidos com case {'tipo': 'login', 'usuario': user}:.

Resultado Esperado

Payload de evento desestruturado diretamente no pattern matching.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_02_2_SeuNome
  2. Envie na tarefa: Atividade Cap 02 - Estruturas de Decisão e Pattern Matching (match-case)
🔑 Gabarito de Código & Solução Comentada
def processar_evento(evento: dict[str, object]) -> None:
    match evento:
        case {"tipo": "LOGIN", "usuario": str(u), "sucesso": True}:
            print(f"Login bem-sucedido para o usuario: {u}")
        case {"tipo": "FALHA", "ip": str(ip)}:
            print(f"Tentativa suspeita bloqueada do IP: {ip}")
        case _:
            print("Evento nao catalogado.")

processar_evento({"tipo": "LOGIN", "usuario": "admin", "sucesso": True})

⚡ Nível 3: Integração

Problema 02.3 — Pattern Matching com Cláusulas de Guarda (if guard)

Contexto: Pattern Matching com Cláusulas de Guarda (if guard) no contexto de Estruturas de Decisão e Pattern Matching (match-case).

Requisitos de Execução:

  1. Filtrar transações numéricas com case float(valor) if valor > 10000.0: exigindo autorização especial.

Resultado Esperado

Cláusula de guarda validando limites operacionais no matching.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_02_3_SeuNome
  2. Envie na tarefa: Atividade Cap 02 - Estruturas de Decisão e Pattern Matching (match-case)
🔑 Gabarito de Código & Solução Comentada
def classificar_transacao(valor: float) -> str:
    match valor:
        case v if v <= 0:
            return "Transacao invalida"
        case v if v > 10000.0:
            return "Requer aprovacao da diretoria (Compliance)"
        case _:
            return "Transacao autorizada automaticamente"

print(classificar_transacao(15000.0))

🏆 Nível 4: Desafio Corporativo

Problema 02.4 — Matching de Objetos de Classe e Instâncias Tipadas

Contexto: Matching de Objetos de Classe e Instâncias Tipadas no contexto de Estruturas de Decisão e Pattern Matching (match-case).

Requisitos de Execução:

  1. Realizar pattern matching em instâncias de classes de domínio com case Pedido(id=i, status='PAGO'):.

Resultado Esperado

Objetos de domínio inspecionados com pattern matching tipado.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_02_4_SeuNome
  2. Envie na tarefa: Atividade Cap 02 - Estruturas de Decisão e Pattern Matching (match-case)
🔑 Gabarito de Código & Solução Comentada
from dataclasses import dataclass

@dataclass
class Transacao:
    id: int
    moeda: str
    total: float

def auditar(t: Transacao) -> None:
    match t:
        case Transacao(moeda="BRL", total=v) if v > 50000:
            print(f"Alerta COAF: Transacao #{t.id} em Reais de alto valor!")
        case Transacao(moeda="USD"):
            print(f"Transacao internacional #{t.id} registrada.")

auditar(Transacao(101, "BRL", 75000.0))

⬅️ Voltar ao Índice de Exercícios 📚 Sumário de Tópicos