Sei sulla pagina 1di 15

PROLOG

Ing. Walter Ocas Castope

Prolog es un lenguaje de programacin seminterpretado.

Su funcionamiento es muy similar a Java. El codigo fuente se compila a un cdigo de byte el cul se interpreta en una mquina virtual denominada Warren Abstract Machine (comnmente denominada WAM).

Un compilador. Transforma el cdigo fuente en cdigo

de byte. A diferencia de Java, no existe un standard al respecto. Por eso, el codigo de byte generado por un entorno de desarrollo no tiene por que funcionar en el intrprete de otro entorno.

Un intrprete. Ejecuta el cdigo de byte.

Un shell o top-level. Se trata de una utilidad que

permite probar los programas, depurarlos, etc. Su funcionamiento es similar a los interfaces de lnea de comando de los sistemas operativos.

Una biblioteca de utilidades. Estas bibliotecas son, en

general, muy amplias. Muchos entornos incluyen (afortunadamente) unas bibliotecas standard-ISO que permiten funcionalidades bsicas como manipular cadenas, entrada/salida, etc.

Elementos del Lenguaje


Comentarios

Los comentarios en Prolog se escriben comenzando la

lnea con un smbolo de porcentaje. Ejemplo: % Hola, esto es un comentario. % Y esto tambin.

Variables lgicas

Las vriables en Prolog no son variables en el sentido

habitual, por eso las llamamos variables lgicas. Se escriben como una secuencia de caracteres alfabticos comenzando siempre por mayscula o subrayado. Ejemplos de variables:
Variable _Hola _

Pero no son variables:


Variable $Hola p__

Trminos

Los trminos son el nico elemento del lenguaje, es decir,

los datos son trminos, el cdigo son trminos, incluso el propio programa es un trmino. No obstante, es habitual, llamar trmino solamente a los datos que maneja un programa. Un trmino se compone de un functor seguido de cero a N argumentos entre parntesis y separados por comas. Los nmeros enteros o decimales sin restricciones de tamao tambin son trminos.

Un functor (tambin denominado tomo) puede ser: Una sucesin de caracteres alfanumricos comenzando por una letra

minscula. Un smbolo de puntuacin o secuencia de estos. Las secuencias permitidas varan de un entorno de desarrollo a otro. Una sucesin cualquiera de caracteres encerrada entre comillas simples. Veamos algunos ejemplos de functores:

Functor F384p12 'esto es un unico functor, eh!! '_functor $ +

No son functores vlidos: _functor Functor

Los argumentos de un trmino pueden ser: otro trmino. una variable lgica. La mejor forma de aprender a escribir trminos es

mirando algunos ejemplos:


termino_cero_ario
t(1)

1237878837385345.187823787872344434 'mi functor'(17,hola,'otro termino')

f(Variable)
muchos_argumentos(_,_,_,Variable,232,f,g,a) terminos_anidados(f(g), h(i,j(7)), p(a(b)), j(1,3,2,_)) +(3,4) $(a,b)

@(12)

Algunos functores pueden estar declarados como operadores,

bien de manera predefinida, o bien por el programador. Los operadores simplemente sirven para escribir trminos unarios o binarios de una manera ms cmoda. Por ejemplo, un functor definido como operador infijo es la suma (+). As, la expresin a+b es perfectamente vlida, aunque en realidad no es ms que el trmino +(a,b). Los operadores binarios infijos nos permiten escribir el functor entre los dos argumentos y eliminar los parntesis. Los operadores tienen asociada una prioridad. Por ejemplo, la expresin a+b*c es en realidad el trmino +(a,*(b,c)). Esto es as porque el operador producto (*) tiene ms prioridad que el operador suma (+). Si no fuese as, se tratara del trmino *(+(a,b),c). Los operadores tambin pueden ser unarios y prefijos, lo que nos evita escribir los parntesis del argumento. Por ejemplo, la expresin -5 es en realidad el trmino -(5).

El mecanismo de unificacin
La unificacin es el mecanismo mediante el cul las

variables lgicas toman valor en Prolog. El valor que puede tomar una variable consiste en cualquier trmino, por ejemplo, j(3), 23.2, 'hola que tal', etc. Por eso decimos que los datos que maneja Prolog son trminos. Cuando una variable no tiene valor se dice que est libre. Pero una vez que se le asigna valor, ste ya no cambia, por eso se dice que la variable est ligada.

Se dice que dos trminos unifican cuando existe una

posible ligadura (asignacin de valor) de las variables tal que ambos trminos son idnticos sustituyendo las variables por dichos valores. Por ejemplo: a(X,3) y a(4,Z) unifican dando valores a las variables: X vale 4, Z vale 3. Obsrvese que las variables de ambos trminos entran en juego.

Por otra parte, no todas las variables estan obligadas a

quedar ligadas. Por ejemplo: h(X) y h(Y) unifican aunque las variables X e Y no quedan ligadas. No obstante , ambas variables permanecen unificadas entre s. Si posteriormente ligamos X al valor j(3) (por ejemplo), entonces automticamente la variable Y tomar ese mismo valor. Lo que esta ocurriendo es que, al unificar los trminos dados, se impone la restriccin de que X e Y deben tomar el mismo valor aunque en ese preciso instante no se conozca dicho valor.

Predicados y Objetivos
Los predicados son los elementos ejecutables en Prolog.

En muchos sentidos se asemejan a los procedimientos o funciones tpicos de los lenguajes imperativos. Una llamada concreta a un predicado, con unos argumentos concretos, se denomina objetivo(en ingls, goal). Todos los objetivos tiene un resultado de xito o fallo tras su ejecucin indicando si el predicado es cierto para los argumentos dados, o por el contrario, es falso.

Potrebbero piacerti anche