Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
Prolog, uma abordagem intuitiva
Ou, como programar (quase) sem sofrimento
H´elio Batista de Ara´ujo J´unior
Universidade Federal do Rio Grande do Norte
9 de Dezembro de 2008
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
O que ´e Prolog?
Motiva¸c˜ao
Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas BackTracking Aritm´etica
Estruturas de Dados mais elaboradas Challenge
Referˆencias
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
O que ´e Prolog?
Prolog (Programmation enLogique), ´e uma linguagem de programa¸c˜ao funcional, que se embasa no paradigma l´ogico.
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
Vantagens do Prolog
I Programas curtos.
I Bugs geralmente f´aceis de achar(pelo menos na maioria dos casos, :P).
I Uma sintaxe que lembra o formalismo da L´ogica.
I Prolog ´e uma linguagem que possui in´umeras estruturas que facilitam a tarefa de programa¸c˜ao, entre elas talvez a mais forte seja o BackTracking, a capacidade do Prolog de numa consulta, sair buscando por uma resposta que a satisfa¸ca.
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
No que Prolog se firma?
Prolog ´e basicamente constitu´ıdo por trˆes coisas:
I Fatos
I Regras
I Consultas
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
No que Prolog se firma?
Prolog ´e basicamente constitu´ıdo por trˆes coisas:
I Fatos
I Regras
I Consultas
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
No que Prolog se firma?
Prolog ´e basicamente constitu´ıdo por trˆes coisas:
I Fatos
I Regras
I Consultas
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
Fatos
Fatos s˜ao cl´ausulas no banco de dados Prolog que ele julga como verdade, cujo objetivo ´e satisfazer as regras.
Example pai(maria,jo˜ao).
voa(p´assaro).
familia(joao,maria,joanita).
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
Regras
Regras tamb´em s˜aoCl´ausulas de Horn, lembrando que uma Cl´ausula de Horn tem a forma:
(p1∧p2∧p3∧. . .∧pn)→u (1)
Sendo P um conjunto de predicados enumer´avel, tal que pi,u ∈P e i = 1,2,3, . . . ,n. Ou seja, o predicadou ´e satisfeito satisfazendo os predicados antes da implica¸c˜ao.
Example
Repare na semelhan¸ca entre a Cl´ausula de Horn na Equa¸c˜ao 1 e as senten¸cas abaixo:
avo(X,Y):-pai(X,Z),pai(Z,Y).
eDaFamilia(X):-familia(X, , ).
eDaFamilia(X):-familia( ,X, ).
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
Como fazer consultas em Prolog?
Ap´os definir um banco de dados em Prolog podemos fazer perguntas sobre o mesmo.
Imagine ser o bloco abaixo, um arquivo com o nosso banco de dados Prolog.
familia.pl
paternidade(joao,maria).
←Fatos
paternidade(marcos,joaquim). paternidade(maria,concei¸c˜ao). paternidade(marieta,maria). paternidade(josileno,maria).
antepassado(X,Y):-paternidade(X,Y).
←Regras
antepassado(X,Y):-paternidade(X,Z),antepassado(Z,Y).
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
Como fazer consultas em Prolog?
Ap´os definir um banco de dados em Prolog podemos fazer perguntas sobre o mesmo.
Imagine ser o bloco abaixo, um arquivo com o nosso banco de dados Prolog.
familia.pl
paternidade(joao,maria).
←Fatos
paternidade(marcos,joaquim).
paternidade(maria,concei¸c˜ao).
paternidade(marieta,maria).
paternidade(josileno,maria).
antepassado(X,Y):-paternidade(X,Y).
←Regras
antepassado(X,Y):-paternidade(X,Z),antepassado(Z,Y).
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
Como fazer consultas em Prolog?
Ap´os definir um banco de dados em Prolog podemos fazer perguntas sobre o mesmo.
Imagine ser o bloco abaixo, um arquivo com o nosso banco de dados Prolog.
familia.pl
paternidade(joao,maria).
←Fatos
paternidade(marcos,joaquim).
paternidade(maria,concei¸c˜ao).
paternidade(marieta,maria).
paternidade(josileno,maria).
antepassado(X,Y):-paternidade(X,Y).
←Regras
antepassado(X,Y):-paternidade(X,Z),antepassado(Z,Y).
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
Como fazer consultas em Prolog?
Ap´os definir um banco de dados em Prolog podemos fazer perguntas sobre o mesmo.
Imagine ser o bloco abaixo, um arquivo com o nosso banco de dados Prolog.
familia.pl
paternidade(joao,maria). ←Fatos paternidade(marcos,joaquim).
paternidade(maria,concei¸c˜ao).
paternidade(marieta,maria).
paternidade(josileno,maria).
antepassado(X,Y):-paternidade(X,Y). ←Regras
antepassado(X,Y):-paternidade(X,Z),antepassado(Z,Y).
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
Agora abrimos o terminal Prolog, onde o prompt de comando se apresenta:
?-
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
Agora abrimos o terminal Prolog, onde o prompt de comando se apresenta:
Agora carregamos nosso arquivo:
?-consult(’familia.pl’).
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
Agora abrimos o terminal Prolog, onde o prompt de comando se apresenta:
E escrevemos:
?-paternidade(X,maria).
X=joao; X=maria; X=josileno Yes
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
Agora abrimos o terminal Prolog, onde o prompt de comando se apresenta:
Obtemos como resposta:
?-paternidade(X,maria).
X=joao;
X=maria; X=josileno Yes
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
Agora abrimos o terminal Prolog, onde o prompt de comando se apresenta:
Obtemos como resposta:
?-paternidade(X,maria).
X=joao;
X=maria;
X=josileno Yes
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
Agora abrimos o terminal Prolog, onde o prompt de comando se apresenta:
Obtemos como resposta:
?-paternidade(X,maria).
X=joao;
X=maria;
X=josileno Yes
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas BackTracking
Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
O trunfo do Prolog
Escrever programas com backtracking torna certas tarefas bastante simples. Vamos acompanhar alguns exemplos!
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
Fazendo contas
Prolog ´e uma linguagem simb´olica, mas possui um aparato destinado a opera¸c˜oes aritm´eticas. Vamos come¸car com algo que parece intuitivo. No terminal Prolog:
?- X = 1+2.
?- X is 1+2
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
Fazendo contas
Prolog ´e uma linguagem simb´olica, mas possui um aparato destinado a opera¸c˜oes aritm´eticas. Vamos come¸car com algo que parece intuitivo. No terminal Prolog:
?- X = 1+2.
?- X is 1+2
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
Operadores
Prolog j´a possui alguns operadores definidos (tamb´em chamados componentes built-in), como:
I +,-,*,/,div,mod
I <,<,>=,=<,=:=,=\=
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
Fibonnaci e Fatorial
Fatorial
fatorial(0,1):-!. fatorial(X,Y):-H is X-1, fatorial(H,G),
Y is X*G.
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
Fibonnaci e Fatorial
Fibonacci fibonacci(1,1):-!.
fibonacci(2,1):-!.
fibonacci(X,K):-T is X-1, Z is X-2, fibonacci(T,A), fibonacci(Z,B), K is A+B.
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
Vamos definir os nossos!
Prolog permite que o usu´ario defina operadores pr´oprios, tomando cuidado para n˜ao sobrescrever os que j´a existem.
Para isso vamos utilizar a cl´ausulaop:
:-op(Precedencia,Tipo,Functor).
Example
:-op(800,xfx,’´e filho de’). :-op(600,xfx,’gosta de’).
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
Vamos definir os nossos!
Prolog permite que o usu´ario defina operadores pr´oprios, tomando cuidado para n˜ao sobrescrever os que j´a existem.
Para isso vamos utilizar a cl´ausulaop:
:-op(Precedencia,Tipo,Functor).
Example
:-op(800,xfx,’´e filho de’).
:-op(600,xfx,’gosta de’).
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas
Challenge Referˆencias
Objetos
Prolog possui diversas estruturas, sendo estes chamados de Termos.
Definition
I Toda constante(ou ´atomo) ´e um termo
I Toda vari´avel ´e um termo
I Se t1, . . . ,tn s˜ao termos,ef ´e um ´atomo, ent˜ao
f(t1, . . . ,tn) tambem ´e um termo, sendof um operador
(ou functor) n-´ario
Pergunta
Algu´em j´a viu algo parecido antes?
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas
Challenge Referˆencias
Objetos
Prolog possui diversas estruturas, sendo estes chamados de Termos. Exemplos de termos Prolog:
I Atomos: a,b,maria,jo˜´ ao,’Da Silva Ribeiro’
I Vari´aveis:Joao,X,Z, , maria
I Predicados:f(x),pai(joao,maria),avo(X,marie)
Definition
I Toda constante(ou ´atomo) ´e um termo
I Toda vari´avel ´e um termo
I Se t1, . . . ,tn s˜ao termos,ef ´e um ´atomo, ent˜ao
f(t1, . . . ,tn) tambem ´e um termo, sendof um operador
(ou functor) n-´ario
Pergunta
Algu´em j´a viu algo parecido antes?
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas
Challenge Referˆencias
Objetos
Prolog possui diversas estruturas, sendo estes chamados de Termos. Vamos definir melhor esse conceito:
Definition
I Toda constante(ou ´atomo) ´e um termo
I Toda vari´avel ´e um termo
I Se t1, . . . ,tn s˜ao termos,ef ´e um ´atomo, ent˜ao
f(t1, . . . ,tn) tambem ´e um termo, sendof um operador
(ou functor) n-´ario
Pergunta
Algu´em j´a viu algo parecido antes?
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas
Challenge Referˆencias
Objetos
Prolog possui diversas estruturas, sendo estes chamados de Termos.
Definition
I Toda constante(ou ´atomo) ´e um termo
I Toda vari´avel ´e um termo
I Se t1, . . . ,tn s˜ao termos,ef ´e um ´atomo, ent˜ao
f(t1, . . . ,tn) tambem ´e um termo, sendof um operador
(ou functor) n-´ario
Pergunta
Algu´em j´a viu algo parecido antes?
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas
Challenge Referˆencias
Listas
Prolog possui estruturas de dados que lembram os arrays usados em C, s˜ao asListas.
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas
Challenge Referˆencias
Listas
Prolog possui estruturas de dados que lembram os arrays usados em C, s˜ao asListas.
Example
[a,b,c,d], [cabeca,cauda,X], [f(a,b),t], [a|[a,b]].
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas
Challenge Referˆencias
Listas
Prolog possui estruturas de dados que lembram os arrays usados em C, s˜ao asListas.
Exemplos de Opera¸c˜oes
%Verifica se um elemento est´a na lista pertence(X,[X|]).
pertence(X,[ |Y]):-pertence(X,Y).
%Concatena duas listas concatena([X],L,[X|L]).
concatena([H|T],L,[H|L1]):-concatena(T,L,L1).
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas
Challenge Referˆencias
Listas
Prolog possui estruturas de dados que lembram os arrays usados em C, s˜ao asListas.
Exemplos de Opera¸c˜oes
%Verifica se um elemento est´a na lista pertence(X,[X|]).
pertence(X,[ |Y]):-pertence(X,Y).
%Concatena duas listas concatena([X],L,[X|L]).
concatena([H|T],L,[H|L1]):-concatena(T,L,L1).
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas
Challenge Referˆencias
Listas
Prolog possui estruturas de dados que lembram os arrays usados em C, s˜ao asListas.
Mais algumas opera¸c˜oes. . .
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas
Challenge Referˆencias
Predicados Extra-L´ ogicos
I atom(X)
I integer(X)
I float(X)
I number(X)
I string(X)
I atomic(X)
I var(X)
I nonvar(X)
Um reconhecedor de tipos
classifica(X) :-var(X), !, nl, write(’Vari´avel N˜ao-instanciada’). classifica([ |]) :-!, nl, write(’Lista’).
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas
Challenge Referˆencias
Predicados Extra-L´ ogicos
I atom(X)
I integer(X)
I float(X)
I number(X)
I string(X)
I atomic(X)
I var(X)
I nonvar(X)
Um reconhecedor de tipos
classifica(X) :-var(X), !, nl, write(’Vari´avel N˜ao-instanciada’).
classifica([ |]) :-!, nl, write(’Lista’).
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas
Challenge Referˆencias
Mais alguns predicados
I Bagof
I Setof
I Findall
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas
Challenge Referˆencias
Mais alguns predicados
Bagof
bagof(Variavel,Predicado,Lista).
bagof(F,paternidade(F,maria),L).
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas
Challenge Referˆencias
Mais alguns predicados
Bagof
bagof(Variavel,Predicado,Lista).
bagof(F,paternidade(F,maria),L).
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas
Challenge Referˆencias
Mais alguns predicados
Setof
setof(Variavel,Predicado,Lista).
setof(F,paternidade(F,maria),L).
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas
Challenge Referˆencias
Mais alguns predicados
Setof
setof(Variavel,Predicado,Lista).
setof(F,paternidade(F,maria),L).
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas
Challenge Referˆencias
Mais alguns predicados
Findall
findall(Variavel,Predicado,Lista).
findall(F,paternidade(F,maria),L).
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas
Challenge Referˆencias
Mais alguns predicados
Findall
findall(Variavel,Predicado,Lista).
findall(F,paternidade(F,maria),L).
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
O Problema dos Quatro Quatros
Desafio
Como fazer um programa que devolve a f´ormula matem´atica de um n´umero escrito com 4 n´umeros 4, baseado em
algumas opera¸c˜oes simples?
Example 1 = 4+44+4 Example 2 = 4+44∗4 Example 3 = 4+4+44
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
O Problema dos Quatro Quatros
Desafio
Como fazer um programa que devolve a f´ormula matem´atica de um n´umero escrito com 4 n´umeros 4, baseado em
algumas opera¸c˜oes simples?
Example 1 = 4+44+4
Example 2 = 4+44∗4 Example 3 = 4+4+44
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
O Problema dos Quatro Quatros
Desafio
Como fazer um programa que devolve a f´ormula matem´atica de um n´umero escrito com 4 n´umeros 4, baseado em
algumas opera¸c˜oes simples?
Example 1 = 4+44+4 Example 2 = 4+44∗4
Example 3 = 4+4+44
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
O Problema dos Quatro Quatros
Desafio
Como fazer um programa que devolve a f´ormula matem´atica de um n´umero escrito com 4 n´umeros 4, baseado em
algumas opera¸c˜oes simples?
Example 1 = 4+44+4 Example 2 = 4+44∗4 Example 3 = 4+4+44
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
E agora?
Prolog, uma abordagem intuitiva H´elio Batista de
Ara´ujo J´unior
O que ´e Prolog?
Motiva¸c˜ao Por que estudar Prolog?
Estruturas b´asicas Fatos
Regras Consultas
BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias
Referˆ encias
Luiz A. M. Palazzo.
Introdu¸c˜ao `a Programa¸c˜ao Prolog.
1997.
Till Tantau.
The beamer class.
http://latex-beamer.sourceforge.net, 2007.