calculate(<texto con una expresión numérica>)
Retorna:
El resultado de la expresión numérica.
Descripción:
Permite convertir un literal (o texto entre comillas), que contenga un número o expresión numérica, en un valor constante que puede asignarse a cualquier dato.
Es decir, que permite convertir un texto en número; por ejemplo, la sentencia x=calculate("234"); asignará el valor 234 a la variable x (exactamente igual que la sentencia x=234;). La función itoa() permite la operación contraria, es decir, convertir un número en un texto.
Pero además, la función calculate() puede evaluar una expresión contenida en el texto con diversos operadores, que pueden ser los siguientes (se indican todos los sinónimos aceptados de cada operador):
+ - Suma y Resta.
* / Multiplicación y división.
% MOD Módulo, o resto de una división entera.
< << Rotación binaria a la izquierda.
> >> Rotación a la derecha.
^ ^^ XOR OR exclusivo binario.
| || OR OR binario.
& && AND AND binario.
! NOT Negación binaria.
SQRT Raiz cuadrada.
También se pueden utilizar los paréntesis ( ) para indicar prioridades dentro del cálculo de la expresión. Por ejemplo, calculate("(2+3)*4") devolvería 20 como resultado.
Nota: La operatividad de esta función es muy similar a la ventana de la calculadora (Sistema\Calculadora) del entorno de ventanas.
PROGRAM ejemplo_calculate; GLOBAL STRING cálculo; resultado; BEGIN write(0,0,0,0,"Introduzca una expresión:"); write(0,0,10,0,cálculo); write(0,0,30,0,"Resultado:"); write_int(0,0,40,0,OFFSET resultado); LOOP SWITCH(ascii) CASE 8: cálculo--; END CASE 27: cálculo=""; END CASE 0..31: END DEFAULT: cálculo+=ascii; END END resultado = calculate(cálculo); // Evalúa el cálculo IF (timer MOD 100>50) cálculo+="_"; ELSE cálculo+=" "; END FRAME; cálculo--; END END
Este programa ejemplo permite al usuario introducir una expresión en una cadena de texto (ver STRING) y la evalúa con la función calculate() para mostrar el resultado de la misma.
Nota: Si se produce un error en la evaluación de la expresión (por ejemplo, que exista algún paréntesis sin cerrar), la función devolverá 0 como resultado.