martes, 16 de abril de 2013

Sintaxis de Prolog

Existen varios tipos de datos en prolog los cuales son:




Los datos Atomos se pueden expresar de tres maneras

  • 1). Son de la forma cadenas de letras, dígitos y de símbolos, como subrayado, pero comenzando siempre con una letra minúscula, es importante esto.

  • 2). Son cadenas de caracteres especiales.
               Ejemplos: <---> ===> ... .:. ::=

  • 3). Son cadenas de caracteres encerrados en comillas simples (').
               Ejemplos: 'Tomas' 'Juan_Hernandez' 'Jose Lopez Lopez'

Números. Pueden ser enteros ó reale, creo que no es necesario dar ejemplos.

Variables. Es de la primera forma de Atomo solo cambia en que siempre comienza con la letra mayuscula.

Estructuras. Los datos estructurados son en Prolog son datos compuestos, es decir, se componen de los ya antes mencionados, claro con cierta relacione entre ellos,  un ejemplo es una  fecha de nacimiento pues cuenta con varios datos como numeros y atomos.

Todos los objetos estructurados se pueden interpretar como árboles donde el functor es la raíz del árbol y sus componentes son las hojas del árbol. Si un componente es a su vez una estructura, entonces será un subárbol del árbol inicial. Se muestran varios ejemplos.

lunes, 1 de abril de 2013

Resumen capitulo 1 PROLOG

Prolog  es una forma de programacion lógica también conocido como lenguaje delcarativo que se basa en usar cláusulas, estás son relaciones de uno o dos argumentos, ejemplos:

mujer(ana). es una relación con un argumento y se lee como ana es mujer.
padre(alberto, jesus). es una relación con dos argumentos y se lee como alberto es padre de jesús. 

Ahora veamos los tres tipos de cláusulas 
  • Hechos (Son relaciones ciertamente ciertas), se componen de cabeza de la cláusula y cuerpo de la cláusula
  • Reglas (Son relaciones con alguna o algunas condiciones ).
  • Preguntas (Como su nombre lo dice, son preguntas que se le puede hacer en prolog).
 Ya entendiento que en Prolog podemos programar en swi-prolog lo que hacemos es introducir los datos del programa, compilar y preguntar. Asi sabemos si el programa tiene errores o los marca.

Conjuncion de cláusulas es la forma de relacionar a terceros argumentos en ella haciendo doble consulta o pregunta, el ejemplo que viene es sobre la pregunta relacion 'Abuelo' se quiere saber quien es el abuelo de las personas que se encuentran en el arbol familiar. Bueno la respuesta para ello es hacer dos preguntas al programa, preguntemos por culaquier abuelo en general sabiendo que este es un ejemplo claro.

1) ¿Quién es el progenitor de jaime?, asumimos que es algun Y.
2) ¿Quién es el progenitor de Y?, ausmimos que es algun X.

entonces en Prolog hacemos la siguiente pregunta.

?- progenitor(Y,jaime), progenitor(X,Y). "Con esto sabremos quién es abuelo"

Nota: La coma(,) indica la conjuncion.

Las reglas en prolog son clausulas que no solo constan de hechos, sino que existe una condicion para que se pueda cumplir, dada la condición, esta puede estar en conjuncion con otra y asi deberan cumplirse para obtener un resultado final.

Regla recursiva es una técnica que debe ser tenida en cuanta cuando se quiere programar en Prolog. Se basa en definir relaciones en términos de ellas mismas.


Una pregunta a Prolog siempre es una secuencia de una o más metas, para responder a una pregunta prolog trata de satisfacer todas las metas, satisfacer una meta significa demostrar que la meta se sigue lógicamente de los hechos y las reglas del programa y por lo consiguiente estas metas tienen que ser verdaderas.

Si la pregunta contiene variables, prolog intentará encontrar los objetos particulares o los hechos que ya son verdaderos y las sustituye por las variables, asi las metas puedan ser satisfechas. 


Si Prolog no puede demostrar que las metas se siguen lógicamente del programa su respuesta final será "no".

Significado Declarativo es la forma en la que se muestra el resultado del programa en prolog sin ningun procedimiento pues prolog cuenta con las piezas necesarias para dar con la respuesta.
Significado Procedural es el procediemiento para encontrar la respuesta y asi mostrarla al usuario.

Seguidores