Expressions

Présentation

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 *)

Ordre des opérations

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
i := i + 1;
END_IF

(* 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.*)