Buscar

Introdução ao PROLOG

Prévia do material em texto

Introdução ao Prolog:
Linguagem Declarativa.
Máxima aproximação com a Linguagem Natural.
Desenvolvido para processamento computacional inteligente.
Fácil desenvolvimento de sistemas especialistas.
Sintaxe Básica
“.” Finaliza uma linha de comando, equivalente ao “;” do Java.
“,” é o “e” lógico, utilizado para somar sentenças.
“;” é o “ou” lógico, utilizado para diferenciar sentenças.
“:-“ é a condicional lógica, utilizada para expressar conseqüência.
Definição de fatos:
O Prolog trabalha com definição de Fatos onde esses Fatos são as verdades absolutas do programa.
	Todos os fatos têm um “relacionador” e unidades relacionadas
Ex:	homem(bob).
	genitor(bob, ana).
Obs: Note que tanto o “relacionador” e as unidades são declarados com letra minúscula. Note que os “relacionadores” podem ter “n” unidades relacionadas.
Definição de Regras:
Para criar comportamentos e desvincular fatos desnecessários podem-se criar regras.
avo(X,Y):- genitor(X,Z), genitor(Z,Y).
Entendimento:
Para qualquer X e Y, X é avo de Y se (1) X for genitor de Z qualquer e (2) Z for genitor de Y.
Obs: Note que quando estamos tratando de variáveis à declaração é feita com letra maiúscula.
Regras Recursivas:
Procedimentos recursivos estão presentes em diversas áreas do conhecimento. A recursividade é um procedimento onde em sua definição “ele” chama ele próprio. Na programação Prolog seus principais aspectos são mantidos. Pode-se dividir as regras recursivas em duas parte: 
A regra principal onde o procedimento pode parar
A regra recursiva onde o procedimento é chamado dentro da própria rotina.
 Ex:
predecessor(X,Y):- pais(X,Y). % Caso base para recursividade
predecessor(X,Y) pais(X,Z) , predecessor(Z,Y). % Caso recursivo onde predecessor contem uma rotina predecessor.
Tipos de perguntas e resposta ao Prolog.
Perguntas e Respostas:
Pode-se fazer perguntas ao Prolog direcionada aos fatos.
Ex: genitor(bob,ana). % bob é genitor de ana.?
Resposta: True.
Pode-se fazer perguntas compostas dos fatos.
Ex: genitor(bob,ana), genitor(ana,bob). % bob é genitor de ana e ana é genitora de bob.?
Resposta False.
Obs: Note que perguntas compostas podem ser feitas tanto com “,” quanto com “;”.
 Pode-se fazer perguntas onde se espera uma resposta para completar:
Ex: genitor(bob,X). % bob é genitor de que pessoa X?
Resposta: X=ana.
Obs: caso não seja a resposta desejada o usuário pode pedir mais respostas ao Prolog teclando “;”, caso tenha o Prolog apresentara uma nova resposta.

Outros materiais