viernes, 13 de junio de 2014

PROLOG 3.0 LISTAS, OPERADORES Y ARITMÉTICA.

3.1 LISTAS


 Continuamos con la programación en Prolog. Ahora veremos como trabajar con listas, operadores y aritmetica.

Una lista(es una estructura de datos) es una secuencia de cualquier número de elementos, tales como los objetos ana, tenis, tomás, eskí.
En Prolog se escribe asi: [ ana, tenis, tomás, eskí ]

En el segundo caso la lista puede verse como formada por dos cosas:
(1). el primer elemento, llamado "cabeza" de la lista.
(2). los elementos restantes, llamados en conjunto: "cola" de la lista.
Para el ejemplo anterior : [ ana, tenis, tomás, eskí ]
la cabeza es : ana

la cola es : [ tenis, tomás, eskí ].

3.2 OPERACIONES SOBRE LISTAS

Las listas se utilizan para representar conjuntos, en esta primera si interesa el orden,así como también se pueden repetir los elementos. En el caso contrario son los conjuntos.

miembro( X, L)
Donde. X es un elemento de L.
            L es el conjunto de elementos que forman una lista.

Observación(es):
                          X es un miembro de L, 
                        (1) si X es la cabeza de L,
                        (2) si X es miembro de L.

Ejemplo 1: 
Fig.1 Concatenando listas.
Ejemplo 2:
Fig.2 Operaciones sobre listas(concatenar,eliminar, mod,máximo,append).
Ejemplo 3:
Fig. 3 Consultas a prolog con operaciones básicas como una suma de dos números.
Comentario(s): No es difícil programar en prolog, ya que debemos de tener bien claro que es un programa bien sencillo y fácil de entender. Lo que si recomiendo es practicar y practicar, finalmente esto es lo que hace al maestro.

martes, 10 de junio de 2014

PROLOG 2.5 EL CHANGO Y LA BANANA.

Ejemplo: Existe un mono en la puerta de un cuarto; en medio del cuarto cuelga una banana del techo; el mono está hambriento y desea capturar la banana, pero no puede alcanzarla desde el piso. En la ventana del cuarto hay una caja que el mono puede usar.
El mono puede realizar solamente las siguientes acciones: caminar sobre el piso, subir a
la caja, empujar la caja (si el mono está junto a la caja), y, agarrar la banana (si el mono
está sobre la caja y bajo la banana).
¿Cómo puede el mono llegar a capturar la banana?

En prolog.
Fig.1  De acurdo al análisis realizado el programa en prolog queda así.

Consultas a prolog:
Fig.2 Consulta a prolog.


Fig.3 Haciendo las respectiva preguntas a prolog, obtenemos los siguientes resultados.


lunes, 9 de junio de 2014

PROLOG 2.4 SIGNIFICADO PROCEDUAL

Ejemplo:
Fig.1 Muestra como entender el significado procedual.
Fig.2 Quién es oscuro y enorme ?

Después de hacer estos cambios  al programa.
(4). Examina el programa para buscar la meta enorme(gato), no se encuentra ninguna cláusula. Por lo tanto se realiza un proceso de backtracking al paso 3) y se elimina la instanciación X = gato. Ahora la lista de metas es de nuevo:
negro(X), enorme(X).
Se continúa examinando el programa a partir de la cláusula 5. No se encuentra ninguna cláusula. Por lo tanto se realiza un proceso de backtracking nuevamente al paso (2) y se continúa examinando a partir de la cláusula 7. Se encuentra la cláusula 8:
oscuro(Z) :- cafe(Z).
Se reemplaza la primera meta en la lista de metas por cafe(X), dando:
cafe(X), enorme(X)
...
y por ultimo...
Fig.3 Despues de aplicarle tal procedimiento. Realizamos en nueva cuenta la pregunta, arrojando el siguiente resultado.

En lo personal no le entendí mucho a este tema, me aconsejo trabajar mas con este mismo. Si están igual o peor que yo, no se sientan solos ya somos dos...jeje

miércoles, 4 de junio de 2014

PROLOG 2.3 SIGNIFICADO DECLARATIVO


Ejemplo de Significado Declarativo

1.- Realice el siguiente programa.

 f( 1, uno).
f( s(1), dos).
f( s(s(1)), tres).
f( s(s(s(X))), N) :- f( X, N).

En prolog.
Fig.1 Código en prolog.


Fig.2  Consultas a prolog.
En las figuras anteriores se ilustran las imagenes de un ejercio editado en Swi-prolog-editor y ejecutado en prolog. Si hay alguna duda, comentela.
Bibliografia: Apuntes de prolog.pd


PROLOG 2.0 MATCHING

                           Matching (empataminto)

Dados dos términos cualesquiera decimos que "empatan" si se cumple lo siguiente :
(1). Son idénticos.
(2). Las variables en ambos términos pueden instanciarse a objetos de tal modo que después de la sustitución de las variables por estos objetos los términos puedan ser idénticos.
  

          Ejemplo. Los términos fecha( D, M, 1900) y fecha( D1, mayo, Y1) empatan. Una instanciación que hace que ambos términos sean idénticos es:
D se instancia a D1.
M se instancia a mayo.
Y1 se instancia a 1992.
  
Las reglas generales para decidir si dos términos S y T empatan son las siguientes :
(1). Si S y T son constantes entonces S y T empatan únicamente si se
trata de los mismos objetos.
(2). Si S es una variable y T es cualquier cosa, entonces empatan y S se instancia a T. Y a la inversa, si T es la variable, entonces T se instancia a S.
(3). Si S y T son estructuras empatan únicamente si :
(a). S y T contienen el mismo functor principal, y
(b). Todos sus componentes correspondientes empatan.
La instanciación resultante se determina por la operación de
matching sobre los componentes.

Fig.1 Operaciones de matching.
Resultados de las operaciones de matching.
Fig.2 Resultados de matching.
Bibliográfica: Prolog.pdf


PROLOG 1.4 ARBOL FAMILIAR

                            EJEMPLO ÁRBOL FAMILIAR


Fig.1 Árbol familiar (abuelos paternos y maternos, tíos paternos y maternos, y hermanos).


En prolog se representa:
Fig. I parte código
Fig. II parte de código.
Fig. III parte del código.





Consultas:
?-progenitor (viridiana,viridiana).
?-progenitor( bertha, yazmin).
?- progenitor(sixto,X).
?- progenitor(X,juan),progenitor(X,Y).
 ?- progenitor(Y,javier),progenitor(X,Y).

A continuación se enlistan los resultados.
Fig. 1 Consultas

Fig. 2 Consultas parte II
Fig. 3 Consulta parte III