Capítulo 20: Projeto Integrador Final - FastLog TMS Enterprise
🎯 Objetivo da Aula
Chegou o momento de consolidar todos os conhecimentos adquiridos ao longo dos 20 capítulos do curso. Você iniciou aprendendo o que é um algoritmo e agora domina a Lógica de Programação Estruturada com sintaxe moderna C/Java no Portugol Studio.
Nesta aula final, você desenvolverá o Projeto Integrador FastLog TMS (Transportation Management System) Enterprise, um software corporativo completo em modo console que integra:
- Menus de navegação contínuos com
faca-enquantoeescolha-caso. - Persistência em memória com vetores paralelos para controle de 5 caminhões.
- Funções modulares de interface (
funcao vazio) e funções de cálculo estatístico (funcao real). - Algoritmos de busca linear com flag booleana e localização de maior valor.
📥 Material de Apoio e Código-Fonte da Aula:
- 📄 Arquivo Pronto (.por): Baixar Capitulo_20.por (abra diretamente no Portugol Studio)
- 📦 Exercícios Separados (.zip): Baixar Capitulo_20.zip
🏢 O Cenário Prático (Seu Desafio Final)
Situação: A diretoria executiva da FastLog aprovou o projeto de automação da torre de controle operacional. O software precisa gerenciar a frota titular de 5 carretas pesadas, oferecendo aos operadores:
- Módulo 1 (Cadastro de Frota): Registro do Nome do Motorista Titular, Placa do Veículo (padrão Mercosul de 7 dígitos) e Quilometragem Mensal Rodada.
- Módulo 2 (Relatório de Performance): Tabela alinhada com todos os veículos, Quilometragem Total da frota e Média de KM por caminhão.
- Módulo 3 (Auditoria do Campeão): Identificação automática do motorista que mais rodou no mês para receber o Prêmio de Eficiência.
- Módulo 4 (Localizador Instantâneo): Busca dinâmica de caminhão por nome do motorista.
Missão: Programar o sistema completo seguindo a Arquitetura em 3 Camadas e apresentá-lo 100% funcional.
Por que este capítulo não tem “Checkpoint” nem “Desafio de Fixação”?
Por ser o Projeto Integrador Final, este capítulo substitui essas duas seções pelo 🛠️ Roteiro de Testes e Validação (ao final) — em vez de um exercício novo e isolado, sua tarefa é validar o sistema completo que acabou de construir, módulo por módulo.
🧠 Fundamentos: A Arquitetura em 3 Camadas do Sistema
graph TD
UI["1. CAMADA DE APRESENTAÇÃO (UI / Menu Principal)<br/>faca { ... } enquanto (opcao != 0)"] --> Router{"escolha opcao"}
Router -->|1| ModCad["Módulo 1: cadastrar_veiculos()<br/>(funcao vazio)"]
Router -->|2| ModRel["Módulo 2: emitir_relatorio()<br/>(funcao vazio + somar_km_total)"]
Router -->|3| ModAud["Módulo 3: identificar_campeao()<br/>(funcao vazio / Maior Elemento)"]
Router -->|4| ModBus["Módulo 4: pesquisar_motorista()<br/>(Busca Linear com Flag)"]
ModCad --> DB[(Camada de Dados em RAM:<br/>Vetores nomes, placas e kmRodados)]
ModRel --> DB
ModAud --> DB
ModBus --> DB
style UI fill:#8e44ad,stroke:#fff,color:#fff
style Router fill:#f39c12,stroke:#fff,color:#fff
style DB fill:#217346,stroke:#fff,color:#fffCada um dos 4 módulos acima aplica o Princípio da Responsabilidade Única (SRP) que você aprendeu no Capítulo 19: cada função tem exatamente uma responsabilidade (cadastrar, relatar, auditar ou buscar). É exatamente por causa dessa separação que é possível testar e corrigir cada módulo isoladamente, sem afetar os demais — veja o Roteiro de Testes e Validação ao final deste capítulo, que testa cada módulo em separado.
📖 O Código-Fonte Completo do Projeto Integrador
🛠️ Roteiro de Testes e Validação do Projeto
- Teste Defensivo: Ao iniciar, tente acessar a opção
[2]. O sistema deve emitir o aviso amigável de base vazia sem travar. - Teste de Cadastro: Acesse a opção
[1]e cadastre 5 motoristas com placas e quilometragens (ex: 3.500 km, 6.200 km, 4.100 km, 7.800 km e 5.000 km). - Teste de Relatório: Acesse a opção
[2]e confira se a soma (26.600 km) e a média (5.320 km) aparecem alinhadas. - Teste de Destaque: Acesse a opção
[3]e valide se o motorista de 7.800 km é reconhecido como campeão. - Teste de Busca: Acesse a opção
[4]e teste um nome existente e um inexistente. - Encerramento: Digite
0para finalizar a sessão.
📤 Instruções de Entrega Final (Microsoft Teams)
- Salve o arquivo com o nome:
PROJETO_FINAL_SeuNome_SeuSobrenome.por. - No Microsoft Teams, envie na tarefa final “Portugol Cap 20 - Projeto Integrador”.
- Clique em Entregar (Turn In).
🎓 Mensagem de Encerramento e Próximos Passos
Parabéns! Você concluiu com sucesso a jornada completa de Lógica de Programação com Portugol Studio.
A partir de agora, a sintaxe de linguagens como C, C++, Java, C#, PHP e JavaScript será familiar e intuitiva para você, pois as estruturas fundamentais — chaves { }, operadores ==, loops while/for e indexação 0..N-1 — já estão gravadas no seu raciocínio lógico. Sucesso na sua jornada como desenvolvedor de software!
📝 Atividade Extra: Questionário de Fixação (Caderno)
Instruções: Responda no caderno, de próprio punho, as 10 perguntas abaixo com base no que foi estudado neste capítulo. Ao concluir, leve o caderno até o professor para correção e visto.
- Segundo o diagrama de Arquitetura em 3 Camadas, quais são os 4 módulos operacionais roteados a partir do menu principal (
escolha opcao)? - Quantos veículos o Sistema FastLog TMS gerencia, e quais três vetores paralelos armazenam os dados de cada um?
- O que faz a função
somar_km_total(), e como a funçãocalcular_media_km()reutiliza o resultado dela? - No módulo
cadastrar_veiculos(), qual validação defensiva é aplicada à quilometragem digitada, usando um laçofaca ... enquanto? - No módulo
identificar_campeao(), qual algoritmo é usado para encontrar o motorista com maior quilometragem, e a partir de qual índice o laço de comparação começa? - No módulo
pesquisar_motorista(), qual técnica é usada para indicar se o motorista foi ou não localizado no vetor de nomes? - Segundo o Roteiro de Testes e Validação, o que deve acontecer se o operador tentar acessar a opção
[2](Relatório) antes de cadastrar qualquer veículo? - Segundo o Roteiro de Testes, com as quilometragens de exemplo sugeridas (3.500, 6.200, 4.100, 7.800 e 5.000 km), qual deve ser o total somado e a média da frota?
- Segundo a Mensagem de Encerramento, quais estruturas fundamentais aprendidas no curso preparam você para reconhecer a sintaxe de linguagens como C, C++, Java, C# e JavaScript?
- Explique, com suas palavras, por que dividir o Projeto Integrador em módulos separados (cadastro, relatório, auditoria, busca) — em vez de escrever tudo dentro de
inicio()— facilita testar e corrigir o sistema.