Universidade Católica de Pelotas
Centro Politécnico
Bacharelado em Ciência da Computação
Introdução à Programação
Prolog
Luiz A. M. Palazzo
Pelotas, maio de 2010
1. Lógica e
Programação de
Computadores
O que é
PROLOG?
PROgrammation en LOGique
Alain Colmerauer
Univ. Aix-Marseille, 1972
Robert Kowalski
Univ. Edimburgo, 1974
Introdução à Programação Prolog
3
Principais características:
• Lógica como linguagem de programação.
• Raciocínio dedutivo sobre fatos e regras.
• Processamento simbólico,
• Semântica declarativa, procedimental e operacional.
• Programas = Lógica + Controle.
• Programas = Especificações Formais.
• Programas = Protótipos.
• Programas = Bases de dados.
• Programas = Programas...
Introdução à Programação Prolog
4
Programação em Lógica
Sócrates é homem.
Todo homem é mortal.
Quem é mortal?
Sócrates é mortal.
Introdução à Programação Prolog
homem(sócrates).
mortal(X)  homem(X).

?- mortal(Z).
Z = sócrates.
5
Fatos,
Regras e
Consultas
A programação em lógica
baseia-se em estruturas lógicas
denominadas Cláusulas de
Horn, que se apresentam em
quatro formas distintas:
• Fatos:
• Regras:
• Consultas:
• Vazia:
Introdução à Programação Prolog
a
ab
b

6
Fatos,
Regras e
Consultas
Introdução à Programação Prolog
• Fatos:
São verdades incondicionais:
pai(josé, joão).
pai(joão, júlio).
pai(júlio, jorge).
7
Fatos,
Regras e
Consultas
• Fatos:
São verdades incondicionais:
pai(josé, joão).
pai(joão, júlio).
pai(júlio, jorge).
• Regras:
Podem ser verdadeiras ou não:
filho(X, Y)  pai(Y, X).
avô(X, Y)  pai(X, Z), pai(Z, Y).
Introdução à Programação Prolog
8
Fatos,
Regras e
Consultas
• Fatos:
São verdades incondicionais:
pai(josé, joão).
pai(joão, júlio).
pai(júlio, jorge).
• Regras:
Podem ser verdadeiras ou não:
filho(X, Y)  pai(Y, X).
avô(X, Y)  pai(X, Z), pai(Z, Y).
• Consultas:
Provocam a execução do programa:
?- filho(júlio, X).
?- avô(X, jorge).
Introdução à Programação Prolog
X=joão
X=joão
9
Processamento Simbólico
deriv(x, 1).
deriv(N, 0) 
number(N).
deriv(U+V, U1+V1) 
deriv(U, U1), deriv(V, V1).
deriv(U-V, U1-V1) 
deriv(U, U1), deriv(V, V1).
deriv(U*V, U1*V+U*V1) 
deriv(U, U1), deriv(V, V1).
Introdução à Programação Prolog
10
Semântica
Declarativa,
Procedimental
e Operacional
Os programas Prolog permitem
três possíveis interpretações
intercambiáveis:
(1) Declarativa, ao nível do
cálculo de predicados de
primeira ordem,
(2) Procedimental, ao nível da
chamada de procedimentos, e
(3) Operacional, ao nível do
controle da execução
Introdução à Programação Prolog
11
Programas =
Lógica + Controle
O programador codifica
somente a lógica.
Introdução à Programação Prolog
O ambiente de programação
executa o controle.
12
Programas =
Especificações Formais
a  b.
b  c, d.
...
Introdução à Programação Prolog
13
Programas =
Especificações Formais
a  b.
b  c, d.
...
Introdução à Programação Prolog
14
Programas =
Especificações Formais
a  b.
b  c, d.
...
ok
Introdução à Programação Prolog
15
Programas = Protótipos
Projetos grandes e caros ...
Introdução à Programação Prolog
... podem ser prototipados
rapidamente.
16
Programas =
Bases de Dados
prolog
Introdução à Programação Prolog
bd
17
Programas = Programas ...
C/C++
Java
Prolog

Delphi
Lisp
... etc
Introdução à Programação Prolog
18
Aplicações Avançadas
•
•
•
•
•
•
•
•
Sistemas Especialistas,
Engenharia de Software,
Simulação,
Educação,
Suporte à Decisão,
Programação Científica
Bases de Dados Dedutivas,
Programação da Web.
Sistemas Especialistas
• Diagnóstico médico,
• Controle Ambiental,
• Cultura Animal,
• Controle de Tráfego
Aéreo,
• Indústria Aeroespacial.
Introdução à Programação Prolog
20
Engenharia de Software
• Especificações Formais,
• Prototipação,
• Modelagem de Processos,
• Engenharia Reversa,
• Manutenção de Software.
Introdução à Programação Prolog
21
Simulação e Educação
• Modelagem Ambiental,
• Modelagem
Organizacional,
• Sistemas Tutoriais
Inteligentes,
• Ensino de Lógica a
Adolescentes.
Introdução à Programação Prolog
22
Suporte à Decisão
• Mercados de estoques,
ações e capital,
• Apoio à decisões
judiciais,
• Análise de Investimentos,
etc.
Introdução à Programação Prolog
23
Bases de Dados
Dedutivas
O cálculo de
predicados de
primeira ordem
possui
expressividade
equivalente à da
álgebra relacional.
Introdução à Programação Prolog
24
Programação da Web
•
•
•
•
•
•
Introdução à Programação Prolog
Extensões html e http
Web Semântica
SWI-Prolog
PiLLoW
Amzi! Prolog
Muitos outros
(vale pesquisar)
25
Alguns Ponteiros
• Prolog na Wikipedia
http://pt.wikipedia.org/wiki/Prolog
•
• Programação em Lógica
http://vl.fmnet.info/logic-prog/
• SWI Prolog
http://www.swi-prolog.org
Introdução à Programação Prolog
26
Download

Introdução