Skip to main content

Befehl: IF-Anweisung invertieren

Funktion: Dieser Befehl invertiert die IF-Anweisung, ohne die Semantik der IF-Anweisung zu ändern. Die Bedingung wird negiert. Die Anweisungen in den Zweigen THEN und ELSE werden vertauscht. Alle Kommentare bleiben erhalten.

Aufruf: Kontextmenü unter Befehl Refactoring

Voraussetzung: Der Cursor steht innerhalb einer IF-Anweisung an einer beliebigen Stelle.

Tabelle 2. Regeln für Negierung

Ausdruck

Negierter Ausdruck

Beschreibung

<

>=

Der Vergleich auf "kleiner als" wird zu "größer als" und umgekehrt.

<=

>

Der Vergleich auf "kleiner gleich als" wird zu "größer als" und umgekehrt.

=

<>

Der Vergleich auf "gleich" wird zu "ungleich" und umgekehrt.

<Ausdruck1> AND <Ausdruck2>

( NOT <Ausdruck1> ) OR ( NOT <Ausdruck2> )

Negierung nach De-Morgan für Operator AND

<Ausdruck1> OR <Ausdruck2>

(NOT <Ausdruck1> ) AND (NOT <Ausdruck2> )

Negierung nach De-Morgan für Operator OR

<Ausdruck>

NOT <Ausdruck>

Standardnegation

NOT <Ausdruck>

<Ausdruck>

Kein doppeltet NOT-Ausdruck

a (*Kommentar*) = b

a (*Kommentar*) <> b

Kommentare bleiben erhalten. Dies gilt insbesondere für vertauschte Operanden



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

Code nach Aufruf des Befehls mit invertierter Logik bei gleicher Semantik:

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