Post on 26-Dec-2018
1 PROF. CESAR A. TACLA UTFPR/CURITIBA
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
PR
PROLOG
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)
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)
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;
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
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)
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
8 PROF. CESAR A. TACLA UTFPR/CURITIBA
PRIMEIROS PASSOS
SWI PROLOG
9 PROF. CESAR A. TACLA UTFPR/CURITIBA
EXECUTAR NO LINUX
1. Abra um xterm
2. No xterm, swipl
3. No ambiente PROLOG tecle emacs
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
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
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
13 PROF. CESAR A. TACLA UTFPR/CURITIBA
SINTAXE
variáveis: em MAIÚSCULAS Símbolos de
constantes: em minúsculas
predicados: em minúsculas
14 PROF. CESAR A. TACLA UTFPR/CURITIBA
OPERADORES ARITMÉTICOS E RELACIONAIS
SWI PROLOG
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).
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
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!
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
19 PROF. CESAR A. TACLA UTFPR/CURITIBA
PROGRAMAS BÁSICOS
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
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