Introdução à Programação Lógica
MAC, Mat, EM (3\bo ano)
Exame de 1a Época - 1a Chamada
Data: 18 de Junho de 1997
Hora: 10:00
|
|
Dispõe de 3:00 horas para realizar este exame |
|
Leia as questões com toda a atenção |
e responda com calma e clareza em folha convencional |
Questão 1
Para construir um Sistema de Informação para uma Unidade de Arqueologia, foram
identificados as seguintes Entidades e Relações:
o Arqueólogo (descrito pelo código interno, nome e
instituição onde trabalha) que fez numa Escavação
(caracterizada por um identificador, local onde se situa e sector onde se está a escavar)
e o Achado (descrito por um identificador, uma classe (tipo
de objecto), o material e o estado de conservação) que é encontrado pelo
Arqueólogo nessa Escavação.
Antes de se criar a Base de Dados Relacional, que servirá de suporte ao sistema
informático final, está-se a pensar fazer um protótipo do sistema num ambiente de
programação declarativo, lógico.
Responda, então, às alíneas seguintes:
- a)
- Escolha os predicados (indique o seu nome e todos os seus argumentos)
que deve usar em Prolog para modelar as entidades e as
relações entre elas (para concretizar a sua resposta, mostre como exemplo 1, ou 2,
factos concretos para cada um desses predicados).
- b)
- De acordo com o modelo que escolheu acima, mostre como é que se podia determinar todos
os Achados encontrados em qualquer Escavação
da cidade de Braga .
%-------------------------
Questão 2
Suponha que possui uma Base de Conhecimento (BC) formada por factos correspondentes aos
seguintes predicados
% pessoa(P) :- P 'e uma pessoa.
% jogo(J) :- J 'e um jogo.
% premio(P) :- P 'e um premio.
% pratica(S,J) :- O sujeito S (pessoa) joga J.
% monitor(S,J) :- O sujeito S (pessoa) ensina o jogo J.
% favorito(P,J) :- a pessoa P 'e um dos favoritos para ganhar o jogo J.
% ganha(S,J,P) :- P 'e o premio ganho pela pessoa S no jogo J.
escreva, então, as cláusulas convenientes para definir:
- a)
- um predicado valida/0 que percorre a BC e verifica se todos os factos relativos
ao predicado ganha/3 estão semanticamente correctos, isto é, se S é
uma pessoa, J é um jogo e P é um prémio.
- b)
- um predicado acresceFavorito(S,J) que acresenta à BC (no fim) um novo facto favorito/2
se e só se não existir ainda esse facto na BC (garante que não existirão
repetições).
- c)
- um predicado jogador(S,J) que traduza a seguinte definição um indivíduo
S é um jogador do jogo J se fôr um praticante dessa modalidade, se fôr um seu monitor,
se fôr um favorito desse jogo, ou finalmente se já alguma vez tiver ganho um premio
nesse jogo.
- d)
- um predicado palpitesCertos(J,LstPal) que construa uma lista LstPal
com todos os jogadores de J que tinham sido indicados como favoritos e
que efectivamente ganharam esse jogo.
%-------------------------
Questão 3
Analise atentamente a seguinte gramática escrita na notação lógica DCG
frase --> exp, [';'].
exp --> equac.
exp --> interroga.
equac --> expressao, ['='], expressao.
interroga --> ['?'], ['='], expressao.
expressao --> operando, resto.
operando --> [num(N)].
operando --> ['('], expressao, [')'].
resto --> operador, expressao.
resto --> [].
operador --> ['+'] | ['-'] | ['/'] | ['*'].
Responda, então, às alíneas seguintes:
- a)
- Diga qual a resposta de um Interpretador de Prolog (IP),
à questão
frase( [num(5),'+',num(3),'=',num(8),';'], [] ).
- b)
- Dê 1 exemplo de uma frase válida da linguagem definida pela DCG
acima.
- c)
- Modifique a gramática supra de modo a permitir que cada frase tenha mais do que uma
equação ou interrogação (mais do que uma exp).
%-------------------------
Questão 4
Observe com cuidado a seguinte Base de Factos
% exerceProfRisco(S,P) :- a pessoa S exerce a profissao P que
% 'e de alto risco.
exerceProfRisco(ana,professor) . exerceProfRisco(rui,professor) .
exerceProfRisco(to,metalurgico) . exerceProfRisco(xico,bombeiro) .
exerceProfRisco(marta,bombeiro) . exerceProfRisco(hugo,fuzileiro) .
% fumaMuito(P) :- a pessoa P fuma muitos cigarros por dia.
fumaMuito(sofia) . fumaMuito(rui) .
fumaMuito(ze) . fumaMuito(mariana) .
fumaMuito(pedro) .
% dorme(S,H) :- a pessoa S dorme em media H horas por noite.
dorme(tita,7) . dorme(pedro,5) .
dorme(joao,4) . dorme(ze,5) .
dorme(sofia,6) . dorme(mariana,8) .
% cardiaco(P) :- a pessoa P sofre de doenca do coracao.
cardiaco(nuno) .
cardiaco(necas) .
cardiaco(andre) .
e o seguinte programa Prolog
morreCedo(P) :- exerceProfRisco(P,_).
morreCedo(P) :- fumaMuito(P), dormePouco(P).
morreCedo(P) :- cardiaco(P).
dormePouco(P) :- dorme(P,H), H < 6.
Responda, então, às alíneas seguintes:
- a)
- Usando a Árvore de Prova, diga qual a resposta de um Interpretador de Prolog (IP), à questão
morreCedo( pedro ).
- b)
- Usando a Árvore de Procura, mostre todas as respostas que um Interpretador de Prolog (IP), daria à questão
dormePouco( QUEM ).
- c)
- Usando a Árvore de Procura, mostre que um Interpretador de Prolog (IP), teria de fazer backtracking (automático)
para responder afirmativamente, "yes", à questão
morreCedo( nuno ).
- d)
- Como interpretaria o facto dum IP responder negativamente, "no", à
questão
morreCedo( joana ).
%-------------------------
Questão 5
Numa empresa fabricante de equipamento eléctrico para cozinhas, encontram-se as
seguintes proposições sobre a constituição de um fogão:
- Um fogão é composto por uma estrutura e um cordão eléctrico.
- Umas das componentes da estrutura é uma resistência de aquecimento.
- A resistência de aquecimento é em metal.
- Outra parte da estrutura é o painel do fogão.
- O painel tem um botão.
- Os botões são sempre feitos em plástico.
- O cordão eléctrico é composto de fio metálico.
- Parte do cordão eléctrico é um isolador.
- O isolador é feito de fibra plástica.
Responda, então, às alíneas seguintes:
- a)
- Recorrendo apenas aos predicados parte-de e feito-em (note que uma
palavra diferente não corresponde necessariamente a um predicado ou argumento distinto),
escreva um conjunto de cláusulas Prolog que descrevam
precisamente o conhecimento contido nas frases acima.
- b)
- Tomando em consideração a Base de Conhecimento criada na alínea anterior, diga como
procederia, face a um Interpretador de Prolog, para obter
resposta para às seguintes questões:
- Que objectos (simples) são de metal ?
- Que objectos (simples) não são de plástico ?
- c)
- Tomando em consideração a Base de Conhecimento criada na alínea a), escreva um
predicado que permita determinar todos os objectos que fazem parte do fogão.
%-------------------------
Questão 6
Escreva em Prolog cláusulas adequadas (podendo recorrer,
se necessário a predicados pré-definidos) para definir:
- a)
- O predicado diferenca(L1,L2,R) que será verdadeiro quando R fôr uma
lista que resulta de se retirar de L1 os elementos que pertencem a L2.
Por exemplo:
?- diferenca([a,b,c,d],[d,b,e,f],X).
X = [a,c]
- b)
- O predicado pertence2(E1,E2,L) que deverá resultar verdadeiro quando E1
e E2 forem ambos elementos da lista L, com E1 precedendo E2.
Exemplo:
?- pertence2(b,d,[a,b,c,d,e]).
yes
?- pertence2(d,b,[a,b,c,d,e]).
no
%-------------------------