Numerieke for-lus
Doorloop numerieke bereiken met de syntaxis for i=start,limit,step
Numerieke for-lus is een gratis Lua Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Lua Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Lua Academy bevat in totaal 4 lessen.
Syntaxis van numerieke for
De numerieke for-lus van Lua heeft de vorm for var = start, limit, step do. De step is standaard 1 als die wordt weggelaten. De lusvariabele is lokaal binnen de body van de lus en kan daar niet worden gewijzigd. De limiet en stap worden één keer geëvalueerd voordat de lus begint.
-- Count 1 to 5
for i = 1, 5 do
io.write(i .. " ")
end
print() -- 1 2 3 4 5
-- Count with step 2
for i = 1, 10, 2 do
io.write(i .. " ")
end
print() -- 1 3 5 7 9Aftellen met een negatieve stap
Gebruik een negatieve stap om af te tellen. De lus gaat door zolang var >= limit (als de stap negatief is). Als de startwaarde bij een negatieve stap al kleiner is dan de limiet, wordt de body van de lus nooit uitgevoerd.
for i = 10, 1, -1 do
io.write(i .. " ")
end
print()
-- 10 9 8 7 6 5 4 3 2 1
-- Step -2
for i = 10, 0, -2 do
io.write(i .. " ")
end
print()
-- 10 8 6 4 2 0De lusvariabele is lokaal
De lusbesturingsvariabele (i) is automatisch lokaal. Je kunt de waarde ervan binnen de lus niet wijzigen; Lua negeert toewijzingen aan de lusvariabele. Gebruik een afzonderlijke lokale variabele als je iteraties op een andere manier wilt bijhouden.
for i = 1, 5 do
-- i is read-only inside the loop
-- i = i + 10 -- this creates a new global i, not the loop var
print(i) -- always 1, 2, 3, 4, 5 as expected
end
-- i is nil here (it was local to the loop)
print(i) -- nil (or whatever global i was)Arrays doorlopen
De meest voorkomende toepassing van de numerieke for-lus is arrays doorlopen op basis van hun index. Gebruik #arr als limiet. In tegenstelling tot ipairs kun je met deze vorm de stapgrootte bepalen en achteruit doorlopen. Voor dichte arrays is deze vorm bovendien iets sneller.
local fruits = {"apple", "banana", "cherry", "date"}
for i = 1, #fruits do
print(i, fruits[i])
end
-- 1 apple
-- 2 banana
-- 3 cherry
-- 4 dateOptellen met for
Numerieke for-lussen zijn ideaal om waarden in arrays te accumuleren. Het patroon is altijd hetzelfde: initialiseer een resultaatvariabele vóór de lus, werk die binnen de lus bij en gebruik haar erna.
local values = {10, 20, 30, 40, 50}
local total = 0
for i = 1, #values do
total = total + values[i]
end
print("Total:", total) -- 150
print("Count:", #values) -- 5
print("Mean:", total / #values) -- 30Geneste numerieke for-lussen
Genest twee numerieke for-lussen voor tweedimensionale bewerkingen, zoals het doorlopen van een matrix, een tabel met tabellen of het genereren van coördinatenparen. De buitenste lus doorloopt de rijen en de binnenste lus de kolommen; elke iteratie benadert één cel.
local rows, cols = 3, 4
for r = 1, rows do
for c = 1, cols do
io.write(string.format("%2d ", r * c))
end
print()
end
-- 1 2 3 4
-- 2 4 6 8
-- 3 6 9 12Kommagetallen als stap
De stap en limieten mogen kommagetallen zijn, al kan dit afrondingsfouten veroorzaken. Gebruik gehele getallen als je exacte aantallen iteraties nodig hebt. Als je toch kommagetallen gebruikt, houd er dan rekening mee dat het aantal lussen wordt berekend als floor((limit - start) / step) + 1.
-- Float step
for x = 0.0, 1.0, 0.25 do
io.write(x .. " ")
end
print()
-- 0.0 0.25 0.5 0.75 1.0
-- Prefer integer math when possible
for i = 0, 4 do
local x = i * 0.25
io.write(x .. " ")
endEen resultaattabel opbouwen
Een numerieke for-lus is de standaardmanier om op basis van bestaande gegevens een nieuwe tabel op te bouwen. Maak een lege tabel en gebruik daarna de lus om die op index te vullen.
local source = {1, 2, 3, 4, 5}
local squares = {}
for i = 1, #source do
squares[i] = source[i] ^ 2
end
for i = 1, #squares do
print(squares[i]) -- 1, 4, 9, 16, 25
endbreak in een numerieke for-lus
Je kunt een numerieke for-lus vroegtijdig verlaten met break. De uitvoering springt naar de instructie na end. Dit is nuttig voor lineair zoeken: doorloop de waarden totdat het doel is gevonden en gebruik dan break.
local data = {5, 3, 8, 1, 9, 2, 7}
local target = 9
local foundAt = nil
for i = 1, #data do
if data[i] == target then
foundAt = i
break
end
end
if foundAt then
print("Found at index " .. foundAt) -- 5
else
print("Not found")
endHet aantal iteraties berekenen
Het aantal iteraties van for i = start, limit, step is max(0, floor((limit - start) / step) + 1). Als je dit begrijpt, voorkom je fouten waarbij je één iteratie te veel of te weinig uitvoert. Bij een stap van 1 is het aantal eenvoudigweg limit - start + 1.
-- How many iterations?
local count = 0
for i = 1, 10, 3 do
count = count + 1
end
print(count) -- 4 (i = 1, 4, 7, 10)
count = 0
for i = 5, 1 do -- step=1 but start > limit
count = count + 1
end
print(count) -- 0 (no iterations)Korte controle
Welke waarden doorloopt for i = 10, 1, -3 do?
Samenvatting: numerieke for
Samenvatting:
for i = start, limit, step do— de stap is standaard 1- Gebruik een negatieve stap om af te tellen
- De lusvariabele is automatisch lokaal en alleen-lezen
- De limiet en stap worden één keer geëvalueerd voordat de lus begint
breakverlaat de lus vroegtijdig- Standaardpatroon: resultaattabellen opbouwen, arrays doorzoeken en sommen accumuleren
Leer Lua met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 40
- Lessen
- 159
Veelgestelde vragen
Is de les “Numerieke for-lus” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Lua Academy, waaronder “Numerieke for-lus”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Lua Academy bevat in totaal 4 lessen.
Wat leer ik in “Numerieke for-lus”?
Doorloop numerieke bereiken met de syntaxis for i=start,limit,step Je oefent met Lua Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Lua Academy te beginnen?
Ervaring vooraf is niet nodig. Lua Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “Numerieke for-lus”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Lua Academy?
Ja. Elke les over Lua Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- if-, elseif- en else-instructies
- while- en repeat-until-lussen
- Numerieke for-lus
- Generieke for en break