Manual prolog

  • Published on
    09-Jul-2015

  • View
    332

  • Download
    0

Embed Size (px)

Transcript

<ul><li><p>El Lenguaje deProgramacin</p><p>PROLOG</p></li><li><p>De M. Teresa Escrig:</p><p>A mi marido Pedro Martn, que aunque fsicamente ya no est aqu,</p><p>sigue presente en mi corazn y en mi recuerdo.</p><p>A Daniel y a mis padres, por su amor incondicional que me ha ayudado a superar momentos muy duros.</p><p>De Julio Pacheco:</p><p>A Sonia, por la entrega que me hace poner en todo lo que vivimos juntos.</p><p>De Francisco Toledo:</p><p>A Sergio y Mnica</p></li><li><p>IPrefacio</p><p>Este libro ha nacido como resultado de ocho aos de experiencia en la enseanzadel lenguaje de programacin PROLOG, impartida en cuarto curso de la carrera deIngeniera Informtica de la Universidad Jaume I de Castelln.</p><p>La primera vez que me puse a programar en PROLOG, para el desarrollo de mitesis doctoral, recuerdo que me fascin la forma de trabajar del lenguaje y losresultados que se podan obtener con l. Claro que rompa los esquemas de otroslenguajes de programacin que conoca, como el Pascal y el C, lenguajes orientadosal procedimiento a seguir para resolver el problema. PROLOG tiene un punto devista ms descriptivo o declarativo, es decir, especifica aquello que se quiereconseguir para resolver el problema, no cmo se va a resolver. En todos estos aosque llevo en la enseanza de este lenguaje, eso mismo les ha pasado a todos misalumnos y por eso sigo disfrutando de su enseanza. Al finalizar las tres horas deprcticas semanales, tengo que invitar a los alumnos, lo ms amablemente posible ycon una sonrisa de satisfaccin y complicidad en la boca, a que abandonen la salade ordenadores porque otro profesor con sus alumnos estn esperando en la puerta.</p><p>PROLOG es un lenguaje de programacin especialmente indicado para modelarproblemas que impliquen objetos y las relaciones entre ellos. Est basado en lossiguientes mecanismos bsicos: unificacin, estructuras de datos basadas en rbolesy backtracking automtico. La sintaxis del lenguaje incluye la declaracin dehechos, preguntas y reglas. Con la definicin de este pequeo conjunto deconceptos se consigue un lenguaje de programacin muy potente y flexible,ampliamente utilizado (junto con el lenguaje de programacin LISP) enaplicaciones que utilizan tcnicas de Inteligencia Artificial.</p><p>PROLOG tiene sus fundamentos en la lgica matemtica. En el plan de estudiosvigente en nuestra Universidad desde su comienzo en 1991, tanto el lenguajePROLOG como sus fundamentos lgicos, se estudian en la misma asignaturaLenguajes de Programacin III, en cuarto curso de la Ingeniera Informtica. Losfundamentos lgicos se ven en la parte terica, en 25 horas, y el lenguaje PROLOGen la parte de laboratorio, en 50 horas. Ambas partes comienzan a la vez, aunque laparte terica sea el fundamento de la parte prctica de la asignatura. Sin embargo,como Ivan Bratko apunta en su libro PROLOG. Programming for ArtificialIntelligence: una introduccin matemtica fuerte no es conveniente si el propsitoes ensear PROLOG como una herramienta de programacin prctica. As que elpresente libro slo contiene los principios de enseanza del PROLOG y susprincipales aplicaciones, tal y como son utilizadas en parte prctica de dichaasignatura. Otro volumen de este mismo libro titulado Principios de laProgramacin Lgica contiene los fundamentos en lgica de primer orden, tal ycomo son utilizados en la teora de la misma asignatura.</p><p>En este momento y hasta que se publique, este libro de teora puede conseguirse enla pgina web del grupo de investigacin Intelligent Control Systems de la</p></li><li><p>Prefacio</p><p>II</p><p>Universidad Jaume I (http://ics.uji.es). Tambin estn disponibles en esta pginauna seleccin de proyectos resueltos por los alumnos.</p><p>El contenido del libro se puede estructurar en tres partes. La parte I la forman loscaptulos 1, 2, 3 y 4 que constituyen la base para el aprendizaje del lenguajePROLOG, incluyendo el manejo de listas y el corte en PROLOG. La parte II estcompuesta por los cuatro captulos siguientes; teniendo los captulos 5, 6 y 7 lasprincipales aplicaciones de PROLOG, como las bases de datos, las gramticas y lossistemas expertos, y en el captulo 8 aparece una extensin del PROLOG a laprogramacin lgica basada en restricciones. La parte III contiene el captulo 9, queconsiste en el enunciado de varios proyectos de envergadura mediana, en el que seutilizar el PROLOG como lenguaje de programacin; un apndice con la solucina una seleccin de ejercicios; y la bibliografa referenciada en todo el libro. Cadacaptulo contiene, adems, una bibliografa especfica a cada tema, para facilitar suestudio cuando es elegido como tema de proyecto.</p><p>En cada uno de los captulos, la explicacin del contenido est abundantementeintercalada con ejemplos, para que el alumno los pruebe y comprenda sufuncionamiento, y ejercicios planteados que sern desarrollados por el alumno en ellaboratorio.</p><p>La idea es que todos los captulos sean vistos y practicados en una sesin delaboratorio de 3 horas, excepto los captulos que hacen referencia al tratamiento delistas y los que se refieren a los campos de aplicacin del PROLOG como las basesde datos, las gramticas y los sistemas expertos, cuya duracin prevista es de dossesiones de prcticas de 3 horas cada una. El objetivo es que quede tiempo de claseguiada por el profesor para el desarrollo de un proyecto de mediana envergadura, yaque el paso de solucionar problemas pequeos a solucionar problemas de medianaenvergadura no es trivial.</p><p>Este libro est orientado especialmente a los estudiantes de PROLOG en unaasignatura de caractersticas similares a las descritas en este prefacio, es decir paraalumnos que tengan unos conocimientos de ordenadores, bases de datos ygramticas, que podran adquirirse en tres aos de docencia en una carrera deinformtica. Pero tambin est escrito para aquel lector que quiera aprender ellenguaje PROLOG por su cuenta, y que no quiera quedarse slo con aprender autilizarlo, sino que busque profundizar en su aplicacin a reas de InteligenciaArtificial.</p><p>En este libro se ha elegido como entorno de programacin ECLiPSe, que contieneel PROLOG estndar y algunas extensiones para manejar bases de datos(incluyendo bases de datos declarativas y bases de conocimiento), programacinlgica basada en restricciones (en concreto programacin lgica basada enrestricciones sobre dominios finitos), y programacin concurrente, entre otrasextensiones. La eleccin de ECLiPSe se hace por los siguientes motivos:</p><p>1) es compilado y por tanto ms eficiente que otros entornos interpretados;</p><p>2) tiene un entorno agradable de trabajo, con un depurador de programasbastante bueno, que permite seguir paso a paso el funcionamiento delPROLOG, lo cual es necesario para comprender su funcionamiento y endefinitiva para aprender a programar en PROLOG;</p></li><li><p>El Lenguaje de Programacin PROLOG</p><p>III</p><p>3) se dispone de una licencia gratuita para docencia;</p><p>4) existe una versin para LINUX y otra para Windows NT (con posibilidad deacoplarlo a Windows 95), que permite a los alumnos instalrselo en susordenadores personales para hacer prcticas en casa;</p><p>5) es un potente entorno profesional que se sigue desarrollado actualmente.</p><p>Sin embargo, casi todos los predicados predefinidos de ECLiPSe puedenencontrarse en otro entorno de programacin, como puede ser SICStus Prolog.</p><p>Nuestro ms ferviente deseo al escribir el libro es que el lector experimente ellenguaje PROLOG y su aprendizaje como un desafo intelectual excitante.</p><p>Francisco Toledo LoboJulio Pacheco Aparicio</p><p>M. Teresa Escrig Monferrer</p><p>Julio de 2001</p></li><li><p>El Lenguaje de Programacin PROLOG</p><p>V</p><p>ndice</p><p>PREFACIO...........................................................................................................................................................I</p><p>NDICE................................................................................................................................................................V</p><p>1. FUNDAMENTOS DE PROLOG..........................................................................................................9</p><p>Contenido .........................................................................................................................................................91.1. Introduccin .............................................................................................................................................91.2. Los hechos PROLOG........................................................................................................................... 101.3. Las preguntas PROLOG...................................................................................................................... 101.4. Las reglas PROLOG............................................................................................................................. 131.5. La sintaxis PROLOG............................................................................................................................ 151.6. Significado declarativo y procedural de los programas................................................................ 181.7. El entorno de programacin ECLiPSe............................................................................................ 19</p><p>2. TRATAMIENTO DE LISTAS EN PROLOG............................................................................... 21</p><p>Contenido ...................................................................................................................................................... 212.1. Listas en PROLOG............................................................................................................................... 212.2. Ejemplos de solucin de problemas de listas en PROLOG........................................................... 232.3. Construccin de expresiones aritmticas en PROLOG................................................................. 272.4. Comparacin de trminos en PROLOG. .......................................................................................... 272.5. Comparacin de expresiones en PROLOG...................................................................................... 28</p><p>3. EL CORTE EN PROLOG................................................................................................................... 31</p><p>Contenido ...................................................................................................................................................... 313.1. Introduccin .......................................................................................................................................... 313.2. Comportamiento del corte en PROLOG........................................................................................... 323.3. Usos comunes del corte....................................................................................................................... 32</p><p>3.3.1. No buscar soluciones en predicados alternativos.....................................................................323.3.2. Combinacin de corte y fallo .......................................................................................................333.3.3. Slo es necesaria la primera solucin.........................................................................................33</p><p>3.4. Problemas con el corte........................................................................................................................ 353.5. La negacin y sus problemas.............................................................................................................. 353.6. Ejercicios................................................................................................................................................ 36</p><p>4. PREDICADOS PREDEFINIDOS..................................................................................................... 41</p><p>Contenido ...................................................................................................................................................... 414.1. El esquema condicional en PROLOG............................................................................................... 414.2. La notacin operador. ......................................................................................................................... 424.3. Predicados predefinidos...................................................................................................................... 43</p><p>4.3.1. Clasificacin de trminos.............................................................................................................434.3.2. Control de otros predicados.........................................................................................................444.3.3. Introduccin de nuevas clusulas ...............................................................................................454.3.4. Construccin y acceso a componentes de estructuras .............................................................454.3.5. Supervisin de PROLOG en su funcionamiento......................................................................464.3.6. Lectura/escritura y manejo de ficheros......................................................................................464.3.7. Manipulacin de Bases de Datos ................................................................................................49</p><p>4.4. Otros predicados predefinidos........................................................................................................... 514.5. Ejemplo de uso de predicados predefinidos.................................................................................... 52</p></li><li><p>ndice</p><p>VI</p><p>5. PROGRAMACIN LGICA Y BASES DE DATOS ................................................................ 55</p><p>Contenido ...................................................................................................................................................... 555.1. Introduccin al modelo relacional y al lgebra relacional.......................................................... 555.2. Algebra relacional versus programas lgicos................................................................................. 58</p><p>5.2.1. Representacin de relaciones en PROLOG...............................................................................585.2.2. Representacin de operadores del lgebra relacional con PROLOG....................................59</p><p>5.3. Bases de datos relacionales utilizando ECLiPSe ........................................................................... 615.3.1. Creacin de bases de datos ..........................................................................................................625.3.2. Definicin de relaciones ...............................................................................................................625.3.3. Insertar datos en la base de datos................................................................................................635.3.4. Acceso a los datos de la base de datos.......................................................................................645.3.5. Borrado de datos de la base de datos ......................</p></li></ul>

Recommended

View more >