Tutorial básico de programación en Prolog

LLega el momento de utilizar Prolog para nuestros complej�simos c�lculos aritm�ticos. ��Acaso existe alg�n programa donde no se sumen dos y dos�?.

En Prolog es f�cil construir expresiones aritm�ticas. Alg�n avispado se habr� percatado de que las expresiones matem�ticas en general son t�rminos, puesto que corresponden a teor�as l�gicas de primer orden.

El problema es reducir esas expresiones seg�n las leyes matem�ticas para obtener lindos numeritos. Eso se hace en Prolog mediante el predicado is/2, cuyo modo de uso es is(-Var,+Expr). Adem�s, el argumento Expr debe ser un t�rmino cerrado (es decir, que no contenga variables libres). Por ejemplo, vamos a sumar dos y dos:

 Welcome to SWI-Prolog (Version 2.7.14) 
 Copyright (c) 1993-1996 University of Amsterdam.  All rights reserved. 
 
 For help, use ?- help(Topic). or ?- apropos(Word). 
 
 1 ?-  X is 2 + 2. 
 
 X = 4 
 
 yes 
 2 ?- 
 

El predicado is/2 no es reversible, por eso debemos estar seguros de que las variables del segundo argumento siempre est�n instanciadas. El modo de uso que instancia todas las variables solo tiene �xito si el primer argumento es un n�mero y coincide con la evaluaci�n del segundo argumento. Por ejemplo:

 2 ?-  5 is 2 + 2. 
 
 no 
 3 ?- 
 

.�Expresiones v�lidas

Las expresiones que podemos utilizar en el segundo argumento pueden variar de un entorno de desarrollo a otro, pero vamos a citar las m�s comunes:

T�rmino Significado Ejemplo
+/2 Suma X is A + B.
*/2 Producto X is 2 * 7.
-/2 Resta X is 5 - 2.
'/'/2 Divisi�n X is 7 / 5.
-/1 Cambio de signo X is -Z.
'//'/2 Divisi�n entera X is 7 // 2.
mod/2 Resto de la divisi�n entera X is 7 mod 2.
'^'/2 Potencia X is 2^3.
abs/1 Valor absoluto X is abs(-3).
pi/0 La constante PI X is 2*pi.
sin/1 seno en radianes X is sin(0).
cos/1 coseno en radianes X is cos(pi).
tan/1 tangente en radianes X is tan(pi/2).
asin/1 arcoseno en radianes X is asin(7.2).
acos/1 arcocoseno en radianes X is acos(Z).
atan/1 arcotangente en radianes X is atan(0).
floor/1 redondeo por defecto X is floor(3.2).
ceil/1 redondeo por exceso X is ceil(3.2).

COMPARTE ESTE ARTÍCULO

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