Sunteți pe pagina 1din 11

Visual Prolog

Ing. Sal Prez Vega Manual PROLOG


1
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 cmo 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
papa
camote
lechuga
oro
plata
Visual Prolog
Ing. Sal Prez Vega Manual PROLOG
2

Y las relaciones son:

animal
vegetal
mineral

1.2 Los Hechos

La primera forma de combinar un objeto y una relacin es usarlas para definir un hecho.
Un hecho es una relacin entre objetos.

Sintaxis:

relacion (objeto, objeto, ...)

La relacin se conoce como el predicado y los objetos como los argumentos.

Los siguientes puntos son importantes:
Los nombres de las relaciones deben comenzar con una letra minscula.
Los objetos se escriben separados por comas y encerrados entre parntesis.
Al final del hecho debe de ir un punto.

Por ejemplo:

animal(leon).
vegetal(papa).
mineral(oro).

Comentarios: el objeto oro tiene relacin con mineral. La traduccin al castellano es
necesariamente vaga, porque la lgica de los hechos en prolog no especifica si el oro era
un mineral, el oro es un mineral o el oro parece un mineral.

Cuando utilice el prolog, necesitara tener en cuenta lo que son las relaciones el prolog no
lo puede hacer por usted-. Sus programas tendrn sentido solo si son consientes a lo largo
de un programa con el significado de una relacin dada. Algunas veces ayuda usar las
palabras que tengan un sentido aproximado de lo que significan. Por ejemplo, si quiere
indicar el hecho que Carlos es un prncipe, podra utilizar la siguiente relacin:

es_un_principe(carlos)

Visual Prolog
Ing. Sal Prez Vega Manual PROLOG
3
1.3 Las Reglas

Cuando la verdad de un hecho depende de la verdad de otro hecho o de un grupo de
hechos se usa una regla. Una regla consiste en una cabeza y un cuerpo. El cuerpo puede
estar formado por varios hechos u objetivos.

Sintaxis:

cabeza :- objetivo 1, objetivo 2, ..., objetivo n.

Los objetivos van separados por comas, especificando conjuncin y al final debe de ir un
punto. Por ejemplo, una regla es

mayor_de_edad(X) :- persona(X,E), E>18.

1.4 Las variables

Las variables se utilizan para describir hechos y reglas generales. Los nombres de las
variables deben comenzar con letra mayscula o con el carcter. Ejemplos
Edad
Promedio

1.5 La estructura de un programa en PROLOG

La mayora de los programas en Prolog estn organizados en cuatro secciones principales:
Domains (dominios)
Predicates (predicados)
Clauses (clausulas)
Goal (objetivos)
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>
Visual Prolog
Ing. Sal Prez Vega Manual PROLOG
4
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.

Seccin de dominios
En la seccin DOMAINS se pueden definir dominios no especificados por defecto por
Visual Prolog. Por ejemplo, el dominio integer es estndar para el compilador, no as el
dominio sinnimo ENTERO o dominios complejos. En estos ltimos casos, el programador
debe definirlo en esta seccin.
Dominios Stntard
char, carcter encerrado entre apostrofes (comillas simples)
('a', 'b', 'c')
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
String, Referidos a una secuencia de caracteres escritos entre comillas. Ejemplo:
Pedro Arce.
Visual Prolog
Ing. Sal Prez Vega Manual PROLOG
5
Symbol similar al String
Cada seccin de dominios debe comenzar con la palabra DOMAINS. Ejemplo:
DOMAINS
entero = integer

Es posible usar 5 formatos de declaraciones para dominios definidos por el usuario.
Dominios de Objetos Compuestos
El formato es como sigue:
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.
reference: indica la declaracin de un dominio de referencia. En este tipo de
dominios los argumentos de entrada pueden ser variables libres.
align: indica el tipo de distribucin de memoria que se va a usar.
Otros ejemplos:

Domains
apellido, nombres = symbol
numero_cuenta, cantidad = integer
saldo_cuenta, promedio = real
nota1,nota2,nota3 = integer

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)
Visual Prolog
Ing. Sal Prez Vega Manual PROLOG
6
numero(integer)
alumno(string)
letra(char)
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.

Ejemplo:

empleado(Carlos Asmat).
numero(4355)
alumno(merilyn_salvatierra)
letra(k)


Seccin de Objetivos
Esta es la seccin que le dice prolog lo que ha de encontrar o lo que desea que la computadora
haga con la informacin que se le ha suministrado en las otras secciones. Normalmente un
programa tendr al menos las secciones de predicados y clausulas, pero es posible tener un
programa que tenga solo una seccin objetivo.

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.



Visual Prolog
Ing. Sal Prez Vega Manual PROLOG
7
2 Lenguaje Visual PROLOG

Bsqueda de Informacin

El visual Prolog busca a travs de sus clusulas de arriba abajo y de izquierda a
derecha.
2.0 Uso de Variables

Hay otra forma de hacer preguntas. Si se conoce la relacin pero no los objetos,
puede usar variables. Cualquier palabra objeto que comienza con una letra mayscula se
considera una variable. Despus de la mayscula, puede tener cualquier nmero de letras
(en maysculas o minsculas), junto con dgitos y caracteres de subrayado. La forma ms
rpida de ver lo que puede hacer una variable es hacer una pregunta al programa.

El Prolog tomo el objetivo con la variable y lo compara con las clausulas. Primero
comprueba si el predicado es el mismo que el de la primera clausula. Si lo es, entonces
prueba si el objetivo y el predicado tienen el mismo nmero de argumentos. Si alguna de
esas cosas no es verdad, el prolog deja la primera clausula y realiza la prueba del objetivo
con la segunda clausula, Si ambos son verdad el mismo predicado y el mismo nmero de
argumentos-, el prolog entonces comprueba si los argumentos son los mismos.

En este caso, el argumento objetivo es una variable y puede ser cualquier cosa. As
el prolog instancia al valor de la clusula; en otras palabras, el prolog asume por una que
vez que tiene el valor del argumento en la clusula.
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.

2.1 Aridad
La aridad de un predicado, consiste en el nmero de argumentos que tiene.
Visual Prolog
Ing. Sal Prez Vega Manual PROLOG
8
% Programa con hechos de aridad cero -
predicates
uno dos tres cinco siete
clauses
uno.
dos.
tres.
cinco.
siete.
goal
cinco, write("Encontrado"),nl.

Ejemplo con aridad 1
% Programa con hechos de aridad uno -
predicates
alumno(symbol)
clauses
alumno(juan).
goal
write("Resultado Aridad Uno: "),alumno(X),nl.
Hacer ejemplos con aridad 2,3,4, ..


2.2 Uso del domain

domains
marca = symbol
kilometraje = long
antiguedad = integer
color = symbol
precio = long
predicates
carro(marca,kilometraje,antiguedad,color,precio)
camion(marca,kilometraje,antiguedad,color,precio)
vehiculo(marca,kilometraje,antiguedad,color,precio)
clauses
carro(chrysler,130000,7,rojo,8500).
carro(ford,90000,4,azul,14000).
carro(datsun,8000,15,blanco,500).
carro(honda,15000,4,rojo,8500).
carro(nissan,90000,12,azul,25000).
carro(datsun,8000,1,blanco,30000).
Visual Prolog
Ing. Sal Prez Vega Manual PROLOG
9

camion(ford,80000,6,blanco,28000).
camion(fiat,50000,5,negro,15000).
camion(toyota,25000,4,negro,25000).
camion(scania,80000,8,amarillo,85000).
camion(mercedes,50000,5,anaranjado,82000).
camion(volvo,25000,4,blanco,25000).

%vehiculo(Marca,Kilometraje,Antiguedad,Color,Precio):-
goal
%%Listar todos los carros
%%Listar todos los camiones
%%Listar los carros y camiones con una antiguedad mayor a 5 o menor a 10
%%Listar los vehculos con Antigedad mayor a 2 aos y de color negro.


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):..

goal
Realizar las siguientes operaciones:
Ingresar 4 platos de cada tipo.
Listar las entradas, segundos
Cunto cuesta el tacu tacu?
Existe algn men con lomo_saltado y palta_rellena?
Cunto cuesta el ceviche?
Existe algn men con rocoto_relleno y tacu_tacu?
Listar todos los postres y su precio
Listar todos los menus con sus platos y el precio del menu

Visual Prolog
Ing. Sal Prez Vega 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


Ejercicio 3. Queremos viajar por las provincias del departamento de Lima usando un
auto, por ello, decidimos que slo podemos plantearnos un viaje de la provincia X a la
provincia Y si stas son fronterizas o si para llegar a ellas basta con atravesar una
provincia.
Visual Prolog
Ing. Sal Prez Vega 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.

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