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