gsi010 - programa˘c~ao l ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · o que e prolog i...

58
GSI010 - Programa¸ ao L´ ogica

Upload: others

Post on 03-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

GSI010 - Programacao Logica

Page 2: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Organizacao da disciplina

I prof. Marcelo Keese Albertini

I [email protected]

I Sala 1A-230I http://www.facom.ufu.br/~albertini/prolog

I Informacoes sobre a disciplinaI plano de aulaI notasI trabalhosI datasI slidesI avisosI listas de exercıciosI exemplos de aula

Page 3: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Avaliacao

I 3 provas teoricas, somando 85 pontosI 1a. prova: 05/07/2013, valendo 25 pontosI 2a. prova: 16/08/2013, valendo 30 pontosI 3a. prova: 20/09/2013, valendo 30 pontos

I listas de exercıcios preparatorios e trabalhos, somando 15pontos

Page 4: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Referencias Bibliograficas

Na biblioteca

I Clocksin, W. E and Mellish, C.S. Programming in Prolog, 2nded. 1984.

I Arariboia, G. Inteligencia Articial: um curso pratico. 1988.

I Bratko, I. Prolog Programming for Artificial Intelligence, 2nded. 1990.

Na InternetI Luiz A. M. Palazzo. Introducao a programacao Prolog

I http://puig.pro.br/Logica/palazzo.pdf

I Eloi L. Favero. Programacao em Prolog: uma abordagempratica

I http://www3.ufpa.br/favero

I Patrick Blackburn, Johan Bos and Kristina Striegnitz. LearnProlog Now!

I http://www.learnprolognow.org

Page 5: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Introducao

I Conceitos fundamentais da Programacao em Logica

I Desenvolvimento de aplicacoes em PrologI Implementacao utilizada: Swi-Prolog

I http://www.swi-prolog.org

Page 6: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

O que e Prolog

I Introducao aos conceitos basicos da programacao em logica eda linguagem Prolog.

I Fatos e regras.

I Resolucao, unificacao, corte e negacao.

I Recursao, controle da execucao e estruturas de dados.

I Semantica declarativa e procedimental.

I Desenvolvimento de aplicacoes em Prolog.

Page 7: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Sintaxe do Prolog

Paradigma logicoI paradigma declarativo

I descrevem o problema, em vez da solucaoI descreve o que deve ser feito, em vez de como

Principal linguagem

I Prolog: Programming in Logic

Page 8: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Sintaxe do Prolog

Porque declarativo?

I declaracao de fatos

I declaracao de regrasI execucao de codigo por meio de consultas

I o prolog avalia consultas de acordo com as regras e fatospreviamente definidos

I o que nao esta declarado e falso ou tem resposta negativa

I conceito de mundo fechado

Page 9: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Declaracoes

ConhecimentoJoao que amava Teresa que amava Raimundo que amava Mariaque amava Joaquim que amava Lili que nao amava ninguem. Joaofoi para os Estados Unidos, Teresa para o convento, Raimundomorreu de desastre, Maria ficou para tia, Joaquim suicidou-se e Lilicasou com J. Pinto Fernandes que nao tinha entrado na historia.

Transformando em fatos

1 amava ( jo ao , t e r e s a ) .2 amava ( t e r e s a , ra imundo ) .3 amava ( raimundo , joaqu im ) .4 amava ( joaquim , l i l i ) .5 f o i p a r a ( jo ao , e s t a d o s u n i d o s ) .6 f o i p a r a ( t e r e s a , convento ) .7 f o i p a r a ( raimundo , c eu ) .8 f o i p a r a ( joaquim , ceu ) .9 f o i p a r a ( l i l i , f e r n a n d e s ) .

E as letras maiusculas?

Page 10: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Declaracoes

ConhecimentoJoao que amava Teresa que amava Raimundo que amava Mariaque amava Joaquim que amava Lili que nao amava ninguem. Joaofoi para os Estados Unidos, Teresa para o convento, Raimundomorreu de desastre, Maria ficou para tia, Joaquim suicidou-se e Lilicasou com J. Pinto Fernandes que nao tinha entrado na historia.

Transformando em fatos

1 amava ( jo ao , t e r e s a ) .2 amava ( t e r e s a , ra imundo ) .3 amava ( raimundo , joaqu im ) .4 amava ( joaquim , l i l i ) .5 f o i p a r a ( jo ao , e s t a d o s u n i d o s ) .6 f o i p a r a ( t e r e s a , convento ) .7 f o i p a r a ( raimundo , c eu ) .8 f o i p a r a ( joaquim , ceu ) .9 f o i p a r a ( l i l i , f e r n a n d e s ) .

E as letras maiusculas?

Page 11: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Declaracoes

ConhecimentoJoao que amava Teresa que amava Raimundo que amava Mariaque amava Joaquim que amava Lili que nao amava ninguem. Joaofoi para os Estados Unidos, Teresa para o convento, Raimundomorreu de desastre, Maria ficou para tia, Joaquim suicidou-se e Lilicasou com J. Pinto Fernandes que nao tinha entrado na historia.

Transformando em fatos

1 amava ( jo ao , t e r e s a ) .2 amava ( t e r e s a , ra imundo ) .3 amava ( raimundo , joaqu im ) .4 amava ( joaquim , l i l i ) .5 f o i p a r a ( jo ao , e s t a d o s u n i d o s ) .6 f o i p a r a ( t e r e s a , convento ) .7 f o i p a r a ( raimundo , c eu ) .8 f o i p a r a ( joaquim , ceu ) .9 f o i p a r a ( l i l i , f e r n a n d e s ) .

E as letras maiusculas?

Page 12: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Aplicacoes da programacao logica

I Sistemas Baseados em ConhecimentoI sistemas que aplicam mecanismos automatizados de

racioncınio para a representacao e inferencia de conhecimento

I Bancos de Dados “Inteligentes”I sistemas que empregam “agentes” de busca de dados com

base em criterios

I Sistemas EspecialistasI sistemas que emulam a especializacao humana em algum

domınio especıfico

I Processamento da Linguagem NaturalI usada para desenvolvimento de ferramentas para a

comunicacao homem-maquina em geral e para a construcao deinterfaces

Page 13: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Aplicacoes

I NASAI Clarissa: interface de voz para execucao de procedimentos da

Estacao Espacial Internacional

I Industria de aviacao, em solucoes de planejamento eescalonamento

I coordena 30% do trafico aereo do mundo (2010)I http://www.travelport.com/Careers/InternshipI Estagio 2013: Experience in one or more of the following

languages: .NET (C#, ASP), C++, Prolog, C, Java,HTML/CSS

I Prolog “comercial”I Artigo SICStus Prolog–the first 25 years, 2010

I Mineracao de dadosI busca automatica em bancos de dados por padroes e

relacionamentos significantesI RDS (Compumine usando SICStus Prolog)

Page 14: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Mudanca de paradigma

Desenvolvimento

I pensar declarativamente, nao mais em “procedimentos”

I modo de abordar problemas e diferente

I linguagem de alto nıvel

I permite a rapida construcao de prototiposI permite abordar problemas complexos com pouco codigo

I mecanismo de busca de solucoes para problema e inerente aoProlog

Page 15: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 1

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 t o c a V i o l a o ( j o a n a ) .5 f e s t a .

1 ?− mulher ( mar ia ) .2 t r u e3 ?− t o c a V i o l a o ( j o a n a ) .4 t r u e5 ?− t o c a V i o l a o ( mar ia ) .6 f a l s e

Page 16: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 1

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 t o c a V i o l a o ( j o a n a ) .5 f e s t a .

1 ?−

mulher ( mar ia ) .2 t r u e3 ?− t o c a V i o l a o ( j o a n a ) .4 t r u e5 ?− t o c a V i o l a o ( mar ia ) .6 f a l s e

Page 17: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 1

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 t o c a V i o l a o ( j o a n a ) .5 f e s t a .

1 ?− mulher ( mar ia ) .2

t r u e3 ?− t o c a V i o l a o ( j o a n a ) .4 t r u e5 ?− t o c a V i o l a o ( mar ia ) .6 f a l s e

Page 18: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 1

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 t o c a V i o l a o ( j o a n a ) .5 f e s t a .

1 ?− mulher ( mar ia ) .2 t r u e3 ?−

t o c a V i o l a o ( j o a n a ) .4 t r u e5 ?− t o c a V i o l a o ( mar ia ) .6 f a l s e

Page 19: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 1

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 t o c a V i o l a o ( j o a n a ) .5 f e s t a .

1 ?− mulher ( mar ia ) .2 t r u e3 ?− t o c a V i o l a o ( j o a n a ) .4

t r u e5 ?− t o c a V i o l a o ( mar ia ) .6 f a l s e

Page 20: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 1

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 t o c a V i o l a o ( j o a n a ) .5 f e s t a .

1 ?− mulher ( mar ia ) .2 t r u e3 ?− t o c a V i o l a o ( j o a n a ) .4 t r u e5 ?−

t o c a V i o l a o ( mar ia ) .6 f a l s e

Page 21: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 1

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 t o c a V i o l a o ( j o a n a ) .5 f e s t a .

1 ?− mulher ( mar ia ) .2 t r u e3 ?− t o c a V i o l a o ( j o a n a ) .4 t r u e5 ?− t o c a V i o l a o (

mar ia ) .6 f a l s e

Page 22: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 1

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 t o c a V i o l a o ( j o a n a ) .5 f e s t a .

1 ?− mulher ( mar ia ) .2 t r u e3 ?− t o c a V i o l a o ( j o a n a ) .4 t r u e5 ?− t o c a V i o l a o ( mar ia ) .6

f a l s e

Page 23: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 1

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 t o c a V i o l a o ( j o a n a ) .5 f e s t a .

1 ?− mulher ( mar ia ) .2 t r u e3 ?− t o c a V i o l a o ( j o a n a ) .4 t r u e5 ?− t o c a V i o l a o ( mar ia ) .6 f a l s e

Page 24: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 1

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 t o c a V i o l a o ( j o a n a ) .5 f e s t a .

1 ?− t a t u a d a ( j o a n a ) .2 ERROR: p r e d i c a t e t a t u a d a /1 not d e f i n e d .34 ?− f e s t a .5 t r u e

Page 25: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 1

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 t o c a V i o l a o ( j o a n a ) .5 f e s t a .

1 ?−

t a t u a d a ( j o a n a ) .2 ERROR: p r e d i c a t e t a t u a d a /1 not d e f i n e d .34 ?− f e s t a .5 t r u e

Page 26: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 1

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 t o c a V i o l a o ( j o a n a ) .5 f e s t a .

1 ?− t a t u a d a ( j o a n a ) .2 ERROR: p r e d i c a t e t a t u a d a /1 not d e f i n e d .3

4 ?− f e s t a .5 t r u e

Page 27: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 1

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 t o c a V i o l a o ( j o a n a ) .5 f e s t a .

1 ?− t a t u a d a ( j o a n a ) .2 ERROR: p r e d i c a t e t a t u a d a /1 not d e f i n e d .34 ?− f e s t a .5

t r u e

Page 28: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 1

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 t o c a V i o l a o ( j o a n a ) .5 f e s t a .

1 ?− t a t u a d a ( j o a n a ) .2 ERROR: p r e d i c a t e t a t u a d a /1 not d e f i n e d .34 ?− f e s t a .5 t r u e

Page 29: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Introducao

Usuario InterfaceMotor deInferencia

Base deconhecimento

consultas

respostas

O prolog e baseado em:

I Fatos

I Regras

I Consultas

Page 30: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Programacao em Prolog

Fatos

I sao entendidos como relacoes entre objetos

I constituem-se de afirmacoes que sao feitas ao prolog

I sao verdades nas quais o prolog ira basear-se para responderas consultas solicitadas

I arvore genealogica

Page 31: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Programacao em Prolog

Joao Maria

Ana Jose

Barbara

Iris

Jorge

Fatos

1 p r o g e n i t o r ( maria , j o s e ) .

Page 32: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Programacao em prolog

Regras

I especificacao de algo que pode ser verdadeiro se algumascondicoes forem satisfeitas

I e composta de duas partes: conclusao (esquerda) e condicao(direita)

I exemplo: relacao Filho.

1 f i l h o (X, Y) :− p r o g e n i t o r (Y, X) .

Page 33: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Programacao em prolog

Consultas

I questionamentos que serao respondidos avaliando-se os fatose regras

I Joao e filho de Jose?→ ?− filho (joao , jose ) .I Quem e o filho de Jose?→?− filho (X, jose ) .I Quem sao os filhos de Joao?→?−filho(X,joao) .

I X e uma variavel que representa um objeto desconhecido

I variaveis sao escritas com a primeira letra em maiusculo

Page 34: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 21 p r o g e n i t o r ( maria , j o s e ) .2 p r o g e n i t o r ( jo ao , j o s e ) .3 p r o g e n i t o r ( jo ao , ana ) .4 p r o g e n i t o r ( j o s e , j u l i a ) .5 p r o g e n i t o r ( j o s e , ı r i s ) .6 p r o g e n i t o r ( ı r i s , j o r g e ) .7

8 f i l h o (X, Y) :− p r o g e n i t o r (Y, X) .

Dando nomes aos bois:

I fato: progenitor(maria, jose).I regra: filho(X, Y) :- progenitor(Y, X).

I cabeca (da regra): filho(X, Y)I corpo (da regra): progenitor(Y, X)

I clausula: um fato ou uma regra (sao 7 nessa base)

I marcado por ponto final

I functor: filho(X,Y)

I argumentos: filho(X, Y)

Page 35: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 21 p r o g e n i t o r ( maria , j o s e ) .2 p r o g e n i t o r ( jo ao , j o s e ) .3 p r o g e n i t o r ( jo ao , ana ) .4 p r o g e n i t o r ( j o s e , j u l i a ) .5 p r o g e n i t o r ( j o s e , ı r i s ) .6 p r o g e n i t o r ( ı r i s , j o r g e ) .78 f i l h o (X, Y) :− p r o g e n i t o r (Y, X) .

Dando nomes aos bois:

I fato: progenitor(maria, jose).

I regra: filho(X, Y) :- progenitor(Y, X).

I cabeca (da regra): filho(X, Y)I corpo (da regra): progenitor(Y, X)

I clausula: um fato ou uma regra (sao 7 nessa base)

I marcado por ponto final

I functor: filho(X,Y)

I argumentos: filho(X, Y)

Page 36: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 21 p r o g e n i t o r ( maria , j o s e ) .2 p r o g e n i t o r ( jo ao , j o s e ) .3 p r o g e n i t o r ( jo ao , ana ) .4 p r o g e n i t o r ( j o s e , j u l i a ) .5 p r o g e n i t o r ( j o s e , ı r i s ) .6 p r o g e n i t o r ( ı r i s , j o r g e ) .78 f i l h o (X, Y) :− p r o g e n i t o r (Y, X) .

Dando nomes aos bois:

I fato: progenitor(maria, jose).I regra: filho(X, Y) :- progenitor(Y, X).

I cabeca (da regra): filho(X, Y)I corpo (da regra): progenitor(Y, X)

I clausula: um fato ou uma regra (sao 7 nessa base)

I marcado por ponto final

I functor: filho(X,Y)

I argumentos: filho(X, Y)

Page 37: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 21 p r o g e n i t o r ( maria , j o s e ) .2 p r o g e n i t o r ( jo ao , j o s e ) .3 p r o g e n i t o r ( jo ao , ana ) .4 p r o g e n i t o r ( j o s e , j u l i a ) .5 p r o g e n i t o r ( j o s e , ı r i s ) .6 p r o g e n i t o r ( ı r i s , j o r g e ) .78 f i l h o (X, Y) :− p r o g e n i t o r (Y, X) .

Dando nomes aos bois:

I fato: progenitor(maria, jose).I regra: filho(X, Y) :- progenitor(Y, X).

I cabeca (da regra): filho(X, Y)

I corpo (da regra): progenitor(Y, X)

I clausula: um fato ou uma regra (sao 7 nessa base)

I marcado por ponto final

I functor: filho(X,Y)

I argumentos: filho(X, Y)

Page 38: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 21 p r o g e n i t o r ( maria , j o s e ) .2 p r o g e n i t o r ( jo ao , j o s e ) .3 p r o g e n i t o r ( jo ao , ana ) .4 p r o g e n i t o r ( j o s e , j u l i a ) .5 p r o g e n i t o r ( j o s e , ı r i s ) .6 p r o g e n i t o r ( ı r i s , j o r g e ) .78 f i l h o (X, Y) :− p r o g e n i t o r (Y, X) .

Dando nomes aos bois:

I fato: progenitor(maria, jose).I regra: filho(X, Y) :- progenitor(Y, X).

I cabeca (da regra): filho(X, Y)I corpo (da regra): progenitor(Y, X)

I clausula: um fato ou uma regra (sao 7 nessa base)

I marcado por ponto final

I functor: filho(X,Y)

I argumentos: filho(X, Y)

Page 39: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 21 p r o g e n i t o r ( maria , j o s e ) .2 p r o g e n i t o r ( jo ao , j o s e ) .3 p r o g e n i t o r ( jo ao , ana ) .4 p r o g e n i t o r ( j o s e , j u l i a ) .5 p r o g e n i t o r ( j o s e , ı r i s ) .6 p r o g e n i t o r ( ı r i s , j o r g e ) .78 f i l h o (X, Y) :− p r o g e n i t o r (Y, X) .

Dando nomes aos bois:

I fato: progenitor(maria, jose).I regra: filho(X, Y) :- progenitor(Y, X).

I cabeca (da regra): filho(X, Y)I corpo (da regra): progenitor(Y, X)

I clausula: um fato ou uma regra (sao 7 nessa base)

I marcado por ponto final

I functor: filho(X,Y)

I argumentos: filho(X, Y)

Page 40: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 21 p r o g e n i t o r ( maria , j o s e ) .2 p r o g e n i t o r ( jo ao , j o s e ) .3 p r o g e n i t o r ( jo ao , ana ) .4 p r o g e n i t o r ( j o s e , j u l i a ) .5 p r o g e n i t o r ( j o s e , ı r i s ) .6 p r o g e n i t o r ( ı r i s , j o r g e ) .78 f i l h o (X, Y) :− p r o g e n i t o r (Y, X) .

Dando nomes aos bois:

I fato: progenitor(maria, jose).I regra: filho(X, Y) :- progenitor(Y, X).

I cabeca (da regra): filho(X, Y)I corpo (da regra): progenitor(Y, X)

I clausula: um fato ou uma regra (sao 7 nessa base)I marcado por ponto final

I functor: filho(X,Y)

I argumentos: filho(X, Y)

Page 41: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 21 p r o g e n i t o r ( maria , j o s e ) .2 p r o g e n i t o r ( jo ao , j o s e ) .3 p r o g e n i t o r ( jo ao , ana ) .4 p r o g e n i t o r ( j o s e , j u l i a ) .5 p r o g e n i t o r ( j o s e , ı r i s ) .6 p r o g e n i t o r ( ı r i s , j o r g e ) .78 f i l h o (X, Y) :− p r o g e n i t o r (Y, X) .

Dando nomes aos bois:

I fato: progenitor(maria, jose).I regra: filho(X, Y) :- progenitor(Y, X).

I cabeca (da regra): filho(X, Y)I corpo (da regra): progenitor(Y, X)

I clausula: um fato ou uma regra (sao 7 nessa base)I marcado por ponto final

I functor: filho(X,Y)

I argumentos: filho(X, Y)

Page 42: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 21 p r o g e n i t o r ( maria , j o s e ) .2 p r o g e n i t o r ( jo ao , j o s e ) .3 p r o g e n i t o r ( jo ao , ana ) .4 p r o g e n i t o r ( j o s e , j u l i a ) .5 p r o g e n i t o r ( j o s e , ı r i s ) .6 p r o g e n i t o r ( ı r i s , j o r g e ) .78 f i l h o (X, Y) :− p r o g e n i t o r (Y, X) .

Dando nomes aos bois:

I fato: progenitor(maria, jose).I regra: filho(X, Y) :- progenitor(Y, X).

I cabeca (da regra): filho(X, Y)I corpo (da regra): progenitor(Y, X)

I clausula: um fato ou uma regra (sao 7 nessa base)I marcado por ponto final

I functor: filho(X,Y)

I argumentos: filho(X, Y)

Page 43: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 3

1 f e l i z ( i o l a n d a ) .2

3 e s c u t a m u s i c a ( mar ia ) .4 e s c u t a m u s i c a ( i o l a n d a ) :− f e l i z ( i o l a n d a ) .56 t o c a V i o l a o ( mar ia ) :− e s c u t a m u s i c a ( mar ia ) .7 t o c a V i o l a o ( i o l a n d a ) :− e s c u t a m u s i c a ( i o l a n d a ) .

Sao cinco clausulas na base de conhecimento.Sao tres predicados, feliz, escuta musica e ...

1 ?− t o c a V i o l a o ( mar ia ) .23 t r u e45 ?− t o c a V i o l a o ( i o l a n d a ) .67 t r u e

Page 44: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 3

1 f e l i z ( i o l a n d a ) .23 e s c u t a m u s i c a ( mar ia ) .4 e s c u t a m u s i c a ( i o l a n d a ) :− f e l i z ( i o l a n d a ) .5

6 t o c a V i o l a o ( mar ia ) :− e s c u t a m u s i c a ( mar ia ) .7 t o c a V i o l a o ( i o l a n d a ) :− e s c u t a m u s i c a ( i o l a n d a ) .

Sao cinco clausulas na base de conhecimento.Sao tres predicados, feliz, escuta musica e ...

1 ?− t o c a V i o l a o ( mar ia ) .23 t r u e45 ?− t o c a V i o l a o ( i o l a n d a ) .67 t r u e

Page 45: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 3

1 f e l i z ( i o l a n d a ) .23 e s c u t a m u s i c a ( mar ia ) .4 e s c u t a m u s i c a ( i o l a n d a ) :− f e l i z ( i o l a n d a ) .56 t o c a V i o l a o ( mar ia ) :− e s c u t a m u s i c a ( mar ia ) .7 t o c a V i o l a o ( i o l a n d a ) :− e s c u t a m u s i c a ( i o l a n d a ) .

Sao cinco clausulas na base de conhecimento.

Sao tres predicados, feliz, escuta musica e ...

1 ?− t o c a V i o l a o ( mar ia ) .23 t r u e45 ?− t o c a V i o l a o ( i o l a n d a ) .67 t r u e

Page 46: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 3

1 f e l i z ( i o l a n d a ) .23 e s c u t a m u s i c a ( mar ia ) .4 e s c u t a m u s i c a ( i o l a n d a ) :− f e l i z ( i o l a n d a ) .56 t o c a V i o l a o ( mar ia ) :− e s c u t a m u s i c a ( mar ia ) .7 t o c a V i o l a o ( i o l a n d a ) :− e s c u t a m u s i c a ( i o l a n d a ) .

Sao cinco clausulas na base de conhecimento.Sao tres predicados, feliz, escuta musica e ...

1 ?− t o c a V i o l a o ( mar ia ) .2

3 t r u e45 ?− t o c a V i o l a o ( i o l a n d a ) .67 t r u e

Page 47: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 3

1 f e l i z ( i o l a n d a ) .23 e s c u t a m u s i c a ( mar ia ) .4 e s c u t a m u s i c a ( i o l a n d a ) :− f e l i z ( i o l a n d a ) .56 t o c a V i o l a o ( mar ia ) :− e s c u t a m u s i c a ( mar ia ) .7 t o c a V i o l a o ( i o l a n d a ) :− e s c u t a m u s i c a ( i o l a n d a ) .

Sao cinco clausulas na base de conhecimento.Sao tres predicados, feliz, escuta musica e ...

1 ?− t o c a V i o l a o ( mar ia ) .23 t r u e4

5 ?− t o c a V i o l a o ( i o l a n d a ) .67 t r u e

Page 48: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 3

1 f e l i z ( i o l a n d a ) .23 e s c u t a m u s i c a ( mar ia ) .4 e s c u t a m u s i c a ( i o l a n d a ) :− f e l i z ( i o l a n d a ) .56 t o c a V i o l a o ( mar ia ) :− e s c u t a m u s i c a ( mar ia ) .7 t o c a V i o l a o ( i o l a n d a ) :− e s c u t a m u s i c a ( i o l a n d a ) .

Sao cinco clausulas na base de conhecimento.Sao tres predicados, feliz, escuta musica e ...

1 ?− t o c a V i o l a o ( mar ia ) .23 t r u e45 ?− t o c a V i o l a o ( i o l a n d a ) .6

7 t r u e

Page 49: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 3

1 f e l i z ( i o l a n d a ) .23 e s c u t a m u s i c a ( mar ia ) .4 e s c u t a m u s i c a ( i o l a n d a ) :− f e l i z ( i o l a n d a ) .56 t o c a V i o l a o ( mar ia ) :− e s c u t a m u s i c a ( mar ia ) .7 t o c a V i o l a o ( i o l a n d a ) :− e s c u t a m u s i c a ( i o l a n d a ) .

Sao cinco clausulas na base de conhecimento.Sao tres predicados, feliz, escuta musica e ...

1 ?− t o c a V i o l a o ( mar ia ) .23 t r u e45 ?− t o c a V i o l a o ( i o l a n d a ) .67 t r u e

Page 50: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 4

1 f e l i z ( v i c e n t e ) .2 e s c u t a m u s i c a ( bruno ) .3 t o c a V i o l a o ( v i c e n t e ) :− e s c u t a m u s i c a ( v i c e n t e ) ,4 f e l i z ( v i c e n t e ) .5 t o c a V i o l a o ( bruno ) :− f e l i z ( bruno ) .6 t o c a V i o l a o ( bruno ) :− e s c u t a m u s i c a ( bruno ) .7 t o c a V i o l a o ( bruno ) :− f e l i z ( bruno ) ; e s c u t a m u s i c a ( bruno ) .8 t o c a V i o l a o ( v i c e n t e ) :− \+ f e l i z ( mar ia ) .

Leia-se

I operador “dois pontos hıfen” “:-”: se

I operador “vırgula” ,: “e” (conjuncao)

I operador “ponto-e-vırgula” ; : “ou” (disjuncao)

I operador “\+”: negacao

Page 51: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Variaveis

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 ama( v i c e n t e , mar ia ) .5 ama( jo ao , mar ia ) .6 ama( abobr inha , c o e l h i n h o ) .7 ama( c o e l h i n h o , a b o b r i n h a ) .

1 ?− mulher (X) .2 X = mar ia

;3 X = j o a n a ;4 X = i o l a n d a .5 ?

Operador ; significa “ou”

Page 52: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Variaveis

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 ama( v i c e n t e , mar ia ) .5 ama( jo ao , mar ia ) .6 ama( abobr inha , c o e l h i n h o ) .7 ama( c o e l h i n h o , a b o b r i n h a ) .

1 ?− mulher (X) .2 X = mar ia ;3 X = j o a n a

;4 X = i o l a n d a .5 ?

Operador ; significa “ou”

Page 53: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Variaveis

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 ama( v i c e n t e , mar ia ) .5 ama( jo ao , mar ia ) .6 ama( abobr inha , c o e l h i n h o ) .7 ama( c o e l h i n h o , a b o b r i n h a ) .

1 ?− mulher (X) .2 X = mar ia ;3 X = j o a n a ;4 X = i o l a n d a

.5 ?

Operador ; significa “ou”

Page 54: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Variaveis

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 ama( v i c e n t e , mar ia ) .5 ama( jo ao , mar ia ) .6 ama( abobr inha , c o e l h i n h o ) .7 ama( c o e l h i n h o , a b o b r i n h a ) .

1 ?− mulher (X) .2 X = mar ia ;3 X = j o a n a ;4 X = i o l a n d a .5 ?

Operador ; significa “ou”

Page 55: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 5

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 ama( v i c e n t e , mar ia ) .5 ama( jo ao , mar ia ) .6 ama( abobr inha , c o e l h i n h o ) .7 ama( c o e l h i n h o , a b o b r i n h a ) .

Usando o operador vırgula ,

1 ?− ama( abobr inha , X) , mulher (X) .2 f a l s e

Page 56: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 6

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 ama( v i c e n t e , mar ia ) .5 ama( jo ao , mar ia ) .6 ama( abobr inha , c o e l h i n h o ) .7 ama( c o e l h i n h o , a b o b r i n h a ) .89 tem ciumes (X, Y) :− ama(X, Z) , ama(Y, Z) .

1 ?− tem ciumes ( jo ao ,W) .2 W = v i c e n t e ;3 W = j o a o ;4 f a l s e .5 ?−

Page 57: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Base de conhecimento 7

Fatos

1 g o s t a ( joao , p e i x e ) .2 g o s t a ( joao , mar ia ) .3 g o s t a ( maria , l i v r o ) .4 g o s t a ( pedro , l i v r o ) .5 g o s t a ( maria , f l o r ) .6 g o s t a ( maria , v i n h o ) .

Qual e o resultados de:

1 ?− g o s t a ( maria , X) .2 ?− g o s t a (X, l i v r o ) .3 ?− g o s t a (Quem , Oque ) .4 ?− g o s t a (X, Y) .5 ?− g o s t a (X, X) .6 ?− g o s t a ( a , b ) .7 ?− g o s t a (A, p e i x e ) .

Page 58: GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I Introdu˘c~ao aos conceitos b asicos da programa˘c~ao em l ogica e da linguagem Prolog

Referencias

I Luis, A. M. Palazzo, Introducao a programacao prolog,Educat, 1997

I Slides da Profa. Solange - ICMC - USP