Wie funktioniert die If-Anweisung?
Dieser Artikel erklärt die Logik einer If-Anweisung unabhängig von einer bestimmten Programmiersprache.Was ist die If-Anweisung?
Die If-Anweisung (oder Wenn-Anweisung) ermöglicht es Ihrem Programm durch Untersuchen einer Bedingung unterschiedliche Wege zu gehen bzw. Handlungen durchzuführen. Sie kennen das alle aus dem täglichen Leben: "Wenn ich genug Geld dabei habe, esse ich ein Eis." In diesem Fall werden Sie in Ihren Geldbeutel schauen und aufgrund des darin gefundenen Geldbetrags die Bedingung auswerten. Sie haben zwei Möglichkeiten:
- Sie haben genügend Geld dabei.
- Sie haben nicht genug Geld dabei.
Abhängig von dem Ergebnis treffen Sie eine andere Entscheidung:
- Sie kaufen ein Eis.
- Sie kaufen kein Eis.
So trivial das auch klingen mag, aber im ersten Schritt tut eine If-Anweisung in der Programmierung nichts anderes. Komplexer wird sie durch die Anwendungsfälle. Abe bleiben wir bei den Grundlagen. Eine If-Anweisung wertet eine Bedingung aus und kommt zu einem Ergebnis:
- Die Bedingung ist wahr.
- Die Bedingung ist falsch.
Das ist die Grundlage für den weiteren Programmablauf. Bei einer wahren Bedingung tut das Programm etwas anderes als bei einer falschen Bedingung. Sehen wir uns ein etwas weiteres Beispiel an. Stellen Sie sich vor, Sie wären ein Türsteher vor einer Disco. Nur Gäste ab 18 dürfen eintreten. Sie sehen sich die Personalausweise an und formulieren eine Bedingung: Ist das Alter der Person größer oder gleich 18? Je nachdem, ob die Bedingung wahr oder falsch ist, treffen Sie eine der beiden Entscheidungen:
- Sie lassen die Person eintreten.
- Sie schicken die Person weg.
Sie können das Ganze auch ein wenig anders formulieren: Wenn das Alter der Person größer oder gleich 18 ist, lassen Sie sie eintreten, sonst (in allen anderen Fällen) schicken Sie sie weg. Dabei spielt es keine Rolle, ob die Person 6, 15 oder schon 17 ist. Das überprüfen Sie nicht mehr, weil es Sie nicht interessiert. In allen anderen Fällen schicken Sie sie weg. Auch das klingt im ersten Moment trivial, bereitet aber Programmieranfängern oft Probleme.
Was genau ist eine Bedingung?
Der Aufbau einer Bedingung sollte noch kurz erklärt werden, denn Sie werden später zusammengesetzte Bedingungen kennen lernen. Dort gelten die gleichen Regeln. Eine Bedingung besteht immer aus drei Elementen:
- Einer Variable,
- einem Vergleichsoperator und
- einem Vergleichswert.
Eine Bedingung ist also das Ergebnis des Vergleichs einer Variable mit Hilfe eines Operators auf einen bestimmten Wert. Ich veranschauliche das noch einmal mit dem Türsteherbeispiel:
- Alter (Variable)
- größer oder gleich (Operator)
- 18 (Vergleichswert)
Sie sehen, dass unsere Bedingung alle benötigten Bestandteile hat. Welche Operatoren stehen uns zur Verfügung? Die nächste Tabelle zeigt die Operatoren, die Sie bereits aus dem zweiten Teil des Tutorials kennen. Sie sehen in der Tabelle auch die häufigsten Entsprechungen in Programmiersprachen (bei einigen Operatoren gibt es je nach Programmiersprache zwei Möglichkeiten):
Beschreibung des Operators | Darstellung in Programmiersprachen |
kleiner als | < |
größer als | > |
kleiner oder gleich | <= |
größer oder gleich | >= |
gleich | =, == |
nicht gleich | <>,!= |
Erweiterung der If-Anweisung
Aber die If-Anweisung kann noch erweitert werden. Bisher haben wir zwei Bestandteile kennengelernt:
- Wenn die Bedingung wahr ist, tue etwas.
- In allen anderen Fällen, tue etwas anderes.
Aber diese beiden Möglichkeiten sind nicht immer ausreichend. Manchmal möchte man noch weitere Bedingungen formulieren. Dies funktioniert natürlich mit unterschiedlichen If-Anweisungen.Im Folgenden sehen Sie ein Beispiel aus der natürlichen Sprache mit zwei Wenn-Abfragen:
- Wenn die Sonne scheint, gehe ich ins Schwimmbad.
- Wenn es regnet, gehe ich ins Kino.
Dabei handelt es sich um zwei vollkommen unabhängige Wenn-Abfragen. Sie werten die erste Abfrage aus und reagieren entsprechend. Dann werten Sie die zweite aus. Immer. Die Beiden sind unabhängig voneinander. Logisch sind sie natürlich nicht unabhängig. Aber wo liegt das Problem? Erweitern wir das Beispiel ein wenig.
- Wenn die Sonne scheint, gehe ich ins Schwimmbad.
- Wenn es regnet, gehe ich ins Kino.
- Sonst bleibe ich zu Hause.
Die Einrückung soll den Sachverhalt demonstrieren, dass die zweite Wenn-Abfrage und das "Sonst" zusammengehören. Sie sind beide unabhängig von der ersten Wenn-Abfrage. Ein neues "Wenn" bedeutet eine vollkommen unabhängige neue Abfrage. Was hat dieser Fall nun für Konsequenzen?
Nehmen wir einmal an, dass die Sonne scheint. Sie prüfen die erste Bedingung und diese ist wahr. Sie packen also Ihre Schwimmsachen und möchten starten. Aber dann sehen Sie, dass es eine zweite Wenn-Abfrage gibt. Diese müssen Sie ebenfalls prüfen. Es regnet nicht, aber das "Sonst" gehört zu dieser Abfrage. "Sonst" wird immer ausgeführt. Also müssen Sie zu Hause bleiben.Sie werden natürlich nicht so reagieren, aber ein Programm "denkt" auf diese Art und Weise. Es muss also eine Möglichkeit geben, die beiden If-Abfragen logisch miteinander zu verknüpfen. Dazu dient das "Sonst wenn".
Formulieren wir die Abfrage ein wenig anders:
- Wenn die Sonne scheint, gehe ich ins Schwimmbad.
- Sonst wenn es regnet, gehe ich ins Kino.
- Sonst bleibe ich zu Hause.
Sie sehen, dass wir logisch nur noch eine Wenn-Abfrage haben. Das "Sonst wenn" wird nur abgefragt, wenn die erste Bedingung falsch ist. Scheint also die Sonne, prüfen wir die erste Bedingung, sehen, dass sie wahr ist, und gehen ins Schwimmbad. Den Rest überspringen wir, denn die beiden anderen Fälle sind logisch abhängig und müssen nicht mehr geprüft werden.
Regnet es, erweist sich die erste Bedingung als falsch. Wir prüfen die zweite und gehen ins Kino. Das "Sonst" wird übersprungen. Schneit es, prüfen wir die erste Bedingung. Dann die zweite und führen anschließend das "Sonst" aus.
Achten Sie also immer darauf, dass Bedingungen, die logisch voneinander abhängen, in einer Wenn-Abfrage stehen. Natürlich dürfen und müssen auch voneinander unabhängige Wenn-Abfragen verwendet werden. Aber das hängt von dem konkreten Fall ab.
Was muss die Wenn-Abfrage enthalten?
Eine Wenn-Abfrage muss zwingend den "Wenn"-Teil enthalten. Alle anderen Teile sind freiwillig und werden nur verwendet, falls sie unbedingt benötigt werden. Was in allen anderen Fällen geschieht, spielt oft keine Rolle. Sehen wir uns noch einmal das Beispiel vom Anfang an:
Wenn ich genug Geld dabei habe, kaufe ich mir ein Eis.
Das reicht. Es interessiert nicht, was geschieht, wenn Sie nicht genug Geld dabei haben. Sie müssen dann nichts spezielles tun, sondern sie gehen einfach weiter. Was Sie sowieso getan hätten. Es gelten also folgende drei Regeln:
- "Wenn" muss genau einmal vorkommen.
- "Sonst wenn" darf beliebig oft (also auch überhaupt nicht) vorkommen.
- "Sonst" darf höchstens einmal in der Abfrage stehen.
Zum Schluss dieses Abschnitts möchte ich das Wetter-Beispiel noch einmal erweitern:
- Wenn die Sonne scheint, gehe ich ins Schwimmbad
- Sonst wenn es regnet gehe ich ins Kino.
- Sonst wenn es schneit, fahre ich Schlitten.
- Sonst bleibe ich zu Hause.
Verknüpfung von Bedingungen
Zum Abschluss soll noch eine Sache drauf gesetzt werden. Wenn Sie bisher folgen konnten, stellt dieser Abschnitt auch keine Herausforderung mehr für Sie dar. Sie können Bedingungen miteinander verknüpfen. Ich habe bereits vorher angesprochen, dass es Teilbedingungen gibt, die zu einer gesamten Bedingung zusammengesetzt werden. Von diesen Verknüpfungen gibt es zwei: und / oder. Beginnen wir mit einem logischen Und und betrachten Sie die folgende Erweiterung unseres Wetterbeispiels.
Wenn das Wetter sonnig ist und die Temperatur höher als 30 Grad ist, gehe ich ins Schwimmbad.
Nun reicht es nicht mehr, dass die Sonne scheint. Das können Sie auch im Winter bei frostigen 0 Grad haben. Freibad macht dann wenig Spaß. Daher habe ich zwei Bedingungen mittels Und miteinander verknüpft. Beide Teilbedingungen müssen wahr sein, damit die gesamte Bedingung wahr ist. Sie gehen also nur und nur dann ins Schwimmbad, wenn die Sonne scheint und es wirklich mehr als 30 Grad sind.
Scheint die Sonne bei 0 Grad, gehen Sie nicht. Sind es zwar 35 Grad, aber es regnet, gehen Sie auch nicht ins Schwimmbad. Scheint die Sonne bei 35 Grad, dann gehen Sie schwimmen. Schauen wir uns nun die Oder-Verknüpfung an.
Wenn mein Gefühl Hunger ist oder wenn mein Gefühl Durst ist, gehe ich in ein Café.
Es genügt hier, wenn eine der beiden Bedingungen wahr ist. Sie gehen also ins Café, sowohl wenn Sie hungrig sind, als auch wenn Sie durstig sind. Nichts hindert Sie allerdings daran, ins Café zu gehen, wenn Sie hungrig und durstig sind. Im realen Leben wird "oder" häufig als ausschließendes Oder verwendet, also "entweder oder". In der Programmierung ist eine Oder-Verknüpfung auch wahr, wenn beide Teilbedingungen wahr sind. Sie gehen also nur dann nicht ins Café, wenn Sie weder hungrig noch durstig sind.
Warum habe ich mich so seltsam ausgedrückt? Ich möchte Sie auf einen häufigen Anfängerfehler aufmerksam machen: Beide Teilbedingungen müssen vollständige Bedingungen sein mit den oben beschriebenen Bestandteilen. Sie müssen also eine Variable, einen Vergleichsoperator und einen Vergleichswert enthalten. Um diese Regeln einigermaßen abzubilden, habe ich mich etwas umständlich ausgedrückt. Normalerweise müssen wir im realen Leben diese drei Elemente nicht unbedingt verwenden. In der Programmierung ist es aber unbedingt erforderlich.
Zum Abschluss noch die Verneinung. Sie ist einfach, denn sie dreht einen Wahrheitswert (wahr oder falsch) einfach um:
- aus "wahr" wird "falsch".
- aus "falsch" wird "wahr".
Wenn nicht das Wetter sonnig ist, bleibe ich zu Hause.
In den meisten Fällen wird die Bedingung mit einem "Nicht" etwas komplizierter. Daher wird die Verwendung normalerweise vermieden. Es gibt im Allgemeinen einfachere Möglichkeiten ohne ein "Nicht". Aber man sollte es dennoch kennen und verstehen, denn es kann sinnvolle Einsatzmöglichkeiten geben.
Bildquelle:
Paul-Georg Meister
(Eigene Homepage erstellen? Das is zu beachten)