WENN - DANN - SONST; Bedingungen
Material für den Informatikunterricht
Beispiele für Bedingungen
- Wenn es regnet, gehen wir ins Kino.
- Wenn die PIN = 4711 ist, dann gibt der Geldautomat Geld heraus.
- Wenn alle da sind, fangen wir an.
- WENN a = 3 DANN fortsetzen
- "Hände hoch, oder ich schieße!"
- Um acht fahren wir in die Stadt.
- Wenn der Dateiname schon vorhanden ist, dann wird ein anderer Dateiname verlangt.
- Beim Überfahren mit dem Mauszeiger verändert sich die Schriftfarbe.
- WENN :d > 31 DANN DZ "Dieses Datum gibt es nicht."
Definition
In der Bedingung wird geprüft, ob zwei Objekte oder Zustände gleich sind (PIN = 4711) oder ob ein Objekt eine bestimmte Eigenschaft hat ("Alle sind da.") oder ob ein Zustand wahr ist (Mauszeiger über einem bestimmten Text).
Bedingungen enthalten also immer eine Gleichung oder Ungleichung, die Prüfung in einer Bedingung geht auf gleich / ungleich, größer / kleiner, wahr / unwahr.
Welche Prüfung ist in den Beispielen 5 und 6 enthalten?
Eine ganze bedingte Anweisung besteht aus der Bedingung selbst (WENN; IF; CASE) samt der hier dargestellten Prüfung und danach aus der Konsequenz, die sich aus der Prüfung ergibt (DANN; THEN). Manchmal gibt es auch noch eine Alternative für den Fall, dass die Prüfung negativ ausgeht (SONST; ELSE).
Syntax
- In LOGO muss die komplette bedingte Anweisung in einer einzigen, durchgehenden Zeile notiert werden, also mitsamt DANN und SONST, auch wenn diese Zeile noch so lang ist. Oder anders gesagt: Das Signal, dass die gesamte bedingte Anweisung beendet ist, ist der mit Return gesetzte Zeilenwechsel.
- In anderen Programmiersprachen wiederum muss die Prüfung, also der erste Teil der bedingten Anweisung, in einer eigenen Zeile stehen, die Konsequenz (THEN) in einer zweiten Zeile, die Alternative (ELSE) in einer dritten Zeile und die gesamte Anweisung wird dann mit END IF beendet. Das folgende Beispiel ist ein Word-Makro, mit dem ein markierter Text rot formatiert wird; wenn er schon rot ist, wird er schwarz formatiert:
Sub rot() If Selection.Font.Color() = wdColorRed Then Selection.Font.Color() = wdColorBlack Else Selection.Font.Color() = wdColorRed End If End Sub
- In Excel wird DANN und SONST gar nicht ausdrücklich notiert, sondern diese Teile der bedingten Anweisung verstecken sich in Semikola. Das folgende Beispiel trägt für den Preis in Zelle C3 die Mehrwertsteuer (19%) in eine Zelle ein, wenn in der Zelle C3 ein "v" (voller MWSt-Satz) steht, wenn in C3 kein "v" steht, wird nichts eingetragen (leere Anführungsstriche nach dem letzten Semikolon = nach SONST.
=WENN(C3="v";B3/119*19;"")
- Eine Möglichkeit, in LOGO sehr lange Zeilen bei der bedingten Anweisung zu vermeiden, ist die Auslagerung der Inhalte von DANN und SONST in eigene Prozeduren. Beispiel aus der Simulation eines Geldautomaten:
WENN :pin = 4711 DANN bank2 SONST bank3 ... PR bank2 DZ "PIN in Ordnung." ... ENDE PR bank3 DZ "Diese PIN ist falsch!" SETZE "i" :i + 1 PAUSE 20 ...
Oder man arbeitet in LOGO mit PRÜFE ... WENNWAHR ... WENNFALSCH, wobei WENNWAHR und WENNFALSCH mit WW und WF abgekürzt werden können. Dabei können jeweils eigene Zeilen für die bedingte Anweisung, die Konsequenz und die Alternative benutzt werden. Das sähe dann für den Bankautomaten so aus:PRÜFE :pin = 4711 WW DZ "PIN in Ordnung." ... WF DZ "Diese PIN ist falsch!" SETZE "i" :i + 1 PAUSE 20 ...
- In Javascript gibt es Kurzfassungen von Bedingungen mit "on": onclick, onmouseover...; da werden bestimmte Ereignisse oder Aktionen als Bedingung genommen (es wird geprüft, ob sie jetzt wahr sind) für den Aufruf einer Funktion, die dann etwas tut, z.B. meldet.
- Eine Folge von mehreren Bedingungen wird in manchen Programmiersprachen mit case definiert: case 1, case 2, case 3...
© Michael Kraus, Dezember 2009