if - else if: Die andere (kürzere) Schreibweise der verschachtelten if - else Abfrage
Eine Abkürzung für verschachtelte if-else Anweisungen ist die if - else if Anweisung. Verwenden Sie bevorzugt diese abgekürzte Schreibweise (das Prinzip ist aber genau gleich)! Sie ist übersichtlicher und benötigt nicht so viele Einrückungen. Der einzige Unterschied ist, dass in der abgekürzten Schreibweise die verschachtelte if-Bedingung direkt hinter das else geschrieben wird.
Es können beliebig viele else-if Bedingungen hinzugefügt werden. Die letzte else-Bedingung wird nur betreten, wenn vorher alle else-if Bedingungen nicht erfüllt sind. Bei der abgekürzten Schreibweise ist die Verschachtelung nicht so gut erkennbar, sie ist aber trotzdem vorhanden.
Fallbeispiel 3: Das unten stehende Programm dient zur Steuerung einer Heizung. Die aktuelle Raumtemperatur wird mit der Funktion getTemp() abgefragt und in der Variable temp gespeichert.
- Die Heizung soll erst eingeschaltet werden, wenn die Temperatur über 5 °C beträgt, da sie bei zu niedrigen Temperaturen nicht funktioniert.
- Wenn die Temperatur über 5 °C steigt, soll die Heizung eingeschaltet werden.
- Wenn die Temperatur größer als 25 °C ist, soll sie ausgeschaltet werden, da der Raum sonst zu warm wird.
Beträgt die Temperatur nun temp = 26 Grad, so ist die erste if-Bedingung bereits erfüllt (26 > 5 -> TRUE). Aufgrund der Verschachtelung wird die zweite if-Bedingung (d.h. das else if) nie erreicht und die Heizung bleibt eingeschaltet. Der Raum wird weiter erwärmt (rechtes Teilbild). Eine derartiger Fehler kann bei manchen Fragestellungen zu schwerwiegenden Problemen führen. Um das Problem zu vermeiden muss der Temperaturbereich genauer eingeschränkt werden:
if (temp > 5 && temp <= 25)
...
else if (temp > 25)
...
Die erste if-Bediungung wird jetzt nur betreten, wenn die Temperatur zwischen 5 und 25 °C liegt. Ist temp = 26 wird der ursprünglich geplante Verlauf ausgeführt und die Heizung wird korrekt abgeschaltet.