Documente Academic
Documente Profesional
Documente Cultură
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).
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.
permite probar los programas, depurarlos, etc. Su funcionamiento es similar a los interfaces de lnea de comando de los sistemas operativos.
general, muy amplias. Muchos entornos incluyen (afortunadamente) unas bibliotecas standard-ISO que permiten funcionalidades bsicas como manipular cadenas, entrada/salida, etc.
lnea con un smbolo de porcentaje. Ejemplo: % Hola, esto es un comentario. % Y esto tambin.
Variables lgicas
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 _
Trminos
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:
Los argumentos de un trmino pueden ser: otro trmino. una variable lgica. La mejor forma de aprender a escribir trminos es
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)
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.
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.
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.