Sheme

Disponível somente no TrabalhosFeitos
  • Páginas : 7 (1724 palavras )
  • Download(s) : 0
  • Publicado : 8 de novembro de 2011
Ler documento completo
Amostra do texto
hemeLicenciatura em Engenharia Informática e de Computadores

Fundamentos de Programação
Projecto - Primeira Parte 2 de Novembro de 2010

O objectivo da primeira parte do projecto é a definição e implementação de alguns dos tipos abstractos de informação que serão usados na realização do projecto final. Os tipos implementados nesta primeira parte vão ser usados não só pelo programa quedesenvolverá na segunda parte, como também por outros programas, nomeadamente o programa de avaliação automática. Assim, deve respeitar escrupulosamente as definições que são dadas de seguida, inclusivamente no que diz respeito aos nomes dos procedimentos, bem como ao número e ordem dos parâmetros formais. Para além dos tipos abaixo descritos, deverá incluir no seu código a implementação do tipo listasimplificada apresentada no livro; não precisa, no entanto, de incluir a definição abstracta do tipo lista simplificada no seu relatório. Para não sobrecarregar desnecessariamente o código, apenas os construtores de cada tipo devem verificar a validade dos argumentos que recebem.

1 O tipo posição
Uma posição é constituída por dois inteiros, entre 0 e 7, correspondentes a uma linha e uma coluna de umtabuleiro de jogo 8×8. O tipo posição deve disponibilizar as seguintes operações básicas: 1. Construtor. • f az-pos : inteiro × inteiro → posic ao ,˜ f az-pos(l, c) devolve a posição correspondente à linha l, coluna c. 2. Selectores. • linha-pos : posic ao → inteiro ,˜ linha-pos(p) devolve a linha da posição p. • coluna-pos : posic ao → inteiro ,˜ coluna-pos(p) devolve a coluna da posição p. 3.Reconhecedor. • pos? : universal → l´gico o pos?(arg) tem o valor verdadeiro, se arg é uma posição, e tem o valor f also, em caso contrário. 4. Teste.

• pos =? : posic ao × posic ao → l´gico o ,˜ ,˜ pos =?(p1 , p2 ) tem o valor verdadeiro, se p1 e p2 são posições iguais, e tem o valor f also, em caso contrário. Devem também ser disponibilizadas as seguintes operações de alto nível:1 • distancia: posic ao × posic ao → real ,˜ ,˜ distancia(p1 , p2 ) devolve a distância entre as posições p1 e p2 . Se p1 = (l1 , c1 ) e p2 = (l2 , c2 ), então distancia(p1 , p2 ) = (l1 − l2 )2 + (c1 − c2 )2 . • mesma-direccao? : posic ao × posic ao → l´gico o ,˜ ,˜ mesma-direccao?(p1 , p2 ) tem o valor verdadeiro, se p1 e p2 estão na mesma linha, ou na mesma coluna, e tem o valor f also, em caso contrário. •adjacentes? : posic ao × posic ao → l´gico o ,˜ ,˜ adjacentes?(p1 , p2 ) tem o valor verdadeiro, se p1 e p2 são posições adjacentes, e tem o valor f also, em caso contrário. Duas posições são adjacentes se se encontram na mesma direcção e a distância entre elas é um. • adjacentes : posic ao → lista de posic oes ,˜ ,˜ adjacentes(p) devolve uma lista cujos elementos são as posições adjacentes àposição p. Por exemplo, adjacentes(f az-pos(0, 0)) devolve a lista ((1, 0)(0, 1)), e adjacentes(f az-pos(1, 2) devolve a lista ((2, 2)(0, 2)(1, 3)(1, 1)).

2 O tipo conteúdo
Um elemento do tipo conteúdo é um dos seguintes símbolos: p, b, v. Os elementos deste tipo são usados para representar os conteúdos das posições de um tabuleiro do jogo das damas. O símbolo p representa uma peça preta, o símbolob representa uma peça branca, e o símbolo v indica que a posição correspondente do tabuleiro está vazia.

3 O tipo jogada
Os elementos do tipo jogada são constituídos por duas posições: a primeira representa a posição da peça antes da jogada, o início da jogada, e a segunda representa a posição da mesma peça depois da jogada, o fim da jogada. O tipo jogada deve disponibilizar as seguintesoperações básicas: 1. Construtor: • f az-jogada : posic ao × posic ao → jogada ,˜ ,˜ f az-jogada(p1 , p2 ) devolve uma jogada com início em p1 e fim em p2 .
1

Tenha em atenção que estas operações devem ser independentes da representação interna escolhida.

2

2. Selectores: • inicio-jogada : jogada → posic ao ,˜ inicio-jogada(j) devolve o início da jogada j. • f im-jogada : jogada → posic ao...
tracking img