Fachkonzept - Fallunterscheidungen
Fallunterscheidungen
Fallunterscheidungen ermöglichen es, den Programmablauf abhängig von bestimmten Bedingungen zu steuern. In den allermeisten Sprachen gibt es dafür if-Anweisungen, die es erlauben, einen Codeblock nur dann auszuführen, wenn eine bestimmte Bedingung erfüllt ist. Wenn die Bedingung nicht erfüllt ist, kann man mit einem optionalen else-Zweig einen alternativen Codeblock ausführen. In Kotlin sieht die Syntax für eine Fallunterscheidung folgendermaßen aus:
if (bedingung) {
// Codeblock, der ausgeführt wird, wenn die Bedingung erfüllt ist
} else {
// Codeblock, der ausgeführt wird, wenn die Bedingung nicht erfüllt ist
}
Der else-Zweig darf weggelassen werden, wenn man
keine alternative Aktion ausführen möchte, falls die Bedingung nicht erfüllt ist.
Wenn der Codeblock nur eine Anweisung enthält, können die geschweiften
Klammern weggelassen werden.
Vergleichsoperatoren
Um Bedingungen zu formulieren, verwendet man oft Vergleichsoperatoren, die zwei Werte miteinander vergleichen und einen Wahrheitswert (true oder false) zurückgeben. In Kotlin gibt es folgende Vergleichsoperatoren:
| Operator | Bedeutung |
|---|---|
== |
Gleichheit |
!= |
Ungleichheit |
< |
Kleiner als |
> |
Größer als |
<= |
Kleiner oder gleich |
>= |
Größer oder gleich |
Vergleichsoperatoren lassen sich beispielsweise folgendermaßen verwenden:
fun main() {
val zahl1 = (1..6).random()
val zahl2 = (1..6).random()
println(zahl1)
println(zahl2)
if (zahl1 != zahl2) {
println("Leider Pech gehabt, die Zahlen sind unterschiedlich.")
} else {
println("Glückwunsch, du hast einen Pasch gewürfelt!")
}
}
Verschachtelte if-Anweisungen
Es ist auch möglich, if-Anweisungen zu verschachteln, also eine
if-Anweisung innerhalb einer anderen if-Anweisung zu verwenden.
Das kann zum Beispiel dann sinnvoll sein, wenn man mehrere Bedingungen überprüfen möchte, die voneinander abhängig sind.
fun main() {
val zahl1 = (1..6).random()
val zahl2 = (1..6).random()
println("Zahl 1: $zahl1, Zahl 2: $zahl2")
if (zahl1 == zahl2) {
println("Glückwunsch, du hast einen Pasch gewürfelt!")
if (zahl1 == 6) {
println("Wow, ein Sechserpasch! Das ist wirklich selten!")
}
} else {
println("Leider Pech gehabt, die Zahlen sind unterschiedlich.")
}
}
In einigen Fällen möchte man Sequenzen von Bedingungen überprüfen, die sich gegenseitig ausschließen, also z.B. eine Zahl, die im Bereich von 1 bis 10, von 11 bis 20, von 21 bis 30 oder größer als 30 liegt. In solchen Fällen schreibt man im else-Zweig einer if-Anweisung einfach eine weitere if-Anweisung, und so weiter.
fun main() {
val zahl = (1..40).random()
println("Die Zahl ist: $zahl")
if (zahl <= 10) {
println("Die Zahl liegt zwischen 1 und 10.")
} else if (zahl <= 20) {
println("Die Zahl liegt zwischen 11 und 20.")
} else if (zahl <= 30) {
println("Die Zahl liegt zwischen 21 und 30.")
} else {
println("Die Zahl ist größer als 30.")
}
}