Seminário Prolog

15
Linguagem Prolog Grupo: Cael London Vieira Mateus Felipe Rafael Pereira Bozzetti Walter da Silva Fernandes

description

Slides do Seminário sobre Prolog

Transcript of Seminário Prolog

Linguagem Prolog

Grupo:

Cael London Vieira

Mateus Felipe

Rafael Pereira Bozzetti

Walter da Silva Fernandes

Prolog - Definição Geral

Prolog é uma linguagem Declarativa, ou seja, limita-se a descrever um problema.

Define uma coleção de Fatos e Relações sobre determinado objeto ou problema.

Utiliza-se de métodos lógicos para declarar como o programa deve atingir o seu objetivo.

Possibilita que consultas sejam feitas na base de conhecimento.

Prolog - Histórico

Foi criada em 1971 por Alain Colmerauer e Robert Pasero na Universidade de Marselha, França.

Não foi idealizada como uma linguagem de programação, mas para o processamento de linguagens naturais, como o Português e o Inglês.

Prolog - Domínio da Aplicação Lógica matemática, prova de teoremas e semântica. Compiladores Soluções de equações simbólicas Banco de dados relacionais Linguagem Natural Aplicações, como jogos de Xadrez e Damas Planejamento automático de atividades Análise Bioquímica e projetos de novas drogas

Prolog - Características

Provador de teoremas (Verdade ou Falso) Linguagem declarativa Não emprega tipos de dados Linguagem é interpretada Diferente de programação estruturada. Não existe variáveis globais

Elementos da Linguagem

Fatos: Determina uma relação entre objetos existentes. Exemplo: gosta(maria,X).

Regras: Determina um relacionamento entre FatosExemplo: gosta(X,maria) :- gosta(X,peixe).

Consultas: Infere pesquisas na base de conhecimento à procura de cláusulas consultadas.

Exemplo: ?- gosta(X,maria).

Fatos

gosta( joao,maria ).

Relações e Objetos devem começar com letra minúscula.

Objetos são escritos dentro de parênteses.

Todo Fato deve terminar com ponto.

Uma Relação pode receber mais de um Objeto.

Exemplo: gosta( joao, maria ).

A ordem dos objetos é importante.

gosta( joao, maria ). é diferente de gosta( maria, joao ).

Relação Objeto

Regras

luz(acesa) :- interruptor(ligado).

Determina um relacionamento entre Fatos. O “:-” significa “SE”, portanto na expressão acima, a

luz está acesa se o interruptor estiver ligado. Pode-se utilizar variáveis, devem ser em maiúsculo. O conteúdo da variável após ser instanciada não pode

ser mudado.

Consultas

gosta(X, esporte),

gosta(X, futebol).

Ao fazer uma consulta a base de conhecimento, será realizado uma procura por relações entre os termos.

Referente a consulta, caso exista relação será retornado true, senão fail.

Pode-se utilizar variáveis nas consultas, neste caso todos os termos serão pesquisados.

, = E

; = OU

Operadores Relacionais

X = Y X e Y são iguais;

X \= Y X e Y são diferentes;

X < Y X é menor que Y;

X > Y X é maior que Y;

X =< Y X é menor ou igual a Y;

X >= Y X é maior ou igual a Y.

X =:= Y X e Y são iguais (p/ números);

X =\= Y X e Y são diferentes (p/ números).

Operadores Aritméticos

X + Y Soma de X e Y;

X – Y Diferença de X e Y;

X * Y Multiplicação de X por Y;

X / Y Divisão de X por Y;

X mod Y Resto da divisão de X por Y.

Ambiente de Desenvolvimento

Plugin Eclipsehttp://sewiki.iai.uni-bonn.de/research/pdt/start

Windows: SWI-Prolog-Editorhttp://lakk.bildung.hessen.de/netzwerk/faecher/informatik/swi

prolog/indexe.html

Linux (debian/ubuntu): apt-get install swi-prolog

Exemplo de Código

fatorial(0,1).

fatorial(N,F) :- N>0, N1 is N-1, factorial(N1,F1), F is N * F1.

Exercício Proposto

Na base de conhecimento ao lado, como ficariam as consultas?

Quem gosta de livro? Quem gosta de livro e

chocolate? Quem gosta de livro ou

chocolate?

gosta( julio, peixe ).gosta( julio, maria ).gosta( maria, livro ).gosta( joao, livro ).gosta( joao, peixe ).gosta( maria, chocolate ).gosta( maria, peixe ).gosta( joao, cerveja ).gosta( joao, futebol).

Resolução do Exercício Quem gosta de livro?

gosta(X,livro).

Quem gosta de livro e chocolate?

gosta(X,livro),gosta(X,chocolate).

Quem gosta de livro ou chocolate?

gosta(X,livro);gosta(X,chocolate).