Buscar

linguagem declarativa

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

UNIVERSIDADE FEDERAL DA PARAÍBA
CENTRO DE CIÊNCIAS APLICADAS E EDUCAÇÃO
CAMPUS IV DO LITORAL NORTE
DEPARTAMENTO DE CIÊNCIAS EXATAS
Disciplina: Linguagens Declarativas.
Professor: Joelson Nogueira de Carvalho.
Período: 2010.1
EXERCÍCIOS DE AVALIAÇÃO - UNIDADE II 
Aluno: _________________________________________________ Matrícula: _________
1) Quais das seguintes operações de unificação serão bem sucedidas e quais irão falhar? 
Para as que forem bem sucedidas, quais são as instanciações de variáveis resultantes?
 ponto(A, B) = ponto(1, 2)
 ponto(A, B) = ponto(X, Y, Z)
 mais(2, 2) = 4
 +(2, D) = +(E, 2)
 t(p(-1,0), P2, P3) = t(P1, p(1, 0), p(0, Y)) 
 data(DD,03,AAAA) = data(X,Março,1999).
 data(DD,MM,AAAA) = data(X,Y,99).
2) Qual é a resposta do PROLOG para as seguintes consultas:
 ?- A = b.
 ?- a = B, write(B).
 ?- A = B, write(A), write(B)..
 ?- A = 1+2, write(A).
 ?- (A= (a,b); A=1),write(A).
 ?- a = p(a,B), write(B).
 ?- p(A,b) = p(a,B), write(A), write(B).
 ?- p(a,b) = p(b,B), write(B)..
 ?- p(a,b) = q(a,b).
 ?- p(x,A,y) = p(x,B).
 ?- p(x,A,y) = p(x,f(b),y), write(A).
3) Para o seguinte programa, quais serão as respostas Prolog para as consultas abaixo?
Observações: 
 A lista é individual
 Utilize qualquer interpretador/compilador Prolog para CODIFICAR e VERIFICAR suas 
respostas, desde que indique qual.
p(a,c).
p(a,b).
p(d,a).
p(d,b).
p(b,c).
p(b,d).
a) ?-p(a,b).
b) ?-p(a,d).
c) ?-p(a,X).
d) ?-p(X,b).
e) ?-p(X,Y).
f) ?-p(X,b),p(d,X).
g) ?-p(X,Y),p(Z,X).
h) ?-p(X,Y),p(Z,Y).
4) Crie um BDD com fatos do predicado progenitor para membros de sua família (ou de 
uma família fictícia); em seguida, construa regras que permitam consultar os 
antecessores e sucessores de uma determinada pessoa, além das seguintes relações:
 Irmão, irmã
 Primo, prima
 Tio, tia
 Pai, mãe
 Avô, avó
5) Explique com suas palavras, como funciona o “Forward Chainning”, o “Bacward 
Chainning” e o “Backtracking”.
6) Para que serve o predicado “Cut”? Como funciona? Exemplifique!
7) Construa um banco de conhecimento Prolog, com Fatos e Regras, sobre figuras 
geométricas. Assim, por exemplo, você poderia designar um quadrado da seguinte 
forma: quadrado(q1,3,3,3,3); isso poderia definir um quadrado com arestas de tamanho 
3. Crie regras para verificação de figuras; assim, quadrado(X,3,4,3,3) não poderia 
existir!
8) Após construir as figuras da questão acima, crie um ambiente onde essas figuras 
possam ser descritas al lado da outra, acima ou abaixo (mundo geométrico).
9) Considere a seguinte definição para dois segmentos de reta:
segmento_vertical(segmento(ponto(X,Y1),ponto(X,Y2) ) )
segmento_horizontal(segmento(ponto(X1,Y),ponto(X2,Y) ) )
 Qual seria a resposta do Prolog para as seguintes consultas:
a) ?- segmento_vertical(segmento(ponto(1,1),ponto(1,2) ) ).
b) ?- segmento_vertical(segmento(ponto(1,1),ponto(2,Y) ) ).
c) ?- segmento_horizontal(segmento(ponto(1,1),ponto(2,Y) ) ).
d) ?- segmento_horizontal(segmento(ponto(Z,5),ponto(2,Y) ) ).
e) ?- segmento_horizontal(segmento(ponto(Z,5),ponto(2,7) ) ).
f) ?- segmento_vertical(segmento(ponto(2,3), P ) ).

Continue navegando