Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
1.1 Fatos
Fatos ser vem pa r a est a belecer u m r ela cion a m en t o exist en t e en t r e objet os de
um determinado contexto de discurso. Por exemplo, num contexto bíblico,
pai(adão,cain).
é u m fa t o qu e est a belece qu e Adã o é pa i de Ca in , ou seja , qu e a r ela çã o pai
exist e en t r e os objet os den om in a dos adão e cain. E m P r olog, iden t ifica dor es
de r ela cion a m en t os sã o den om in a dos predicados e iden t ifica dor es de objet os
são denominados átomos. Tanto predicados quanto átomos devem iniciar com
letra minúscula.
1.2 Consultas
P a r a r ecu per a r in for m a ções de u m pr ogr a m a lógico, u sa m os consultas. Um a
con su lt a per gu n t a se u m a det er m in a do r ela cion a m en t o exist e en t r e objet os.
Por exemplo, a consulta
?- pai(adão,cain).
per gu n t a se a r ela çã o pai va le pa r a os objet os adão e cain ou , em ou t r a s
palavras, pergunta se Adão é pai de Cain. Então, dados os fatos estabelecidos
n o P r ogr a m a 1.1, a r espost a a essa con su lt a ser á yes. Sin t a t ica m en t e, fa t os
e con su lt a s sã o m u it o sim ila r es. A difer en ça é qu e fa t os sã o a gr u pa dos n o
a r qu ivo qu e con st it u i o pr ogr a m a , en qu a n t o con su lt a s sã o sen t en ça s digit a-
das no prompt (?-) do interpretador Prolog.
Respon der u m a con su lt a com r ela çã o a u m det er m in a do pr ogr a m a cor r es-
pon de a det er m in a r se a con su lt a é con seqü ên cia lógica desse pr ogr a m a , ou
seja, se a consulta pode ser deduzida dos fatos expressos no programa.
Linguagem Prolog 3
Outra consulta que poderíamos fazer com relação ao Programa 1.1 é
?- pai(adão,enos).
Nesse caso, porém, o sistema responderia no.
As con su lt a s t or n a m -se a in da m a is in t er essa n t es qu a n do em pr ega m os vari-
áveis, ou seja, identificadores para objetos não especificados. Por exem plo,
?- pai(X,abel).
pergunta qu em é o pai d e Abel ou , t ecn ica m en t e, qu e va lor de X t or n a a con-
su lt a u m a con seqü ên cia lógica do pr ogr a m a . A essa per gu n t a o sist em a r es-
ponderá X = adão. Note que variáveis devem iniciar com maiúscula.
Um a con su lt a com va r iá veis pode t er m a is de u m a r espost a . Nesse ca so, o
sist em a a pr esen t a r á a pr im eir a r espost a e fica r á a gu a r da n do a t é qu e seja
pressionado enter, qu e t er m in a a con su lt a , ou ponto-e-vírgula, qu e fa z com
que a próxima resposta possível, se houver, seja apresentada.
?- pai(adão,X).
X = cain ;
X = abel ;
X = seth ;
no
Linguagem Prolog 4
Nessa con su lt a , dizem os qu e a va r iá vel Y é compartilhada pelos objet ivos
pai(Y,enos) e pai(X,Y). Va r iá veis com pa r t ilh a da s sã o ú t eis por qu e n os
permitem estabelecer restrições entre objetivos distintos.
1.3 Regras
Regras n os per m it em defin ir n ova s r ela ções em t er m os de ou t r a s r ela ções já
existentes. Por exemplo, a regra
avô(X,Y) :- pai(X,Z), pai(Z,Y).
defin e a r ela çã o avô em t er m os da r ela çã o pai, ou seja , est a belece qu e X é
a vô de Y se X t em u m filh o Z qu e é pa i de Y. Com essa r egr a , podem os a gor a
realizar consultas tais como
?- avô(X,enos).
X = adão
F a t os e r egr a s sã o t ipos de cláusulas e u m con ju n t o de clá u su la s con st it u i
um programa lógico.
X avô Y
pai pai
Linguagem Prolog 5
A va n t a gem em se em pr ega r os gr a fos de r ela cion a m en t os é qu e eles n os
per m it em visu a liza r m elh or os r ela cion a m en t os exist en t es en t r e a s va r iá veis
usadas numa regra.
Com o m a is u m exem plo, va m os defin ir a r ela çã o irmão em t er m os da r ela-
ção pai, já exist en t e. P odem os dizer qu e du a s pessoa s dist in t a s sã o ir m ã s se
ambas têm o mesmo pai. Essa regra é representada pelo seguinte grafo:
X irmão Y
pai pai
1.4 Exercícios
1.1. Digite o Programa 1.1, incluindo as regras que definem as relações avô e
irmão, e realize as seguintes consultas:
a) Quem são os filhos de Adão?
b) Quem são os netos de Adão?
c) Quem são os tios de Enos?
Linguagem Prolog 6
1.2. Considere a árvore genealógica a seguir:
+ +
Ana Ivo Bia Gil
Noé Gal
a ) Usa n do fatos, defin a a s r ela ções pai e mãe. E m segu ida , con su lt e o
sistema para ver se suas definições estão corretas.
b) Acr escen t e a o pr ogr a m a os fa t os n ecessá r ios pa r a defin ir a s r ela ções
homem e mulher. P or exem plo, pa r a est a belecer qu e An a é m u lh er e
Ivo é homem, acrescente os fatos mulher(ana) e homem(ivo).
c) Usa n do du a s r egr a s, defin a a r ela çã o gerou(X,Y) t a l qu e X ger ou Y
se X é pa i ou m ã e de Y. F a ça con su lt a s pa r a ver ifica r se su a defin içã o
est á cor r et a . P or exem plo, pa r a a con su lt a gerou(X,eva) o sist em a
deverá apresentar as respostas X = ana e X = ivo.
d) Usando relações já existentes, crie regras para definir as relações fi-
lho, filha, tio, tia, primo, prima, avô e avó. P a r a ca da r ela-
çã o, desen h e o gr a fo de r ela cion a m en t os, codifiqu e a r egr a cor r espon-
dente e faça consultas para verificar a corretude.
Linguagem Prolog 7
Capítulo 2
Banco de Dados Dedutivo
Um con ju n t o de fa t os e r egr a s defin em u m ba n co de da dos dedu t ivo, com a
mesma funcionalidade de um banco de dados relacional.
2.1 Aritmética
P r olog ofer ece u m pr edica do especia l is, bem com o u m con ju n t o operadores,
através dos quais podemos efetuar operações aritméticas.
?- X is 2+3.
X = 5
Os oper a dor es a r it m ét icos sã o + (adição), - (subtração), * (multiplicação),
mod (resto), / (divisão real), // (divisão inteira) e ^ (potenciação).
Linguagem Prolog 8
2.2 Comparação
P a r a r ea liza r com pa r a ções n u m ér ica s podem os u sa r os segu in t es pr edica dos
primitivos: =:= (igual) , =\= (diferente), > (maior), >= (m aior ou igu al), <
(menor) e =< (m en or ou igu al). P or exem plo, com esses pr edica dos, podem os
realizar consultas tais como:
A área do Brasil é igual à área dos Estados Unidos?
?- país(brasil,X,_), país(eua,Y,_), X =:= Y.
X = 9
Y = 9
Yes
A população dos Estados Unidos é maior que a população da Índia?
?- país(eua,_,X), país(índia,_,Y), X > Y.
No
Usa n do os pr in cípios de m odela gem lógica de da dos (1F N), podem os r epr e-
sentar as informações desse quadro através do uso de duas tabelas: a primei-
r a con t en do in for m a ções sobr e os fu n cion á r ios e a segu n da con t en do in for-
m a ções sobr e os depen den t es. E m P r olog, essa s t a bela s podem ser r epr esen-
tadas por meio de dois predicados distintos: func e dep.
Linguagem Prolog 9
Agora, com base no Programa 2.2, podemos, por exemplo, consultar o sistema
para recuperar os dependentes de Ivo, veja:
?- func(C,ivo,_), dep(C,N).
C = 3
N = raí ;
C = 3
N = eva
Obser ve qu e n essa con su lt a , o ca m po chave C é u m a va r iá vel com pa r t ilh a da .
É gr a ça s a essa va r iá vel qu e o r ela cion a m en t o en t r e fu n cion á r io e depen den-
tes, existente na tabela original, é restabelecido.
Outra coisa que podemos fazer é descobrir de quem Ary é depen dente:
?- dep(C,ary), func(C,N,_).
C = 1
N = ana
Linguagem Prolog 10
2.4 O modelo de dados relacional
2.5 Exercícios
2.1. In clu a n o P r ogr a m a 2.1 u m a r egr a pa r a o pr edica do dens(P,D), qu e
r ela cion a ca da pa ís P à su a den sida de dem ogr á fica cor r espon den t e D.
Em seguida, faça consultas para descobrir:
a) qual a densidade demográfica de cada um dos países;
b) se a Índia é mais populosa que a China.
Linguagem Prolog 11
2.2. In clu a n o P r ogr a m a 2.2 a s in for m a ções da t a bela a ba ixo e fa ça a s con-
sultas indicadas a seguir:
Linguagem Prolog 12
Capítulo 3
Controle Procedimental
E m bor a P r olog seja u m a lin gu a gem essen cia lm en t e decla r a t iva , ela pr ovê
recursos que nos permitem interferir no comportamento dos programas.
3.1 Retrocesso
O n ú cleo do P r olog, den om in a do m otor d e in ferên cia, é a pa r t e do sist em a
qu e im plem en t a a est r a t égia de bu sca de solu ções. Ao sa t isfa zer u m objet ivo,
ger a lm en t e h á m a is de u m a clá u su la n o pr ogr a m a qu e pode ser em pr ega da ;
com o a pen a s u m a dela s pode ser u sa da de ca da vez, o m ot or de in fer ên cia
seleciona a primeira delas e reserva as demais para uso futuro.
1 Reduzir significa que um objetivo complexo é substituído por objetivos mais sim ples.
Linguagem Prolog 13
n a t iva . A figu r a a segu ir m ost r a a á r vor e de bu sca con st r u ída pelo m ot or de
inferência, até esse momento, bem como o resultado do retrocesso.
?- b(N).
3, N=[A,B,C]
1, A=0 2
1, B=0 2
?- d(C). ...
1, C=0 2, C=1
R=[0,0,0] R=[0,0,1]
3.2 Cortes
Nem sem pr e deseja m os qu e t oda s a s possíveis r espost a s a u m a con su lt a se-
ja m en con t r a da s. Nesse ca so, podem os in st r u ir o sist em a a podar os r a m os
indesejáveis da árvore de busca e ganhar eficiência.
Tom a n do com o exem plo o P r ogr a m a 3.1, pa r a desca r t a r os n ú m er os bin á r ios
in icia n do com o dígit o 1, ba st a r ia poda r o r a m o da á r vor e de bu sca qu e fa z
A=1. Isso pode ser feito do seguinte modo:
bin([A,B,C]) :- d(A), !, d(B), d(C).
A execu çã o do pr edica do ! (corte) poda t odos os r a m os a in da n ã o explor a dos,
a partir do ponto em que a cláusula com o corte foi selecionada.
?- bin(N).
3, N=[A,B,C]
1, A=0 2
?- d(B), d(C).
Linguagem Prolog 14
3.2.1 Evitando retrocesso desnecessário
Vamos a n a lisa r u m exem plo cu ja execu çã o en volve r et r ocesso desn ecessá r io
e veremos como evitar este problema com o uso de corte. Considere a função:
0 se x < 5
(x) = 1 se x 5 e x 9
2 se x 9
Linguagem Prolog 15
3.2.2 Estrutura condicional
E m bor a n ã o seja con sider a do u m est ilo decla r a t ivo pu r o, é possível cr ia r em
Prolog um predicado para implementar a estrutura condicional if-then-else.
Linguagem Prolog 16
3.3 Falhas
Vamos retomar o Programa 3.1 como exemplo:
?- b(N).
N = [0,0,0] ;
N = [0,0,1] ;
N = [0,1,0] ;
...
P odem os obser va r n a con su lt a a cim a qu e, a ca da r espost a exibida , o sist em a
fica aguardando o usuário pressionar a tecla ';' para buscar outra solução.
Uma forma de forçar o retrocesso em busca de soluções alternativas, sem que
o u su á r io t en h a qu e solicit a r , é fa zer com qu e a pós ca da r espost a obt ida o
sist em a en con t r e u m objet ivo insatisfatível. E m P r olog, esse objet ivo é repre-
sentado pelo predicado fail, cuja execução sempre provoca uma falha.
3.4 Exercícios
3.1. O programa a seguir associa a cada pessoa seu esporte preferido.
joga(ana,volei).
joga(bia,tenis).
joga(ivo,basquete).
joga(eva,volei).
joga(leo,tenis).
Linguagem Prolog 17
Su pon h a qu e deseja m os con su lt a r esse pr ogr a m a pa r a en con t r a r u m
parceiro P pa r a joga r com Leo. E n t ã o, podem os r ea liza r essa con su lt a de
duas formas:
a) ?- joga(P,X), joga(leo,X), P\=leo.
b) ?- joga(leo,X), joga(P,X), P\=leo.
Desenhe as árvores de busca construídas pelo sistema ao responder cada
uma dessas consultas. Qual consulta é mais eficiente, por quê?
Linguagem Prolog 18
Capítulo 4
Programação Recursiva
Recu r sivida de é fu n da m en t a l em P r olog; gr a ça s a o seu u so, pr ogr a m a s r ea l-
mente práticos podem ser implementados.
4.1 Recursividade
A recursividade é um princípio que nos permite obter a solução de um proble-
m a a pa r t ir da solu çã o de u m a in st â n cia m en or dele m esm o. P a r a a plica r
esse pr in cípio, devem os a ssu m ir com o h ipót ese qu e a solu çã o da in st â n cia
m en or é con h ecida . P or exem plo, su pon h a qu e deseja m os ca lcu la r 2 11. Um a
in st â n cia m en or desse pr oblem a é 2 10 e, pa r a essa in st â n cia , "sa bem os" qu e a
solução é 1024. Então, como 2 210 2 11, concluímos que 2 11 2 1024 2048.
problema
solução
original
final
simplifica usa
A figu r a a cim a ilu st r a o pr in cípio de r ecu r sivida de. De m odo ger a l, pr ocede-
m os da segu in t e m a n eir a : sim plifica m os o problem a origin al t r a n sfor mando-
o n u ma instância m en or; en t ã o, obtemos a solução pa r a essa in st â n cia e a
usamos para construir a solução final, correspondente ao problema original.
O qu e é difícil de en t en der , a priori, é com o a solu çã o pa r a a in st â n cia m en or
é obt ida . P or ém , n ã o pr ecisa m os n os pr eocu pa r com essa pa r t e. A solu çã o da
in st â n cia m en or é ger a da pelo pr ópr io m eca n ism o da r ecu r sivida de. Sen do
a ssim , t u do o qu e pr ecisa m os fa zer é en con t r a r u m a sim plifica çã o a dequ a da
para o problema em questão e descobrir como a solução obtida recursivamen-
te pode ser usada para construir a solução final.
Linguagem Prolog 19
Programa 4.1: Cálculo de potência.
% pot(Base,Expoente,Potência)
pot(_,0,1). % base
pot(B,N,P) :- % passo
N>0, % condição do passo
M is N-1, % simplifica o problema
pot(B,M,R), % obtém solução da instância menor
P is B*R. % constrói solução final
pot(2,3,R) obtemos
R=8
3 1 2
2 1 2
1 1 2
fat(3,R) obtemos
R=6
3 1 3
2 1 2
1 1 1
Linguagem Prolog 21
X ancestral Y
pai
X ancestral Y
pai ancestral
Veja uma consulta que poderia ser feita com o Programa 4.3:
?- ancestral(X,enos).
X = seth ;
X = adão
X acima Y
sobre
X acima Y
sobre acima
Linguagem Prolog 22
D
B
C
A
Veja uma consulta que poderia ser feita com o Programa 4.4:
?- acima(X,a).
X = b ;
X = d
4.4 Exercícios
4.1. Defin a u m pr edica do r ecu r sivo pa r a ca lcu la r o pr odu t o de dois n ú m er os
naturais usando apenas soma e subtração.
4.2. Defina um predicado recursivo exibir um número natural em binário.
4.3. O gr a fo a segu ir r epr esen t a u m m a pa , cu ja s cida des sã o r epr esen t a da s
por let r a s e cu ja s est r a da s (de sen t ido ú n ico) sã o r epr esen t a dos por n ú-
meros, que indicam sua extensão em km.
25
A B
32
19
23 E
C
26
14 28
D 30 F
Linguagem Prolog 23
Capítulo 5
Listas e Estruturas
List a s e est r u t u r a s sã o os dois m eca n ism os bá sicos exist en t es n a lin gu a gem
Prolog para criação de estruturas de dados mais complexas.
5.1 Listas
Uma lista é u m a seqü ên cia lin ea r de it en s, sepa r a dos por vír gu la s e delim i-
t a dos por colch et es. A list a vazia é r epr esen t a da por [] e u m a list a com pelo
m en os u m it em é r epr esen t a da por [X|Y], on de X é a cabeça (pr im eir o it em )
e Y é a cauda (demais itens) dessa lista.
Por exemplo, para selecionar o terceiro item de uma lista podemos fazer:
?- [_,_,X|_] = [a,b,c,d,e].
X = c
Yes
Linguagem Prolog 24
5.1.1 Tratamento recursivo de listas
Usa n do o pr in cípio de r ecu r sivida de podem os per cor r er u m a list a a cessa n do
seus itens, um a um, seqüencialmente.
Linguagem Prolog 25
Ou t r o pr edica do ba st a n t e ú t il é a qu ele a pr esen t a do n o P r ogr a m a 5.3. Con-
for m e a pr im eir a clá u su la est a belece, qu a n do u m a list a va zia é a n exa da a
u m a list a B, o r esu lt a do ser á a pr ópr ia list a B. Ca so con t r á r io, se a pr im eir a
list a n ã o for va zia , en t ã o podem os a n exa r a su a ca u da A com a segu n da list a
B e, depois, prefixar sua cabeça X ao resultado obtido C.
O pr edica do anexa t em com o fin a lida de bá sica a n exa r du a s list a s, m a s t a m-
bém pode ser usado de outras formas interessantes.
?- anexa([a,b],[c,d],L).
L = [a,b,c,d]
?- anexa([a,b],L, [a,b,c,d]).
L = [c,d]
?- anexa(X,Y,[a,b,c]).
X = []
Y = [a,b,c] ;
X = [a]
Y = [b,c] ;
X = [a, b]
Y = [c] ;
X = [a,b,c]
Y = []
Linguagem Prolog 26
% intercala(A,B,L) : intercala A e B gerando L
intercala([],B,B).
intercala(A,[],A).
intercala([X|A],[Y|B],[X|C]) :-
X =< Y,
intercala(A,[Y|B],C).
intercala([X|A],[Y|B],[Y|C]) :-
X > Y,
intercala([X|A],B,C).
Linguagem Prolog 27
5.2 Estruturas
Estruturas sã o objet os de da dos qu e possu em u m a qu a n t ida de fixa de com-
pon en t es, ca da u m deles poden do ser a cessa do in dividu a lm en t e. P or exem-
plo, data(6,agosto,2003) é u m a est r u t u r a cu jos com pon en t es sã o 6, a-
gosto e 2003. P a r a com bin a r os com pon en t es de u m a est r u t u r a u sa m os u m
functor. Nesse exem plo, o fu n ct or é a pa la vr a data. Um a est r u t u r a t em a
forma de um fato, mas pode ser usada como argumento de um predicado.
A B
5 C
0 3 7 13 x
Linguagem Prolog 28
Programa 5.6: Verificando linhas verticais e horizontais.
vertical( linha(ponto(X,_), ponto(X,_)) ).
horizontal( linha(ponto(_,Y), ponto(_,Y)) ).
5.3 Exercícios
5.1. Defin a o pr edicado último(L,U), qu e det er m in a o ú lt im o it em U n u m a
lista L. Por exemplo, último([a,b,c],U), resulta em U=c.
5.2. Defin a o pr edica do tam(L,N), qu e det er m in a o n ú m er o de it en s N exis-
tente numa lista L. Por exemplo, tam([a,b,c],N), resulta em N=3.
Linguagem Prolog 29
5.3. Defin a o pr edica do soma(L,S) qu e ca lcu la a som a S dos it en s da list a L.
Por exemplo, soma([4,9,1],S) resulta em S=14.
5.4. Defina o predicado máx(L,M) que determina o item máximo M na lista L.
Por exemplo, máx[4,9,1],M) resulta em M=9.
5.5. Usa n do o pr edica do anexa, defin a o pr edica do inv(L,R) qu e in ver t e a
lista L. Por exemplo, inv([b, c, a], R) resulta em R=[a,c,b].
5.6. Usa n do o pr edica do inv, defin a o pr edica do sim(L) qu e ver ifica se u m a
lista é simétrica. Por exemplo, sim([a,r,a,r,a]) resulta em yes.
5.7. Usa n do a t a bela d(0,zero), d(1,um), ..., d(9,nove), defin a o pr edi-
cado txt(D,P) qu e con ver t e u m a list a de dígit os n u m a list a de pa la-
vras. Por exemplo, txt([7,2,1],P) resulta em P=[sete,dois,um].
5.8. O gr a fo a segu ir r epr esen t a u m m a pa , cu ja s cida des sã o r epresentadas
por letras e cujas estradas são representados por nú meros.
1
A B
5
3
2 E
C
8
4 6
D 7 F
Linguagem Prolog 30
Capítulo 6
Base de Dados Dinâmica
Ba se de da dos din â m ica é u m r ecu r so ba st a n t e ú t il pa r a im plem en t a r lógica
não-monotônica e programas que adquirem conhecimento dinamicamente.
?- listing(joga).
joga(hortência,basquete).
joga(pelé,futebol).
joga(guga,tênis).
joga(oscar,basquete).
Yes
Linguagem Prolog 31
P a r a r em over u m a clá u su la da ba se de da dos, u sa m os o pr edica do retract.
Esse predicado recebe uma estrutura como argumento e remove da base uma
ou mais cláusulas (por retrocesso) que unificam com essa estrutu ra:
?- retract(joga(X,basquete)).
X = hortência ;
X = oscar ;
No
?- listing(joga).
joga(pelé, futebol).
joga(guga, tênis).
Yes
Linguagem Prolog 33
carrega(A) :-
exists_file(A),
consult(A)
;
true.
pergunta(E) :-
format('~nQual o estado cuja capital você quer saber? '),
gets(E).
responde(E) :-
capital(C, E),
!,
format('A capital de ~w é ~w.~n',[E,C]).
responde(E) :-
format('Também não sei. Qual é a capital de ~w? ',[E]),
gets(C),
asserta(capital(C,E)).
continua(R) :-
format('~nContinua? [s/n] '),
get_char(R),
get_char('\n').
gets(S) :-
read_line_to_codes(user,C),
name(S,C).
salva(P,A) :-
tell(A),
listing(P),
told.
Linguagem Prolog 34
6.5 Exercícios
6.1. Su pon do qu e a ba se de da dos est eja in icia lm en t e va zia , in diqu e qu a l
será o seu conteúdo após terem sido executadas as seguintes consultas.
?- asserta( metal(ferro) ).
?- assertz( metal(cobre) ).
?- asserta( metal(ouro) ).
?- assertz( metal(zinco) ).
?- retract( metal(X) ).
6.2. Im plem en t e os pr edica dos liga, desliga e lâmpada pa r a qu e eles fu n-
cionem conforme indicado pelos exemplos a seguir:
?- liga, lâmpada(X).
X = acessa
Yes
?- desliga, lâmpada(X).
X = apagada
Yes
6.3. O pr edica do asserta a dicion a u m fa t o à ba se de da dos, in con dicion a l-
m en t e, m esm o qu e ele já est eja lá . P a r a im pedir essa r edu n dâ n cia , defi-
n a o pr edica do memorize, t a l qu e ele seja sem elh a n t e a asserta, m a s
só adicione à base de dados fatos inéditos.
6.4. Su pon h a u m r obô ca pa z de andar a t é u m cer t o loca l e pegar ou soltar
objetos. Além disso, suponha que esse robô mantém numa base de dados
su a posiçã o cor r en t e e a s r espect iva s posições de u m a sér ie de objet os.
Implemente os predicados pos(Obj,Loc), ande(Dest), pegue(Obj) e
solte(Obj), de m odo qu e o com por t a m en t o desse r obô possa ser sim u-
lado, conforme exemplificado a seguir:
?- pos(O,L).
O = robô
L = garagem ;
O = tv
L = sala ;
No
?- pegue(tv), ande(quarto), solte(tv), ande(cozinha).
anda de garagem até sala
pega tv
anda de sala até quarto
solta tv
anda de quarto até cozinha
Yes
Linguagem Prolog 35
6.5. Modifiqu e o pr ogr a m a desen volvido n o exer cício a n t er ior de m odo qu e,
qu a n do for solicit a do a o r obô pega r u m objet o cu ja posiçã o é descon h eci-
da , ele per gu n t e a o u su á r io on de est á esse objet o e a t u a lize a su a ba se
de dados com a nova informação. Veja um exemplo:
?- pos(O,L).
O = robô
L = cozinha ;
O = tv
L = quarto ;
No
?- pegue(lixo), ande(rua), solte(lixo), ande(garagem).
Onde está lixo? quintal
anda de cozinha até quintal
pega lixo
anda de quintal até rua
solta lixo
anda de rua até garagem
Yes
?- pos(O,L).
O = robô
L = garagem ;
O = lixo
L = rua ;
O = tv
L = quarto ;
No
6.6. Acr escen t e t a m bém a o pr ogr a m a do r obô o pr edica do leve(Obj,Loc),
que leva um objeto até um determinado local. Por exemplo:
?- leve(tv,sala).
anda de garagem até quarto
pega tv
anda de quarto até sala
solta tv
Yes
Linguagem Prolog 36
Bibliografia
Ma is det a lh es sobr e a pr ogr a m a çã o em P r olog podem ser obt idos n a s segu in-
tes referências.
[1] B RATKO, I. Prolog Program m in g for Artificial In telligen ce, 2 nd E dit ion ,
Addison-Wesley, 1990.
Linguagem Prolog 37
This document was created with Win2PDF available at http://www.win2pdf.com.
The unregistered version of Win2PDF is for evaluation or non-commercial use only.
This page will not be added after purchasing Win2PDF.