Verzweigungen mit if
, else if
und else
Dauer: 30 Minuten
Ziel: Kontrollfluss eines Programms steuern
Bisher haben wir nur Sequenzen von relativ einfachen Anweisungen betrachtet.
Für komplexere Algorithmen werden Konstrukte benötigt, die den Ablauf eines Programms steuern können.
Mit Verzweigungen lässt sich die Abarbeitungsreihenfolge bzw. der Kontrollfluss eines Programms ändern.
Bildquelle: https://flic.kr/p/5kZ54J
Der Aufbau bzw. die Syntax einer Verzweigung
mit if/else if/else
hat folgendes Schema
(„Pseudocode“):
if( ...ein logischer Ausdruck X vom Typ boolean... ) {
// Anweisungen in diesem Block werden ausgeführt,
// wenn X wahr (true) ist
} else if( ...ein logischer Ausdruck Y vom Typ boolean... ) {
// Anweisungen in diesem Block werden ausgeführt,
// wenn X falsch (false) und Y wahr (true) ist
} else if( ...ein logischer Ausdruck Z vom Typ boolean... ) {
// Anweisungen in diesem Block werden ausgeführt,
// wenn X und Y falsch (false) sind und Z wahr (true) ist
// hier könnten noch mehrere else if Blöcke folgen
} else {
// Anweisungen in diesem Block werden ausgeführt, wenn alle
// Bedingungen in den if und else if Blöcken falsch (false) sind
}
Bemerkungen:
- Die logischen Ausdrücke werden manchmal auch Bedingungen genannt.
- Die Bedingungen müssen lediglich einen Wert vom Typ
boolean
ergeben (alsotrue
oderfalse
). - Es muss genau einen
if
-Block geben. - Es können beliebig viele
else if
-Blöcke angegeben werden (oder auch keine). - Es kann höchstens einen
else
-Block geben (oder auch keinen).
Ein Beispiel dazu:
const i = prompt("Bitte Zahl eingeben");
if(i >= 0) {
console.log(`${i} ist nicht negativ`);
} else {
console.log(`${i} ist negativ`);
}
Hier haben wir ein if
und dann direkt ein else
.
Keine weiteren Fälle werden mit else if
unterschieden. Dies ist also sozusagen ein
„entweder … oder“.
Ein weiteres Beispiel:
const i = parseInt(prompt("Bitte Zahl eingeben"));
if(isNaN(i)) {
console.log("Bitte eine Zahl eingeben, d.h. nur Ziffern eintippen!");
} else if(i >= 0) {
console.log(`${i} ist nicht negativ`);
} else {
console.log(`${i} ist negativ`);
}
Hier haben wir einen weiteren Fall hinzugefügt,
sodass wir nun drei Fälle unterscheiden. Das erste
if
überprüft, ob eine gültige Zahl eingegeben wurde.
Mit isNaN()
hat JavaScript eine Hilfsfunktion,
die true
genau dann zurückliefert, wenn der
übergebene Parameter NaN
ist, und ansonsten false
ergibt.
Besteht ein Anweisungsblock bei einem
if/else if/else
aus nur einer Zeile, dann
können die geschweiften Klammern weggelassen
werden:
const i = parseInt(prompt("Bitte Zahl eingeben"));
if(isNaN(i))
console.log("Bitte eine Zahl eingeben, d.h. nur Ziffern eintippen!");
else if(i >= 0)
console.log(`${i} ist nicht negativ`);
else
console.log(`${i} ist negativ`);
Es schadet nicht, auch hier Klammern zu verwenden, da oft später weitere Zeilen hinzukommen. Außerdem erreicht man so einen konsistenten Programmierstil.
Programmieren ~ „Konzepte kombinieren“
Im Block einer Verzweigung
(if
… else if
… else
…) können
wiederum weitere Verzweigungen vorkommen.
Die verschiedenen Konstruktionen lassen sich „schachteln“:
- Kombination verschiedener Ausdrücke mit Operatoren zu neuen Ausdrücken
- Schleifen (
while/for
) in Schleifen oder Verzweigungen - Funktionsaufrufe als Ausdrücke in den Bedingungen
- Funktionsaufrufe in den
if/else if/else
-Blöcken - Funktionen, die in Funktionen deklariert werden.
- viele Möglichkeiten, die in Code oft genutzt werden …!