Verzweigungen
Verzweigungen erlauben dem Programm, abhängig von einer Bedingung unterschiedliche Instruktionen auszuführen. Eine solche Bedingung wird dabei immer als Boolean ausgedrückt.
Konstruiert werden Verzweigungen wie folgt: Das Schlüsselwort if leitet eine Verzweigung ein, danach folgt die zu prüfende Bedingung. Das Schlüsselwort then zeigt das Ende der Bedingung an. Anschließend gibt man alle Instruktionen an, die man ausführen will, sollte die Bedingnung true sein. Die Verzweigung endet mit dem Schlüsselwort end.
-- Rechne 24h-Zeitdarstellung in 12h-Zeitdarstellung um und gib Uhrzeit als String aus Hours = 13 Minutes = 26 Seconds = 5 Period = "a.m." PostMeridiem = Hours > 12 if PostMeridiem then Hours = Hours - 12 Period = "p.m." end Time = Hours..":"..Minutes..":"..Seconds.." "..Period
Hinweis: Unsere Beispiele in diesem und den folgenden Kapiteln können besser nachvollzogen werden, wenn man die Programmzeilen nebenbei ausprobieren kann. Dazu kann man diese Webseite hier verwenden:
Um dabei bei der Ausgabe ein Ergebnis zu sehen, kann man print
verwenden. Will man beispielsweise die Variable Time
ansehen, kann man
Time = Hours..":"..Minutes..":"..Seconds.." "..Period print(Time)
schreiben. Wenn die Variable einen anderen Namen hat, muss man diesen dementsprechend austauschen.
Unser Beispiel kann noch etwas vereinfacht werden. Zunächst muss die Bedingung nicht zwangsläufig zuerst in einer Varable zwischengespeichert werden, wenn das Ergebnis nur für diese Verzweigung gebraucht wird. Darüber hinaus erlauben Verzweigungen auch, andere Instruktionen auszuführen, sollte die Bedingung nicht Wahr sein. Dazu benötigt man das Schlüsselwort else.
-- Dieser Code ist komplett äquivalent zum ersten Beispiel oben Hours = 13 Minutes = 26 Seconds = 5 if Hours > 12 then Hours = Hours - 12 Period = "p.m." else Period = "a.m." end Time = Hours..":"..Minutes..":"..Seconds.." "..Period
Die Verzweigungen in Lua sind sehr nah an natürlicher Sprache: „Wenn (Bedingung erfüllt) dann (Instruktionen) sonst (Instruktionen) Ende“.
Wenn man sich seine Verzweigungen auf diese Art als Satz formuliert, kann man schnell prüfen, ob die Logik dahinter das ausdrückt, was man möchte.
Da Bedingungen immer Booleans sind, kann man alle logischen und Vergleichsoperatoren verwenden:
-- Hier den Wochentag eintragen Weekday = "Monday" -- :( IsItWeekend = false if Weekday == "Saturday" or Weekday == "Sunday" then IsItWeekend = true -- :) end
Man kann Verzweigungen auch ineinander schachteln:
-- Finde aus drei verschiedenen Zahlen die kleinste: Number1 = 3 Number2 = 7 Number3 = 1 if Number1 < Number2 then if Number1 < Number3 then SmallestNumber = Number1 else SmallestNumber = Number3 end else if Number2 < Number3 then SmallestNumber = Number2 else SmallestNumber = Number3 end end
Beachte dabei, wie jede Verzweigung mit if eingeleitet und mit end beendet werden muss.
Eine Besondere Rolle haben Verzweigungen wie diese hier:
Difficulty = "normal" -- Schwierigkeitsgrad, der entweder "easy", "normal", "hard" oder "veryhard" ist if Difficulty == "easy" then NumberOfEnemyTroops = 4 else if Difficulty == "normal" then NumberOfEnemyTroops = 7 else if Difficulty == "hard" then NumberOfEnemyTroops = 11 else if Difficulty == "veryhard" then NumberOfEnemyTroops = 15 end end end end
Kurzum, eine Variable, in unserem Fall der Schwierigkeitsgrad, kann nur einen von wenigen fest definierten Werten haben und wir wollen herausfinden, welcher das ist. Für so einen Fall erlaubt das Schlüsselwort elseif eine übersichtlichere Schreibweise:
-- Dieser Code ist wieder äquivalent zu dem darüber Difficulty = "normal" if Difficulty == "easy" then NumberOfEnemyTroops = 4 elseif Difficulty == "normal" then NumberOfEnemyTroops = 7 elseif Difficulty == "hard" then NumberOfEnemyTroops = 11 elseif Difficulty == "veryhard" then NumberOfEnemyTroops = 15 end
Sollte die Liste an möglichen Werten die Länge 4 deutlich überschreiten, gibt es weitaus elegantere Wege, so eine Abfrage zu formulieren. Darauf wollen wir allerdings erst später in Ebene 3 eingehen.
Im nächsten Kapitel teilen wir den Code in wieder verwendbare, logische Blöcke auf.
Voriges Kapitel: Variablen
Nächstes Kapitel: Funktionen
Zurück nach oben