Buscar

Linguagens de Programação - Introdução a Linguagem Prolog

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

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
Você viu 3, do total de 26 páginas

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

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
Você viu 6, do total de 26 páginas

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

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
Você viu 9, do total de 26 páginas

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

Introduc¸a˜o a Linguagem Prolog
Universidade de Bras´ılia
Rodrigo Bonifa´cio
12 de maio de 2011
Rodrigo Bonifa´cio Introduc¸a˜o a Linguagem Prolog
Essa parte do curso e´ baseada no material “Artificial Intelligence
Programming in Prolog”, desenvolvido por Tim Smith, Escola de
Informa´tica, Universidade de Edingburgh.
Rodrigo Bonifa´cio Introduc¸a˜o a Linguagem Prolog
O que e´ Prolog?
PROgramation et Logique
Rodrigo Bonifa´cio Introduc¸a˜o a Linguagem Prolog
O que e´ Prolog?
PROgramation et Logique
Padra˜o ISO, cuja sintaxe inspirada na versa˜o de Edinburgh
Linguagem declarativa, com alto n´ıvel de abstrac¸a˜o,
pertencente ao “paradigma lo´gico” e baseada em Cla´usulas
Horn.
Rodrigo Bonifa´cio Introduc¸a˜o a Linguagem Prolog
Aplicabilidade
Processamento de linguagens e grama´ticas
Representac¸a˜o e infereˆncia de conhecimento
Unificac¸a˜o e casamento de padro˜es
. . .
Rodrigo Bonifa´cio Introduc¸a˜o a Linguagem Prolog
Aplicabilidade
Processamento de linguagens e grama´ticas
Representac¸a˜o e infereˆncia de conhecimento
Unificac¸a˜o e casamento de padro˜es
. . .
Na˜o muito recomendada para
Representar estruturas de dados complexas
Entrada e sa´ıda e GUI
Rodrigo Bonifa´cio Introduc¸a˜o a Linguagem Prolog
Software a ser usado
Interpretador SWIProlog (http://www.swi-prolog.org/)
Qualquer editor de texto (mas recomendo o emacs)
Rodrigo Bonifa´cio Introduc¸a˜o a Linguagem Prolog
Software a ser usado
Interpretador SWIProlog (http://www.swi-prolog.org/)
Qualquer editor de texto (mas recomendo o emacs)
Instale o SWIProlog o quanto antes
Rodrigo Bonifa´cio Introduc¸a˜o a Linguagem Prolog
Software a ser usado
Interpretador SWIProlog (http://www.swi-prolog.org/)
Qualquer editor de texto (mas recomendo o emacs)
Instale o SWIProlog o quanto antes, implemente os exemplos
e exerc´ıcios para tirar du´vidas.
Rodrigo Bonifa´cio Introduc¸a˜o a Linguagem Prolog
Um programa e´ uma base de
dados contendo fatos e regras.
Rodrigo Bonifa´cio Introduc¸a˜o a Linguagem Prolog
Elementos ba´sicos (1/2)
Fatos: sentenc¸as sempre verdadeiras
Exemplos:
Java e´ uma linguage OO
Haskell e´ uma linguagem funcional
Prolog e´ uma linguagem lo´gica
C++ e´ uma linguagem ancestral de Java
Rodrigo Bonifa´cio Introduc¸a˜o a Linguagem Prolog
Elementos ba´sicos (1/2)
Fatos: sentenc¸as sempre verdadeiras
Exemplos:
Java e´ uma linguage OO
Haskell e´ uma linguagem funcional
Prolog e´ uma linguagem lo´gica
C++ e´ uma linguagem ancestral de Java
Em Prolog
paradigma ( java , o r i e n t a d aOb j e t o s ) .
paradigma ( h a s k e l l , f u n c i o n a l ) .
paradigma ( p ro log , l o g i c o ) .
a n c e s t r a l ( java , cpp ) .
Rodrigo Bonifa´cio Introduc¸a˜o a Linguagem Prolog
Elementos ba´sicos (2/2)
Regras: estabelecem relac¸o˜es entre sentenc¸as
Exemplos:
Toda linguagem funcional ou lo´gica e´ declarativa.
A ancestral da ancestral de uma linguagem X, tambe´m e´
ancestral de X.
Rodrigo Bonifa´cio Introduc¸a˜o a Linguagem Prolog
Elementos ba´sicos (2/2)
Regras: estabelecem relac¸o˜es entre sentenc¸as
Exemplos:
Toda linguagem funcional ou lo´gica e´ declarativa.
A ancestral da ancestral de uma linguagem X, tambe´m e´
ancestral de X.
Em Prolog:
d e c l a r a t i v o (X) :−
paradigma (X, l o g i c o ) ; paradigma (X, f u n c i o n a l ) .
a n c e s t r a l (X, Z) :− a n c e s t r a l (X,Y) , a n c e s t r a l (Y, Z ) .
Rodrigo Bonifa´cio Introduc¸a˜o a Linguagem Prolog
Para executar um programa,
realizamos consultas a base de
dados.
Rodrigo Bonifa´cio Introduc¸a˜o a Linguagem Prolog
Para executar um programa,
realizamos consultas a base de
dados.
Quais sa˜o as linguagens declarativas?
Quais sa˜o as linguagens ancestrais de Java?
Quais sa˜o as linguagens h´ıbridas?
Rodrigo Bonifa´cio Introduc¸a˜o a Linguagem Prolog
Para executar um programa,
realizamos consultas a base de
dados.
Quais sa˜o as linguagens declarativas?
Quais sa˜o as linguagens ancestrais de Java?
Quais sa˜o as linguagens h´ıbridas?
Ou em Prolog
declarativa(X).
ancestral(java, X).
hibrida(X).
Rodrigo Bonifa´cio Introduc¸a˜o a Linguagem Prolog
Usando Prolog (1/2)
Edite um arquivo com extensa˜o “.pl” contendo a base de
dados de fatos e regras.
Rodrigo Bonifa´cio Introduc¸a˜o a Linguagem Prolog
Usando Prolog (1/2)
Edite um arquivo com extensa˜o “.pl” contendo a base de
dados de fatos e regras.
Inicie o interpretador SWIProlog, digitando no terminal
swipl, ou da forma que voceˆ achar mais conveniente.
Rodrigo Bonifa´cio Introduc¸a˜o a Linguagem Prolog
Usando Prolog (1/2)
Edite um arquivo com extensa˜o “.pl” contendo a base de
dados de fatos e regras.
Inicie o interpretador SWIProlog, digitando no terminal
swipl, ou da forma que voceˆ achar mais conveniente.
bash-3.2$ swipl
% library(swi_hooks) compiled into pce_swi_hooks 0.00 sec, 3,928 bytes
Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 5.10.2)
Copyright (c) 1990-2010 University of Amsterdam, VU Amsterdam
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
Please visit http://www.swi-prolog.org for details.
For help, use ?- help(Topic). or ?- apropos(Word).
?-
Rodrigo Bonifa´cio Introduc¸a˜o a Linguagem Prolog
Usando Prolog (1/2)
No interpretador, carregue o arquivo “.pl” usando o comando
[caminho/nome arquivo]
Rodrigo Bonifa´cio Introduc¸a˜o a Linguagem Prolog
Usando Prolog (1/2)
No interpretador, carregue o arquivo “.pl” usando o comando
[caminho/nome arquivo]
?- [exemplos/linguagens].
% exemplos/linguagens compiled 0.00 sec, 4,208 bytes
true.
?-
Rodrigo Bonifa´cio Introduc¸a˜o a Linguagem Prolog
Usando Prolog (1/2)
No interpretador, carregue o arquivo “.pl” usando o comando
[caminho/nome arquivo]
?- [exemplos/linguagens].
% exemplos/linguagens compiled 0.00 sec, 4,208 bytes
true.
?-
Neste momento, e´ poss´ıvel realizar consultas a base de fatos e
regras definida no arquivo “.pl”
?- hibrida(X).
X = scala ;
false
?-
Rodrigo Bonifa´cio Introduc¸a˜o a Linguagem Prolog
Demonstrac¸a˜o de uso do SWIPL
Rodrigo Bonifa´cio Introduc¸a˜o a Linguagem Prolog
Exemplo:
f i l m e ( c a e s a l u g u e l , d i r ( t a r a n t i n o ) , a t o r ( k e i t e l ) , gen ( su spen s e ) , 1 9 9 2 ) .
f i l m e ( l a r a n j a mec an i c a , d i r ( k ub r i c k ) , a t o r ( mcDowell ) , gen ( su spen s e ) , 1 9 7 1 ) .
f i l m e ( o i l um inado , d i r ( k ub r i c k ) , a t o r ( n i c h o l s o n ) , gen ( t e r r o r ) , 1980 ) .
f i l m e ( o g r i t o , d i r ( s h im i zu ) , a t o r ( k e i t e l ) , gen ( t e r r o r ) , 2004 ) .
Rodrigo Bonifa´cio Introduc¸a˜o a Linguagem Prolog
Exemplo:
f i l m e ( c a e s a l u g u e l , d i r ( t a r a n t i n o ) , a t o r ( k e i t e l ) , gen ( su spen s e ) , 1 9 9 2 ) .
f i l m e ( l a r a n j a mec an i c a , d i r ( k ub r i c k ) , a t o r ( mcDowell ) , gen ( su spen s e ) , 1 9 7 1 ) .
f i l m e ( o i l um inado , d i r ( k ub r i c k ) , a t o r ( n i c h o l s o n ) , gen ( t e r r o r ) , 1980 ) .
f i l m e ( o g r i t o , d i r ( s h im i zu ) , a t o r ( k e i t e l ) , gen ( t e r r o r ) , 2004 ) .
Quais as respostas para:
filme(caes aluguel, X).
filme(caes aluguel, dir(X), , , ).
filme(X, dir(kubrick), , gen(Y), 1980).
Traduza para Prolog: “Quem dirigiu o filme O Grito”
Rodrigo Bonifa´cio Introduc¸a˜o a Linguagem Prolog

Outros materiais