Trabalho Prático I
Programação Imperativa (PI2009)
José Carlos Ramalho
Alberto Simões
Palavras-chave: Programação Imperativa, Trabalho Prático, C
Este documento descreve o único tema disponível para a realização do primeiro trabalho prático que os alunos a fazer a disciplina em epígrafe têm de realizar de forma a irem obtendo uma avaliação prática à disciplina.
Este primeiro trabalho corresponderá a uma percentagem ainda em estudo mas que se situará no intervalo entre 25% e 33%.
A data limite para submissão será
a meia-noite do último dia das férias da Páscoa
.
Índice
Capítulo 1
Capítulo 2
Capítulo 3
Capítulo 4



1. Objectivos de formação e resultados de aprendizagem

Este projecto tem como objectivos principais a formação genérica e específica de estudantes em fundamentos de computação na área da programação imperativa.
Os objectivos de formação genérica incluem: (i) a pesquisa, análise e selecção de informação, (ii) o treino na resolução de problemas, (iii) o desenvolvimento da capacidade de análise, e (iv) o desenvolvimento da capacidade de comunicação escrita e oral.
Os objectivos de formação específica incluem: (i) a análise da especificação e do problema, (ii) o desenvolvimento de algoritmos e consequente programação numa linguagem imperativa, (iii) a execução e realização de testes de conformidade.
A avaliação dos resultados esperados de aprendizagem irão verificar se as/os estudantes conseguem demonstrar ter adquirido o seguinte conjunto de competências genéricas e específicas:

2. Tema: "Cifra de César"

O tema escolhido para este projecto foi um dos algoritmos de cifragem mais conhecidos, tendo sido usado pelo imperador romano Júlio César para enviar mensagens aos seus generais.
Os parágrafos que se seguem foram retirados da Wikipédia e são aqui transcritos após revisão feita pelo corpo docente da disciplina.
Em criptografia, a Cifra de César, também conhecida como cifra de troca ou ainda código de César, é uma das mais simples e conhecidas técnicas de criptografia. É um tipo de cifra de substituição em que cada letra do texto é substituída por outra, que se apresenta no alfabeto abaixo dela um número fixo de vezes. Por exemplo, com uma troca de 3 posições, A seria substituído por D, B viraria E e assim por diante. O nome do método teve origem numa técnica semelhante usada por Júlio César para se comunicar com os seus generais.
Figura 1: Exemplificação de um deslocamento de 3
O sistema de criptografia de uma cifra de César serve frequentemente de base ou é incorporado como parte de esquemas mais complexos, como a cifra de Vigenère, e continua tendo aplicações modernas, como no sistema ROT13. Como todas as cifras de substituição monoalfabéticas, a cifra de César é facilmente decifrada e na prática não oferece essencialmente nenhuma segurança na comunicação.
Para mais detalhes históricos e do algoritmo em si aconselha-se a leitura da respectiva página da Wikipédia.

3. O Trabalho a realizar

Neste trabalho, terás de implementar 3 funcionalidades que a aplicação deverá exibir: após arranque o utilizador irá poder seleccionar uma de 3 operações possíveis.
  1. Codificar uma mensagem: será pedido ao utilizador que indique um deslocamento; após a introdução de um valor numérico com 2 dígitos o programa pede ao utilizador que introduza a mensagem a cifrar; após a introdução da mensagem a aplicação aplica o algoritmo de cifragem e apresenta no monitor a frase cifrada.
  2. Descodificar uma mensagem: será pedido ao utilizador que introduza um deslocamento e uma frase cifrada; a aplicação colocará no monitor a mensagem original.
  3. Descodificar uma mensagem com deslocamento desconhecido: será pedido ao utilizador que introduza uma mensagem cifrada ao que a aplicação irá responder enviando para o monitor a mensagem original (é aceitável que aplicação, se não conseguir adivinhar o deslocamento, apresente no monitor as 26 hipóteses possíveis.

4. Entrega do trabalho

O trabalho deverá ser enviado por via electrónica para um endereço a anunciar oportunamente no site da disciplina.
O trabalho será enviado num ficheiro comprimido do tipo ZIP.
O ZIP deverá ter a seguinte constituição:
  1. Relatório em formato LaTeX (no site há informação sobre relatórios em "Material Didáctico de Apoio";
  2. Relatório em formato PDF;
  3. Código C da aplicação desenvolvida;
  4. Makefile (não é obrigatório mas se alguém fizer...).