Dies ist eine alte Version des Dokuments!


Kontrollstrukturen und logische Operatoren

In einem Programm kann es vorkommen, dass man dieselbe Anweisung mehrfach ausführen möchte. Nehmen wir uns ein ganz einfaches Beispiel zur Hand. Angenommen wir möchten die Zahlen eins bis zehn jeweils mit der Funktion print() ausgeben, dann könnte das in etwa so aussehen:

print(1)
print(2)
print(3)
print(4)
print(5)
print(6)
print(7)
print(8)
print(9)
print(10)

Mühsam nicht war? Wenn wir dies für die Zahlen Eins bis Hundert machen, sind wir eine ganze Zeit beschäftigt. Doch zum Glück gibt es in Lua eine Möglichkeit, sich diesen Arbeitsaufwand zu sparen!

Die for-Schleife

Mit der for-Schleife können wir einen Anweisungsblock mehrmals ausführen. Dabei beginnt die for-Schleife mit dem Schlüsselwort for, endet mit dem Schlüsselwort end und ist somit gut für uns als Anweisungsblock erkennbar.

for (Anzahl wiederholungen) do
  -- Anweisungen
  print("Hallo-oh")
end

Jetzt müssen wir nur noch festlegen, wie oft wir unseren Anweisungsblock denn ausführen wollen. Dafür gibt es eine so genannte Zählvariable. Die Zählvariable ist nur innerhalb der for-Schleife gültig und erhöht sich in jedem Durchgang um eins, bis sie ihr Limit erreicht.

-- for Zählvariable = Anfangswert, Endwert do
for i = 1, 10 do
  -- Anweisungen
end

In diesem Beispiel heisst unsere Zählvariable i (Zählvariablen in Schleifen werden standartmäßig i genannt). Beim Start der Schleife setzen wir unsere Zählvariable auf den Wert eins. Dann werden die Anweisungen innerhalb der for-Schleife einmal ausgeführt. Ist das Programm am end der for-Schleife angekommen, wird geprüft ob die Zählvariable i ihr Limit(hier die 10) erreicht hat. Wenn das Limit erreicht wurde dann läuft das Programm weiter, ansonsten wird die Zählvariable um eins erhöht und der Anweisungsblock der for-Schleife erneut ausgeführt.
Mit der Zählvariable i können wir arbeiten. In unserem Beispiel von Oben ist das Ausgeben der zehn Zahlen nun kein Problem mehr.

for i = 1,10 do
  print(i)
end
-- Der Anweisungsblock wird zehn mal durchlaufen,
-- wobei i beim ersten Durchlauf den Wert eins beträgt und beim letzten den Wert zehn.
 
 
-- Beispiel zum Augeben von Hundert Zahlen:
for i = 1,100 do
  print(i)
end
 
-- Das Anfang und das Ende kann frei gewählt werden.
for i = 23,210 do
 print(i)
end
--> Ausgabe Zahlen 23..210.
 
-- Genauso lässt sich auch der Name der Zählvariable beliebig wählen.
for AktuelleZahl = 1,10 do
  print(AktuelleZahl)
end

Optional kann man der for-Schleife noch einen dritten Parameter übergeben. Dieser bestimmt die Schritte, sprich die Veränderung der Zählvariable. So kann man die Zählvariable zum Beispiel jedesmal um zwei statt um eins erhöhen.

-- Alle ungeraden Zahlen ausgeben!
for i = 1,10,2 do
 print(i)
end
 
-- 3er Schritte machen:
for i = 1,10,3 do
 print(i)
end
 
-- Man könnte auch nur zwei Durchläufe machen, indem man einen 10er Schritt macht!
for i = 1,10,10 do
 print(i)
end

Soweit so gut. Ebenso lässt sich eine for-Schleife rückwärts durchlaufen, in dem man die Veränderung der Zählvariable negiert.

for i = 10,1, -1 do
 print(i)
end

Wichtig ist hierbei, dass man darauf achtet bei Zehn anzufangen und das Limit auf eins zu setzen, denn die Schleife beginnt ja nun bei Zehn und zählt rückwärts. Auch das rückwärtszählen geht in unterschiedlich großen Schritten.

for i = 200,0,-10 do
  print(i)
end
--> Ausgabe: 200,190,180,170,...,0

Probiert das mit den Schleifen am besten in der Lua Demo aus!