Ciclo for numerico
Iteri su intervalli numerici con la sintassi for i=start,limit,step.
Ciclo for numerico è una lezione Lua Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Lua Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Lua Academy include 4 lezioni in totale.
Sintassi del for numerico
Il ciclo for numerico di Lua ha la forma for var = start, limit, step do. Se viene omesso, step assume il valore predefinito 1. La variabile del ciclo è locale al corpo del ciclo e non può essere modificata al suo interno. Il limite e il passo vengono valutati una volta sola, prima dell'inizio del ciclo.
-- 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 9Conto alla rovescia con passo negativo
Utilizzi un passo negativo per contare all'indietro. Il ciclo continua finché var >= limit (quando il passo è negativo). Se, con un passo negativo, il valore iniziale è già minore del limite, il corpo del ciclo non viene mai eseguito.
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 0La variabile del ciclo è locale
La variabile di controllo del ciclo (i) è automaticamente locale. Non è possibile modificarne il valore all'interno del ciclo: Lua ignora le assegnazioni alla variabile del ciclo. Per tenere traccia delle iterazioni in modo diverso, utilizzi una variabile locale separata.
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)Iterazione sugli array
L'uso più comune del for numerico consiste nell'iterare sugli array tramite l'indice. Utilizzi #arr come limite. A differenza di ipairs, questa forma consente di controllare la dimensione del passo e di iterare al contrario; inoltre è leggermente più veloce con gli array densi.
local fruits = {"apple", "banana", "cherry", "date"}
for i = 1, #fruits do
print(i, fruits[i])
end
-- 1 apple
-- 2 banana
-- 3 cherry
-- 4 dateSomma con for
I cicli for numerici sono ideali per accumulare valori da array. Lo schema è sempre lo stesso: inizializzare una variabile risultato prima del ciclo, aggiornarla al suo interno e utilizzarla dopo.
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) -- 30for numerici annidati
Annidi due cicli for numerici per operazioni bidimensionali, come l'attraversamento di matrici, le tabelle di tabelle o la generazione di coppie di coordinate. Il ciclo esterno gestisce le righe e quello interno le colonne: ogni iterazione accede a una cella.
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 12Passi con numeri decimali
Il passo e i limiti possono essere numeri in virgola mobile, anche se ciò può introdurre errori di precisione. Per ottenere un numero esatto di iterazioni, utilizzi numeri interi. Se deve usare numeri decimali, tenga presente che il numero di iterazioni viene calcolato come 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 .. " ")
endCostruzione di una tabella risultato
Un ciclo for numerico è il modo standard per costruire una nuova tabella a partire da dati esistenti. Crei una tabella vuota e utilizzi il ciclo per riempirla tramite l'indice.
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 nel for numerico
È possibile uscire prima da un for numerico con break. L'esecuzione passa all'istruzione successiva a end. Questo è utile per la ricerca lineare: si itera finché non viene trovato l'elemento cercato, quindi si usa 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")
endCalcolo del numero di iterazioni
Il numero di iterazioni di for i = start, limit, step è max(0, floor((limit - start) / step) + 1). Comprendere questo calcolo aiuta a evitare gli errori di uno scarto. Quando il passo è 1, il conteggio è semplicemente 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)Verifica rapida
Su quali valori itera for i = 10, 1, -3 do?
Riepilogo: for numerico
Riepilogo:
for i = start, limit, step do— il passo predefinito è 1- Passo negativo per il conto alla rovescia
- La variabile del ciclo è automaticamente locale e di sola lettura
- Il limite e il passo vengono valutati una volta sola, prima dell'inizio del ciclo
breakconsente di uscire prima- Schema standard: costruire tabelle risultato, cercare negli array e accumulare somme
Domande Frequenti
La lezione «Ciclo for numerico» è gratuita?
Sì — il testo completo di «Ciclo for numerico» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Lua Academy, passa a CoddyKit PRO. Il corso Lua Academy include 4 lezioni in totale.
Cosa imparerò in «Ciclo for numerico»?
Iteri su intervalli numerici con la sintassi for i=start,limit,step. Eserciti Lua Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Lua Academy?
Non è richiesta alcuna esperienza precedente. Lua Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Ciclo for numerico»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Lua Academy?
Sì. Ogni lezione Lua Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.