PrologProlog Luiz A. M. Palazzo Pelotas, maio de 2010 Universidade Católica de Pelotas Centro...

Post on 17-Apr-2015

110 views 0 download

Transcript of PrologProlog Luiz A. M. Palazzo Pelotas, maio de 2010 Universidade Católica de Pelotas Centro...

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