|
|
Abfrage
Ein Programm besteht nicht nur aus der Folge von Anweisungen, sondern kann auch auf Zustandsänderungen reagieren. Dazu verwendet es Abfragen.
- Das Schlüsselwort if leitet die Abfrage ein.
- In Klammern folgt die Bedingung, unter der die folgende Anweisung ablaufen soll. Eine solche Bedingung ist ein boolescher Ausdruck.
- Es folgt die Anweisung, die unter der Bedingung ausgeführt werden soll. Sollen mehrere Anweisungen unter der Bedingung ablaufen, müssen diese in einem Block aus geschweiften Klammern zusammengefasst werden.
- Optional kann das Schlüsselwort else folgen. Dieses leitet eine Anweisung oder einen Block von Anweisungen ein, die dann ausgeführt werden sollen, wenn die Bedingung nicht zutrifft.
if (a > 10) println("sehr viel") else if (a < 1) println("wenig") else println("dazwischen")Auch wenn nur eine Anweisung unter der Bedingung steht, ist es der Übersicht dienlich, geschweifte Klammern als Blockgrenzen zu verwenden.
var a = 0 if (a > 10) { println("sehr viel") } else if (a < 1) { println("wenig") } else { println("dazwischen") }
Boolesche Ausdrücke
Bedingungen werden als boolesche Ausdrücke formuliert. Das Ergebnis ist immer wahr oder falsch. Als Literale stehen true und false zur Verfügung. Der Typ für boolesche Ausdrücke heißt Boolean.Typischerweise entsteht der boolesche Ausdruck durch den Vergleich zweier Werte. Dazu stehen folgende Vergleichsoperatoren zur Verfügung:
Operator | Bedeutung |
---|---|
< | kleiner |
> | größer |
<= | kleiner oder gleich |
>= | größer oder gleich |
== | gleich |
!= | ungleich |
Hinzu kommen logische Verknüpfungen für boolesche Ausdrücke. Dazu stehen folgende boolesche Operatoren zur Verfügung:
Operator | Bedeutung |
---|---|
&& | UND |
|| | ODER |
! | NICHT (unär) |
Bereichsabfrage
Für Abfragen, ob ein Wert innerhalb eines Bereichs liegt, kann das Schlüsselwort in verwendet werden. Die folgende Abfrage stellt fest, ob die Zahl einstellig ist.if (zahl in 0..9) { println("Ziffer ist einstellig") }Es ist möglich, bei Bereichen Schrittweiten anzugeben. Hier wird geprüft, ob die Zahl gerade und einstellig ist.
if (zahl in 0..8 step(2)) { println("Ziffer ist einstellig und gerade") }
Fallunterscheidungen
Wenn man einzelne Fälle von abzählbaren Variablen unterscheiden will, kann man dies mit else-if-Kaskaden erreichen. Etwas eleganter ist allerdings die Fallunterscheidung when.
when (x) { 1 -> print("x == 1") 2 -> print("x == 2") 3, 4 -> print("x == 3 oder x == 4") in 5..7 -> print("x zwischen 5 und 7") else -> print("x ist kleiner als 1 oder größer als 7.") }Das Beispiel stammt aus Wikipedia