Kurzschlussauswertung

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Kurzschlussauswertung (auch bedingte Auswertung, englisch short-circuit evaluation)[1] ist ein Begriff aus der Informatik und bezeichnet eine Strategie der Auswertung von booleschen Ausdrücken. Im Allgemeinen steht das Ergebnis eines booleschen Ausdrucks ohne die Verwendung von Kurzschlussauswertung erst nach der Auswertung aller Teilausdrücke fest. Kurzschlussauswertung ermöglicht das vorzeitige Abbrechen einer Auswertung eines booleschen Ausdrucks, sobald das Auswertungsergebnis durch einen Teilausdruck eindeutig bestimmt ist.

Der Ausdruck

C = A \land B

soll von links nach rechts ausgewertet werden. Hat A den Wert „wahr“, so muss zudem B ausgewertet werden, um den Wert für C bestimmen zu können. Falls A jedoch den Wert „falsch“ hat, steht bereits fest, dass der Gesamtausdruck C nicht mehr den Wert „wahr“ annehmen kann. Die Auswertung kann also an dieser Stelle abgebrochen werden, ohne B auszuwerten zu müssen.

Verschiedene Programmiersprachen verwenden die Kurzschlussauswertung als Mittel zur Optimierung. Auf die mitunter rechenintensive Auswertung komplexerer Teilausdrücke kann dadurch oft verzichtet werden. Auch bedingt auftretende Ausführungsfehler können auf diese Weise unterdrückt werden (s. Beispiel unten).

Beispiel anhand eines Algorithmus in Pseudocode[Bearbeiten]

Das folgende Beispiel zeigt einen Anwendungsfall für Kurzschlussauswertung.

Setze A := 0
Setze B := 10

if (A != 0) AND ((B / A) >= 5) then
  An dieser Stelle im Algorithmus konnte B durch A geteilt werden.
else
  An dieser Stelle ist der Quotient (B / A) echt kleiner als 5 oder eine Division durch 0 wurde verhindert
endif

Die Auswertung des booleschen Ausdrucks wird im Fall, dass die Variable A den Wert 0 beinhaltet, nach der Prüfung auf Ungleichheit A != 0 abgebrochen. Dadurch dass der erste Teilausdruck zu „falsch“ ausgewertet wurde, steht das Resultat der Konjunktion AND bereits eindeutig fest. Insbesondere kann der zweite Teilausdruck nicht ausgewertet werden, da eine Division durch 0 mathematisch inkorrekt wäre.

Im Gegensatz zur Auswertung einer Konjunktion steht bei Disjunktion das Gesamtergebnis bereits nach dem ersten „wahren“ Teilausdruck fest.

Praxis[Bearbeiten]

In der Programmiersprache C werden boolesche Ausdrücke ausschließlich nach dem Kurzschluss-Prinzip ausgewertet. Der &&-Operator ist der einzige, der eine Konjunktion boolescher Ausdrücke realisiert. In der Programmiersprache Java steht der &&-Operator ebenfalls für eine Kurzschlussauswertung. Zudem existiert jedoch der Operator &, mit dem die gesamte Auswertung eines booleschen Ausdrucks erzwungen wird.

Einzelnachweise[Bearbeiten]

  1.  Peter Hofer, Peter Fischer: Lexikon der Informatik. 15. Auflage. Springer, Berlin 2010, ISBN 3-642-15125-6, S. 81 (eingeschränkte Vorschau in der Google-Buchsuche).

Literatur[Bearbeiten]

Siehe auch[Bearbeiten]