Tutorial básico de programación en Prolog

En esta lección explicaremos como reconocer los diferentes elementos que componen un programa fuente en Prolog. Como observará en breve, Prolog carece de declaraciones en el sentido imperativo: secciones, declaraciones de tipo, declaraciones de variable, declaraciones de procedimientos, etc.

Después de leer está sección deber ser capaz de distinguir variables y términos lógicos entre la "maraña" de caracteres que hay en un programa fuente.

. Comentarios

Los comentarios en Prolog se escriben comenzando la línea con un símbolo de porcentaje. Ejemplo:

 % Hola, esto es un comentario. 
 % Y esto también.
 

. Variables lógicas

Las váriables en Prolog no son variables en el sentido habitual, por eso las llamamos variables lógicas. Se escriben como una secuencia de caracteres alfabéticos comenzando siempre por mayúscula o subrayado. Ejemplos de variables:

  Variable 
  _Hola    
  _
 

Pero no son variables:

  variable 
  $Hola    
  p__
 

El hecho de que los nombres de variables comienzen por mayúscula (o subrayado) evita la necesidad de declarar previamente y de manera explícita las variables, tal y como ocurre en otros lenguajes.

. La variable anónima

Sí, sí, existen variables sin nombre, y todas ellas se representan mediante el símbolo de subrayado _. Pero cuidado, aunque todas las variables anónimas se escriben igual, son todas distintas. Es decir, mientras que dos apariciones de la secuencia de caracteres Hola se refieren a la misma variable, dos apariciones de la secuencia _ se refieren a variables distintas.

. Términos

Los términos son el único elemento del lenguaje, es decir, los datos son términos, el código son términos, incluso el propio programa es un término. No obstante, es habitual, llamar término solamente a los datos que maneja un programa.

Un término se compone de un functor seguido de cero a N argumentos entre paréntesis y separados por comas. Los números enteros o decimales sin restricciones de tamaño también son términos.

Un functor (también denominado átomo) puede ser:

  • Una sucesión de caracteres alfanuméricos comenzando por una letra minúscula.
  • Un símbolo de puntuación o secuencia de estos. Las secuencias permitidas varian de un entorno de desarrollo a otro.
  • Una sucesión cualquiera de caracteres encerrada entre comillas simples.

Veamos algunos ejemplos de functores:

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

No son functores válidos:

     _functor 
     Functor 
   

Los argumentos de un término pueden ser:

  • otro término.
  • una váriable lógica.

La mejor forma de aprender a escribir términos es mirando algunos ejemplos:

   termino_cero_ario 
   1237878837385345.187823787872344434 
   t(1) 
   '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)  
 

. Operadores

Algunos functores pueden estar declarados como operadores, bien de manera predefinida, o bien por el programador. Los operadores simplemente sirven para escribir términos unarios o binarios de una manera más cómoda. Por ejemplo, un functor definido como operador infijo es la suma (+). Así, la expresión a+b es perfectamente válida, aunque en realidad no es más que el término +(a,b).

Los operadores binarios infijos nos permiten escribir el functor entre los dos argumentos y eliminar los paréntesis.

Los operadores tienen asociada una prioridad. Por ejemplo, la expresión a+b*c es en realidad el término +(a,*(b,c)). Esto es así porque el operador producto (*) tiene más prioridad que el operador suma (+). Si no fuese así, se trataría del término *(+(a,b),c).

Los operadores también pueden ser unarios y prefijos, lo que nos evita escribir los paréntesis del argumento. Por ejemplo, la expresión -5 es en realidad el término -(5).

. Culturilla

  • Es posible escribir términos sin argumentos, en tal caso no se escriben los paréntesis (tal como muestra el ejemplo).
  • Un término con N argumentos se dice que es N-ario, o que tiene aridad N.
  • Un término que no contiene variables libres se dice que es cerrado o ground (en inglés).
  • Para referirnos a un término con el functor f y A argumentos usamos la notación f/A. Por ejemplo: p(a,b), p(1,f(j)), p(A,_) son todos ejemplos del término p/2.
  • Dos términos con el mismo functor pero distinta aridad son distintos, por ejemplo p(1) y p(1,2).
  • Los números en Prolog no tienen límite de precisión o rango. Estan límitados únicamente por la memoria disponible.

COMPARTE ESTE ARTÍCULO

ENVIAR A UN AMIGO
COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN GOOGLE +
¡SÉ EL PRIMERO EN COMENTAR!
Conéctate o Regístrate para dejar tu comentario.