ToDo: Kontrolle

Hamsterskript: Boolesche Ausdrücke

Verzweigungen und Schleifen erlauben die bedingte (wiederholte) Ausführung einer oder mehrerer Anweisungen. Die zu prüfende Bedingung ist fast immer als Boolescher Ausdruck anzugeben. Da eine Bedingung entweder erfüllt oder nicht erfüllt sein kann, hat ein solcher Ausdruck nur zwei mögliche Ergebnisse; im Falle des Hamsters die ganzzahligen Werte 1 (Bedingung erfüllt, true) oder 0 (Bedingung nicht erfüllt, false). Innerhalb eines solchen Ausdrucks wird jede von 0 verschiedene Zahl wie der Wert true behandelt.

Beispielsweise hat der Vergleichsausdruck$a < $b“ den Wert 1, wenn die Variable $a einen kleineren Wert als $b enthält, ist er dagegen gleich dem Wert oder größer als derjenige von $b, hat er den Wert 0.

Boolesche Operatoren

In einem einzigen Booleschen Ausdruck können auch mehrere Bedingungen geprüft werden. Die Ergebnisse der einzelnen Prüfungen werden dabei durch Boolesche Operatoren (logische Operatoren) zu einem Gesamtergebnis zusammengefasst. Die Syntax gleicht derjenigen der arithmetischen Ausdrücke. So ist die Bedingung

( $a = $b ) && ( $c = $d )

nur dann erfüllt, wenn der Wert von $a mit dem von $b und der Wert von $c mit dem von $d übereinstimmt. Dagegen ist die Bedingung

( $a = $b ) || ( $c = $d )

bereits dann erfüllt, wenn der Wert von $a mit dem von $b oder der Wert von $c mit dem von $d übereinstimmt. Die Bedingung

!( $a = $b )

ist nur erfüllt, wenn der Wert von $a nicht mit dem von $b übereinstimmt; der Wert des vergleichenden Ausdrucks „( $a = $b )“ wird also negiert.

&&“, „||“ und „!“ gehören zu den logischen Operatoren, „=“ ist in diesem Zusammenhang einer von mehreren Vergleichsoperatoren. Eine Übersicht aller verfügbaren Operatoren findet sich im Abschnitt Operatoren.

Durch Klammerung kann die Auswertungsreihenfolge Boolescher Teilausdrücke wie in arithmetischen Ausdrücken vorgegeben werden. Der Interpreter des Hamsters berechnet Boolesche Ausdrücke immer vollständig (keinelazy Evaluation“). Im Ausdruck

( $a = $b ) && Test( $c )

würde die Funktion „Test( $c )“ also in jedem Falle aufgerufen, auch wenn das Ergebnis des gesamten Ausdrucks bereits nach Auswertung des Teilausdrucks „$a = $b“ feststehen sollte: Wenn $a und $b verschiedene Werte enthalten, ergibt sich für gesamten Ausdruck der Wert 0 unabhängig vom Resultat der „Test()“-Funktion.