Verzweigungen

if-else

Es gibt kaum ein Programm, bei dem immer alle Befehle hintereinander ausgeführt werden. Verzweigungen sind ein häufig eingesetztes Mittel. Es handelt sich hierbei um Fallunterscheidungen, die in der Regel mit if durchgeführt werden:

oder

Eine Anweisung kann dabei wiederum aus einer neuen if-Bedingung bestehen.
Beispiel:

Das Beispiel bedeutet Folgendes: Ist x größer als Null, wird das ausgeführt, was hinter dem ersten then steht (die drei Punkte). Handelt es sich dabei um mehr als einen Befehl, muss der Block mit begin und end umgeben werden.
else, zu Deutsch “sonst”, leitet eine Alternative ein. Wenn also die erste Bedingung nicht erfüllt ist, wird die zweite geprüft, hier, ob x vielleicht kleiner als Null ist. Trifft auch diese Bedingung nicht zu, bleibt noch ein else ohne Bedingung. Die letzten drei Punkte werden also immer dann ausgeführt, wenn die ersten beiden Bedingungen nicht zutreffen.
Wäre bereits die erste Bedingung erfüllt gewesen, so wären die folgenden else-Abschnitte gar nicht mehr geprüft worden.
Selbstverständlich muss so ein if-Block keine “else if”- oder “else”-Alternativen bieten. Das kommt immer auf die Situation an. Da sich das Ganze aber sehr stark an mathematische Logik anlehnt, dürfte die Notation nicht allzu schwer fallen.
Was allerdings zu beachten ist: In Delphi steht hinter dem letzten Befehl vor dem Wörtchen else kein Strichpunkt (Semikolon) wie sonst üblich – im Gegensatz zu C++.
Noch ein Beispiel, wobei jeweils mehrere Befehle ausgeführt werden:

Hier sieht man besonders den Sinn von else. Wären die drei Fallunterscheidungen durch drei getrennte if-Abfragen dargestellt worden, dann hätten wir folgendes Problem: Angenommen eingabe ist 1, so ist die erste Bedingung erfüllt. Da hier eingabe jedoch auf 0 gesetzt wird, träfe nun auch die dritte Bedingung zu. Im obigen Beispiel mit else stellt das kein Problem dar.

case-Verzweigung

Müssten wir in obigem Beispiel mehr als nur zwei Zahlen prüfen, hätten wir ganz schön Tipparbeit. Für solche abzählbaren (ordinalen) Typen wie Integer und Char gibt es in Delphi eine Abkürzung:

Zugegeben, das Beispiel ist nicht besonders sinnvoll, da die Variable eingabe direkt in einen String umgewandelt werden könnte. Allerdings stellt es gut die Funktionsweise von case dar. Zu beachten ist, dass am Ende eines Case-Blocks ein end stehen muss. Gehören mehrere Anweisungen zusammen, können sie wie bei if durch begin und end als zusammengehörig gekennzeichnet werden.
Bei case steht (im Gegensatz zu if) vor dem Schlüsselwort else ein Strichpunkt!
Mit case ist auch Folgendes möglich:

So etwas ist natürlich auch bei if-Bedingungen möglich, dazu allerdings noch einen Einschub zum Thema Notation von logischen Bedingungen.