Professional Documents
Culture Documents
1 Introduccin al PROLOG
1.0 Lenguaje Procedural vs Lenguaje Declarativo
El Lenguaje procedural permite al programador decirle a la computadora lo que tiene que hacer, paso a paso, procedimiento por procedimiento, hasta alcanzar una conclusin o ejecutar una funcin. Ejemplo: Ingreso de Clientes. Prolog es declarativo, se declara la situacin con la que quiere trabajar y a donde quiere ir. El propio lenguaje realiza el trabajo de decidir como alcanzar dicho objetivo. Ejemplo: Quien es el abuelo de Carlos?
1.1 Generalidades
Prolog es un lenguaje de programacin que se utiliza para resolver problemas que existen entre objetos y relaciones. La programacin en Prolog consiste simplemente en: declarar hechos sobre los objetos y sus relaciones, definir reglas sobre dichos objetos y relaciones, y hacer preguntas. Prolog es un lenguaje de programacin declarativa (coloquial), lo cual quiere decir que el computador y el programador sostienen una especie de conversacin. Prolog espera a que se ingrese hechos y las reglas que definen el problema a resolver. Una recomendacin, Prolog es diferente a cualquier otro lenguaje de bajo o alto nivel, por tanto, nunca resolver un problema en otro lenguaje para luego traducirlo a Prolog. Objetos y Relaciones Un objeto puede ser cualquier cosa que pueda representarse simblicamente en una computadora: leon tigre puma
Manual PROLOG
Manual PROLOG
Manual PROLOG
Seccin de constantes
En la seccin de constantes podemos declarar constantes simblicas que pueden usarse en el cuerpo del programa. La utilidad de las constantes en Visual Prolog es similar a la que estos elementos tienen en otros lenguajes de programacin, normalmente, sirven para facilitar el uso de diversas cantidades, expresiones y smbolos. La definicin de la seccin de constantes se encabeza con la palabra reservada CONSTANTS, y cada lnea de definicin es de la forma: <Nombre Constante> = <Definicin de Macro> Por ejemplo, el siguiente fragmento de programa: CONSTANTS numero = 1 expresion = 1+1 GOAL A=numero, B=expresion, write(A), write(B), nl. Resultado 12 A=1, B=2 1 Solution Las restricciones que se imponen en el uso de constantes se exponen a continuacin: El sistema no distingue entre maysculas y minsculas. La definicin de una constante no puede referirse a s misma, es decir, no es posible construir definiciones recursivas de constantes. Puede haber varias secciones CONSTANTS a lo largo del programa, y toda constante debe ser definida antes de ser utilizada. Las constantes declaradas son efectivas desde el punto en que son declaradas hasta el final del fichero fuente donde han sido definidas y en algunos ficheros incluidos tras la declaracin. Las constantes slo se pueden declarar una vez.
Manual PROLOG
Integer, Enteros desde -2147483648 hasta 2147483647 Real, Nmero con punto flotante equivalente al doubl. El rango permitido es
1*10^-307 hasta 1*10^+308
dominio = [reference] [align {byte|word|dword}] declaracion1;[declaracion2];... dominio: nombre dado al dominio especificado por el usuario. declaracion1; [declaracion2]: declaracin de objetos compuestos alternativos que tienen que tener la forma siguiente: functor([sub_1 [, sub_2, ...] ]) donde o functor es el nombre del objeto compuesto alternativo. o sub_1 [,sub_2, ...] son subcomponentes del objeto compuesto que deben tener su correspondiente nombre y dominio. Este ltimo puede ser estndar o definido por el usuario.
Manual PROLOG
Seccin de Predicados
En la seccin de Predicados son las relaciones. El trmino predicado viene de la lgica formal, la cual es uno de los fundamentos iniciales del Visual Prolog. Siempre que su programa vaya a usar un predicado particular en las clausulas, se necesita declararlo formalmente en la seccin de predicados. Ejemplos: empleado(symbol)
Seccin de Clausulas
Los hechos que construy con los objetivos y relaciones se listan en la seccin de clausulas (clauses). La seccin de clausulas puede tambin contener reglas y otras construcciones.
Manual PROLOG
Como nuestro Prolog puede usarse de forma interactiva, es frecuente ejecutar un programa y luego esperar a que se nos pregunte el objetivo. La seccin goal nos permite ejecutar los programas de una forma no interactiva, y por tanto, buscar la solucin deseada tan pronto como se ejecute el programa. goal write("Hola"),nl, write("Lenguaje: Prolog"), nl.
Manual PROLOG
Variables Annimas
Se describe un carcter de subrayado. La variable annima se utiliza en el mismo lugar que las variables estndares, pero nunca son instanciadas con ningn valor particular. le_gusta(tatiana,_). % a Tatiana le gusta algn deporte? Le_gusta(_,_). % ? Siempre el resultado ser true o false.
Manual PROLOG
Manual PROLOG
Ejercicio para usar variables y formulas DOMAINS precio = integer % Para definir el dominio en cada uno de los parametros de nombre = symbol % cada hecho o regla (definidos en los predicates) PREDICATES
% Se definen todos aquellos hechos o reglas, que sern utilizados en las clauses, con sus parametros
entrada(nombre,precio) segundo(nombre,precio) postre(nombre,precio) refresco(nombre,precio) menu(nombre,nombre,nombre,nombre,precio) CLAUSES % Declaracion de hechos %declaracion de reglas menu(E,PF,P,R,PT):..
Manual PROLOG
10
Ejercicios Propuestos
Ejercicio 1. Los invitados a una fiesta se representan con los predicados hombre y mujer que determinan su sexo. Por ejemplo:
hombre(alfredo). hombre(felipe). hombre(francisco). mujer(sonia). mujer(eva). mujer(carmen).
Adems, conocemos las bebidas preferidas de cada invitado definidas por el predicado bebe:
bebe(alfredo, whisky). bebe(alfredo, ron_cola). bebe(felipe, cerveza). bebe(francisco, vino). bebe(sonia, inka_kola). ...
Aade tus propios invitados a la fiesta y sus bebidas favoritas y define un predicado pareja(X,Y) que tenga xito cuando X es un hombre e Y una mujer y tengan al menos una bebida favorita en comn. Define tambin el predicado pareja(X,Y) que se satisface cuando X e Y tienen al menos dos bebidas favoritas en comn. Ejercicio 2. Modifica el ejercicio anterior para reflejar los siguientes hbitos de bebida: Pepe bebe cualquier cosa que beba Alfredo Elena bebe cualquier cosa que beban Sonia o Felipe Juan bebe cualquier bebida
Manual PROLOG
11
Figura 1: Mapa de Lima. Define un predicado viaje(X,Y) que se satisface cuando es posible viajar de la provincia X a la provincia Y.
Manual PROLOG
12