Skip to main content

Comando: Inverti istruzione IF

Funzione: Questo comando inverte il IF istruzione senza modificare la semantica di IF dichiarazione. La condizione è negata. Le dichiarazioni in THEN E ELSE i rami vengono scambiati. Tutti i commenti vengono conservati.

Chiamata: menu contestuale sotto Refactoring comando

Presupposto: il cursore è posizionato ovunque entro UN IF dichiarazione.

Tabella 2. Regole per la negazione

Espressione

Espressione negata

Descrizione

<

>=

Il confronto su “minore di” diventa “maggiore di” e viceversa.

<=

>

Il confronto su “minore o uguale a” diventa “maggiore di” e viceversa.

=

<>

Il confronto su “è uguale” diventa “non è uguale” e viceversa.

<espressione1> AND <espressione2>

( NOT <espressione1> ) OR ( NOT <espressione2> )

Negazione secondo De Morgan per AND operatore

<espressione1> OR <espressione2>

(NOT <espressione1> ) AND (NOT <espressione2> )

Negazione secondo De Morgan per OR operatore

<espressione>

NOT <espressione>

Negazione standard

NOT <espressione>

<espressione>

Nessun doppio NOT espressione

a (*commento*) = b

a (*commento*) <> b

I commenti vengono conservati. Ciò vale soprattutto per gli operandi scambiati



Esempio 9. Esempio
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;

Codice dopo aver chiamato il comando con logica invertita con la stessa semantica:

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