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 à 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
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
Programaçã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
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: a Regras: a b Consultas: b Vazia: Introdução à Programação Prolog
Fatos, Regras e Consultas Fatos: São verdades incondicionais: pai(josé, joão). pai(joão, júlio). pai(júlio, jorge). Introdução à Programação Prolog
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
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). X=joão ?- avô(X, jorge). X=joão Introdução à Programação Prolog
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
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
Programas = Lógica + Controle O programador codifica somente a lógica. O ambiente de programação executa o controle. Introdução à Programação Prolog
Programas = Especificações Formais a b. b c, d. . . . Introdução à Programação Prolog
Programas = Especificações Formais a b. b c, d. . . . Introdução à Programação Prolog
Programas = Especificações Formais a b. b c, d. . . . ok Introdução à Programação Prolog
Programas = Protótipos Projetos grandes e caros ... ... podem ser prototipados rapidamente. Introdução à Programação Prolog
Programas = Bases de Dados prolog bd Introdução à Programação Prolog
Programas = Programas ... C/C++ Java Delphi Prolog Lisp ... etc Introdução à Programação Prolog
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
Engenharia de Software Especificações Formais, Prototipação, Modelagem de Processos, Engenharia Reversa, Manutenção de Software. Introdução à Programação Prolog
Simulação e Educação Modelagem Ambiental, Modelagem Organizacional, Sistemas Tutoriais Inteligentes, Ensino de Lógica a Adolescentes. Introdução à Programação Prolog
Suporte à Decisão Mercados de estoques, ações e capital, Apoio à decisões judiciais, Análise de Investimentos, etc. Introdução à Programação Prolog
Bases de Dados Dedutivas O cálculo de predicados de primeira ordem possui expressividade equivalente à da álgebra relacional. Introdução à Programação Prolog
Programação da Web Extensões html e http Web Semântica SWI-Prolog PiLLoW Amzi! Prolog Muitos outros (vale pesquisar) Introdução à Programação Prolog
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