UNIFICAÇÃO EM PROLOG - dainf.ct.utfpr.edu.brtacla/logica/prolog/000-IntroducaoAo... · 3 PROF....

21
1 PROF. CESAR A. TACLA UTFPR/CURITIBA UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ PR PROLOG

Transcript of UNIFICAÇÃO EM PROLOG - dainf.ct.utfpr.edu.brtacla/logica/prolog/000-IntroducaoAo... · 3 PROF....

Page 1: UNIFICAÇÃO EM PROLOG - dainf.ct.utfpr.edu.brtacla/logica/prolog/000-IntroducaoAo... · 3 PROF. CESAR A. TACLA UTFPR/CURITIBA PROLOG: UTILIZAÇÃO Seu uso evita que o programador

1 PROF. CESAR A. TACLA UTFPR/CURITIBA

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

PR

PROLOG

Page 2: UNIFICAÇÃO EM PROLOG - dainf.ct.utfpr.edu.brtacla/logica/prolog/000-IntroducaoAo... · 3 PROF. CESAR A. TACLA UTFPR/CURITIBA PROLOG: UTILIZAÇÃO Seu uso evita que o programador

2 PROF. CESAR A. TACLA UTFPR/CURITIBA

PROLOG: UTILIZAÇÃO

A principal utilização da linguagem

Prolog reside no domínio da

programação simbólica, não-numérica,

sendo especialmente adequada à solução

de problemas, envolvendo objetos e

relações entre objetos.

(Palazzo, 1997)

Page 3: UNIFICAÇÃO EM PROLOG - dainf.ct.utfpr.edu.brtacla/logica/prolog/000-IntroducaoAo... · 3 PROF. CESAR A. TACLA UTFPR/CURITIBA PROLOG: UTILIZAÇÃO Seu uso evita que o programador

3 PROF. CESAR A. TACLA UTFPR/CURITIBA

PROLOG: UTILIZAÇÃO

Seu uso evita que o programador

descreva os procedimentos necessários

para a solução de um problema,

permitindo que ele expresse

declarativamente apenas a sua estrutura

lógica, através de fatos, regras e consultas

(Palazzo, 1997)

Page 4: UNIFICAÇÃO EM PROLOG - dainf.ct.utfpr.edu.brtacla/logica/prolog/000-IntroducaoAo... · 3 PROF. CESAR A. TACLA UTFPR/CURITIBA PROLOG: UTILIZAÇÃO Seu uso evita que o programador

4 PROF. CESAR A. TACLA UTFPR/CURITIBA

PROLOG: ALGUMAS CARACTERÍSTICAS INTERESSANTES

Representa uma implementação da lógica como

linguagem de programação

(Palazzo, 1997)

Permite a obtenção de respostas alternativas

Representa programas e dados através do mesmo

formalismo

Suporta código recursivo e iterativo para a

descrição de processos e problemas, dispensando

os mecanismos tradicionais de controle, tais como

while, repeat, etc;

Page 5: UNIFICAÇÃO EM PROLOG - dainf.ct.utfpr.edu.brtacla/logica/prolog/000-IntroducaoAo... · 3 PROF. CESAR A. TACLA UTFPR/CURITIBA PROLOG: UTILIZAÇÃO Seu uso evita que o programador

5 PROF. CESAR A. TACLA UTFPR/CURITIBA

EXEMPLO INICIAL

progenitor(maria, josé).

progenitor(joão, josé).

progenitor(joão, ana).

progenitor(josé, júlia).

progenitor(josé, íris).

progenitor(íris, jorge).

?- progenitor(maria, josé).

True

Motor

de

inferência

Page 6: UNIFICAÇÃO EM PROLOG - dainf.ct.utfpr.edu.brtacla/logica/prolog/000-IntroducaoAo... · 3 PROF. CESAR A. TACLA UTFPR/CURITIBA PROLOG: UTILIZAÇÃO Seu uso evita que o programador

6 PROF. CESAR A. TACLA UTFPR/CURITIBA

EXEMPLO INICIAL

progenitor(maria, josé).

progenitor(joão, josé).

progenitor(joão, ana).

progenitor(josé, júlia).

progenitor(josé, íris).

progenitor(íris, jorge).

?- progenitor(maria, josé).

True

Motor

de

inferência

Fatos consulta

Resposta(s)

Page 7: UNIFICAÇÃO EM PROLOG - dainf.ct.utfpr.edu.brtacla/logica/prolog/000-IntroducaoAo... · 3 PROF. CESAR A. TACLA UTFPR/CURITIBA PROLOG: UTILIZAÇÃO Seu uso evita que o programador

7 PROF. CESAR A. TACLA UTFPR/CURITIBA

EXEMPLO INICIAL

progenitor(maria, josé).

progenitor(joão, josé).

progenitor(joão, ana).

progenitor(josé, júlia).

progenitor(josé, íris).

progenitor(íris, jorge).

?- progenitor(X, josé).

X = maria;

X = joão;

False.

Motor

de

inferência

Respostas alternativas que satisfazem a consulta

Page 8: UNIFICAÇÃO EM PROLOG - dainf.ct.utfpr.edu.brtacla/logica/prolog/000-IntroducaoAo... · 3 PROF. CESAR A. TACLA UTFPR/CURITIBA PROLOG: UTILIZAÇÃO Seu uso evita que o programador

8 PROF. CESAR A. TACLA UTFPR/CURITIBA

PRIMEIROS PASSOS

SWI PROLOG

Page 9: UNIFICAÇÃO EM PROLOG - dainf.ct.utfpr.edu.brtacla/logica/prolog/000-IntroducaoAo... · 3 PROF. CESAR A. TACLA UTFPR/CURITIBA PROLOG: UTILIZAÇÃO Seu uso evita que o programador

9 PROF. CESAR A. TACLA UTFPR/CURITIBA

EXECUTAR NO LINUX

1. Abra um xterm

2. No xterm, swipl

3. No ambiente PROLOG tecle emacs

Page 10: UNIFICAÇÃO EM PROLOG - dainf.ct.utfpr.edu.brtacla/logica/prolog/000-IntroducaoAo... · 3 PROF. CESAR A. TACLA UTFPR/CURITIBA PROLOG: UTILIZAÇÃO Seu uso evita que o programador

10 PROF. CESAR A. TACLA UTFPR/CURITIBA

Exemplo em Lógica Proposicional

% ?- voa.

titi. % titi eh uma proposicao verdadeira (fato)

passaro :- titi. % regra

voa :- passaro. % regra

Fatos e regras, mas fatos também são regras!

exLP-020-titi

Page 11: UNIFICAÇÃO EM PROLOG - dainf.ct.utfpr.edu.brtacla/logica/prolog/000-IntroducaoAo... · 3 PROF. CESAR A. TACLA UTFPR/CURITIBA PROLOG: UTILIZAÇÃO Seu uso evita que o programador

11 PROF. CESAR A. TACLA UTFPR/CURITIBA

Exemplo em Lógica Proposiciona

% E de uma menina?

% ?- menina.

%

estudaNoPrimeiroGrau.

sexoFeminino.

crianca :- estudaNoPrimeiroGrau.

menina :- sexoFeminino, crianca.

exLP-010-00-menina

Regras com vários antecedentes

Page 12: UNIFICAÇÃO EM PROLOG - dainf.ct.utfpr.edu.brtacla/logica/prolog/000-IntroducaoAo... · 3 PROF. CESAR A. TACLA UTFPR/CURITIBA PROLOG: UTILIZAÇÃO Seu uso evita que o programador

12 PROF. CESAR A. TACLA UTFPR/CURITIBA

Exemplo em lógica proposicional

Múltiplas respostas

No exemplo anterior, acrescente mais um fato afirmando que a tal

pessoa estuda no jardim de infância (além de estudar no 1º. grau).

Faça o trace manual.

Compare-o com o trace obtido automaticamente.

exLP-010-02-menina

Page 13: UNIFICAÇÃO EM PROLOG - dainf.ct.utfpr.edu.brtacla/logica/prolog/000-IntroducaoAo... · 3 PROF. CESAR A. TACLA UTFPR/CURITIBA PROLOG: UTILIZAÇÃO Seu uso evita que o programador

13 PROF. CESAR A. TACLA UTFPR/CURITIBA

SINTAXE

variáveis: em MAIÚSCULAS Símbolos de

constantes: em minúsculas

predicados: em minúsculas

Page 14: UNIFICAÇÃO EM PROLOG - dainf.ct.utfpr.edu.brtacla/logica/prolog/000-IntroducaoAo... · 3 PROF. CESAR A. TACLA UTFPR/CURITIBA PROLOG: UTILIZAÇÃO Seu uso evita que o programador

14 PROF. CESAR A. TACLA UTFPR/CURITIBA

OPERADORES ARITMÉTICOS E RELACIONAIS

SWI PROLOG

Page 15: UNIFICAÇÃO EM PROLOG - dainf.ct.utfpr.edu.brtacla/logica/prolog/000-IntroducaoAo... · 3 PROF. CESAR A. TACLA UTFPR/CURITIBA PROLOG: UTILIZAÇÃO Seu uso evita que o programador

15 PROF. CESAR A. TACLA UTFPR/CURITIBA

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).

Page 16: UNIFICAÇÃO EM PROLOG - dainf.ct.utfpr.edu.brtacla/logica/prolog/000-IntroducaoAo... · 3 PROF. CESAR A. TACLA UTFPR/CURITIBA PROLOG: UTILIZAÇÃO Seu uso evita que o programador

16 PROF. CESAR A. TACLA UTFPR/CURITIBA

OPERADORES RELACIONAIS

CUIDADOS

?- 3 = 2 + 1.

Interpretação:

o símbolo 3 é igual ao símbolo 2 + 1?

FALSO

?- 3 is 2 + 1. ou 3 =:= 2 + 1.

Interpretação:

o símbolo 3 é igual ao símbolo que resulta da operação 2 + 1?

VERDADEIRO

Page 17: UNIFICAÇÃO EM PROLOG - dainf.ct.utfpr.edu.brtacla/logica/prolog/000-IntroducaoAo... · 3 PROF. CESAR A. TACLA UTFPR/CURITIBA PROLOG: UTILIZAÇÃO Seu uso evita que o programador

17 PROF. CESAR A. TACLA UTFPR/CURITIBA

ARITMÉTICOS

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.

Exemplo: X is 6 mod 4.

Se teclar 6 mod 4 direto não funciona!

Page 18: UNIFICAÇÃO EM PROLOG - dainf.ct.utfpr.edu.brtacla/logica/prolog/000-IntroducaoAo... · 3 PROF. CESAR A. TACLA UTFPR/CURITIBA PROLOG: UTILIZAÇÃO Seu uso evita que o programador

18 PROF. CESAR A. TACLA UTFPR/CURITIBA

ATRIBUIÇÃO

Atribuição de valores numéricos “is”: ?- X is 10 + 2.

Negação de predicados: \+ not

Page 19: UNIFICAÇÃO EM PROLOG - dainf.ct.utfpr.edu.brtacla/logica/prolog/000-IntroducaoAo... · 3 PROF. CESAR A. TACLA UTFPR/CURITIBA PROLOG: UTILIZAÇÃO Seu uso evita que o programador

19 PROF. CESAR A. TACLA UTFPR/CURITIBA

PROGRAMAS BÁSICOS

Page 20: UNIFICAÇÃO EM PROLOG - dainf.ct.utfpr.edu.brtacla/logica/prolog/000-IntroducaoAo... · 3 PROF. CESAR A. TACLA UTFPR/CURITIBA PROLOG: UTILIZAÇÃO Seu uso evita que o programador

20 PROF. CESAR A. TACLA UTFPR/CURITIBA

PROGRAMAÇÃO BÁSICA

Básico

ex000-00-PrimeirosPassosEmPROLOG.txt

Representação de fatos e regras

ex005-00-RegrasProducao-Aprovado.pl

ex010-00-comida.pl

Modelos de LPO em PROLOG

ex170-00-teoria-modelo.pl

ex180-00-jogo-da-velha.pl

ex190-00-coloracao-mapa.pl

Page 21: UNIFICAÇÃO EM PROLOG - dainf.ct.utfpr.edu.brtacla/logica/prolog/000-IntroducaoAo... · 3 PROF. CESAR A. TACLA UTFPR/CURITIBA PROLOG: UTILIZAÇÃO Seu uso evita que o programador

21 PROF. CESAR A. TACLA UTFPR/CURITIBA

PROGRAMAÇÃO

RECURSIVIDADE

ex030-00-expressividade-simpsons.pl

ex040-00-recursividade-simpsons.pl

ex200-00-mapaAciclico-sol.pl