Title: Prolog
1Prolog
Universidade Católica de Pelotas Centro
Politécnico Bacharelado em Ciência da
Computação Introdução à Programação
- Luiz A. M. Palazzo
- Pelotas, maio de 2010
21. Lógica e Programação de Computadores
3O que é PROLOG?
- PROgrammation en LOGique
- Alain Colmerauer
- Univ. Aix-Marseille, 1972
- Robert Kowalski
- Univ. Edimburgo, 1974
4Principais 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...
5Programação em Lógica
- Sócrates é homem.
- Todo homem é mortal.
- Quem é mortal?
- Sócrates é mortal.
- homem(sócrates).
- mortal(X) ? homem(X).
- ?- mortal(Z).
- Z sócrates.
?
6Fatos, 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 a ?
- Regras a ? b
- Consultas ? b
- Vazia ?
7Fatos, Regras e Consultas
- Fatos
São verdades incondicionais - pai(josé, joão).
- pai(joão, júlio).
- pai(júlio, jorge).
8Fatos, 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).
9Fatos, 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). Xjoão
- ?- avô(X, jorge). Xjoão
10Processamento Simbólico
- deriv(x, 1).
- deriv(N, 0) ? number(N).
- deriv(UV, U1V1) ? deriv(U, U1), deriv(V, V1).
- deriv(U-V, U1-V1) ? deriv(U, U1), deriv(V,
V1). - deriv(UV, U1VUV1) ? deriv(U, U1), deriv(V,
V1).
11Semâ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
12Programas Lógica Controle
O programador codifica somente a lógica.
O ambiente de programação executa o controle.
13Programas Especificações Formais
a ? b. b ? c, d. . . .
14Programas Especificações Formais
a ? b. b ? c, d. . . .
15Programas Especificações Formais
a ? b. b ? c, d. . . .
ok
16Programas Protótipos
Projetos grandes e caros ...
... podem ser prototipados rapidamente.
17Programas Bases de Dados
prolog
bd
18Programas Programas ...
C/C
Java
?
Delphi
Prolog
Lisp
... etc
19Aplicaçõ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.
20Sistemas Especialistas
- Diagnóstico médico,
- Controle Ambiental,
- Cultura Animal,
- Controle de Tráfego Aéreo,
- Indústria Aeroespacial.
21Engenharia de Software
- Especificações Formais,
- Prototipação,
- Modelagem de Processos,
- Engenharia Reversa,
- Manutenção de Software.
22Simulação e Educação
- Modelagem Ambiental,
- Modelagem Organizacional,
- Sistemas Tutoriais Inteligentes,
- Ensino de Lógica a Adolescentes.
23Suporte à Decisão
- Mercados de estoques, ações e capital,
- Apoio à decisões judiciais,
- Análise de Investimentos, etc.
24Bases de Dados Dedutivas
- O cálculo de predicados de primeira ordem possui
expressividade equivalente à da álgebra
relacional.
25Programação da Web
- Extensões html e http
- Web Semântica
- SWI-Prolog
- PiLLoW
- Amzi! Prolog
- Muitos outros (vale pesquisar)
26Alguns Ponteiros
- Prolog na Wikipedia http//pt.wikipedia.org/wiki/P
rolog -
- Programação em Lógica
http//vl.fmnet.info/logic-prog/ - SWI Prolog
http//www.swi-prolog.org