Sunteți pe pagina 1din 31

Prolog

Introduo

A programao em Prolog - que significa programao em lgica - no baseada no seqenciamento de procedimentos, mas na definio de relaes, na forma com a qual se representa o mundo que se quer implementar no computador.

Relao

Uma primeira concepo pode ser entendida por algumas perguntas:

o que se relaciona como o qu? entre que coisas do mundo que conhecemos existe relao? H relao entre este texto e o que estou pensando? H relao entre mim e minha me? H relao entre o motorista do nibus e seus passageiros? H relao entre dois irmos? H relao entre uma caneta que est sobre uma mesa? H uma relao entre uma cala e uma camisa? .....

Praticamente no h limites para uma viso de mundo que busca o relacionamento entre os objetos (fsicos ou no) deste mundo A importncia de considerar-se a relao como definidora dos elementos do mundo o que nos leva a consider-la de extrema utilidade na modelagem de representaes simblicas a nvel computacional

Histria e Aplicabilidade
A linguagem Prolog foi concebida por Colmerauer e Roussel em1972, sendo sua primeira verso feita em Fortran por Battani e Meloniem 1973 Desde ento tem sido utilizada para aplicaes de computao simblica, como

banco de dados relacionais compreenso de linguagem natural automao de projetos anlise de estruturas bioqumicas sistemas especialistas

Histria e Aplicabilidade
Prolog utilizado em tarefas que exijam a representao do conhecimento para execut-las Aplicaes como os sistemas especialistas e linguagem natural so exemplos claros da utilidade da linguagem Prolog, uma vez que necessitam de regras fornecidas pela experincia humana para que sejam eficientes

Histria e Aplicabilidade

Um sistema especialista que necessite realizar um diagnstico precisa que a experincia humana do especialista esteja inserida nas regras de produo para que produza um resultado correto A lngua natural tambm possui peculiaridades que somente a experincia humana pode traduzir. A estruturao de frases e a semntica inerente a elas fruto do aprendizado,que, at o momento, somente o homem pode reproduzir em regras

Estruturas/Comandos

Fatos
Baseiam-se no seguinte comando:
predicado(arg 1[,arg 2,...,arg n]).

onde: predicado = relao; arg 1 = objetos sobre os quais atuam a relao

Estrutura / Comandos

Um exemplo simples de fato com dois argumentos seria a relao amigo:


amigo(joao, carlos)

Assim, definimos uma relao (amizade) entre dois argumentos (joao e carlos)

Estrutua / Comandos

Obviamente podemos ter um fato com apenas um argumento:


Observe que a relao (homem), quando submetida a apenas um objeto (carlos) torna-se como uma caracterstica daquele objeto No caso de haver mais argumentos, a ordem de consistncia definida como sendo a atualmente registrada, ou seja, a ltima utilizada. Por exemplo:
paga(patrao, salario, empregado)

homem(carlos)

Estrutura / Comandos
O tipo de interpretao depende da ordenao dos objetos declarados nos fatos Para manter uma coerncia, importante que todos os fatos sigam uma mesma estrutura de interpretao Assim, no caso da relao amigo talvez fosse mais prudente a declarao bivalente:

amigo(joao,carlos) amigo(carlos,joao)

Um conjunto de fatos forma um banco de dados. Ou seja, vrias afirmaes compem os dados existentes no sistema. Os fatos so a clula bsica do banco de dados Prolog.

Questes

A sintaxe de questes varia de acordo com os compiladores existentes


?- amigo(joao, carlos)

yes A funo da questo basicamente testar a existncia de uma relao sobre os argumentos propostos

Variveis

As variveis so utilizadas de acordo com o comando:


pred(arg 1,Var 1[,arg/Var 2,...,arg/Var n])

ou pred(Var 1,arg 1[,Var/arg 2,...,Var/arg n]) Onde:


Var = varivel (deve comear com letra maiscula) A varivel o elemento mais til para a formulao de questes. Por exemplo:

?- amigo(joao,Quem)

Quem = carlos Em cima das questes com variveis que sero construdos os sistemas mais complexos de estruturao da representao de conhecimentos

Conjuno

A conjuno permite a composio de fatos, formando o chamado e lgico:


pred(arg/Var,arg/Var),pred(arg/Var,arg/Var)

A vrgula ( , ) entre as questes determinam a validade mtua de ambas (ou do conjunto envolvido) O objetivo da conjuno a realizao de uma busca no banco de dados para a verificao da validade da questo ou busca dos objetos relacionados com os argumentos propostos O mecanismo de busca uma estratgia de controle do tipo busca em profundidade com retrocesso

Conjuno

Assim, dados os seguintes fatos:


amiga(joana,maria) amiga(clara,maria)

E a questo:
?- amiga(joana,Quem),amiga(clara,Quem) Quem = maria

Como podemos perceber, a consulta teve como objetivo obter o objeto (maria) que faltava para validar a conjuno entre os dois objetivos

Conjuno

H duas formas de validao de conjunes.A primeira ocorre caso todos os objetivos sejam fatos como, por exemplo:
?- amiga(joana,antonia),amiga(maria,clara). no

todos os objetivos devem ser validados. A segunda forma ocorre, como j foi visto, caso hajam variveis e existam correspondentes entre as variveis dos objetivos

Conjuno

Para facilitar a compreenso da construo da conjuno, ela pode ser vista como uma estrutura em rvore,onde os objetos so folhas das relaes, as quais esto ligadas questo, que torna-se a raiz da rvore

Regras

o comando na forma:
pred(arg/Var,arg/Var) :- pred(arg/Var,arg/Var)

onde:
o smbolo :- indica a uma condio (se) ou, no caso de compararmos com lgica de predicados, a uma implicao material

Regras
A regra o instrumento bsico de organizao do banco de conhecimentos e permite a construo de questes complexas ela que indica a validade de um conjunto de fatos, questes ou conjunes

Regras

Para exemplificar o uso da regra, vamos inicialmente declarar alguns fatos:


amiga(joana,maria) amiga(maria,joana) amiga(maria,clara) amiga(clara,maria) ama(joana,maria) ama(maria,joana)

Regras

E a regra amiga_intima:
amiga_intima(Ela1,Ela2) :amiga(Ela1,Ela2), amiga(Ela2,Ela1), ama(Ela1,Ela2), ama(Ela2,Ela1).

Regras

Desta forma, seria verdadeira a questo:


?- amiga_intima(maria,joana) yes

E falsa a questo:
?- amiga_intima(maria,clara) no

Percebemos, ento, que h a possibilidade de construo de produes complexas em cada regra, permitindo conceitos cada vez maiores e consultas com um maior nvel de definio e de variveis

Disjuno

A disjuno o oposto da conjuno, equivale ao ou lgico:


No exemplo:
?- amiga(celia) no
?- amiga(Quem) Quem = maria Quem = joana

pred(arg/Var,arg/Var) :- (pred(); atrib;...) amiga(X) :- (X=maria; X=joana)

Uma consulta seria:

Ou:

Regras

Como podemos observar, o ponto-evrgula ( ; ) permite a aceitao de uma ou outra condio para a validao da clusula, enquanto o operador de conjuno ( , ) implica na necessidade de aceitao de todas as condies

Operadores Numricos

Relacionais
Operadores numricos relacionais so aqueles usados para realizar testes quantitativos entre dois nmeros. So eles:

= < =<

\= > >=

Operadores Numricos Relacionais

Ou seja, os smbolos so:


igual (X = Y), diferente(X \= Y), menor (X < Y), maior (X > Y), menor ou igual (X =< Y) maior ou igual (X >= Y)

Operadores Numricos Relacionais

Um exemplo da utilidade dos operadores relacionais:


dentro_interv_aberto(K,X1,X2) :K > X1, K < X2.

E a questo:
?- dentro_interv_aberto(5,0,5). no

Como se v, h diversas possibilidades de criao de regras matemticas utilizando os operadores relacionais

Operadores Numricos Aritmticos

Operadores aritmticos so os utilizados na aritmticabsica: + * / mod is Ou seja:


soma (X + Y), subtrao (X - Y), multiplicao(X * Y), diviso (X / Y), mdulo (X modY) e resultado (X is equao ).

Operadores Numricos Aritmticos

Exemplo:
ao_quadrado(X,Y) :Y is X*X.

E a questo:
?- ao_quadrado(6,X). X = 36sss

Deste modo, percebemos que h a possibilidade de construo de diversas funes matemticas mais complexas a partir de regras e operadores aritmticos

S-ar putea să vă placă și