viernes, 13 de junio de 2014

Prolog Ejercicio 2: Significado Declarativo


 Significados de un programa Prolog

Los programas Prolog pueden entenderse de dos maneras: declarativa y proceduralmente. Considere la cláusula :          P :- Q, R.          donde P, Q y R tienen la sintaxis de términos.

Algunas interpretaciones declarativas de esta cláusula son :
  • P es cierta si Q y R son ambas ciertas.
  • De Q y R se sigue P.
Dos interpretaciones procedurales de la misma cláusula son :
  • Para resolver el problema P, primero se resuelve el subproblema Q y entonces el subproblema R.
  • Para satisfacer P, primero se debe satisfacer Q y entonces R.
Así, las diferencias entre el significado declarativo y procedural es de que en la segunda interpretación no solamente se definen las relaciones lógicas entre la cabeza de la cláusula y las metas en el cuerpo de la cláusula sino además el orden en que las metas deben procesarse.

Significado Declarativo

En un lenguaje declarativo puro, sería de esperar que el orden en el que aparecen los hechos y las reglas en la base fuera independiente de los datos, sin embargo en PROLOG no es así.

El significado declarativo tiene que ver sólo con las relaciones definidas por el programa. De esta manera, el significado declarativo determina cuál será la salida del programa.

La habilidad de PROLOG para calcular de forma procedural es una de las ventajas específicas que tiene el lenguaje. Como consecuencia esto anima al programador a considerar el significado declarativo de los programas de forma relativamente independiente de su significado procedural.

Es decir, las ventajas de la forma declarativa de este lenguaje son claras (es más fácil pensar las soluciones y muchos detalles procedurales son resueltos automáticamente por el propio lenguaje) y podemos aprovecharlas.

Los aspectos declarativos de los programas son, habitualmente, más fáciles de entender que los procedurales. Esta es la principal razón por la que el programador debe concentrarse en el significado declarativo y evitar distraerse por los detalles de cómo se ejecutan los programas.

Ejercicios.

1. Considere el siguiente programa:


¿Cómo contestará Prolog las siguientes preguntas? Cuando sean posibles varias respuestas, dé al menos dos de ellas.

(a). ?- f( s(1), A).
(b). ?- f( s(s(1)), dos).
(c). ?- f( s(s(s(s(s(s(1)))))), C).
(d). ?- f( D, tres).


Fuente: http://mural.uv.es/mijuanlo/PracticasPROLOG.pdf

No hay comentarios:

Publicar un comentario