UNIVERSIDADE TÉCNICA DE LISBOA
INSTITUTO SUPERIOR TÉCNICO
Fundamentos de Programação
Trabalho de casa no 6
3 de Dezembro de 2004
Objectivo
Pretende-se implementar uma variante do TAI mapa pedido no TPC4: o TAI
mapa-limitado. Este TAI, ao contrário do anterior, é mutável, sendo possível alterar a informação que está contida em algumas posições do mapa. Este mapa
é limitado, na medida em que apenas permite alterar a informação de um número finito de posições, definidas por um rectângulo quando o mapa é criado. A
tentativa de alterar uma posição fora dos limites do mapa dá origem a um erro.
No entanto, pode-se consultar qualquer posição, dentro ou fora dos limites do
mapa.
O tipo posicao definido no TPC4 vai ser usado para nos referirmos às várias
posições do mapa.
Neste trabalho, a representação interna usada para o tipo mapa-limitado deve ser
baseada no tipo vector do S CHEME. Em particular, devem ser usados vectores
para guardar a informação do mapa nas posições dentro dos limites definidos
na criação do mapa.
As operações a considerar para o tipo mapa-limitado são as seguintes:
• cria-mapa-limitado : universal × inteiro × inteiro × inteiro × inteiro 7→ mapa-limitado
• mapa-limitado-poe! : mapa-limitado × posicao × universal 7→ indefinido
• mapa-limitado-obtem : mapa-limitado × posicao 7→ universal
A operação cria-mapa-limitado recebe um objecto qualquer e quatro números
inteiros e constrói um novo mapa-limitado que contém em todas as posições
esse objecto. Os quatro números inteiros definem um rectângulo no espaço
de coordenadas no qual é possível efectuar alterações à informação do mapa e
1
correspondem, por ordem, aos seguintes valores de coordenadas: o menor x, o
menor y, o maior x e o maior y do rectângulo.
A operação mapa-limitado-poe!, dados um mapa-limitado M, uma posição P e um
objecto O, altera M de modo a que na posição P passe a estar o objecto O, se a
posição P corresponder a uma posição contida no rectângulo definido na criação
de M. Se a posição P estiver fora do rectângulo definido na criação de M deve
ser dado um erro e M não é alterado.
A operação mapa-limitado-obtem, dados um mapa M e uma posição P, devolve
o objecto que se encontra na posição P do espaço representado pelo mapa M.
Qualquer posição é válida, e não apenas as que estão dentro dos limites definidos na criação de M.
A seguinte interacção de S CHEME ilustra o funcionamento destas operações:
> (define m1 (cria-mapa-limitado ’areia -3 2 10 15))
> (mapa-limitado-obtem m1 (@ 0 0))
areia
> (mapa-limitado-poe! m1 (@ 0 0) ’fora-dos-limites)
mapa-limitado-poe!: posicao fora dos limites
> (mapa-limitado-obtem m1 (@ 0 0))
areia
> (mapa-limitado-poe! m1 (@ -3 2) ’canto-inferior-esquerdo)
> (mapa-limitado-obtem m1 (@ -3 2))
canto-inferior-esquerdo
> (mapa-limitado-poe! m1 (@ -3 15) ’canto-superior-esquerdo)
> (mapa-limitado-poe! m1 (@ 10 2) ’canto-inferior-direito)
> (mapa-limitado-poe! m1 (@ 10 15) ’canto-superior-direito)
> (mapa-limitado-obtem m1 (@ -3 15))
canto-superior-esquerdo
> (mapa-limitado-obtem m1 (@ 10 15))
canto-superior-direito
> (mapa-limitado-obtem m1 (@ 10 2))
canto-inferior-direito
> (mapa-limitado-poe! m1 (@ -3 1) ’fora-dos-limites)
mapa-limitado-poe!: posicao fora dos limites
> (define coord (expt 2 30))
> coord
1073741824
> (mapa-limitado-obtem m1 (@ coord coord))
areia
Trabalho a realizar
O trabalho deve ser realizado por grupos de dois alunos. Os grupos formados
devem ser os mesmos que irão realizar o projecto da cadeira.
Usando uma representação interna baseada em vectores, tal como descrito acima,
2
devem definir as operações para o tipo mapa-limitado.
Assim, o trabalho a entregar é composto pelo seguinte:
1. A folha de rosto apresentada na última página deste enunciado, preenchida
com a identificação dos elementos que realizaram o trabalho.
2. A impressão das definições das operações do tipo mapa-limitado (não devem
incluir nesta impressão novamente as definições relativas ao tipo posicao).
3. A impressão de uma interacção em que se demonstre o correcto funcionamento das operações definidas.
As várias folhas devem ser agrafadas.
Os trabalhos devem ser entregues o mais tardar até às 15:00 do dia 13 de Dezembro. As entregas podem ser feitas durante as aulas práticas ou na secretaria
do DEI (Alameda) ou na sala de apoio da LEIC (Tagus).
3
Fundamentos de Programação
Ano Lectivo de 2004/2005 - 1o Semestre
TPC6
Número
Nome
Dia, Hora e Sala
Professor
(práticas)
Número
Nome
Dia, Hora e Sala
Professor
(práticas)
Download

Enunciado TPC6 - Técnico Lisboa