• Nenhum resultado encontrado

Ou, como programar (quase) sem sofrimento. 9 de Dezembro de 2008

N/A
N/A
Protected

Academic year: 2022

Share "Ou, como programar (quase) sem sofrimento. 9 de Dezembro de 2008"

Copied!
51
0
0

Texto

(1)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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

(2)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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

(3)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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.

(4)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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.

(5)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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

(6)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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

(7)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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

(8)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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).

(9)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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, ).

(10)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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).

(11)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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).

(12)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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).

(13)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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).

(14)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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:

?-

(15)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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’).

(16)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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

(17)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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

(18)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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

(19)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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

(20)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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!

(21)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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

(22)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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

(23)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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 <,<,>=,=<,=:=,=\=

(24)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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.

(25)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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.

(26)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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’).

(27)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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’).

(28)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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?

(29)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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?

(30)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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?

(31)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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?

(32)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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.

(33)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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]].

(34)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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).

(35)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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).

(36)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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. . .

(37)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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’).

(38)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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’).

(39)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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

(40)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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).

(41)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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).

(42)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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).

(43)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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).

(44)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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).

(45)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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).

(46)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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

(47)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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

(48)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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

(49)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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

(50)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸ao Por que estudar Prolog?

Estruturas b´asicas Fatos

Regras Consultas

BackTracking Aritm´etica Estruturas de Dados mais elaboradas Challenge Referˆencias

E agora?

(51)

Prolog, uma abordagem intuitiva elio Batista de

Ara´ujo J´unior

O que ´e Prolog?

Motiva¸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.

Referências

Documentos relacionados

Foi possível recomendar melhorias na gestão, nomeadamente relacionadas com a capacidade instalada face ao serviço pretendido, tendo em conta os recursos presentes e

• Árvores são ideais para armazenar hierarquias, além de serem mais rápidas e eficientes do que as estruturas de dados lineares... • É formada por um “conjunto de

– Os elementos devem estar ordenados – Realizar a busca pelo meio do vetor.

• Estas árvore podem assumir diferentes formas quando criadas ou modificadas. – A ordem de inserção ou remoção influem no formato

O TBC surge como uma das muitas alternativas pensadas para as populações locais, se constituindo como uma atividade econômica solidária que concatena a comunidade com os

Sim. O livro preenche as características de brinde. Como no caso anterior, só não poderia ser aceito se a empresa houvesse destinado à mesma autoridade outro brinde nos últimos

Apesar de o mercado acionário brasileiro ter se tornado mais importante para a economia brasileira, sobretudo entre o período de 2002 para 2005 (Tabela 3), sua repre- sentatividade

Para análise da susceptibilidade à erosão dos solos que compunham as paredes da voçoroca, foram realizados ensaios de Pinhole (Furo de Agulha), Desagregação e Dispersão