prolog - Hudson Costa

Propaganda
30/04/2013
Prof. Hudson Costa
PROLOG é uma linguagem de programação
que é utilizada para resolver problemas que
envolvam objetos e relações entre objetos.
 Em PROLOG o que se define basicamente
são objetos e relações entre esses objetos.
Para se referir a objetos, usamos termos. Um
termo é uma constante, uma variável ou um
termo composto.
 Para baixar: www.swi-prolog.org

1
30/04/2013

Lógica como linguagem de programação.

Raciocínio dedutivo sobre fatos e regras.

Processamento simbólico,

Semântica declarativa, procedimental e operacional.

Programas = Lógica + Controle.

Programas = Especificações Formais.

Programas = Protótipos.

Programas = Bases de dados.

Programas = Programas...
Declaração de fatos sobre objetos e suas
relações;
 Definições de regras sobre os objetos e suas
relações;
 Questões que são feitas sobre os objetos e
suas relações

2
30/04/2013
homem(sócrates).
mortal(X) 
homem(X).
Sócrates é homem.
Todo homem é
mortal.
Quem é mortal?
Sócrates é mortal.

?- mortal(Z).
Z = sócrates.
Átomos

Da mesma forma que o Português, PROLOG possui palavras e frases. O tipo de
palavra mais comum em PROLOG é denominado átomo. Alguns exemplos de
átomos são: lápis, ana, brasil, livro, tesoura, guarda-roupa. Note que os átomos
começam com letra minúscula até mesmo quando são nomes próprios.
Predicado

Predicado é a construção usada para declarar algo a respeito de objetos. Em
PROLOG, a declaração é representada por um átomo e é seguida pelos objetos,
que devem ser colocados entre parênteses e estar separados uns dos outros por
vírgulas.
Frases

As frases mais simples da linguagem PROLOG são constituídas por um único
predicado. Quando estas frases são usadas para dizer alguma coisa ao
computador, elas são afirmativas e terminam com um ponto final. A seguir,
mostramos vários exemplos de frases simples afirmativas.
3
30/04/2013
Fatos
 Os fatos são os elementos fundamentais da
programação em PROLOG, pois determinam as
relações que existem entre os objetos
conhecidos.
Questões
 Uma questão é escrita da mesma maneira que
um fato, sendo diferenciada pelo interpretador
ou por sua colocação em um local previamente
definido e separado dos fatos.
Quando uma questão é feita, o PROLOG realiza uma busca na Base
de Conhecimento, procurando um Fato que seja igual ao da
questão. Dizemos que dois fatos (ou um fato e uma questão) são
unificam (são iguais) se:




Seus predicados são os mesmos,
Eles possuem o mesmo número de argumentos e,
Os argumentos são iguais.
O PROLOG encontra um fato que se iguala a questão, ele retorna
"YES", indicando que a questão tem resposta verdadeira; caso
contrário, ele retorna "NO".
NOTA: Para padronizar a criação de predicados (tanto os fatos quanto
as regras), devemos sempre pensar que o predicado é uma
propriedade do primeiro objeto do argumento. Assim, "gosta (joão,
maria)." deve ser lido como "João gosta de Maria".
4
30/04/2013

Uma variável em PROLOG sempre começa
com uma letra maiúscula. Uma variável pode
estar instanciada ou não-instanciada.
Dizemos que ela está instanciada quando
estiver assumindo o valor de um objeto e,
caso contrário, não-instanciada.
As regras são utilizadas para construir relações entre
fatos, explicitando as dependências entre eles. Ao
contrário dos fatos, que são incondicionais, as regras
especificam coisas que podem ser verdadeiras se
algumas condições forem satisfeitas.
As regras possuem duas partes:
o corpo, que define as condições e se encontra na parte
direita da regra, e
a cabeça, que define a conclusão, e se encontra na parte
esquerda da regra.
A cabeça e o corpo são separados pelo símbolo ":-", que
é lido como "se". Uma regra sempre é terminada com
um ponto final.
5
30/04/2013
Suponha a seguinte base de conhecimento:
Continuação...
6
30/04/2013
Continuação...
7
30/04/2013
Seja a árvore genealógica
mostrada abaixo...
João
Maria
José
Júlia
Como seria uma base de fatos para
representar essa árvore?
Ana
Íris
Jorge
8
30/04/2013
Suponha a seguinte Base de Fatos Prolog:
cargo(tecnico, rogerio).
cargo(tecnico, ivone).
cargo(engenheiro, daniel).
cargo(engenheiro, isabel).
cargo(engenheiro, oscar).
cargo(engenheiro, tomas).
cargo(engenheiro, ana).
cargo(supervisor, luis).
cargo(supervisor_chefe, sonia).
cargo(secretaria_exec, laura).
cargo(diretor, santiago).
chefiado_por(tecnico, engenheiro).
chefiado_por(engenheiro, supervisor).
chefiado_por(analista, supervisor).
chefiado_por(supervisor, supervisor_chefe).
chefiado_por(supervisor_chefe, director).
chefiado_por(secretaria_exec, director).
Agora faça as seguintes perguntas à base de dados:
?- chefiado_por(tecnico, X), chefiado_por(X,Y).
?- chefiado_por(tecnico, X), cargo(X,ivone), cargo(Y,Z).
?- cargo(supervisor, X); cargo(supervisor, X).
?- cargo(J,P), (chefiado_por(J, supervisor_chefe);
chefiado_por(J, supervisor)).
?- chefiado_por(P, director), not(cargo(P, carolina)).
9
30/04/2013
Considere a seguinte base de fatos:
aluno(joao, paradigmas).
aluno(maria, paradigmas).
aluno(joel, lab2).
aluno(joel, estruturas).
frequenta(joao, feup).
frequenta(maria, feup).
frequenta(joel, ist).
professor(carlos, paradigmas).
professor(ana_paula, estruturas).
professor(pedro, lab2).
funcionario(pedro, ist).
funcionario(ana_paula, feup).
funcionario(carlos, feup).
Escreva as seguintes regras
em PROLOG:
•Quem são os alunos do
professor X?
•Quem são as pessoas da
universidade X? (alunos ou
docentes)
•Quem é colega de quem?
Se aluno: é colega se for
colega de disciplina ou
colega de curso ou colega de
universidade. Se professor:
se for professor da mesma
universidade.
Considere a seguinte base de factos exemplo:
comprou(joao, honda).
ano(honda, 1997).
comprou(joao, uno).
ano(uno, 1998).
valor(honda, 20000).
valor(uno, 7000).
Crie uma regra pode_vender onde o primeiro argumento é a pessoa,
o segundo o carro e o terceiro é o ano actual (não especificar
“homem” ou “carro” nas regras), onde a pessoa só pode vender o
carro se o carro for comprado por ela nos últimos 10 anos e se seu
valor for menor do que 10000 Euros.
10
Download