0Pricing
Lua Academy · บทเรียน

ลูป for เชิงตัวเลข

วนซ้ำช่วงตัวเลขด้วยไวยากรณ์ for i=start,limit,step

ลูป for เชิงตัวเลข เป็นบทเรียน Lua Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Lua Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Lua Academy มีบทเรียนทั้งหมด 4 บทเรียน

ไวยากรณ์ for แบบตัวเลข

ลูป for แบบตัวเลขของ Lua มีรูปแบบเป็น for var = start, limit, step do หากไม่ระบุ step ค่าปริยายจะเป็น 1 ตัวแปรของลูปจะเป็นตัวแปรเฉพาะที่ภายในส่วนเนื้อหาลูป และไม่สามารถแก้ไขภายในได้ ค่า limit และ step จะถูกประเมินครั้งเดียวก่อนเริ่มลูป

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

นับถอยหลังด้วย step ติดลบ

ใช้ step ติดลบเพื่อการนับถอยหลัง เมื่อตัว step เป็นค่าลบ ลูปจะทำงานต่อไปตราบใดที่ var >= limit หากค่าเริ่มต้นน้อยกว่า limit อยู่แล้วขณะที่ใช้ step ติดลบ ส่วนเนื้อหาลูปจะไม่ทำงานเลย

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

ตัวแปรของลูปเป็นตัวแปรเฉพาะที่

ตัวแปรควบคุมลูป (i) จะเป็นตัวแปรเฉพาะที่โดยอัตโนมัติ คุณไม่สามารถเปลี่ยนค่าของตัวแปรนี้ภายในลูปได้ เพราะ Lua จะไม่สนใจการกำหนดค่าให้ตัวแปรของลูป หากต้องการติดตามรอบการทำงานในลักษณะอื่น ให้ใช้ตัวแปรเฉพาะที่อีกตัวหนึ่ง

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)

วนผ่านอาร์เรย์

การใช้งานทั่วไปที่สุดของ for แบบตัวเลขคือการวนผ่านอาร์เรย์ตามดัชนี ใช้ #arr เป็นขีดจำกัด ต่างจาก ipairs รูปแบบนี้ช่วยให้ควบคุมขนาดของ step และวนย้อนกลับได้ อีกทั้งยังเร็วกว่าเล็กน้อยสำหรับอาร์เรย์ที่มีข้อมูลต่อเนื่อง

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

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

หาผลรวมด้วย for

ลูป for แบบตัวเลขเหมาะอย่างยิ่งสำหรับการสะสมค่าจากอาร์เรย์ รูปแบบจะเหมือนเดิมเสมอ ได้แก่ กำหนดค่าตัวแปรผลลัพธ์ก่อนลูป อัปเดตค่าภายในลูป แล้วนำไปใช้หลังลูป

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 แบบตัวเลขซ้อนกัน

ซ้อนลูป for แบบตัวเลขสองลูปสำหรับการทำงานสองมิติ เช่น การวนผ่านเมทริกซ์ ตารางซ้อนตาราง หรือการสร้างคู่พิกัด ลูปภายนอกใช้กับแถว ส่วนลูปภายในใช้กับคอลัมน์ แต่ละรอบจะเข้าถึงเซลล์หนึ่งรายการ

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

step แบบทศนิยม

step และขีดจำกัดสามารถเป็นเลขทศนิยมได้ แต่การทำเช่นนี้อาจทำให้เกิดข้อผิดพลาดด้านความแม่นยำ หากต้องการจำนวนรอบที่แน่นอน ควรใช้จำนวนเต็ม หากจำเป็นต้องใช้เลขทศนิยม โปรดทราบว่าจำนวนรอบจะคำนวณด้วย 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

สร้างตารางผลลัพธ์

ลูป for แบบตัวเลขเป็นวิธีมาตรฐานสำหรับสร้างตารางใหม่จากข้อมูลที่มีอยู่ ให้สร้างตารางว่างก่อน จากนั้นใช้ลูปเติมข้อมูลตามดัชนี

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 ใน for แบบตัวเลข

คุณสามารถออกจาก for แบบตัวเลขก่อนกำหนดด้วย break การทำงานจะกระโดดไปยังคำสั่งหลัง end วิธีนี้มีประโยชน์สำหรับการค้นหาแบบลำดับเดียว โดยวนไปจนพบเป้าหมายแล้วจึงใช้ 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

การคำนวณจำนวนรอบของลูป

จำนวนรอบของ for i = start, limit, step คือ max(0, floor((limit - start) / step) + 1) การทำความเข้าใจเรื่องนี้ช่วยป้องกันข้อผิดพลาดแบบนับเกินหรือนับขาด เมื่อ step เป็น 1 จำนวนรอบจะเท่ากับ 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)

ตรวจสอบความเข้าใจ

for i = 10, 1, -3 do จะวนผ่านค่าใดบ้าง

สรุป: for แบบตัวเลข

สรุป:

  • for i = start, limit, step do — step มีค่าปริยายเป็น 1
  • ใช้ step ติดลบสำหรับการนับถอยหลัง
  • ตัวแปรของลูปเป็นตัวแปรเฉพาะที่และอ่านได้อย่างเดียวโดยอัตโนมัติ
  • ขีดจำกัดและ step จะถูกประเมินครั้งเดียวก่อนเริ่มลูป
  • break ใช้ออกจากลูปก่อนกำหนด
  • รูปแบบมาตรฐาน: สร้างตารางผลลัพธ์ ค้นหาในอาร์เรย์ และสะสมผลรวม

คำถามที่พบบ่อย

บทเรียน “ลูป for เชิงตัวเลข” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ลูป for เชิงตัวเลข” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Lua Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Lua Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ลูป for เชิงตัวเลข”

วนซ้ำช่วงตัวเลขด้วยไวยากรณ์ for i=start,limit,step คุณปฏิบัติ Lua Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Lua Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Lua Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “ลูป for เชิงตัวเลข” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Lua Academy นี้ได้ไหม

ได้ บทเรียน Lua Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. คำสั่ง if, elseif และ else
  2. ลูป while และ repeat-until
  3. ลูป for เชิงตัวเลข
  4. for แบบทั่วไปและ break
← กลับไปที่ Lua Academy