You are on page 1of 14

Aula 10 Introduo Linguagem Prolog

Paradigmas de Linguagens de Programao Andrei Formiga DCE CCAE UFPB

Ferramentas

SWI-Prolog (Win, Linux, Mac)

Strawberry Prolog (Windows)

Histria
Inferncia baseada em Resoluo (1965)

Programao Lgica (1970s)

Prolog (1972)

Resoluo
Mtodo para inferncia de frmulas lgicas

Lgica de Predicados

Robinson (1965)

Programao Lgica
Programador define objetos e relaes entre eles Sistema infere concluses Programao Declarativa Resoluo de Problemas Inteligncia Artificial

Prolog
Alain Colmerauer (1972) PROgrammation en LOGique Programao Lgica + extenses

Programao em Prolog
Definir Fatos
Banco de Dados

Definir Regras Realizar Consultas Sistema faz inferncias para responder consultas

Fatos
Predicados que so considerados verdadeiros independentes de outros fatos ou regras Exemplo:
gosta(joao, maria).

predicado

objetos constantes

Fatos Outros Exemplos


Nomes de constantes, predicados e funes comeam com letra minscula
valioso(ouro). pai(adao, abel). possui(maria, ouro). gosta(maria, joao). entrega(joao, livro, maria).

Consultas
Podemos perguntar se um fato verdadeiro segundo o Banco de Dados Um predicado em uma consulta um objetivo

?- gosta(joao, maria). true. ?- gosta(joao, marcia). false.

ariveis
Tm nomes comeando com letra maiscula Em uma consulta, representam a pergunta: Que valores da varivel tornam a consulta verdadeira?

?- gosta(joao, X). X = maria. ?- entrega(joao, X, maria). X = livro.

Conjunes
Conjuno lgica de fatos (AND) Conjuno verdade se todos os fatos so verdade Usa a vrgula como operador
?- gosta(joao, maria), gosta(maria, joao). true. ?- entrega(joao, X, maria), gosta(maria, X). false. ?- entrega(X, livro, maria), gosta(maria, X). X = joao.

Regras
Definem a verdade de uma proposio dependente de outros fatos Exemplo: Joo gosta de quem gosta de vinho
gosta(joao, X) :- gosta(X, vinho). gosta(joao, X) :- gosta(X, vinho), gosta(X, queijo). gosta(joao, X) :- mulher(X), gosta(X, vinho).

Regras Exemplo
homem(alberto). homem(eduardo). mulher(alice). mulher(vitoria). pais(eduardo, alberto, vitoria). pais(alice, alberto, vitoria). irma_de(X, Y) :mulher(X), pais(X, P, M), pais(Y, P, M).

You might also like