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