Lua Academy · Lektion

Numerisk for-løkke

Iterér over numeriske intervaller med syntaksen for i=start,limit,step.

Lektion 3 af 412 trin

Numerisk for-løkke er en gratis Lua Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Lua Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Lua Academy-kurset indeholder 4 lektioner i alt.

Syntaks for numerisk for

Lua's numeriske for-løkke har formen for var = start, limit, step do. step er som standard 1, hvis den udelades. Løkkens variabel er lokal for løkkens krop og kan ikke ændres inde i den. Grænsen og trinnet evalueres én gang, før løkken starter.

-- 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 9

Nedtælling med negativt trin

Brug et negativt trin til at tælle nedad. Løkken fortsætter, så længe var >= limit (når trinnet er negativt). Hvis startværdien allerede er mindre end grænsen med et negativt trin, udføres løkkens krop aldrig.

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 0

Løkkevariablen er lokal

Løkkens kontrolvariabel (i) er automatisk lokal. Du kan ikke ændre dens værdi inde i løkken — Lua ignorerer tildelinger til løkkevariablen. Hvis du vil holde styr på gentagelser på en anden måde, skal du bruge en separat lokal variabel.

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)

Gennemløb af arrays

Den mest almindelige anvendelse af numerisk for er at gennemløbe arrays efter indeks. Brug #arr som grænse. I modsætning til ipairs giver denne form dig mulighed for at styre trinstørrelsen og gennemløbe i omvendt rækkefølge, og den er lidt hurtigere for tætte arrays.

local fruits = {"apple", "banana", "cherry", "date"}

for i = 1, #fruits do
  print(i, fruits[i])
end
-- 1  apple
-- 2  banana
-- 3  cherry
-- 4  date

Summering med for

Numeriske for-løkker er ideelle til at akkumulere værdier fra arrays. Mønstret er altid det samme: initialisér en resultatvariabel før løkken, opdatér den inde i løkken, og brug den bagefter.

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)  -- 30

Indlejret numerisk for

Indlejr to numeriske for-løkker til todimensionelle operationer som gennemløb af matricer, tabeller af tabeller eller generering af koordinatpar. Den ydre løkke gennemløber rækkerne, og den indre løkke gennemløber kolonnerne — hver gentagelse tilgår én celle.

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 12

Trin med flydende tal

Trinnet og grænserne kan være flydende tal, selvom det kan medføre præcisionsfejl. Hvis du har brug for et nøjagtigt antal gentagelser, skal du holde dig til heltal. Hvis du er nødt til at bruge flydende tal, skal du være opmærksom på, at antallet af gentagelser beregnes som 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 .. " ")
end

Opbygning af en resultattabel

En numerisk for-løkke er den almindelige måde at opbygge en ny tabel ud fra eksisterende data på. Opret en tom tabel, og brug derefter løkken til at udfylde den efter indeks.

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
end

break i numerisk for

Du kan afslutte en numerisk for-løkke tidligt med break. Udførelsen springer til sætningen efter end. Det er nyttigt ved lineær søgning: gennemløb elementerne, indtil målet findes, og afslut derefter med 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")
end

Beregning af antal gentagelser

Antallet af gentagelser i for i = start, limit, step er max(0, floor((limit - start) / step) + 1). Hvis du forstår dette, undgår du fejl med én for meget eller én for lidt. Når trinnet er 1, er antallet ganske enkelt 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)

Hurtig kontrol

Hvilke værdier gennemløber for i = 10, 1, -3 do?

Opsummering: Numerisk for

Opsummering:

  • for i = start, limit, step do — trinnet er som standard 1
  • Negativt trin til nedtælling
  • Løkkevariablen er automatisk lokal og skrivebeskyttet
  • Grænsen og trinnet evalueres én gang, før løkken starter
  • break afslutter løkken tidligt
  • Standardmønster: opbyg resultattabeller, søg i arrays, og akkumulér summer
Gratis at komme i gang

Lær Lua med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
40
Lektioner
159

Ofte stillede spørgsmål

Er lektionen “Numerisk for-løkke” gratis?

Ja — alle 3 lektioner i læringssporet Lua Academy, inklusive “Numerisk for-løkke”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Lua Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Numerisk for-løkke”?

Iterér over numeriske intervaller med syntaksen for i=start,limit,step. Du øver dig i Lua Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Lua Academy?

Der kræves ingen tidligere erfaring. Lua Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “Numerisk for-løkke”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Lua Academy-lektion?

Ja. Alle Lua Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. if-, elseif- og else-sætninger
  2. while- og repeat-until-løkker
  3. Numerisk for-løkke
  4. Generisk for og break
← Tilbage til Lua Academy