Oft muss ein Programm - je nach Eingabe oder berechnetem Wert - auf verschiedene Arten weiterfahren.
Ein wichtiges Mittel bei der Programmierung ist deshalb die sogenannte Verzweigung.
Bei einer Verzweigung wird der Programmcode in verschiedene Blöcke unterteilt. Je nach dem ob eine angegebene Aussage true oder false ist, wird dann der eine oder andere Codeblock ausgeführt.
Du wirst in diesem Kapitel lernen, wie man Fallunterscheidungen programmiert.
Inhalt:
Einfaches if()
if() else
logische Verknüpfungen
switch() case
ifAngenommen eine Zahl wird durch eine Zahl geteilt, die vom Benutzer eingegeben wird.
Nun kann der Benutzer auch die Zahl 0 (Null) eingeben. Die Division durch Null ist aber nicht definiert. Deshalb soll das Programm die letzte Zeile nur schreiben, wenn d nicht Null ist.
Der Programmcode zwischen den geschwungenen Klammern wird nur dann ausgeführt, wenn die Aussage nach dem if true ist.
Die allgemeine Notation für den if-Befehl ist:
Wenn nur eine Codezeile folgt, könnten die geschwungenen Klammern weggelassen werden. Dies ist aber nicht zu empfehlen. Wenn man nämlich später Code einfügen muss, vergisst man leicht die Klammern zu setzen, wass zu Fehlern führt.
if() elseIm vorherigen Beispiel passierte einfach gar nichts, wenn der Benutzer Null eingibt. Das ist nicht ideal!
Man kann nach dem if-Codeblock einen weiteren Block anfügen, der dann ausgeführt wird, wenn die Aussage nach dem if false ist. Dieser zweite Codeblock wird durch das Wort else eingeleitet und muss auch zwischen geschwungenen Klammern stehen.
else kann nur nach einem if stehen!if() else if() elseOft muss das Programm auch mehrere Fälle unterscheiden. Dann spricht man nicht mehr von einer Verzweigung, sondern von einer Fallunterscheidung.
Eine Fallunterscheidung erhält man, wenn man gleich hinter dem else eine weitere if-Abfrage einfügt.
Es können auch mehrere else if-Blöcke eingefügt werden.
Eine Fallunterscheidung ist schon ziemlich kompliziert. Man muss sich beim Programmieren genau überlegen, in welcher Reihenfolge die Blöcke stehen sollen!
Wurde ein Block ausgeführt, springt das Programm automatisch ans Ende des ganzen if-else-Gefüges.
Wie du im Kapitel über Vergleichsoperatoren gelernt hast, lassen sich mehrere Vergleiche mit dem &&- oder dem ||-Operator koppeln.
So lassen sich in einer Verzweigung oder einer Fallunterscheidung mehrere Aussagen gleichzeitig überprüfen.
Das sieht alles schon ziemlich kompliziert aus. Wenn man sich aber ein bisschen Zeit nimmt, versteht man auch diesen Code!
switch() case:Wenn man in einer Fallunterscheidung nur eine Variable auf mehrere mögliche Werte hin überprüfen muss, kann man dies - viel einfacher als mit if() else - mit switch() case: machen.
Die Fallunterscheidung wird durch das Schlüsselwort switch eingeleitet. In der Klammer hinter switch steht die Variable, deren Wert untersucht werden soll.
Dann folgt in geschweiften Klammern die eigentliche Fallunterscheidung. Die einzelnen Fälle werden alle mit case eingeleitet.
Trifft keiner der angegebenen Fälle zu, wird default ausgeführt.
Wichtig ist auch der Befehl break;. Er markiert das Ende eines Falles und veranlasst das Programm, den switch-Block zu verlassen (also nach der schliessenden geschweiften Klammer fortzufahren). Fehlt break;, werden auch die folgenden Fälle ausgeführt, was man ja meistens nicht will.
Soll für mehrere Fälle der selbe Code ausgeführt werden, kann man mehrere case-Elemente untereinander schreiben: