Skip to main content

Commande : Inverse l'instruction IF

Fonction: Cette commande inverse le IF déclaration sans changer la sémantique de la IF déclaration. La condition est niée. Les déclarations dans le THEN et ELSE les branches sont échangées. Tous les commentaires sont conservés.

Appel: Menu contextuel sous Refactorisation commande

Condition préalable : le curseur est positionné n'importe où dans un IF déclaration.

Tableau 2. Règles de négation

Expression

Expression niée

Description

<

>=

La comparaison sur « inférieur à » devient « supérieur à » et vice versa.

<=

>

La comparaison sur « inférieur ou égal à » devient « supérieur à » et vice versa.

=

<>

La comparaison sur « égal » devient « n'est pas égal » et vice versa.

<expression1> AND <expression2>

( NOT <expression1> ) OR ( NOT <expression2> )

Négation selon De Morgan pour AND opérateur

<expression1> OR <expression2>

(NOT <expression1> ) AND (NOT <expression2> )

Négation selon De Morgan pour OR opérateur

<expression>

NOT <expression>

Négation standard

NOT <expression>

<expression>

Pas de double NOT expression

a (*commentaire*) = b

a (*commentaire*) <> b

Les commentaires sont conservés. Ceci s'applique particulièrement aux opérandes échangés



Exemple 9. Exemple
PROGRAM Inversion1
VAR
    xA, xB, xC : BOOL;
    iVar : INT;
END_VAR
iVar := 0;
IF NOT(xA AND xB AND xC) THEN
	iVar:= 1; (* IF 1 *)
ELSE
	iVar := iVar + 1; (* ELSE counter*)
END_IFiVar := 0;

Coder après avoir appelé la commande en logique inversée avec la même sémantique :

 iVar := 0;
IF (xA AND xB AND xC) THEN
    iVar := iVar + 1; (* ELSE counter*)
ELSE
    iVar:= 1; (* IF 1 *)
END_IF