Mini-Projecto · Sistema de Gestão Académica
Contexto e propósito
Este mini-projecto é o exercício integrador da unidade de competência UC00245 — Desenvolver algoritmos. Mobiliza, num único caso aplicado, todas as cinco realizações oficiais do referencial:
| # | Realização | Fase do projecto |
|---|---|---|
| R1 | Definir o problema | Fase 1 · Análise |
| R2 | Planear as etapas de criação do algoritmo | Fase 2 · Decomposição e plano |
| R3 | Estruturar algoritmos em pseudocódigo | Fase 3 · Pseudocódigo |
| R4 | Desenhar algoritmos em fluxograma | Fase 4 · Fluxograma |
| R5 | Testar e depurar algoritmos | Fase 5 · Validação e testes |
O trabalho é individual ou em pares e tem como deliverable final um dossier técnico com cinco capítulos (um por fase), apresentado em formato PDF ou impresso.
Cenário de aplicação
A direcção da tua escola pretende informatizar o registo e processamento de notas das turmas dos Cursos Profissionais. O sistema actual, em folhas de Excel, é propenso a erros, difícil de auditar e moroso de actualizar.
A escola decidiu contratar uma equipa de alunos finalistas para conceber o algoritmo que servirá de base ao futuro programa. Vais participar nessa equipa.
Importante. Nesta UC não vais escrever o programa: vais conceber e documentar o algoritmo, na forma de pseudocódigo e fluxograma, com os respectivos testes. A codificação em Python é uma etapa opcional (bónus), reservada para alunos que queiram aprofundar.
Requisitos do sistema
Requisitos funcionais
O algoritmo deve satisfazer todos os seguintes requisitos:
- Registar uma turma. Ler o nome da turma e o número de alunos.
- Registar alunos. Para cada aluno, registar o nome e três notas — Escrita (peso 50%), Oral (peso 20%) e Prática (peso 30%) — todas entre 0 e 20.
- Calcular a média ponderada de cada aluno.
-
Classificar cada aluno segundo a escala oficial:
Média Classificação 0 – 9 Insuficiente 10 – 13 Suficiente 14 – 17 Bom 18 – 20 Muito Bom -
Apresentar a pauta com os resultados de toda a turma (nome, três notas, média, classificação).
- Calcular e apresentar estatísticas da turma:
- Número total de alunos.
- Número e percentagem de aprovados (média ≥ 10).
- Média geral da turma.
- Aluno com melhor média (nome e média).
- Aluno com pior média (nome e média).
- Distribuição de classificações (quantos em cada nível).
Requisitos não-funcionais
- Validação. Toda a entrada de dados deve ser validada — nomes não vazios, notas entre 0 e 20, número de alunos positivo. Mensagens de erro claras e nova tentativa em caso de valor inválido.
- Robustez. Tratar correctamente o caso de turma vazia (
n = 0) e o caso em que todos os alunos têm a mesma média (não há «melhor» nem «pior» distinguíveis). - Legibilidade. Nomes de variáveis descritivos, constantes para os pesos das notas, indentação consistente.
- Documentação. Comentários no pseudocódigo explicando decisões não-óbvias.
As cinco fases
Fase 1 · 1h
Análise · Definir o problema
Objectivo: transformar o enunciado num documento técnico de requisitos não-ambíguos.
Tarefas:
- Reformular o problema por palavras tuas.
- Listar entradas (o que o sistema recebe).
- Listar saídas (o que o sistema produz).
- Listar restrições (regras que devem ser sempre cumpridas).
- Listar condições de erro previsíveis.
Documento de 1 a 2 páginas com as quatro listas acima.
Fase 2 · 1h
Plano · Decomposição em etapas
Objectivo: decompor o problema em sub-problemas tratáveis separadamente.
Tarefas:
- Decompor o algoritmo em 5 a 8 módulos lógicos (por exemplo: «Ler turma», «Ler aluno», «Calcular média», …).
- Para cada módulo, identificar entradas, saídas e padrão algorítmico dominante.
- Desenhar um diagrama de fluxo de alto nível mostrando como os módulos se ligam.
Tabela de módulos + diagrama de blocos (à mão ou em draw.io).
Procura aplicar o pilar da decomposição do pensamento computacional. Cada módulo deve ter uma responsabilidade clara e ser tão independente quanto possível.
Fase 3 · 2 a 3h
Pseudocódigo
Objectivo: traduzir o plano em pseudocódigo completo e correcto.
Tarefas:
- Escrever o pseudocódigo de cada módulo identificado na fase anterior.
- Combinar os módulos no algoritmo principal.
- Usar a sintaxe estudada:
INICIO,FIM,LER,ESCREVER,SE-ENTÃO-SENÃO,ENQUANTO,PARA,REPETIR-ATÉ. - Aplicar os padrões adequados (contador, acumulador, máximo, mínimo, validação).
- Definir constantes para os pesos das notas.
- Comentar decisões não-óbvias.
Pseudocódigo completo do algoritmo principal + módulos auxiliares.
Não passes para a fase seguinte enquanto não tiveres a certeza de que o pseudocódigo cumpre todos os requisitos funcionais 1-6 e os não-funcionais 7-10. Volta atrás e revê.
Fase 4 · 1h
Fluxograma
Objectivo: representar visualmente o fluxo de execução do algoritmo principal.
Tarefas:
- Desenhar o fluxograma do algoritmo principal (não é necessário desenhar todos os sub-módulos).
- Usar os símbolos normativos da ISO 5807 (terminal, processo, decisão, entrada/saída).
- Para os sub-módulos, usar o símbolo de sub-processo (rectângulo com bordas laterais).
- Ferramenta recomendada: draw.io (gratuito).
Fluxograma do algoritmo principal em PDF ou imagem (exportar do draw.io).
Fase 5 · 1 a 2h
Validação · Testes e depuração
Objectivo: demonstrar que o algoritmo funciona correctamente em diversos cenários.
Tarefas:
- Conceber 6 casos de teste que cubram, no mínimo:
- 1 caso típico (turma de 5 alunos com notas variadas).
- 1 caso limite (turma vazia).
- 1 caso limite (turma com 1 só aluno).
- 1 caso de valores extremos (todas as notas a 20; todas a 0).
- 1 caso com tentativas de entrada inválida (nota fora do intervalo).
- 1 caso com empate de melhor / pior média.
- Para cada caso, indicar:
- Entradas.
- Saída esperada.
- Saída obtida (após simulação manual com trace table).
- Resultado (✓ ou ✗ com correcção).
Tabela de testes com os 6 casos + indicação dos eventuais ajustes ao pseudocódigo.
Entregáveis e formato
O dossier final deve conter os seguintes elementos, por esta ordem:
- Capa — nome do(s) aluno(s), turma, disciplina, data, identificação do projecto.
- Índice.
- Fase 1 · Análise do problema — 1 a 2 páginas.
- Fase 2 · Plano e decomposição — tabela + diagrama.
- Fase 3 · Pseudocódigo — completo, indentado, comentado.
- Fase 4 · Fluxograma — do algoritmo principal.
- Fase 5 · Testes — 6 casos com trace tables resumidas.
- Reflexão final (½ página) — o que correu bem, o que foi difícil, o que ficou por fazer.
- (Opcional · bónus) Implementação em Python — código + screenshots de execução.
Entregar em PDF ou em folhas A4 impressas. A formatação livre, mas legível e profissional.
Critérios de avaliação
A avaliação segue o modelo CP da DGE (80% Conhecimentos e Capacidades + 20% Atitudes e Valores). A grelha específica deste projecto, com as ponderações entre fases, está disponível na folha Grelha · Instrumento desta UC.
Pesos sugeridos das fases:
| Fase | Peso | Critério principal |
|---|---|---|
| Fase 1 · Análise | 15 % | Clareza e completude dos requisitos |
| Fase 2 · Plano | 15 % | Decomposição adequada e diagrama legível |
| Fase 3 · Pseudocódigo | 30 % | Correcção, cobertura dos requisitos, qualidade |
| Fase 4 · Fluxograma | 15 % | Uso correcto dos símbolos, legibilidade |
| Fase 5 · Testes | 15 % | Cobertura de casos limite, rigor |
| Reflexão final | 5 % | Auto-crítica fundamentada |
| Bónus Python | até +10 % | Implementação funcional |
Calendarização sugerida
- Aula 1 (90 min): apresentação do enunciado · arranque da Fase 1.
- Aula 2 (90 min): Fases 2 e início da 3.
- Aula 3 (90 min): acompanhamento da Fase 3, dúvidas.
- Aula 4 (90 min): Fases 4 e 5, apresentação informal.
- Trabalho autónomo (≈ 2 a 4h): redacção do dossier, revisões.
O dossier é entregue uma semana após a Aula 4.
Recursos disponíveis
- Sebenta UC00245 — documento de referência da UC, em particular os capítulos 8 (casos resolvidos) e 9 (testar e depurar).
- Slides UC00245 — apresentação em sala de aula.
- Fichas de trabalho 1 a 6 — exercícios graduados.
- Portugol Studio (portugol.dev) — ambiente para testar o pseudocódigo de forma executável.
- draw.io (drawio.com) — para o fluxograma.
- Python.org — caso queiras avançar para a implementação opcional.
Boas práticas de execução
- Não saltes a Fase 1. Muitos alunos querem ir directo para o código — é precisamente onde se cometem os erros mais difíceis de corrigir. Investir 30 minutos a analisar bem o problema poupa horas depois.
- Itera. É normal voltar à Fase 3 (pseudocódigo) depois de descobrir um problema na Fase 5 (testes). Cada iteração melhora o resultado.
- Pede revisão. Mostra o pseudocódigo a um colega antes de avançar para o fluxograma. Ele detectará coisas que tu não vês.
- Documenta as decisões. Quando escolheres entre duas alternativas (ex:
ENQUANTOvsPARA), explica num comentário porquê. - Não copies. A solução de referência só existe para os professores avaliarem. Aprende a chegar lá pelo teu raciocínio.
Reflexão final
A reflexão de meia página deve responder a estas perguntas:
- Que parte do projecto foi mais difícil? Porquê?
- Que padrão algorítmico achaste mais útil e porquê?
- Que mudarias se voltasses a fazer este projecto?
- Que dúvidas ainda tens que gostarias de aprofundar?
Esta reflexão conta para a avaliação — não é decorativa. Demonstra meta-cognição (pensar sobre como pensaste), competência altamente valorizada em programação.