Lua Academy · Oppitunti

Numeerinen for-silmukka

Käykää numeerisia alueita läpi for i=start,limit,step -syntaksilla.

Oppitunti 3/412 vaihetta

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 9

Lä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 0

Silmukkamuuttuja 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  date

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

Sisä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 12

Liukulukuaskeleet

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 .. " ")
end

Tulostaulukon 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
end

break 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")
end

Silmukan 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
  • break poistuu silmukasta ennenaikaisesti
  • Tavallisia käyttötapoja ovat tulostaulukoiden rakentaminen, taulukoiden hakeminen ja summien kerryttäminen
Aloita maksutta

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

  1. if-, elseif- ja else-lauseet
  2. while- ja repeat-until-silmukat
  3. Numeerinen for-silmukka
  4. Geneerinen for ja break
← Takaisin: Lua Academy