Opérateurs
Dans FPScript, vous pouvez utiliser une variété d'opérateurs, par exemple pour les opérations arithmétiques et logiques, les opérations de comparaison et de concaténation. Vous pouvez utiliser les opérateurs pour calculer des valeurs individuelles ou des ensembles de données entiers, des matrices de données, des signaux, des séries de signaux ou des courbes spatiales.
Prédominance des opérateurs
Si plusieurs opérateurs apparaissent dans une expression, chaque partie est évaluée et résolue dans un ordre prédéfini. Cet ordre est décrit comme la préséance des opérateurs. Vous pouvez passer outre la préséance des opérateurs en utilisant des parenthèses pour forcer l'évaluation de certaines parties d'une expression avant d'autres composants. Les opérations entre parenthèses sont toujours exécutées avant les opérations qui ne sont pas entre parenthèses. Toutefois, la préséance standard des opérateurs s'applique également à l'intérieur des parenthèses.
Si une expression contient des opérateurs de catégories différentes, ceux-ci sont évalués dans l'ordre indiqué ci-dessous. Tous les opérateurs de comparaison ont la même priorité, c'est-à-dire qu'ils sont évalués de gauche à droite dans leur ordre d'apparition. Les opérateurs arithmétiques et logiques sont évalués dans l'ordre suivant :
Description |
Symbole |
---|---|
Conversion |
|
Valeur booléenne |
|
Entier16 |
|
Integer32 |
|
Entier64 |
|
Point flottant32 |
|
Point flottant64 |
|
ComplexInteger16 |
|
ComplexInteger32 |
|
ComplexInteger64 |
|
Conversion en valeur complexe à virgule flottante de 32 bits |
Point flottant complexe32 |
Conversion en valeur complexe à virgule flottante de 64 bits |
Point flottant complexe64 |
Chaîne de caractères |
|
CalendarTime |
|
TimeSpan |
|
Unité |
|
Value |
|
Arithmétique |
|
- |
|
^ |
|
* |
|
/ |
|
% |
|
+ |
|
- |
|
# |
|
Nombres complexes |
|
Real |
|
Imag |
|
* |
|
Comparaison * |
|
< |
|
> |
|
<= |
|
>= |
|
== |
|
<> |
|
Logique |
|
~ |
|
& |
|
XOr |
|
| |
|
Non |
|
Et |
|
Ou |
|
Organisation des données |
|
: |
|
# |
|
( , ) |
|
{ , } |
|
( , , ) |
|
[ , ] |
|
Accès aux données |
|
.X .Y .Z |
|
. |
|
.[ ] |
|
[ , ] [[ , ]] |
|
$$ |
Si la multiplication et la division apparaissent dans une expression, chaque opération est exécutée de gauche à droite dans l'ordre d'apparition. La même procédure s'applique lorsque l'addition et la soustraction ou la concaténation et la multiplication interviennent dans une expression.
Associativité
L'opérateur d'exponentiation est le seul opérateur qui soit associatif à droite. Cela signifie que plusieurs exponentiations sont traitées en séquence de droite à gauche. Tous les autres opérateurs sont traités de gauche à droite.
Traitement des expressions logiques
Une conjonction logique (opération booléenne ET), ou des séquences de celle-ci, ne sont évaluées que jusqu'à ce que le résultat soit défini, c'est-à-dire jusqu'à ce que la première expression donne FALSE. Il en va de même pour la disjonction logique (opération OU). Elles sont évaluées jusqu'à ce que la première expression donne le résultat VRAI. Ceci ne s'applique pas aux opérations logiques par bit.
Dans l'exemple suivant, Test(DataSet2) n'est appelé que lorsque Test(DataSet1) donne un résultat vrai. Si le résultat de Test(DataSet1) est FALSE, alors le résultat final de l'opération ET booléen est défini comme FALSE.
Si Test(DataSet1) et Test(DataSet2) alors
...
End
* Cet opérateur et tous les opérateurs de cette catégorie ne sont pas disponibles dans FlexPro View.