calculate()

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.


Programa ejemplo:
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.


Ver: itoa() - write() - STRING