PrologProlog Luiz A. M. Palazzo Pelotas, maio de 2010 Universidade Católica de Pelotas Centro...
Transcript of PrologProlog Luiz A. M. Palazzo Pelotas, maio de 2010 Universidade Católica de Pelotas Centro...
![Page 1: PrologProlog Luiz A. M. Palazzo Pelotas, maio de 2010 Universidade Católica de Pelotas Centro Politécnico Bacharelado em Ciência da Computação Introdução.](https://reader035.fdocuments.net/reader035/viewer/2022062418/552fc10d497959413d8c44fa/html5/thumbnails/1.jpg)
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
![Page 2: PrologProlog Luiz A. M. Palazzo Pelotas, maio de 2010 Universidade Católica de Pelotas Centro Politécnico Bacharelado em Ciência da Computação Introdução.](https://reader035.fdocuments.net/reader035/viewer/2022062418/552fc10d497959413d8c44fa/html5/thumbnails/2.jpg)
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
![Page 3: PrologProlog Luiz A. M. Palazzo Pelotas, maio de 2010 Universidade Católica de Pelotas Centro Politécnico Bacharelado em Ciência da Computação Introdução.](https://reader035.fdocuments.net/reader035/viewer/2022062418/552fc10d497959413d8c44fa/html5/thumbnails/3.jpg)
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
![Page 4: PrologProlog Luiz A. M. Palazzo Pelotas, maio de 2010 Universidade Católica de Pelotas Centro Politécnico Bacharelado em Ciência da Computação Introdução.](https://reader035.fdocuments.net/reader035/viewer/2022062418/552fc10d497959413d8c44fa/html5/thumbnails/4.jpg)
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...
![Page 5: PrologProlog Luiz A. M. Palazzo Pelotas, maio de 2010 Universidade Católica de Pelotas Centro Politécnico Bacharelado em Ciência da Computação Introdução.](https://reader035.fdocuments.net/reader035/viewer/2022062418/552fc10d497959413d8c44fa/html5/thumbnails/5.jpg)
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.
![Page 6: PrologProlog Luiz A. M. Palazzo Pelotas, maio de 2010 Universidade Católica de Pelotas Centro Politécnico Bacharelado em Ciência da Computação Introdução.](https://reader035.fdocuments.net/reader035/viewer/2022062418/552fc10d497959413d8c44fa/html5/thumbnails/6.jpg)
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:
![Page 7: PrologProlog Luiz A. M. Palazzo Pelotas, maio de 2010 Universidade Católica de Pelotas Centro Politécnico Bacharelado em Ciência da Computação Introdução.](https://reader035.fdocuments.net/reader035/viewer/2022062418/552fc10d497959413d8c44fa/html5/thumbnails/7.jpg)
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).
![Page 8: PrologProlog Luiz A. M. Palazzo Pelotas, maio de 2010 Universidade Católica de Pelotas Centro Politécnico Bacharelado em Ciência da Computação Introdução.](https://reader035.fdocuments.net/reader035/viewer/2022062418/552fc10d497959413d8c44fa/html5/thumbnails/8.jpg)
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).
![Page 9: PrologProlog Luiz A. M. Palazzo Pelotas, maio de 2010 Universidade Católica de Pelotas Centro Politécnico Bacharelado em Ciência da Computação Introdução.](https://reader035.fdocuments.net/reader035/viewer/2022062418/552fc10d497959413d8c44fa/html5/thumbnails/9.jpg)
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
![Page 10: PrologProlog Luiz A. M. Palazzo Pelotas, maio de 2010 Universidade Católica de Pelotas Centro Politécnico Bacharelado em Ciência da Computação Introdução.](https://reader035.fdocuments.net/reader035/viewer/2022062418/552fc10d497959413d8c44fa/html5/thumbnails/10.jpg)
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).
![Page 11: PrologProlog Luiz A. M. Palazzo Pelotas, maio de 2010 Universidade Católica de Pelotas Centro Politécnico Bacharelado em Ciência da Computação Introdução.](https://reader035.fdocuments.net/reader035/viewer/2022062418/552fc10d497959413d8c44fa/html5/thumbnails/11.jpg)
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
![Page 12: PrologProlog Luiz A. M. Palazzo Pelotas, maio de 2010 Universidade Católica de Pelotas Centro Politécnico Bacharelado em Ciência da Computação Introdução.](https://reader035.fdocuments.net/reader035/viewer/2022062418/552fc10d497959413d8c44fa/html5/thumbnails/12.jpg)
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.
![Page 13: PrologProlog Luiz A. M. Palazzo Pelotas, maio de 2010 Universidade Católica de Pelotas Centro Politécnico Bacharelado em Ciência da Computação Introdução.](https://reader035.fdocuments.net/reader035/viewer/2022062418/552fc10d497959413d8c44fa/html5/thumbnails/13.jpg)
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.. . .
![Page 14: PrologProlog Luiz A. M. Palazzo Pelotas, maio de 2010 Universidade Católica de Pelotas Centro Politécnico Bacharelado em Ciência da Computação Introdução.](https://reader035.fdocuments.net/reader035/viewer/2022062418/552fc10d497959413d8c44fa/html5/thumbnails/14.jpg)
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.. . .
![Page 15: PrologProlog Luiz A. M. Palazzo Pelotas, maio de 2010 Universidade Católica de Pelotas Centro Politécnico Bacharelado em Ciência da Computação Introdução.](https://reader035.fdocuments.net/reader035/viewer/2022062418/552fc10d497959413d8c44fa/html5/thumbnails/15.jpg)
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
![Page 16: PrologProlog Luiz A. M. Palazzo Pelotas, maio de 2010 Universidade Católica de Pelotas Centro Politécnico Bacharelado em Ciência da Computação Introdução.](https://reader035.fdocuments.net/reader035/viewer/2022062418/552fc10d497959413d8c44fa/html5/thumbnails/16.jpg)
Introdução à Programação Prolog 16
Programas = ProtótiposProgramas = ProtótiposProgramas = ProtótiposProgramas = Protótipos
Projetos grandes e caros ... ... podem ser prototipados rapidamente.
![Page 17: PrologProlog Luiz A. M. Palazzo Pelotas, maio de 2010 Universidade Católica de Pelotas Centro Politécnico Bacharelado em Ciência da Computação Introdução.](https://reader035.fdocuments.net/reader035/viewer/2022062418/552fc10d497959413d8c44fa/html5/thumbnails/17.jpg)
Introdução à Programação Prolog 17
Programas = Programas = Bases de DadosBases de Dados
Programas = Programas = Bases de DadosBases de Dados
prolog bd
![Page 18: PrologProlog Luiz A. M. Palazzo Pelotas, maio de 2010 Universidade Católica de Pelotas Centro Politécnico Bacharelado em Ciência da Computação Introdução.](https://reader035.fdocuments.net/reader035/viewer/2022062418/552fc10d497959413d8c44fa/html5/thumbnails/18.jpg)
Introdução à Programação Prolog 18
Programas = Programas ... Programas = Programas ... Programas = Programas ... Programas = Programas ...
Prolog
C/C++
Java
Delphi
Lisp
... etc
![Page 19: PrologProlog Luiz A. M. Palazzo Pelotas, maio de 2010 Universidade Católica de Pelotas Centro Politécnico Bacharelado em Ciência da Computação Introdução.](https://reader035.fdocuments.net/reader035/viewer/2022062418/552fc10d497959413d8c44fa/html5/thumbnails/19.jpg)
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.
![Page 20: PrologProlog Luiz A. M. Palazzo Pelotas, maio de 2010 Universidade Católica de Pelotas Centro Politécnico Bacharelado em Ciência da Computação Introdução.](https://reader035.fdocuments.net/reader035/viewer/2022062418/552fc10d497959413d8c44fa/html5/thumbnails/20.jpg)
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.
![Page 21: PrologProlog Luiz A. M. Palazzo Pelotas, maio de 2010 Universidade Católica de Pelotas Centro Politécnico Bacharelado em Ciência da Computação Introdução.](https://reader035.fdocuments.net/reader035/viewer/2022062418/552fc10d497959413d8c44fa/html5/thumbnails/21.jpg)
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.
![Page 22: PrologProlog Luiz A. M. Palazzo Pelotas, maio de 2010 Universidade Católica de Pelotas Centro Politécnico Bacharelado em Ciência da Computação Introdução.](https://reader035.fdocuments.net/reader035/viewer/2022062418/552fc10d497959413d8c44fa/html5/thumbnails/22.jpg)
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.
![Page 23: PrologProlog Luiz A. M. Palazzo Pelotas, maio de 2010 Universidade Católica de Pelotas Centro Politécnico Bacharelado em Ciência da Computação Introdução.](https://reader035.fdocuments.net/reader035/viewer/2022062418/552fc10d497959413d8c44fa/html5/thumbnails/23.jpg)
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.
![Page 24: PrologProlog Luiz A. M. Palazzo Pelotas, maio de 2010 Universidade Católica de Pelotas Centro Politécnico Bacharelado em Ciência da Computação Introdução.](https://reader035.fdocuments.net/reader035/viewer/2022062418/552fc10d497959413d8c44fa/html5/thumbnails/24.jpg)
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.
![Page 25: PrologProlog Luiz A. M. Palazzo Pelotas, maio de 2010 Universidade Católica de Pelotas Centro Politécnico Bacharelado em Ciência da Computação Introdução.](https://reader035.fdocuments.net/reader035/viewer/2022062418/552fc10d497959413d8c44fa/html5/thumbnails/25.jpg)
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)
![Page 26: PrologProlog Luiz A. M. Palazzo Pelotas, maio de 2010 Universidade Católica de Pelotas Centro Politécnico Bacharelado em Ciência da Computação Introdução.](https://reader035.fdocuments.net/reader035/viewer/2022062418/552fc10d497959413d8c44fa/html5/thumbnails/26.jpg)
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