Você está na página 1de 39

Programao Lgica

Profa Andra Schwertner Charo DELC/CT/UFSM

Sumrio
Introduo

bsicos Caractersticas Origens Vantagens e desvantagens Aplicaes Linguagem Prolog

Conceitos

Programao lgica
Paradigma

baseado no Lgica Matemtica e no Clculo de Predicados so declarativos: especificam resultados desejados em vez de procedimentos para produzi-los

Programas

Possui

semelhanas com o paradigma funcional

Programao lgica
Separao

de lgica e controle: Lgica: definio do que deve ser solucionado Controle: como a soluo pode ser obtida

Programador

escreve definies que permitam a deduo da soluo

Programao lgica
Principais

elementos Proposies (axiomas lgicos) que formam uma base de fatos conhecidos Regras que definem como deduzir novas proposies a partir da base Consultas base (execuo do programa)

Programao lgica: ilustrao


Proposio

(fato) Z Carioca um papagaio. de inferncia Todo papagaio uma ave.

Regra

Consulta Z

Carioca uma ave?

Soluo/resposta/resultado Sim
6

Programao lgica: ilustrao


Proposies

(fatos) Joo pai de Jos. Joo pai de Maria.

Consulta Joo

pai de quem?

Soluo/resposta/resultado Jos Maria


7

Programao lgica: ilustrao


Proposio

(fato) O fatorial de 0 1. Regra O fatorial de um nmero N (N > 0) igual a N*fatorial(N-1). Consultas O fatorial de 2 200?

Resposta: No

Quanto

o fatorial de 3?

Resposta: 6
8

Bases da programao lgica

Lgica matemtica lgebra de Boole Descrio de proposies e verificao quanto validade das mesmas Clculo de predicados Lgica simblica Proposies envolvem smbolos e operadores lgicos Clusulas de Horn: proposies Significado Representao com forma peq pq restrita, p ou q p q 2 partes

p implica q p equivale a q

p q p q

Origens da programao lgica


Lgica

matemtica, lgica simblica e clculo de predicados Linguagem Prolog Incio da dcada de 70: colaborao entre universidades Colmerauer e Roussel (Marseille): processamento de linguagem natural Kowalski (Edinburgh): prova automatizada de teoremas Desenvolvimento independente a partir de meados de 70
10

Aplicaes
Inteligncia artificial Sistemas especialistas: emulao da habilidade humana em algum domnio do conhecimento (ex. medicina) Sub-sistemas inteligentes, por exemplo: jogos: capacidade de derivar novos cenrios, comportamentos, etc. bancos de dados: capacidade de deduzir informaes a partir dos dados no banco Processamento de linguagem natural Interfaces humano-computador Educao Ensino de lgica, contribuindo para pensamento e expresso mais claros

11

Vantagens e desvantagens
Vantagens Separao

controle Programas fceis de entender e manter


Desvantagens Eficincia Baixa

entre lgica de programa e

expressividade para certas aplicaes

12

Programao Lgica em Linguagem Prolog


Profa Andra Schwertner Charo DELC/CT/UFSM

Linguagem Prolog
Programas

compostos por clusulas


fatos regras consultas

Diferentes

dialetos Implementaes da linguagem Interpretadores e compiladores Exemplos: SWI Prolog, Turbo Prolog, LPA Prolog, GNU Prolog, etc.

14

Programas em Prolog

Programas consistem em clusulas terminadas por pontos papagaio("Ze Carioca"). ave(X) :- papagaio(X). ?- ave("Ze Carioca").

Clusulas podem ser de 3 tipos fatos: declaram algo que sempre verdadeiro regras: declaram algo que verdadeiro em uma dada condio consultas: descobrem se uma determinada meta verdadeira
15

Programas em Prolog
"Z

Carioca um papagaio" papagaio("Ze Carioca").


fato

"Todo

papagaio uma ave" (ou "se X um papagaio, ento X uma ave") ave(X) :- papagaio(X).
regra

Carioca uma ave? ?- ave("Ze Carioca"). yes


resultado

consulta

16

Programas em Prolog

Ciclo de programao Prolog Fornecer base de fatos e regras ao interpretador (carga do programa) Solicitar a verificao de uma proposio (consulta) Programa um mundo fechado Um fato considerado falso quando No est presente na base de fatos do programa No dedutvel a partir da base de fatos usando a base de regras
17

Instrues em Prolog
termo constante tomo
valores simblicos

varivel
iniciam com maiscula

estrutura

nmero

string

Ex.: X, Area predicado(arg1, ..., argn)

Ex.: pai, adao, fatorial, teste1, Ex.: 9, 10.2, 0.133 raiz_2 iniciam com minscula

Ex.: Ado

proposies do clculo de predicados


18

Variveis em Prolog
Parentes

distantes das variveis de linguagens imperativas Variveis no so declaradas e no so vinculadas a tipos Vinculao de valor (instanciao) ocorre no processo de resoluo Instanciaes servem para verificar se alguma meta verdadeira "Todo papagaio uma ave" (ou "se X um papagaio, ento X uma ave") ave(X) :- papagaio(X).
19

Declarao de fatos
A

clusula seguinte um exemplo de fato: pai(bobbypai, bobbyfilho). Neste exemplo: pai(...) uma estrutura bobbyfilho o primeiro argumento bobbypai o segundo argumento argumentos so separados por vrgulas bobbyfilhoebobbypaiso constantes (tomos)
20

Declarao de fatos
gerais de declarao de fatos: 1) propriedade(obj_const). Ex.: cachorro(bobbypai). gordo(bobbypai). predicado
bobbypai um cachorro
Formas

21

Declarao de fatos
gerais de declarao de fatos: 1) propriedade(obj_const). Ex.: cachorro(bobbypai). gordo(bobbypai). predicado
bobbypai um cachorro
Formas

2) relacao(obj_const1, ..., obj_constn); Ex.:pai(bobbypai, bobbyfilho).


bobbypai pai de bobbyfilho
22

Declarao de fatos
Formas

predicado

gerais de declarao de fatos: 3) fatouniversal(const1, ...,var1). Ex.:ancestral("Ado", X). Para todo X, Ado ancestral de X

As

formas 1 e 2 usam constantes. A forma 3 usa variveis e constantes.

23

Declarao de fatos
Observaes: Semntica arbitrria (relao pode significar o que o programador quiser) Deve-se seguir convenes consistentemente Convenes quanto : Aridade (nmero de argumentos) pai(joao,maria,jose). pai(joao,maria). Ordem pai(jose,paulo). pai(paulo,jose). Nome pai(joao, maria). pAi(joao,maria).

24

Consultas
Consultas

devem seguir as mesmas convenes da base de fatos Formas de consultas (metas): 1) validao de uma proposio

?- predicado(arg1, ..., argn).

Resposta/resultado: Ex.:

yes ou no

cachorro(bobbypai). cachorro(bobbyfilho). ?- cachorro(bobbypai). Yes ?- cachorro(pluto). No


25

Consultas
Formas

de consultas (metas): 2) verificao de existncia


?- predicado(..., var1, ...).
Resposta/resultado: Ex.:

constante(s)

cachorro(bobbypai). cachorro(bobbyfilho). gordo(bobbypai). Ponto-e-vrgula: ?- gordo(X). verifica se existe X = bobbypai outra resposta ?- cachorro(X). X = bobbypai ; X = bobbyfilho
26

Consultas com operadores


Operadores

relacionais (aritmticos)
maior menor maior ou igual menor ou igual igual no igual

> < >= =< =:= =\=

Exemplos idade(pedro, 35). idade(ana, 30). idade(paulo, 27). ?- idade(N, X), X =< 30. ?- idade(N, X), X > 25, X < 30.
?- 1 + 2 =\= 2 + 1. No ?- 1 + 2 =:= 2 + 1. Yes

27

Declarao de regras
A

clusula que segue um exemplo de regra: ave(X) :- papagaio(X). Neste exemplo X uma varivel ave e papagaio so predicados (functors) Regras so clusulas com condies (clusula de Horn com lado esquerdo e lado direito) Forma geral: consequente:antecedente leia-se: ento:se
28

Declarao de regras
Regras

compostas: conetivo e (,) Ex.: Se X pai de Y e Y pai de Z, ento X av de Z Em Prolog: avo(X,Z) :- pai(X,Y) , pai(Y,Z).
Regras

compostas: conetivo ou (;) Ex.: Se X um papagaio ou uma coruja, ento X uma ave Em Prolog: ave(X) :- papagaio(X) ; coruja(X).
29

Processo de inferncia
A

resoluo de um problema consiste em satisfazer uma consulta ilustrar o processo de inferncia, consideremos a seguinte base pato(donald). pato(patolino). ave(X) :- pato(X).

Para

30

Exemplo de inferncia
Meta:

"Donald um pato?" ?- pato(donald).

Busca

de predicado pato Fato encontrado Resposta: ?- pato(donald). Yes

31

Exemplo de inferncia
Meta:

"Donald uma ave?" ?- ave(donald). Busca de predicado ave Fato no encontrado, regra encontrada Unificao (matching) com instanciao de variveis
instancia X ave(X = donald) | pato(X = donald) | pato(donald)

continua at encontrar fato (Yes) ou esgotar possibilidades (No)


32

Aritmtica simples
Operador

is soma(A,B,C) :- A is B + C. ?- soma(A, 1, 4). 5 Ateno!!! este operador no deve ser usado como uma atribuio: Ex.: soma(A,B,C):AisA+B+C. Isso ERRADO, pois as variveis s so instanciadas para satisfazer metas. Se A j estiver instanciado, A no pode estar do lado esquerdo!
33

Aritmtica simples
Ateno!!!

No se pode usar um predicado no lugar da expresso aritmtica: Ex.: A is soma(A,3,4). Isso ERRADO!O predicado no vai retornar um valor!

34

Aritmtica simples
Uso

de operadores aritmticos: largura(sala,4). comprimento(sala,5). largura(quarto,3). comprimento(quarto,2). area(X,Y) :- largura(X,L), comprimento(X,C), Y is L * C. ?- area(sala,X).
X = 20

?- area(banheiro,X).
No

35

Recursividade
Deseja-se

implementar: fatorial(N) = N * fatorial(N-1), para N > 0


fatorial(0,1). fatorial(N,X) :- N1 is N 1, fatorial(N1,X1), X is N * X1. ?- fatorial(3,X). X=6

36

Entrada e sada
Predicados:

write, read, nl, etc.

olafulano :write('Digite seu nome:'), read(Nome), write('Ola, '), write(Nome), nl.

37

Listas em Prolog

Seqncia finita de elementos


[a, b, c, d]. solucao( [casa(1, azul), casa(2, verde)] ). pessoas([jose, 20, brasil, santa_maria], [maria, 24, uruguai, montevideo]).

Exemplo com unificao


?- [1, 2, 3, 4] = [_, A, _, _]. A = 2 ?- [1, 2, 3, 4] = [X | Y]. X = 1 Y = [2, 3, 4] ?- [1] = [X | Y]. X = 1 Y = []. ?- [] = [X | Y]. No
38

Listas em Prolog

Predicados: existem vrios pr-definidos


?- member(a, [a,b,c]). Yes ?- member(1, []). No

Regras com listas


primeiro(Lista, A) :- Lista = [A,_]. ultimo([X],X). ultimo(Lista, X) :- Lista = [_|U], ultimo(U, X).

39

Você também pode gostar