Lua-Programmierung: Kontrollstrukturen
Aus Wikibooks
[Bearbeiten] Was sind Kontrollstrukturen?
Das Kapitel über Zustände war zwar auch ganz interessant, nur es erschließt sich noch nicht der Sinn von Zuständen. Das wollen wir jetzt ändern mit Kontrollstrukturen. Kontrollstrukturen machen eigentlich erst so richtig ein Programm zu einem Programm. Sie kontrollieren, ob das eine oder das andere gemacht werden soll. Sie steuern den sogenannten Programmfluss.
[Bearbeiten] Verzweigungen
Die einfachste Kontrollstruktur ist if. Hier ein Beispiel:
a = 7 if a > 6 then a = 6 end print(a)
Die Ausgabe lautet: 6
Die Konstrunktion besteht aus folgenden Teilen:
if Zustand then Block end
Also, Falls (if) der Zustand true ist, dann wird der Block hinter then ausgeführt. Then leitet einen Block ein, der mit end abgeschlossen wird.
Nun wollen wir vielleicht auch etwas anderes machen, wenn der Ausdruck false ist. Das könnte man so machen:
a = 7 if a > 6 then a = 6 end if not(a > 6) then a = 12 end print(a)
Das funktioniert aber nur augenscheinlich, denn die Bedingung des 2. if ist immer erfüllt, egal welchen Wert a am Anfang hatte. Das Problem kannn man mit einem else-Zweig lösen:
a = 7 if a > 6 then a = 6 end else a = 12 end print(a)
else wird also immer dann ausgeführt wenn if es nicht wird. Es leitet außerdem einen neuen Block ein, d.h. end nicht vergessen.
Man kann aber natürlich auch noch mehr als zwei Möglichkeiten stellen, dafür gibt es das Schlüsselwort elseif:
a = 7 if a > 6 then a = 6 end elseif a < 2 then a = 2 end else a = 35 print(a)
elseif hat den selben Aufbau wie if.
[Bearbeiten] Schleifen
Manchmal (eher häufig) kommt es dazu dass man bestimmte Befehle vielmals wiederholen muss, dafür gibt es Schleifen. Hier ein erstes Beispiel:
zustand_a = true zustand_b = true zustand_c = true ------------------------------------------------- while zustand_a do if zustand_b == true then zustand_b = not(b) end elseif (zustand_c == true) zustand_c = not(zustand_c) end else zustand_a = zustand_c or not(zustand_b) end print("Schleife durchlaufen") end
Überlegen sie mal, wie oft die Schleife durchlaufen wird und welche Werte a, b und c am Ende haben.
Die while-Schleife besteht immer aus:
while Zustand do.
Das do leitet wieder einen neuen Block ein.
Diese Schleife wird zugegebenermaßen eher selten benutzt, sie passte gerade aber besser. Genauso wie die folgende: repeat. Sie besteht aus: repeat dem Block until Zustand. Der Unterschied zur while-Schleife ist, dass die Bedingung erst am Ende und nicht am Anfang geprüft wird. D. h. sie wird mindestens einmal durchlaufen.
Die nächste Schleife, die wir lernen werden, lautet for. Wieder ein einleitendes Beispiel:
for i = 0, 10, 1 do print (i) end
Damit werden die Zahlen 0 bis 10 ausgegeben. Eine for-Schleife besteht immer aus:
for eine Variable, a, b do
a und b sind jetzt keine Variablen, sondern Platzhalter, weil es sonst unübersichtlich wird.
Für a wird ein Wert eingesetzt. Wenn die Variable den Wert annimmt, wird die Schleife beim nächsten Durchlauf verlassen. Für b wird der Wert eingesetzt, um den die Variable bei jedem Durchlauf erhöht wird. Das do leitet wie immer einen neuen Block ein.