Numeerinen for-silmukka
Käykää numeerisia alueita läpi for i=start,limit,step -syntaksilla.
Numeerinen for-silmukka on ilmainen Lua Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Lua Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Lua Academy-kurssilla on yhteensä 4 oppituntia.
Numeerisen for-silmukan syntaksi
Luan numeerinen for-silmukka on muotoa for var = start, limit, step do. step-arvo on oletusarvoisesti 1, jos se jätetään pois. Silmukkamuuttuja on paikallinen silmukan rungossa, eikä sitä voi muuttaa siellä. Raja-arvo ja askel arvioidaan kerran ennen silmukan alkamista.
-- 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 9Lähtölaskenta negatiivisella askeleella
Käyttäkää negatiivista askelta laskeaksenne alaspäin. Silmukka jatkuu niin kauan kuin var >= limit (kun askel on negatiivinen). Jos aloitusarvo on negatiivista askelta käytettäessä jo raja-arvoa pienempi, silmukan runkoa ei suoriteta lainkaan.
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 0Silmukkamuuttuja on paikallinen
Silmukan ohjausmuuttuja (i) on automaattisesti paikallinen. Sen arvoa ei voi muuttaa silmukan sisällä — Lua jättää silmukkamuuttujaan kohdistuvat sijoitukset huomiotta. Jos haluatte seurata iteraatioita toisella tavalla, käyttäkää erillistä paikallista muuttujaa.
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)Taulukoiden läpikäynti
Numeerista for-silmukkaa käytetään useimmiten taulukoiden läpikäyntiin indeksin avulla. Käyttäkää raja-arvona #arr-ilmaisua. Toisin kuin ipairs, tämä muoto antaa hallita askelkokoa ja käydä taulukon läpi käänteisessä järjestyksessä, ja se on tiiviille taulukoille hieman nopeampi.
local fruits = {"apple", "banana", "cherry", "date"}
for i = 1, #fruits do
print(i, fruits[i])
end
-- 1 apple
-- 2 banana
-- 3 cherry
-- 4 dateSumman laskeminen for-silmukalla
Numeeriset for-silmukat sopivat erinomaisesti taulukoiden alkioiden käsittelyyn kertymän avulla. Rakenne on aina sama: alustakaa tulosmuuttuja ennen silmukkaa, päivittäkää sitä silmukan sisällä ja käyttäkää sitä sen jälkeen.
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) -- 30Sisäkkäiset numeeriset for-silmukat
Sijoittakaa kaksi numeerista for-silmukkaa sisäkkäin kaksiulotteisia operaatioita varten, kuten matriisin, sisäkkäisten taulukoiden tai koordinaattiparien käsittelyyn. Ulompi silmukka käsittelee rivejä ja sisempi sarakkeita — jokaisella iteraatiolla käsitellään yksi solu.
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 12Liukulukuaskeleet
Askel ja raja-arvot voivat olla liukulukuja, mutta tämä voi aiheuttaa tarkkuusvirheitä. Jos tarvitsette tarkan iteraatiomäärän, käyttäkää kokonaislukuja. Jos liukulukuja on käytettävä, huomioikaa, että silmukoiden määrä lasketaan kaavalla 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 .. " ")
endTulostaulukon rakentaminen
Numeerinen for-silmukka on tavallinen tapa rakentaa uusi taulukko olemassa olevista tiedoista. Luokaa tyhjä taulukko ja täyttäkää se sitten silmukassa indeksien avulla.
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 numeerisessa for-silmukassa
Numeerisesta for-silmukasta voi poistua aikaisin komennolla break. Suoritus siirtyy end-lauseen jälkeiseen lauseeseen. Tämä on hyödyllistä lineaarisessa haussa: käykää alkiot läpi, kunnes kohde löytyy, ja poistukaa sitten silmukasta.
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")
endSilmukan iteraatiomäärän laskeminen
for i = start, limit, step-silmukan iteraatioiden määrä on max(0, floor((limit - start) / step) + 1). Tämän ymmärtäminen auttaa välttämään yhden liian monta tai liian vähän iteraatiota aiheuttavia virheitä. Kun askel on 1, määrä on yksinkertaisesti 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)Pikatarkistus
Mitä arvoja for i = 10, 1, -3 do käy läpi?
Kertaus: numeerinen for-silmukka
Yhteenveto:
for i = start, limit, step do— askel on oletusarvoisesti 1- Negatiivista askelta käytetään lähtölaskentaan
- Silmukkamuuttuja on automaattisesti paikallinen ja vain luettavissa
- Raja-arvo ja askel arvioidaan kerran ennen silmukan alkamista
breakpoistuu silmukasta ennenaikaisesti- Tavallisia käyttötapoja ovat tulostaulukoiden rakentaminen, taulukoiden hakeminen ja summien kerryttäminen
Opi Lua tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 40
- Oppitunnit
- 159
Usein kysytyt kysymykset
Onko oppitunti ”Numeerinen for-silmukka” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Lua Academy-oppimispolun 3 oppituntia, myös oppitunnin “Numeerinen for-silmukka”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Lua Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Numeerinen for-silmukka”?
Käykää numeerisia alueita läpi for i=start,limit,step -syntaksilla. Harjoittelet Lua Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Lua Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Lua Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”Numeerinen for-silmukka”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Lua Academy-oppitunnilla?
Kyllä. Jokainen Lua Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- if-, elseif- ja else-lauseet
- while- ja repeat-until-silmukat
- Numeerinen for-silmukka
- Geneerinen for ja break