Zona HTML Zona Java Zona PHP Zona ASP Zona Bases de datos
Inicio > Tutoriales > Otros lenguajes > Prolog > Tutorial básico de programación en Prolog
-Tutoriales

Tutorial básico de programación en Prolog


Evaluación de expresiones aritméticas

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).
 
Patrocinados
 

Copyright © 1999-2010 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

diseño y desarrollo web por Color Vivo Internet. Un proyecto de los Hermanos Carrero