Une expression est une construction qui renvoie une valeur après son évaluation. Cette valeur est utilisée dans les instructions.
Les expressions sont constituées d'opérateurs, d'opérandes et/ou d'affectations. Un opérande peut être une constante, une variable, un appel de fonction ou une autre expression.
Exemples
33 |
(* Constante *) |
ivar |
(* Variable *) |
fct(a,b,c) |
(* Appel de fonction *) |
a AND b |
(* Expression *) |
(x*y) / z |
(* Expression *) |
real_var2 := int_var; |
(* Affectation, voir ci-dessous *) |
L'évaluation d'une expression passe par le traitement des opérateurs en fonction de certaines règles. L'opérateur ayant le niveau d'exécution le plus élevé est traité en premier, suivi de l'opérateur de niveau suivant, et ainsi de suite jusqu'à ce que tous les opérateurs aient été traités.
Le tableau suivant répertorie les opérateurs selon leur niveau d'exécution ordinal :
Opération |
Symbole |
Niveau d'exécution |
---|---|---|
placé entre parenthèses |
(expression) |
niveau le plus élevé |
appel de fonction |
nom de fonction (liste de paramètres) |
.............. |
élévation de puissance |
EXPT |
............. |
négation |
– |
............ |
construction de compléments |
NOT |
........... |
multiplication |
* |
.......... |
division |
/ |
......... |
modulo |
MOD |
........ |
addition |
+ |
....... |
soustraction |
– |
...... |
comparaison V |
<,>,<=,>= |
..... |
égal à |
= |
.... |
non égal à |
<> |
... |
AND booléen |
AND |
.. |
XOR booléen |
XOR |
. |
OR booléen |
OR |
ordre le plus faible |
Affectation en tant qu'expression
Les affactions peuvent être utilisées en tant qu'expression ; il s'agit d'une extension de la norme IEC 61131-3 (ExST).
Exemples :
|
|
---|---|
int_var1 := int_var2 := int_var3 + 9; |
(* int_var1 et int_var2 tous les deux équivalents à la valeur de int_var3 + 9*) |
real_var1 := real_var2 := int_var; |
(* les affectations correctes, real_var1 et real_var2, prennent la valeur de int_var *) |
int_var := real_var1 := int_var; |
(* un message s'affiche en raison de la non-concordance real-int *) |
IF b := (i = 1) THEN |
(* expression utilisée dans l'instruction de condition IF : b aura d'abord pour valeur TRUE ou FALSE, selon la valeur de i (1 ou non), puis la valeur de résultat de b sera évaluée.*) |