Lua-Programmierung: Kontrollstrukturen

Aus Wikibooks

Wechseln zu: Navigation, Suche

[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.

Persönliche Werkzeuge