Lua Academy · leksjon

Numerisk for-løkke

Iterer over numeriske intervaller med syntaksen for i=start,limit,step.

Leksjon 3 av 412 trinn

Numerisk for-løkke er en gratis leksjon i Lua Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Lua Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Lua Academy inneholder totalt 4 leksjoner.

Syntaks for numerisk for

Lua sin numeriske for-løkke har formen for var = start, limit, step do. step er som standard 1 hvis den utelates. Løkkevariabelen er lokal for løkkekroppen og kan ikke endres der. Grensen og steget 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

Nedtelling med negativt steg

Bruk et negativt steg for å telle nedover. Løkken fortsetter så lenge var >= limit (når steget er negativt). Hvis startverdien allerede er mindre enn grensen med et negativt steg, kjøres løkkekroppen aldri.

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økkevariabelen er lokal

Løkkens kontrollvariabel (i) er automatisk lokal. De kan ikke endre verdien inne i løkken – Lua ignorerer tilordninger til løkkevariabelen. Bruk en separat lokal variabel hvis De trenger å holde oversikt over iterasjonene på en annen måte.

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)

Iterere over tabeller

Det vanligste bruksområdet for numerisk for er å iterere over tabeller ved hjelp av indeksen. Bruk #arr som grense. I motsetning til ipairs lar denne formen Dem styre stegstørrelsen og iterere baklengs, og den er litt raskere for kompakte tabeller.

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

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

Summere med for

Numeriske for-løkker egner seg svært godt til å akkumulere verdier fra tabeller. Mønsteret er alltid det samme: initialiser en resultatvariabel før løkken, oppdater den inne i løkken, og bruk den etterpå.

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

Nestet numerisk for

Nøst to numeriske for-løkker for todimensjonale operasjoner som gjennomgang av matriser, tabeller med tabeller eller generering av koordinatpar. Den ytre løkken går gjennom rader, og den indre gjennom kolonner – hver iterasjon får tilgang til é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

Desimale steg

Steget og grensene kan være flyttall, men dette kan føre til presisjonsfeil. Hold Dem til heltall hvis De trenger et nøyaktig antall iterasjoner. Hvis De må bruke flyttall, bør De være klar over at antallet løkker 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

Bygge en resultattabell

En numerisk for-løkke er standardmåten å bygge en ny tabell fra eksisterende data på. Opprett en tom tabell, og bruk deretter løkken til å fylle den etter 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

De kan avslutte en numerisk for-løkke tidlig med break. Kjøringen hopper til setningen etter end. Dette er nyttig ved lineært søk: iterer til målet blir funnet, og avslutt deretter 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 av antall iterasjoner

Antallet iterasjoner i for i = start, limit, step er max(0, floor((limit - start) / step) + 1). Når De forstår dette, unngår De «off-by-one»-feil. Når steget 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)

Hurtigsjekk

Hva itererer for i = 10, 1, -3 do over?

Oppsummering: numerisk for

Oppsummering:

  • for i = start, limit, step do – steget er som standard 1
  • Negativt steg brukes til nedtelling
  • Løkkevariabelen er automatisk lokal og skrivebeskyttet
  • Grensen og steget evalueres én gang før løkken starter
  • break avslutter løkken tidlig
  • Standardmønstre: bygge resultattabeller, søke i tabeller og akkumulere summer
Gratis å komme i gang

Lær deg Lua med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
40
Leksjoner
159

Ofte stilte spørsmål

Er leksjonen «Numerisk for-løkke» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Lua Academy, inkludert «Numerisk for-løkke», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Lua Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Numerisk for-løkke»?

Iterer over numeriske intervaller med syntaksen for i=start,limit,step. Du øver på Lua Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Lua Academy?

Ingen tidligere erfaring er nødvendig. Lua Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «Numerisk for-løkke»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Lua Academy-leksjonen?

Ja. Alle Lua Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

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