Você está na página 1de 7

Universidad Nacional de Loja

Area de la Energ a, Las Industrias y los Recursos Naturales No Renovables Carrera de Ingenier a en Sistemas Laboratorio en PROLOG
Edgar Manuel Macas Loja 09 abril del 2013

1.

Tema
Laboratorio en PROLOG

2.

Antecedentes

El Prolog es un lenguaje de programaci on l ogica, esto signica que est a basado en l ogica de predicados, en concreto en un subconjunto de esta l ogica denominado cl ausulas de Horn. En Prolog, un programa es un conjunto de hechos y reglas que representan el problema que se pretende resolver. Ante una determinada pregunta sobre el problema, el Prolog utilizar a estos hechos y reglas para intentar demostrar la veracidad o falsedad de la pregunta que se le ha planteado. La demostraci on de la pregunta se basa en dos principios: La unicaci on: Es el algoritmo que se encarga de resolver las igualdades l ogicas. El principio de resoluci on: Es el algoritmo que, a partir de la negaci on de la pregunta y los hechos y reglas del programa, intenta llegar a un absurdo para demostrar que la pregunta es cierta. La popularidad de estos lenguajes se debe a su capacidad de deducci on y adem as es un lenguaje f acil de usar por su sem antica y sintaxis. S olo busca relaciones entre los objetos creados, las variables y las listas, que son una estructura b asica. En el presente reporte se tratar a de abordar una rese na hist orica para lograr entender los or genes del Prolog, su estructura b asica y algunas ventajas y desventajas. Para nalmente mostrar un ejemplo haciendo conocer su sintaxis y funcionamiento [1].

3.

Objetivos
Mediante el siguiente trabajo se pretende alcanzar los siguientes objetivos: Aprender la rese na hist orica del Prolog y la importancia que tiene en la actualidad para desarrollar programas que utilizan Inteligencia Articial. Comprender la estructura, sintaxis del Prolog para poder desarrollar aplicaciones funcionales. Aplicar los conocimientos adquiridos de l ogica de Predicados

4.
4.1.

Descripci on
Historia

El lenguaje de programaci on PROLOG (PROgrammation en LOGique) fue creado por Alain Colmerauer y sus colaboradores alrededor de 1970 en la Universidad de Marseille-Aix, si bien uno de los principales protagonistas de su desarrollo 2

y promoci on fue Robert Kowalski de la Universidad de Edimburgh. Las investigaciones de Kowalski proporcionaron el marco te orico, mientras que los trabajos de Colmerauer dieron origen al actual lenguaje de programaci on, construyendo el primer interprete Prolog. Inicialmente se trataba de un lenguaje totalmente interpretado hasta que, en 1983, David H.D. Warren desarroll o un compilador capaz de traducir Prolog en un conjunto de instrucciones de una m aquina abstracta denominada Warren Abstract Machine, o abreviadamente, WAM. Desde entonces Prolog es un lenguaje semi-interpretado. Prolog se enmarca en el paradigma de los lenguajes l ogicos y declarativos, lo que lo diferencia enormemente de otros lenguajes m as populares tales como Fortran, Pascal, C o Java. Los programas en Prolog se componen de cl ausulas de Horn que constituyen reglas del tipo modus ponendo ponens, es decir, Si es verdad el antecedente, entonces es verdad el consecuente. No obstante, la forma de escribir las cl ausulas de Horn es al contrario de lo habitual. Primero se escribe el consecuente y luego el antecedente. El antecedente puede ser una conjunci on de condiciones que se denomina secuencia de objetivos. Cada objetivo se separa con una coma y puede considerarse similar a una instrucci on o llamada a procedimiento de los lenguajes imperativos. En Prolog no existen instrucciones de control [2].

4.2.

Descripci on

Prolog es un lenguaje de programaci on simple, pero poderoso. Se basa en nociones matem aticas de relaciones de inferencia. Es un lenguaje declarativo e interpretado, esto quiere decir que el lenguaje se usa para representar conocimientos sobre un determinado dominio y las relaciones entre objetos de ese dominio. Un programa en Prolog consiste de una base de datos de relaciones l ogicas y detalles que se cumplen para la aplicaci on. Dicha base de datos no tiene una estructura impuesta, ni un procedimiento o clase principal. Los datos y relaciones de un programa en Prolog se escriben en un u nico archivo, el cual es consultado por el programa cuando se le hace una pregunta. Estructura de un programa en Prolog Estructura de un programa en Prolog Hechos: Es un hecho del lenguaje cotidiano. En lenguaje normal, una proposici on puede ser hace calor. Reglas: Las capacidades del programa. Estas son consultadas al hacer una consulta para vericar su validez o invalidez. Variables: Representan objetos que el mismo Prolog determina. Una variable puede estar instanciada o no instanciada. Consultas: Es la acci on de hacerle una pregunta al programa sobre la informaci on contenida en la base de datos. Una pregunta sencilla podr a ser: ?- Hace Calor. Una respuesta podr a ser: si, seguido por el prompt: ?-. Un si signica que la pregunta es consistente con la informaci on contenida en la base de datos. Si no existe suciente informaci on, responde: no [3]. 3

4.3.

Ventajas y Desventajas de Prolog


Desde el punto del usuario la facilidad de programar ya que se puede escribir programas r apidamente, con pocos errores originando programas claramente legibles, aun si no se conoce declaraciones dentro del programa. Prolog inere sus respuestas bas andose en las reglas declaradas dentro del programa. En Prolog se utiliza notaci on preja e inja mientras que en Lisp solo utiliza notaci on preja.

Ventajas

Desventajas La resoluci on autom atica no siempre es eciente, por lo que eventualmente se podr a dar una respuesta incorrecta a una consulta. Prolog es algunas veces es incapaz de reconocer que un problema es (para su propio conocimiento) inaplicable o insuciente. Si el programa no contiene suciente informaci on para contestar una consulta, es incapaz de reconocerlo y responde no. En esta situaci on ser a m as eciente conocer que la respuesta no es negativa, sino que no es posible inferir un resultado. Los motores de inferencia poseen algunos l mites [4].

4.4.

Aplicaciones en Inteligencia Articial

Se utiliza en aplicaciones de inteligencia articial, como interfaces de idiomas en los que busca en la base de datos para responder una pregunta. Otra a rea de su aplicaci on es en sistemas ambientales que son capaces de predecir el clima, analizar suministros de agua, entre otros [5].

4.5.

Desarrollo de la Aplicaci on en Prolog

El objetivo es poner en pr actica los conocimientos adquiridos del Prolog para lo cu al utilizaremos en SWI-Prolog. SWI-Prolog es una implementaci on en c odigo abierto (en ingl es, open source) del lenguaje de programaci on Prolog. Su autor principal es Jan Wielemaker. En desarrollo ininterrumpido desde 1987, SWI-Prolog posee un rico conjunto de caracter sticas, bibliotecas (incluyendo su propia biblioteca para GUI, XPCE), herramientas (incluyendo un IDE) y una documentaci on extensiva. SWI-Prolog funciona en las plataformas Unix, Windows y Macintosh [6]. Ejercicio: Un alumno de Inform atica, debido al nerviosismo del primer d a de clase, ha anotado el nombre de sus profesores (Carla, Pedro y Andres), las asignaturas que se imparten (L ogica, Programaci on y Matem aticas) y el d a de la semana de las distintas clases (lunes, mi ercoles y jueves), pero s olo recuerda que: 4

La clase de Programaci on, impartida por Carla, es posterior a la de L ogica. A Andres no le gusta trabajar los lunes, d a en el que no se imparte L ogica Ser as capaz de ayudarle a relacionar cada profesor con su asignatura, as como el d a de la semana que se imparte? (Sabemos que cada profesor imparte una u nica asignatura y que las clases se dan en d as diferentes) [7] Resoluci on del Problema 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 % BASE DE CONOCIMIENTOS / PROPIEDADES / % d e f i n e l o s nombres de l o s p r o f e s o r e s % p r o f ( P r o f e s o r ) < P r o f e s o r e s e l nombre de un p r o f e s o r prof ( carla ) . p r o f ( pedro ) . prof ( andres ) . % d e f i n e l o s nombres de l a s a s i g n a t u r a s % a s i g ( A s i g n a t u r a ) < A s i g n a t u r a e s e l nombre de una a s i g n a t u r a asig ( logica ). a s i g ( programacion ) . a s i g ( matematicas ) . % d e f i n e l o s d i a s de c l a s e s % d i a ( Dia ) < Dia e s un d i a de l a semana que hay a l g u n a c l a s e dia ( lunes ) . dia ( miercoles ) . dia ( jueves ) . % RELACIONES % r1 ( P r o f e s o r , A s i g n a t u r a ) < P r o f e s o r i m p a r t e l a A s i g n a t u r a r 1 ( c a r l a , programacion ) . r 1 ( P r o f e s o r , A s i g n a t u r a ) : p r o f ( P r o f e s o r ) , P r o f e s o r \=c a r l a , a s i g ( Asignatura ) . % r2 ( P r o f e s o r , Dia ) < P r o f e s o r i m p a r t e s u s c l a s e s e l Dia de l a semana r 2 ( andres , Dia ) : d i a ( Dia ) , Dia \=l u n e s . r 2 ( P r o f e s o r , Dia ) : p r o f ( P r o f e s o r ) , P r o f e s o r \=andres , d i a ( Dia ) . % r3 ( Asignatura , Dia ) < A s i g n a t u r a s e i m p a r t e e l Dia de l a semana r 3 ( l o g i c a , Dia ) : d i a ( Dia ) , Dia \=l u n e s , Dia \= j u e v e s . r 3 ( programacion , Dia ) : d i a ( Dia ) , Dia \=l u n e s . r 3 ( Asignatura , Dia ) : a s i g ( A s i g n a t u r a ) , A s i g n a t u r a \= l o g i c a , A s i g n a t u r a \=programacion , d i a ( Dia ) .

Resultados A continuaci on se muestra algunos resultados al realizar consultas sobre que profesor imparte clases, que d a lo realiza y que materia brinda.

Fig 1: Realizaci on de consultas

5.

Conclusiones
SWI Prolog es uno de las mejores herramientas para la programaci on l ogica y al ser de libre acceso facilita mucho la programaci on en Prolog. La programaci on en Prolog es muy sencilla ya que utiliza pocos comandos en comparaci on con otros lenguajes de programaci on. El lenguaje Prolog est a orientado a la Inteligencia Articial ya que hace uso de la programaci on l ogica, brindando muchas facilidades al programar debido a su sencilla sitaxis gramatical y num erica. Prolog es una herramienta sencilla, potente y u til para el desarrollo de sistemas expertos e inteligencia articial.

Referencias
[1] Universidad de Valencia, Introducci on al PROLOG, Departamento de Inform atica, disponible en http://informatica.uv.es/iiguia/LP/teoria/ apuntes/cuatr2/prolog.pdf [2] ALONSO JIMENEZ, Jos e A. Introducci on a la Programaci on l ogica con Prolog, Universidad de Sevilla, 2006, disponible en: http://www.etnassoft. com/biblioteca/introduccion-a-la-programacion-logica-con-prolog/

[3] JONES PERES, Kathryn M. Introducci on al lenguaje de programaci on l ogica Prolog, Universidad de Costa Rica, San Jos e Costa Rica, 2010, disponible en: http://www.di-mare.com/adolfo/cursos/2007-2/pp-Prolog.pdf [4] EcuRed, Lenguaje de programaci on l ogico e interpretado (Prolog),disponible en: http://www.ecured.cu/index.php/Prolog_(Lenguaje_ de_programaci%C3%B3n)#Ventajas_y_desventajas_de_la_Programaci. C3.B3n_L.C3.B3gica [5] ROSSEL, Gerardo. Programaci on L ogica, white paper, Investigador del CAETI,disponible en: http://www.amzi.com/articles/code07_ whitepaper.pdf [6] WIELEMAKER, Ian, SWI-Prolog 5.10, University of Amsterdam, April 2010, disponible en: http://www.etnassoft.com/biblioteca/ swi-prolog-reference-manual/ [7] Universidad Nacional del Altiplano, PUNO, juego de l ogica, 2006, disponible en: http://www.it.uc3m.es/rcrespo/docencia/irc/lab/Ejercicios_ Prolog.pdf

6.

Licencia
CC Ecuador by Edgar Macas is licensed under a Creative Commons Reconocimiento 3.0 Ecuador License. Creado a partir de la obra en http://creativecommons.ec/.

Você também pode gostar