Prof. Dr. Roberta Andrade
raafupe@gmail.com
Lógica de Programação e Algoritmo II
Sistema de Informação
UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE
1
*
AULA 7 – LPA II
a :- b1, b2... bi; bj... bn.
Cabeça
Condição
“se”
“e”
“ou”
A Cláusula Prolog
LPA2-Prolog
UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE
2
*
AULA 7 – LPA II
Programação em Lógica
Sócrates é homem.
Todo homem é mortal.
Quem é mortal?
Sócrates é mortal.
homem(sócrates).
mortal(X) :- homem(X).
?- mortal(Z).
Z = sócrates.
🡺
UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE
3
*
AULA 7 – LPA II
Exercício Classe
Seja a árvore genealógica mostrada abaixo...
José
João
Julio
Jorge
pai(josé, joão).
pai(joão, júlio).
pai(júlio, jorge).
Descreva que é filho ?
Descreva que é avô?
UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE
4
*
AULA 7 – LPA II
pai(josé, joão).
pai(joão, júlio).
pai(júlio, jorge).
filho(X, Y):- pai(Y, X).
avô(X, Y):- pai(X, Z), pai(Z, Y).
Fatos, Regras e Consultas
José
João
Julio
Jorge
UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE
5
*
AULA 7 – LPA II
pai(josé, joão).
pai(joão, júlio).
pai(júlio, jorge).
filho(X, Y):- pai(Y, X).
avô(X, Y) :- pai(X, Z), pai(Z, Y).
?- filho(júlio, X). X=joão
?- avô(X, jorge). X=joão
Fatos, Regras e Consultas
José
João
Julio
Jorge
UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE
6
*
AULA 7 – LPA II
Exercício Classe
Arthur
Julia
Silvio
Carlos
Ricardo
Xico
Implementar a regras: Filho ???
UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE
7
*
AULA 7 – LPA II
Exercício Classe
Arthur
Julia
Silvio
Carlos
Ricardo
Xico
Implementar as regras: avô e irmão???
UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE
8
*
AULA 7 – LPA II
Exercício Classe
Arthur
Julia
Silvio
Carlos
Ricardo
Xico
Implementar as regras:
avó e neto ???
UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE
9
*
AULA 7 – LPA II
Exercício Classe
Arthur
Julia
Silvio
Carlos
Ricardo
Xico
UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE
10
*
AULA 7 – LPA II
Fatos
Seja a árvore genealógica mostrada abaixo...
Maria
João
José
Ana
Júlia
Íris
Jorge
ser representada pelo seguinte programa Prolog:
progenitor(maria, josé).
progenitor(joão, josé).
progenitor(joão, ana).
progenitor(josé, júlia).
progenitor(josé, íris).
progenitor(íris, jorge).
Este programa representa a relação progenitor, na forma de um predicado, que contém 6 cláusulas, que são todas fatos.
UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE
11
*
AULA 7 – LPA II
Consultas
O programa pode ser pensado como uma tabela em uma BD.
progenitor(maria, josé).
progenitor(joão, josé).
progenitor(joão, ana).
progenitor(josé, júlia).
progenitor(josé, íris).
progenitor(íris, jorge).
No caso de um programa constituído unicamente de fatos, a semântica é exatamente a mesma de uma BD relacional...
pode ser consultada de várias maneiras:
?- progenitor(joão, ana).�true
?- progenitor(joão, jorge).�false
?- progenitor(joão, X).�X=josé;�X=ana;�false
?- progenitor(X,Y).�X=maria, Y=josé;�X=joão, Y=josé;�...�X=íris, Y=jorge;�false
UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE
12
*
AULA 7 – LPA II
Ampliando a Base de Fatos
O programa pode ser ampliado acrescentando-se novos fatos que inclusive podem estabelecer novas relações.
No exemplo ao lado acrescentou-se ao programa original as relações masculino/1 e feminino/1.
Estas relações, que possuem aridade 1 (um só argumento), podem ser pensadas como sendo atributos dos objetos a que se aplicam.
progenitor(maria, josé).
progenitor(joão, josé).
progenitor(joão, ana).
progenitor(josé, júlia).
progenitor(josé, íris).
progenitor(íris, jorge).�
masculino(joão).�masculino(josé).�masculino(jorge).�
feminino(maria).�feminino(ana).�feminino(júlia).�feminino(íris).
UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE
13
*
AULA 7 – LPA II
Regras
relações pai/2 e mãe/2 podem agora ser definidas da seguinte maneira:
X é pai de Y se � X é progenitor de Y e � X é masculino.
X é mãe de Y se � X é progenitor de Y e � X é feminino.
Em Prolog:
pai(X,Y) :-
progenitor(X,Y),
masculino(X).
mãe(X,Y) :-
progenitor(X,Y),
feminino(X).
UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE
14
*
AULA 7 – LPA II
Mais Regras
As relações irmão/2 e irmã/2 podem agora ser definidas da seguinte maneira:
X é irmão de Y se � Z é progenitor de X e � Z é progenitor de Y e � X é masculino.
X é irmã de Y se ...
Em Prolog:
irmão(X,Y) :-
progenitor(Z,X),
progenitor(Z,Y),
masculino(X).
UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE
15
*
AULA 7 – LPA II
Exercício de Classe
UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE
16
*
AULA 7 – LPA II
Resposta
UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE
17
*
AULA 7 – LPA II
Resposta
UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE
18
*
AULA 7 – LPA II
Exercício de Casa
Gerar mãe, pai, avô, avó, irmão, irmã, filho, filha, tio, tia, primo e prima.
UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE
19
*
AULA 7 – LPA II
Exercício Aula Passada
UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE
20
*
AULA 7 – LPA II
RESPOSTA
UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE
21
*
AULA 7 – LPA II
RESPOSTA
UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE
22
*
AULA 7 – LPA II