Capítulo 20: Projeto Integrador Final

🎯 Objetivo da Aula

Chegou o momento de unir todas as peças do quebra-cabeça. Nesta aula final, você desenvolverá um Projeto Integrador completo. O objetivo é criar um sistema funcional que simule a rotina de uma transportadora, utilizando variáveis globais, menus de navegação, estruturas de decisão, repetição e coleções de dados.


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

Situação: A FastLog precisa de um Sistema de Gestão de Frota. Requisitos do Sistema:

  1. Cadastro: O sistema deve permitir cadastrar o nome de 5 motoristas e a quilometragem atual de seus veículos em vetores.
  2. Consulta: Deve ser possível pesquisar um motorista pelo nome e ver sua quilometragem.
  3. Relatório: O sistema deve exibir quem é o motorista que mais rodou e qual a média de KM da frota.
  4. Interface: Tudo deve ser controlado por um menu (escolha) dentro de um laço (repita-ate).

🧠 Fundamentos: A Arquitetura do Projeto

Para este projeto final, dividiremos o código em camadas lógicas:

  1. Camada de Dados: Vetores para nomes e KM.
  2. Camada de Processamento: Funções para buscar maior valor e calcular médias.
  3. Camada de Interface: O menu principal e as mensagens para o usuário.
graph TD
    A[Menu Principal] --> B[Cadastrar Motoristas]
    A --> C[Consultar por Nome]
    A --> D[Exibir Relatório de KM]
    A --> E[Sair]
    
    style A fill:#2ecc71,stroke:#fff,color:#fff
    style E fill:#e74c3c,stroke:#fff,color:#fff

🛠️ Mão na Massa: Atividade 20 - Sistema de Gestão FastLog

Siga este roteiro para construir seu software:

📖 Exemplo Guiado: Gestão de Frota (Menu)

O projeto final une todos os conceitos. Usamos um laço repita para manter o menu ativo e um escolha para navegar entre as funções do sistema.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
algoritmo "Gestao_Frota_Exemplo"
var
   opcao : inteiro
inicio
   repita
      escreval("1. Cadastrar | 2. Relatório | 0. Sair")
      leia(opcao)
      escolha opcao
         caso 1: escreval("Modulo de Cadastro")
         caso 2: escreval("Modulo de Relatorio")
      fimescolha
   ate (opcao = 0)
fimalgoritmo

🛠️ Prática Obrigatória 1: Cadastro e Consulta

Desenvolva a funcionalidade de cadastro do sistema de frota. O programa deve permitir salvar o nome de 5 motoristas e suas respectivas quilometragens (KM) em dois vetores paralelos.

✅ Resultado Esperado

1
2
3
4
Motorista 1: João | KM: 1200
Motorista 2: Ana  | KM: 850
...
Dados Salvos com Sucesso.

🛠️ Prática Obrigatória 2: Relatório de Performance FastLog

Crie a funcionalidade de relatório que percorra os vetores preenchidos e exiba: 1. A lista completa de motoristas/KM, 2. O total de KM rodados por toda a frota, 3. A média de KM por veículo.

✅ Resultado Esperado

1
2
TOTAL RODADO: 5500 KM
MÉDIA FROTA: 1100 KM

🔥 Desafio de Fixação (Opcional): Busca por Nome

Adicione uma opção “4. Pesquisar Motorista” ao menu. O usuário digita o nome e o sistema busca no vetor, exibindo a quilometragem exata daquele motorista se ele for encontrado.


📤 Instruções de Entrega (Microsoft Teams)

Após validar seu projeto completo:

  1. Certifique-se de que o sistema não trava e o menu funciona perfeitamente.
  2. Salve o arquivo final como: PROJETO_FINAL_SeuNome.alg.
  3. Envie no Microsoft Teams na tarefa “VisuAlg Cap 20 - Projeto Integrador”.

🔑 Gabarito de Código (Resumo do Projeto)

Prática 1 e 2:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
algoritmo "Projeto_Resumo"
var
   nomes : vetor [1..5] de caractere
   km : vetor [1..5] de real
   op, i : inteiro
   soma, media : real
inicio
   repita
      escreval("1. Cadastrar | 2. Relatório | 0. Sair")
      leia(op)
      escolha op
         caso 1
            para i de 1 ate 5 faca
               escreva("Nome ", i, ": ") leia(nomes[i])
               escreva("KM ", i, ": ") leia(km[i])
            fimpara
         caso 2
            soma <- 0
            para i de 1 ate 5 faca
               escreval(nomes[i], ": ", km[i], " KM")
               soma <- soma + km[i]
            fimpara
            escreval("Total KM: ", soma)
            escreval("Média KM: ", soma / 5)
      fimescolha
   ate (op = 0)
fimalgoritmo

Desafio:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
algoritmo "Busca"
// Adicionar dentro do 'escolha op':
caso 4
   escreva("Nome para buscar: ")
   leia(pesquisa)
   para i de 1 ate 5 faca
      se (nomes[i] = pesquisa) entao
         escreval("KM de ", nomes[i], " é: ", km[i])
      fimse
   fimpara