Die for-Schleife
Die meisten zählenden Schleifen haben dieselben drei Teile: eine Variable, die vor der Schleife erzeugt wird, eine Bedingung und einen Schritt am Ende des Blocks:
local tag = 1 -- Start
while tag <= 5 do -- Bedingung
print("Tag " .. tag)
tag = tag + 1 -- Schritt
endDas Zählen ist so häufig, dass Lua eine Schleife hat, die alle drei Teile in einer Zeile erledigt, die for-Schleife:
for tag = 1, 5 do
print("Tag " .. tag)
endBeide Schleifen geben dasselbe aus:
Tag 1
Tag 2
Tag 3
Tag 4
Tag 5Lies die erste Zeile als „für tag von 1 bis 5, mache“. Die Schleife gibt der Variablen tag nacheinander die Werte 1, 2, 3, 4 und 5, in jedem Durchlauf einen. Beide Zahlen sind eingeschlossen: Die Schleife beginnt bei der ersten und endet mit der letzten. Du erzeugst die Variable nicht vor der Schleife, du schreibst keine Bedingung und du erhöhst die Variable nicht selbst: Das alles macht for. So kannst du den Schritt nicht vergessen und in einer Endlosschleife landen.
Start und Ende werden durch ein Komma getrennt. for tag = 1 to 5 do ergibt main.lua:1: ',' expected near 'to'. Sie können auch Variablen oder Rechnungen sein, zum Beispiel for beet = 1, beete do.
Die Schleifenvariable heißt oft i, aber jeder Name geht. Die for-Schleife macht sie von selbst lokal, schreibe also kein local davor:
for local i = 1, 3 do
print(i)
endmain.lua:1: <name> expected near 'local'Die Schleifenvariable gibt es nur innerhalb der Schleife. Nach dem end der Schleife ist der Name wieder unbekannt, also nil:
for i = 1, 3 do
print(i)
end
print(i)1
2
3
nilWenn du den Wert nach der Schleife brauchst, nimm eine while-Schleife mit einer Variablen, die du davor erzeugst, wie in den vorigen Übungen. Dafür kann jede Schleife ihr eigenes i haben, weil jedes i verschwindet, wenn seine Schleife endet.
for oder while? Nimm for, wenn du weißt, wie oft die Schleife läuft: von 1 bis 10 oder einmal für jeden Tag einer Woche. Nimm while, wenn du es vorher nicht weißt. Emma füllt den Trog für die Kuh Bella mit Wasser aus dem Brunnen, 8 Liter pro Eimer. Wie viele Eimer braucht sie für mindestens 50 Liter?
local wasser = 0
local eimer = 0
while wasser < 50 do
wasser = wasser + 8
eimer = eimer + 1
end
print("Eimer: " .. eimer)
print("Wasser: " .. wasser .. " Liter")Eimer: 7
Wasser: 56 LiterSo schreibst du es:
Anweisungen
- 1
Schreibe die
while-Schleife im Editor alsfor-Schleife mit der Variablenbeetum. Lösche diewhile-Schleife und die Zeile, diebeeterzeugt. Das Programm gibt weiterhinBeet 1bisBeet 5aus. - 2
Emma hat mehr Land gepachtet. Ändere deine Schleife so, dass sie die Beete von 1 bis 8 ausgibt, die 8 eingeschlossen:
Beet 1 Beet 2 Beet 3 Beet 4 Beet 5 Beet 6 Beet 7 Beet 8 - 3
Emmas Sonnenblume wächst jeden Tag 4 cm. Schreibe unter der ersten Schleife eine zweite
for-Schleife mit der Variablentag, von 1 bis 7, die ausgibt, wie hoch die Sonnenblume nach jedem Tag ist. Die Höhe kannst du direkt imprintberechnen:tag * 4. Die zweite Schleife gibt Folgendes aus:Tag 1: 4 cm Tag 2: 8 cm Tag 3: 12 cm Tag 4: 16 cm Tag 5: 20 cm Tag 6: 24 cm Tag 7: 28 cm