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

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR