Sunteți pe pagina 1din 9

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?



le_gusta_a(juan, maria).
le_gusta_a(pedro, coche).
le_gusta_a(maria, libro).
le_gusta_a(maria, juan).
le_gusta_a(jose, maria).
le_gusta_a(jose, coche).
le_gusta_a(jose, pescado).
es_amigo_de(juan,X):-le_gusta_a(X, coche).

Desarrollo 1:

le_gusta_a(maria,X).
le_gusta_a(juan,A), le_gusta_a(maria,A).














Problema 2.

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.


padre_de(leopoldo,manuel).
padre_de(leopoldo,daniel).
padre_de(leopoldo,joceline).
padre_de(leopoldo,bianca).
padre_de(manuel,martina).
padre_de(manuel,emilia).


madre_de(andrea,manuel).
madre_de(andrea,daniel).
madre_de(andrea,joceline).
madre_de(andrea,bianca).
madre_de(valeria,martina).
madre_de(valeria,emilia)

pololo_de(leopoldo,sandra).
pololo_de(sandra,leopoldo).
pololo_de(manuel,valeria).
pololo_de(valeria,manuel).

es_hermano_de(manuel,daniel).
es_hermano_de(manuel,joceline).
es_hermano_de(manuel,bianca).

es_hermano_de(daniel,manuel).
es_hermano_de(daniel,joceline).
es_hermano_de(daniel,bianca).

es_hermano_de(joceline,daniel).
es_hermano_de(joceline,manuel).
es_hermano_de(joceline,bianka).

es_hermano_de(bianca,manuel).
es_hermano_de(bianca,daniel).
es_hermano_de(bianca,joceline).

es_hermano_de(martina,emilia).
es_hermano_de(emilia,martina).

es_hija_de(martina,manuel).
es_hija_de(emilia,manuel).

es_abuelo_de(leopoldo,emilia).
es_abuelo_de(leopoldo,martina).





































Problema 4.

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.






Desarrollo Cdigo


not_es(1,0). not_es(0,1).
and_es(0,0,0). and_es(0,1,0).
and_es(1,0,0). and_es(1,1,1).
or_es(0,0,0). or_es(0,1,1).
or_es(1,0,1). or_es(1,1,1).


la_salida_es(Input1,Input2,Output):-
not_es(Input1,N1),
not_es(Input2,N2),
and_es(Input1,N2,N3),
and_es(Input2,N1,N4),
or_es(N3,N4,Output).




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.



Bibliografa

http://www.swi-prolog.org/
http://www.swi-prolog.org/pldoc/doc_for?object=manual
http://kudulash.insanejournal.com/5209.html
http://www.lawebdelprogramador.com/codigo/Prolog/1748-Ejercicios_resueltos.html

S-ar putea să vă placă și