Projeto 02: Decomposição Estruturada e Modularização Algorítmica ⚙️
Escopo do Projeto
Objetivo: Conceber um sistema estruturado rigoroso aplicando modularização top-down, coesão funcional e acoplamento frouxo sem o uso de classes.
🎯 1. Contexto & Desafio Prático
O paradigma estruturado é o alicerce do pensamento computacional. Você construirá uma suíte de processamento estatístico de dados de telemetria baseada puramente em funções coesas, módulos desacoplados e passagem explícita de argumentos.
📋 2. Requisitos Técnicos Obrigatórios
- R1 (Decomposição Top-Down): Quebrar o problema em funções especializadas: leitura de dados, sanitização, cálculo estatístico e emissão de relatório.
- R2 (Coesão Funcional): Cada procedimento deve realizar uma única tarefa bem definida sem efeitos colaterais imprevistos.
- R3 (Eliminação de Variáveis Globais): Proibido o uso de variáveis globais; todo fluxo de dados deve ocorrer via parâmetros e retornos formais.
- R4 (Tratamento de Dados Inválidos): Implementar validação defensiva contra vetores vazios ou dados nulos com códigos de status explícitos.
📐 3. Diagrama Conceitual & Arquitetura
graph LR
RawData["Dados Brutos de Sensores"] --> Clean["sanitizar_dados()"]
Clean --> Stats["calcular_metricas() (Média, Desvio)"]
Stats --> Format["formatar_relatorio()"]
Format --> Output["Saída Formatada no Terminal"]
style RawData fill:#e1f5fe,stroke:#01579b
style Clean fill:#fff3e0,stroke:#e65100
style Stats fill:#f3e5f5,stroke:#7b1fa2
style Format fill:#e8f5e9,stroke:#2e7d32 💻 4. Especificação Técnica & Código de Referência
// processamento_estruturado.py
def sanitizar_dados(amostras: list[float]) -> list[float]:
"""Remove valores negativos e ruídos anômalos."""
return [x for x in amostras if x is not None and x >= 0]
def calcular_media(valores: list[float]) -> float:
if not valores:
return 0.0
return sum(valores) / len(valores)
def gerar_relatorio_estruturado(dados_brutos: list[float]) -> dict:
validos = sanitizar_dados(dados_brutos)
media = calcular_media(validos)
return {"total_amostras": len(validos), "media": media}
📦 5. Critérios de Avaliação e Entrega
- Script executando sem erros e com funções independentes.
- Zero dependência de estado global compartilhado.
- Testes unitários comprovando o isolamento de cada função.