Post on 17-Apr-2015
PrologPrologPrologPrologLuiz A. M. PalazzoLuiz A. M. Palazzo
Pelotas, maio de 2010Pelotas, maio de 2010
Universidade Católica de PelotasUniversidade Católica de PelotasCentro PolitécnicoCentro Politécnico
Bacharelado em Ciência da ComputaçãoBacharelado em Ciência da Computação
Introdução à ProgramaçãoIntrodução à Programação
Universidade Católica de PelotasUniversidade Católica de PelotasCentro PolitécnicoCentro Politécnico
Bacharelado em Ciência da ComputaçãoBacharelado em Ciência da Computação
Introdução à ProgramaçãoIntrodução à Programação
1. Lógica e 1. Lógica e Programação de Programação de ComputadoresComputadores
1. Lógica e 1. Lógica e Programação de Programação de ComputadoresComputadores
Introdução à Programação Prolog 3
O que é O que é PROLOG?PROLOG?O que é O que é PROLOG?PROLOG?
PROgrammation en LOGiquePROgrammation en LOGique Alain ColmerauerAlain Colmerauer
Univ. Aix-Marseille, 1972Univ. Aix-Marseille, 1972
Robert KowalskiRobert Kowalski Univ. Edimburgo, 1974Univ. Edimburgo, 1974
Introdução à Programação Prolog 4
Principais características:Principais características:Principais características:Principais características:• Lógica como linguagem de programação. Lógica como linguagem de programação.
• Raciocínio dedutivo sobre fatos e regras.Raciocínio dedutivo sobre fatos e regras.
• Processamento simbólico, Processamento simbólico,
• Semântica declarativa, procedimental e operacional.Semântica declarativa, procedimental e operacional.
• Programas = Lógica + Controle.Programas = Lógica + Controle.
• Programas = Especificações Formais.Programas = Especificações Formais.
• Programas = Protótipos. Programas = Protótipos.
• Programas = Bases de dados.Programas = Bases de dados.
• Programas = Programas...Programas = Programas...
Introdução à Programação Prolog 5
Programação em LógicaProgramação em LógicaProgramação em LógicaProgramaçã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.
Introdução à Programação Prolog 6
Fatos, Fatos, Regras e Regras e ConsultasConsultas
Fatos, Fatos, Regras e Regras e ConsultasConsultas
A programação em lógica baseia-se em estruturas lógicas denominadas Cláusulas de Horn,Cláusulas de Horn, que se apresentam em quatro formas distintas:
• Fatos: a • Regras: a b• Consultas: b• Vazia:
Introdução à Programação Prolog 7
Fatos, Fatos, Regras e Regras e ConsultasConsultas
Fatos, Fatos, Regras e Regras e ConsultasConsultas
• FatosFatos: São verdades incondicionais:
pai(josé, joão).pai(joão, júlio).pai(júlio, jorge).
Introdução à Programação Prolog 8
Fatos, Fatos, Regras e Regras e ConsultasConsultas
Fatos, Fatos, Regras e Regras e ConsultasConsultas
• FatosFatos: São verdades incondicionais:
pai(josé, joão).pai(joão, júlio).pai(júlio, jorge).
• RegrasRegras: 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 9
Fatos, Fatos, Regras e Regras e ConsultasConsultas
Fatos, Fatos, Regras e Regras e ConsultasConsultas
• FatosFatos: São verdades incondicionais:
pai(josé, joão).pai(joão, júlio).pai(júlio, jorge).
• RegrasRegras: Podem ser verdadeiras ou não:
filho(X, Y) pai(Y, X).avô(X, Y) pai(X, Z), pai(Z, Y).
• ConsultasConsultas: Provocam a execução do programa:?- filho(júlio, X). X=joão?- avô(X, jorge). X=joão
Introdução à Programação Prolog 10
Processamento SimbólicoProcessamento SimbólicoProcessamento SimbólicoProcessamento Simbólicoderiv(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 11
Semântica Semântica Declarativa, Declarativa, Procedimental Procedimental e Operacionale Operacional
Semântica Semântica Declarativa, Declarativa, Procedimental Procedimental e Operacionale Operacional
Os programas Prolog permitem trêstrês possíveis interpretações intercambiáveis:
(1) DeclarativaDeclarativa, ao nível do cálculo de predicados de primeira ordem,
(2) ProcedimentalProcedimental, ao nível da chamada de procedimentos, e
(3) OperacionalOperacional,, ao nível do controle da execução
Introdução à Programação Prolog 12
Programas = Programas = Lógica + ControleLógica + Controle
Programas = Programas = Lógica + ControleLógica + Controle
O programador codifica somente a lógica.
O ambiente de programação executa o controle.
Introdução à Programação Prolog 13
Programas = Programas = Especificações FormaisEspecificações Formais
Programas = Programas = Especificações FormaisEspecificações Formais
a b.b c, d.. . .
Introdução à Programação Prolog 14
Programas = Programas = Especificações FormaisEspecificações Formais
Programas = Programas = Especificações FormaisEspecificações Formais
a b.b c, d.. . .
Introdução à Programação Prolog 15
Programas = Programas = Especificações FormaisEspecificações Formais
Programas = Programas = Especificações FormaisEspecificações Formais
a b.b c, d.. . .
ok
Introdução à Programação Prolog 16
Programas = ProtótiposProgramas = ProtótiposProgramas = ProtótiposProgramas = Protótipos
Projetos grandes e caros ... ... podem ser prototipados rapidamente.
Introdução à Programação Prolog 17
Programas = Programas = Bases de DadosBases de Dados
Programas = Programas = Bases de DadosBases de Dados
prolog bd
Introdução à Programação Prolog 18
Programas = Programas ... Programas = Programas ... Programas = Programas ... Programas = Programas ...
Prolog
C/C++
Java
Delphi
Lisp
... etc
Aplicações AvançadasAplicações AvançadasAplicações AvançadasAplicações Avançadas• Sistemas Especialistas,Sistemas Especialistas,• Engenharia de Software,Engenharia de Software,• Simulação,Simulação,• Educação,Educação,• Suporte à Decisão,Suporte à Decisão,• Programação CientíficaProgramação Científica• Bases de Dados Dedutivas,Bases de Dados Dedutivas,• Programação da Web.Programação da Web.
Introdução à Programação Prolog 20
Sistemas EspecialistasSistemas EspecialistasSistemas EspecialistasSistemas Especialistas
• Diagnóstico médico,Diagnóstico médico,• Controle Ambiental,Controle Ambiental,• Cultura Animal,Cultura Animal,• Controle de Tráfego Controle de Tráfego
Aéreo,Aéreo,• Indústria Aeroespacial.Indústria Aeroespacial.
Introdução à Programação Prolog 21
Engenharia de SoftwareEngenharia de SoftwareEngenharia de SoftwareEngenharia de Software
• Especificações Formais,Especificações Formais,
• Prototipação,Prototipação,
• Modelagem de Processos,Modelagem de Processos,
• Engenharia Reversa,Engenharia Reversa,
• Manutenção de Software.Manutenção de Software.
Introdução à Programação Prolog 22
Simulação e EducaçãoSimulação e EducaçãoSimulação e EducaçãoSimulação e Educação• Modelagem Ambiental,• Modelagem
Organizacional,• Sistemas Tutoriais
Inteligentes,• Ensino de Lógica a
Adolescentes.
Introdução à Programação Prolog 23
Suporte à DecisãoSuporte à DecisãoSuporte à DecisãoSuporte à Decisão• Mercados de estoques, Mercados de estoques,
ações e capital,ações e capital,
• Apoio à decisões Apoio à decisões judiciais,judiciais,
• Análise de Investimentos, Análise de Investimentos, etc.etc.
Introdução à Programação Prolog 24
Bases de Dados Bases de Dados DedutivasDedutivas
Bases de Dados Bases de Dados DedutivasDedutivas
O cálculo de predicados de
primeira ordem possui
expressividade equivalente à da
álgebra relacional.
Introdução à Programação Prolog 25
Programação da WebProgramação da WebProgramação da WebProgramação da Web
• Extensões html e httpExtensões html e http• Web SemânticaWeb Semântica• SWI-PrologSWI-Prolog• PiLLoWPiLLoW• Amzi! PrologAmzi! Prolog• Muitos outros Muitos outros
(vale pesquisar)(vale pesquisar)
Introdução à Programação Prolog 26
Alguns PonteirosAlguns PonteirosAlguns PonteirosAlguns Ponteiros• Prolog na Wikipedia Prolog na Wikipedia
http://pt.wikipedia.org/wiki/Prolog •
• Programação em Lógica Programação em Lógica http://vl.fmnet.info/logic-prog/
• SWI Prolog SWI Prolog http://www.swi-prolog.org