Laboratorio N3 Instalacin y Primeras consultas en Prolog
Daniel Fernndez Gonzlez
Martes 22, Abril 2014
Introduccin
El SWI-Prolog, es un compilador que consiste en un lenguaje de programacin, que est basado en una estructura lgica, con el fin hacer un programa que contengan todos los datos posibles para poder hacer consultas y relaciones de manera inteligente, y sencilla. Cmo funciona principalmente este programa?
Primero hay desarrollar nuestro programa, que se puede escribir y editar en un Block de notas, como en nuestro sistema operativo, Windows 8.1 lo tiene incluido, posteriormente es escribir el cdigo como aparece en la imagen 01, luego escribir nuestro cdigo fuente, posteriormente se guarda en un archivo *.pl. Como en la imagen 02, ahora ejecutar el programa swipl-win.exe aparecer la siguiente ventana Imagen 03. Y ahora a realizar las consultas para el programa. Y l responder correctamente encontrando las soluciones primeramente acertadas.
Nota 01: (El programa se encuentra en el siguiente enlace: http://www.swi- prolog.org/download/stable).
Imagen 01, block de notas, en Windows 8.1 (64 bits)
Imagen 02, cono de programa fuente que utiliza nuestro SWI- Prolog
Imagen 03, Ejecutando swipl-win.exe
Desarrollo
Resuelva los siguientes problemas:
Problema 1.
Dada la siguiente Base de Conocimiento, construya las preguntas capaces de encontrar las siguientes cosas
Se pide: Averiguar qu cosas le gustan a Mara. Hay algo que le guste tanto Juan como a Mara?
Para calcular el Factorial de un nmero, Prolog lo calcula en forma recursiva
factorial(0,1). factorial(A,B) :- A > 0, C is A-1, factorial(C,D), B is A*D.
Valide el funcionamiento del programa entregado y evale el factorial de 10.
Como resultado obtuvimos 3628800, tal como se muestra en la imagen
10!= 10*9*8*7*6*5*4*3*2*1= 3628800
Problema 3.
Queremos una Base de Conocimiento sobre las personas de tu familia. Defina las personas (hombres y mujeres) que la componen. Defina las relaciones de parentesco ms sencillas: ejemplo es_hijo_de(X,Y).
Defina las reglas que permitan saber: - Quin es abuelo/a de quin, - Quin es padre/madre, - Quin es hermana/hermano.
Cada circuito lgico digital puede ser descrito por un predicado en Prolog, donde el predicado indica la relacin entre las seales en los terminales de entrada y de salida del circuito. Los digitales circuitos fundamentales se describen dando una tabla de los correspondientes valores de verdad. Los circuitos fundamentales se pueden describir mediante la indicacin de las relaciones entre las conexiones internas, as como los terminales. Se pide la construccin de un circuito OR exclusivo mediante compuertas AND, OR y NOT. Compruebe su funcionamiento con un programa Prolog.
En la primera parte del cdigo se dan a conocer las reglas de cada circuito lgico, en la cual se inicia con el not, dando a conocer que el valor si la entrada es 0, toma como resultado 1, y as sucesivamente, no entraremos a detallar especficamente cada circuito dado que se da por entendido.
En donde la_salida_es se interpreta las reglas del circuido, dado que al momento de colocar las consultas, ste es aquel que nos responder, cmo debemos hacer las consultas, de la siguiente manera la_salida_es(0,0,X). en este caso estamos preguntando qu valor tomara la salida, s la entrada1 y entrada2 son 0, y la respuesta ser 0, tal como se mostrar en la siguiente imagen, en la cual se realizaron una serie de preguntas basada en las entras y salidas.
Por lo tanto como resultados podemos observar que si cualquiera de las entradas es 1 la salida ser 1 tal como muestra la imagen anterior.
Tambin se pregunt, que entrada debe ser para que la salida sea de tal manera como se puede apreciar en la imagen, desde la consulta 5 hacia adelante.
Se adjuntara los archivos de *.pl en el siguiente link: http://www.4shared.com/rar/SIwL1fvwce/informe_n3.html
Conclusin
Se realiz con lo pedido en el informe, pudimos entender de una forma sencilla como funciona el lenguaje prolog en nuestro programa SWI-Prolog, que con el cual trabajamos para desarrollar cada actividad, tambin se demostr como es el funcionamiento del programa, utilizando una serie de ejercicios propuestos, partiendo de la forma ms sencilla, con el fin de jugar y prender como programar, hasta llegar a un problema ms complicado, con el ejercicio 4, el del circuito lgico en el cual, tuve ciertas complicaciones al momento de hacer las relaciones, en el cual busque informacin en la web, pero se desarroll y de demostr tal como debera. El programa es muy poderoso al momento de querer configurar o programar problemas complejos y complicados, pero primero debemos saber bien que es lo que tenemos que hacer, y desarrollar nuestra base de datos para implementarlo en le programa.