aula04b_introduçãoprolog
Post on 07-Jul-2018
227 Views
Preview:
TRANSCRIPT
-
8/19/2019 Aula04b_IntroduçãoProlog
1/21
Introdução à Programação Lógica
-
8/19/2019 Aula04b_IntroduçãoProlog
2/21
2
Pontos importantes
O nome de uma relação deve começar com uma letraminúscula
A relação é escrita primeiro e os seus argumentos sãoseparados por vírgulas e colocados entre parênteses
O ponto fnal !" deve seguir o fnal do #ato
$ #%cil defnir uma relação em Prolog& por e'emplo arelação progenitor & escrevendo ntuplas de o()etos*ue satis#a+em a relação
O usu%rio pode perguntar ao sistema Prolog so(rerelaç,es defnidas no programa
-
8/19/2019 Aula04b_IntroduçãoProlog
3/21
3
Pontos importantes
Perguntas consistem em uma ou maiscláusulas
-ma se*.ência de cl%usulas& tal como/progenitor01&esaú2& progenitor01&)acó2 3ignifca a con)unção das cl%usulas 1 é um progenitor de 4saú e
1 é um progenitor de 5acóA resposta a uma pergunta pode serPositiva/ a pergunta é satis#atível e teve sucesso 0suceeded26egativa/ a pergunta é insatis#atível e #al7ou 0#ailed2
3e v%rias respostas satis#a+em uma pergunta& Prologencontra tantas *uantas possíveis3e o usu%rio estiver satis#eito com a resposta& (asta digitar
enter3e dese)ar mais respostas& usa8se ponto8e8vírgula 9"
-
8/19/2019 Aula04b_IntroduçãoProlog
4/21
4
4'ercícios
4'pressar em português/valioso0ouro2!#emea0)ane2!possui0)oao&ouro2!
pai0)oao&maria2!da0)oao&livro&maria2!
-
8/19/2019 Aula04b_IntroduçãoProlog
5/21
5
4'ercícios
gosta0)oao& pei'e2!gosta0)oao&maria2!gosta0maria&livro2!gosta0pedro&livro2!
gosta0maria&:or2!gosta0maria&vin7o2!
;uais as respostasdadas por Prolog<
-
8/19/2019 Aula04b_IntroduçãoProlog
6/21
6
4'ercícios
;uais as respostasdadas por Prolog<
0a2
-
8/19/2019 Aula04b_IntroduçãoProlog
7/21
7
?efnindo relaç,es por regras
As relaç,es mulher ehomem são relaç,esun%rias
-ma relação (in%ria& comoprogenitor& defne umrelacionamento entre pares
de o()etos@elaç,es un%rias são
usadas para declararpropriedades simplessimnão dos o()etos
A primeira cl%usula un%riapode ser lida como 3ara éuma mul7er"
6osso programa so(re
#amílias pode ser estendidode v%rias #ormas
Bamos adicionar ain#ormação so(re o se'o daspessoas envolvidas na
relação progenitorPor e'emplo/
mul7er0sara2!7omem0a(raão2!7omem0isa*ue2!
7omem0ismael2!7omem0esaú2!7omem0)acó2!7omem0)osé2!
-
8/19/2019 Aula04b_IntroduçãoProlog
8/21
8
?efnindo relaç,es por regras
Podemos declarar a mesma
in#ormação usando umarelação (in%ria sexo/
se'o0saraeminino2!se'o0a(raão&masculino2!se'o0isa*ue&masculino2!
se'o0ismael&masculino2!se'o0esaú&masculino2!se'o0)acó&masculino2!se'o0)osé&masculino2!
In#ormação so(re o se'o das
pessoas envolvidas narelação progenitor /
mul7er0sara2!7omem0a(raão2!7omem0isa*ue2!
7omem0ismael2!7omem0esaú2!7omem0)acó2!7omem0)osé2!
-
8/19/2019 Aula04b_IntroduçãoProlog
9/21
9
4scol7endo o()etos e relaç,es
Como representar/ 3ara é uma mul7er"mul7er0sara2!Permite responder/ ;uem é mul7er
-
8/19/2019 Aula04b_IntroduçãoProlog
10/21
10
?efnindo relaç,es por regras
Bamos estender o programa introdu+indo a relaçãoflho_geral como o inverso da relação progenitor
Podemos defnir flho_geral de maneira similar àrelação progenitor & ou se)a enumerando uma lista de
#atos so(re a relação flho_geral & por e'emplo/
fl7o>geral0isa*ue&sara2! fl7o>geral0iisa*ue&a(raão2!
fl7o>geral0ismael&a(raão2! !!!
-
8/19/2019 Aula04b_IntroduçãoProlog
11/21
11
?efnindo relaç,es por regras
4ntretanto& a relação flho_geral pode ser defnida demodo mais elegante/Para todo 1 e =& = é um fl7o>geral de 1 se1 é um progenitor de =!
4m Prolog/fl7o>geral0=&12 /8 progenitor01&=2!4sta cl%usula tam(ém pode ser lida como/Para todo 1 e =&se 1 é um progenitor de = então = é um fl7o>geral de 1
-
8/19/2019 Aula04b_IntroduçãoProlog
12/21
12
?efnindo relaç,es por regras
Cl%usulas Prolog como/fl7o>geral0=&12 /8 progenitor01&=2!
são c7amadas regras 0rules2
D% uma di#erença importante entre #atos e regras/-m #ato é sempre verdadeiro 0verdadeincondicional2@egras especifcam coisas *ue são verdadeiras sealguma condição é satis#eita
-
8/19/2019 Aula04b_IntroduçãoProlog
13/21
-
8/19/2019 Aula04b_IntroduçãoProlog
14/21
-
8/19/2019 Aula04b_IntroduçãoProlog
15/21
15
?efnindo relaç,es por regras
A condição da regra com as vari%veis instanciadas fl7o>geral0ismael&a(raão2 /8 progenitor0a(raão&ismael2!
é/ progenitor0a(raão&ismael2!
Assim& Prolog tenta provar *ue a condição é verdadeira
Para provar a condição& é trivial por Prolog encontrar um #atocorrespondente no programa
Isso implica *ue a conclusão da regra tam(ém é verdadeira eProlog responde afrmativamente à pergunta/ geral0ismael&a(raão2! Ees
-
8/19/2019 Aula04b_IntroduçãoProlog
16/21
16
?efnindo relaç,es por regras
Bamos incluir a especifcação da relação mãe& com(ase no seguinte #undamento lógico/Para todo 1 e =& 1 é a mãe de = se 1 é um progenitor de = e
1 é uma mul7er! Gradu+indo para Prolog/mãe01&=2 /8 progenitor01&=2& mul7er012!
-ma vírgula entre duas condiç,es indica a con)unçãodas condiç,es& signifcando *ue am(as condiç,es têm*ue ser verdadeiras
-
8/19/2019 Aula04b_IntroduçãoProlog
17/21
17
?efnindo relaç,es por regras
4'emplo/ de Português para Prolog-ma pessoa é mãe se tiver algum fl7o e essapessoa #or mul7er-ma pessoa é mãe se #or progenitor de alguém e
essa pessoa #or mul7er-ma pessoa 1 é mãe de = se 1 #or progenitor de =
e 1 #or mul7er1 é mãe de = se 1 é progenitor de = e 1 é mul7ermãe01&=2 /8
progenitor01&=2&mul7er012!
-
8/19/2019 Aula04b_IntroduçãoProlog
18/21
18
?efnindo relaç,es por regras
4m Prolog& uma regra consiste de umaca(eça e uma corpoA ca(eça e o corpo são conectados pelo
sím(olo /8& denominado necH& #ormado por
dois pontos e 7í#en/8 é pronunciado se"
mãe01&=2 /8 progenitor01&=2& mul7er012!
-
8/19/2019 Aula04b_IntroduçãoProlog
19/21
19
4'ercícios
Identif*ue a ca(eça e cauda de cada regra!4'pressar cada regra em Português/gosta0)oao&12 /8
gosta01&vin7o2&
gosta01&comida2!
gosta0)oao&12 /8
mul7er012&gosta01&vin7o2!
-
8/19/2019 Aula04b_IntroduçãoProlog
20/21
20
4'ercícios
ladrao0)oao2!
ladrao0pedro2!gosta0maria&:or2!gosta0maria&*uei)o2!gosta0maria&vin7o2!gosta0)oao&ru(i2!gosta0)oao&12 /8
gosta01&vin7o2!
-sando a (ase ao lado&
defna a regra/ -ma pessoapode rou(ar algo se essapessoa é um ladrão e elagosta desse algo
;ual a resposta dada por
Prolog a pergunta/ 5oão rou(ao *uê<
-
8/19/2019 Aula04b_IntroduçãoProlog
21/21
21
IJ
top related