Trabalho Prático II
Paradigmas da Programação II
e
Programação Imperativa (PI2006)
Historial:
[2006-02-23]
Este documento descreve o segundo trabalho prático das disciplinas em epígrafe.
Os assuntos referentes à organização do trabalho e à realização, entrega e avaliação do projecto, serão descritos em documento
próprio a divulgar nas próximas duas semanas.
|
Índice
- Tema: Vamos desenhar!
- Operações de Gestão
- Operações Gráficas
- Sugestões para a implementação
Tema: Vamos desenhar!
O desenho a duas dimensões é um óptimo exercício para a imaginação e para a organização mental do ser humano. Com o advento
das novas tecnologias as pessoas estão cada vez mais adversas ao lápis e papel e mais adeptas do teclado e do rato. Nesta
perspectiva e tentando ir ao encontro das novas necessidades e quereres, foste incumbido de desenvolver uma plicação informática
que permita a criação e visualização de desenhos a duas dimensões no monitor.
Nesta aplicação, o lápis será substituído por comandos fornecidos pelo utilizador (descreve-se mais à frente esta interacção)
e o papel será substituído por uma matriz de pontos que o utilizador poderá dimensionar de início.
A aplicação deverá suportar uma série de operações gráficas de desenho que serão realizadas sobre a matriz de pontos bem como
outras, de gestão, que se descrevem a seguir.
Operações de Gestão
Nesta secção descrevem-se as operações de gestão que a aplicação deverá suportar:
- Dim linhas, colunas
- Este comando permite estabelecer as dimensões da área de desenho. O valor linhas é um inteiro que especifica o número de linhas da matriz e o valor colunas, o inteiro que especifica o número de colunas da matriz. Este comando deverá ser usado uma única vez no início do desenho.
- SetMarker marca
- Este comando permite definir o carácter que será usado no traçado do desenho. O valor marca corresponde ao carácter que se quer usar para traçar as linhas. Este comando pode ser executado em qualquer altura. Se fôr
executado a meio de um desenho permite trocar o carácter que se está a usar para desenhar. Por omissão e no início do programa
a marca está definida como sendo o ó minúsculo.
- Load desenho
- Este comando permite carregar um desenho previamente gravado num ficheiro. O valor desenho corresponde ao nome do ficheiro onde está gravado o desenho. Este comando será fornecido pelo docente.
- Save desenho
- Este comando permite gravar um desenho num ficheiro. O valor desenho corresponde ao nome do ficheiro onde será gravado o desenho. O desenho será gravado em formato próprio:
- Na primeira linha, grava-se um identificador do formato.
- Na segunda linha, coloca-se um comentário descritivo.
- Na terceira linha, são gravados dois inteiros, o primeiro corresponde ao número de colunas da imagem e o segundo ao número
de linhas.
- As restantes linhas do ficheiro correspondem às linhas do desenho. Cada linha do desenho é gravada numa linha do ficheiro.
Cada ponto do desenho é gravado como um inteiro e é separado do seguinte por um espaço. Cada linha do ficheiro é separada
da seguinte por uma mudança de linha (carácter '\n').
Este comando será fornecido pelo docente.
Operações Gráficas
Nesta secção descrevem-se as operações gráficas que a aplicação deverá suportar:
- Point x,y
- Este comando marca um ponto nas coordenadas x,y, ou seja, naquela posição da matriz deverá ser colocado o carácter definido como a marca actual.
- Line x1,y1,x2,y2
- Este comando traça uma linha marcando os pontos que se aproximam da linha recta entre as coordenadas x1,y1 e x2,y2.
- Rect x1,y1,x2,y2
- Este comando traça um rectângulo assumindo os pontos x1,y1 e x2,y2 como os limites de uma das suas diagonais.
- PolyLine x1,y1, x2,y2, ..., xn,yn
- Este comando traça uma linha unindo os pontos cujas coordenadas foram fornecidas. Desta forma permite abreviar alguns traçados.
Veja-se um exemplo:
PolyLine x1,y1,x2,y2,x3,y3,x4,y4
é equivalente a:
Line x1,y1,x2,y2
Line x2,y2,x3,y3
Line x3,y3,x4,y4
- Circ x,y,r
- Este comando permite traçar uma circunferência com centro em x,y e de raio r. Esta operação será encarada como um extra nesta fase.
- Elip x1,y1,x2,y2
- Este comando permite traçar uma elipse com focos em x1,y1 e x2,y2 respectivamente. Esta operação será encarada como um extra nesta fase.
Sugestões para a implementação
Depois de apresentados os requisitos funcionais da aplicação ficam aqui algumas sugestões para a sua implementação.
- No início, o utilizador deverá poder escolher entre criar um desenho novo, abrir um previamente gravado ou simplesmente sair
da aplicação.
- Caso o utilizador tenha optado por criar um desenho novo deverá ser interrogado sobre as dimensões da área de desenho. Deve
haver um limite máximo para as dimensões, tipicamente a resolução em pixeis de um monitor: 800x600 ou 1024x768. De início
tente trabalhar com desenhos pequenos (80x25) pois podem visualizar-se no monitor em formato textual.
- Depois desta fase de arranque a aplicação deverá funcionar em ciclo: em cada iteração o desenho é colocado no monitor (a sua
área deverá ser limitada por caracteres '.', e é oferecido ao utilizador uma linha onde este deverá introduzir o próximo comando.
- Nas primeiras versões tente fazer as coisas o mais simples possível.