Kurzschlussauswertung
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
soll von links nach rechts ausgewertet werden. Hat
den Wert „wahr“, so muss zudem
ausgewertet werden, um den Wert für
bestimmen zu können. Falls
jedoch den Wert „falsch“ hat, steht bereits fest, dass der Gesamtausdruck
nicht mehr den Wert „wahr“ annehmen kann. Die Auswertung kann also an dieser Stelle abgebrochen werden, ohne
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).
Inhaltsverzeichnis |
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]
- ↑ 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]
- Michael L. Scott: Programming Language Pragmatics. 3. Auflage. Elsevier LTD, Oxford 2009, ISBN 0-12-374514-4, S. 239 (eingeschränkte Vorschau in der Google Buchsuche).
