26
Prolog Prolog Luiz A. M. Palazzo Luiz A. M. Palazzo Pelotas, maio de 2010 Pelotas, maio de 2010 Universidade Católica de Pelotas Universidade Católica de Pelotas Centro Politécnico Centro Politécnico Bacharelado em Ciência da Computação Bacharelado em Ciência da Computação Introdução à Introdução à Programação Programação

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

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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