0Pricing
Lua Academy · Lezione

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 9

Conto 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 0

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

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

for 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 12

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

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

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

Calcolo 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
  • break consente 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.

Tutte le lezioni di questo corso

  1. Istruzioni if, elseif ed else
  2. Cicli while e repeat-until
  3. Ciclo for numerico
  4. for generico e break
← Torna a Lua Academy