Parser Matemático

Uso del Parser Matemático

El parser matemático es una herramienta muy útil dentro del módulo de Manufacturing, pues permite a los usuarios definir características de un componente basándose en los valores de otras características de su padre, en la jerarquía de la configuración de un artículo.

En este apartado vamos a ver como se realizan la fórmulas de una manera genérica.

Contantes conocidas por el Parser

El parer sabe como manejar un número de operadores y constantes de diferentes tipos, incluyendo las siguientes constantes:  E, pi, π, TRUE, FALSE and ERROR.

Las constantes E, pi y π son valores matemáticos sobradamente conocidos.  Las constants TRUE y FALSE representan los dos valores posibles que puede tomar una expresión Booleana. La constante ERROR será el resultado de un “Error generado por el usuario”. Esto permite al usuario señalar situaciones de error inherentes a la lógica de la fórmula, más que las matemáticas. El ‘Error generado por el usuario’ puede sera anulado, por supuesto con el método Reset. Más adelante se mostrará un ejemplo sobre el uso de la constante ERROR.

Operadores conocidos por el parser:

N^ N2

N1 elevado a  N2

N* N2

Multiply N1 by N2

A+ A2 

Addition of numbers and strings

N– N2 

Subtraction or negation of numbers

-N

Cambio de signo

N/ N2

N1 Divididos por N2

NDIV N2

Parte entera de N1 dividido por N2

NMOD N2

Modulo/Resto de N1 dividido por N

 (,)

Separador de Operadores 

SQRT(N)

Raiz cuadrada de N

N!

Factorial de N  (Solo enteros Positivos)

EXP(N)

Función Exponencial de N

LN(N)

Logaritmo Natural de N

LOG(N)

 Logaritmo en Base 10 de N

SIN(N)

Seno de N en Radianes

COS(N)

Coseno de N en Radianes

TAN(N)

Tangente de N en Radianes

ASIN(N)

Arcoseno de N

ACOS(N)

Arcocoseno de N

ATAN(N)

Arcotangente de N

XROOT(n, N)

Raiz enésima de N

INT(N)

Parte entera de N

RND

Número Aleatorio

ABS(N)

Valor Absoluto de N (sin signo)

SUM(N1, N2, N…)

Suma de todo los operandos

MEAN(N1, N2, N…)

Media Artithmética de los operandos  

SQRSUM(N1, N2, N…)

Suma de los Operands al Cuadrado

NELEM(A1, A2, A…)

Número de elementos proporcionados

>, <, >=, <=, =, <>

Operadores comparativos, tanto numéricos como de alfanuméricos

not, and, or, xor, =, <>

Operadores Booleanos

IFTE(B, A1, A2)

Si B = True entonces A1 en caso contrario A2

StrUpr(S)

Convierte la cadena S a Mayúsculas

StrLwr(S)

Convierte la cadena S a minúsculas

StrLen(S)

Longitud en caracteres de S

InsertStr(S1, S2, N)

Inserta la cadena S2 en S1 a partir de la posición N

SubStr(S, N1, N2)

 Devuelve la cadena de longitud N2 tomada de S a partir de la posición N1

DeleteStr(S, N1, N2)

Elimina de la cadena S, N2 caracteres a partir de la posición N1

StrPos(S1, S2)

Devuelve la posición de la cadena S1 dentro de S2

Parse(S)

Evalúa la expresión S

Str(A)

Convierte A a su valor numérico

:=

Operador de Asignación

(;)

Final de la fórmula

IsString(A)

Devuelve True si A es una cadena

IsBoole(A)

Devuelve True si A es un valor Booleano

IsNumber(A)

Devuelve True si A es un valor numérico

IsError(A)

Devuelve True si A es un Error

 

Nx indica un número, Sx indica una cadena de caracteres, Bx indica un valor booleano y Ax indica cualquier argumento. Los indican cualquier número de argumentos como el indicado.

La posición de los caracteres dentro de una cadena, van de 1 a la longitud total de la cadena. Una cadena “” devolverá una longitud de 0 (cero). Si StrPos() devuelve 0, significa que la cadena no se encontró. Todas las operaciones con cadena son sensibles a mayúsculas/minúsculas. Las cadenas no pueden ser más largas de 255 caracteres y una cadena “” puede resultar en un puntero nil como resultado de la evaluación completa de de la fórmula.

Los Errores pueden ser convertidos a cadena con Str() devolverán un mensaje de error en formato texto. Los valores Booleanos serán convertidos en las cadenas “TRUE” o “FALSE”. Los números serán convertidos a cadena con el formato correspondiente.

Los operadores comparativos (=,<,>,<=,>= y <>) pueden resultar en valores booleanos. Los operadores lógicos (and, or, xor y not) sólo son aplicables a valores booleanos. Los operadores <> y = pueden ser utilizados también en comparaciones booleanas.

El operador RND devuelve un número aleatorio. Puede devolver, tanto valores positivos como negativos, así como valores enteros o con parte fraccionaria.

El operador Parse() evaluará como una fórmula la cadena pasada como argumento. La variables definidas se pasarán como referencia. Cualquier asignación  realizada en la cadena que será evaluada alterará el contenido de las variables  para el resto de la fórmula. El resultado de evaluar la fórmula será devuelto para su utilización, incluso los errores.

Precedencia de los operadores:

1

Cualquier cosa entre ()

2

RND

3

Cualquier función de la forma Operator(A1, A2, A…).

4

+ y – como operadores unarios

5

^, √ y !

6

DIV y MOD

7

* y /

8

+ y – como suma y resta

9

=, <=, >=, <>, > y <

10

El operador :=

11

and, or, xor  y  not

12

El operador (;) de final de fórmula

 

Los operadores y las constantes reconocidas por el Parser no son sensibles a mayúsculas/minúsculas.

Fórmulas válidas para ser evaluadas:

Una fórmula puede contener cualquier elemento enumerado anteriormente así como constantes o operadores con el número y tipo correcto de argumentos. Una fórmula puede contener también números, variables definidas y cadenas.

Los números serán reales con el formato #####.#####E[+/-]#### donde # representa un dígito (0..9).

El operador := sólo puede asignar resultados a las variables definidas. El resultado de una asignación de este tipo será el valor asignado. La fórmula ‘x := sin(rnd)’ evaluará el send de un número aleatorio y asignará el resultado a la variable X, que si es una variable definida, el resultado de la evaluación será a su vez el mismo valor asignado.

Multiples asignaciones serán evaluadas de izquierda a derecha. La fórmula ‘x := y := rnd’ será evaluada como: X recibirá el valor de Y e Y recibirá como valor un número aleatorio y el resultado de la fórmula será dicho valor aleatorio asignado a Y. Por supuesto las variable X e Y deberán haver sido definidas previamente.

Durante una asignación el tipo de una variable puede cambiar. Formulas como ‘x:=”test”;x:=10’ son válidas. Se debe recordar el paso de variables por referencia cuando utilizamos el operador Parse(). Una fórmula como  ‘y:=parse(“x:=10”);x’ asignará el valor 10 a X, devolviendo este valor en el resultado, lo asigna a Y y devuelve el valor de X como resultado final de la fórmula, resultando 10.

Cualquier fórmula debe obtener como resultado un Número, una Cadena o un valor Booleano. Una fórmula válida no debe terminar con el operador (;). Este operador debe utilizarse solo dentro y no al final de una fórmula.  La fórmula ‘x := sin(rnd); ifte(x > 0, ln(x), ERROR)’ se evaluará como: el seno de un número aleatorio será tomado, el resultado de esto será asignado a la variable X si fue definida y después de esto el parser continuará evaluando la segunda expresión, a la derecha del (;)ifte(x > 0, ln(x), ERROR)’. Esta se evaluará como: El contenido de X será comparado con 0, si es mayor que 0 el resultado será el logaritmo natural de X en caso contrario será un error del tipo “User generated error”.


¡No lo dudes! Estás ante la mejor opción del mercado. ¡Pide una Demo Ya!

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies