พื้นฐานโปรแกรมมิ่ง EP.3: ขี้เกียจทำซ้ำ? สั่งให้วนลูป (Loop) ด้วย for และ while ซะเลย!
ยินดีต้อนรับสู่ EP.3 ของซีรีส์ Zero to Coder ครับ! หากถามว่าอะไรคือสิ่งที่คอมพิวเตอร์ทำได้ดีกว่ามนุษย์แบบเทียบไม่ติด คำตอบอันดับหนึ่งคือ “การทำงานซ้ำซากจำเจ” ครับ
ถ้าให้มนุษย์เขียนจ่าหน้าซองจดหมาย 10,000 ซอง ซองที่ 50 เราก็เริ่มตาลาย ซองที่ 200 เราจะเริ่มเขียนผิด และซองที่ 500 เราจะหมดแรง แต่สำหรับคอมพิวเตอร์ การสั่งให้ทำเรื่องเดิมซ้ำ 10,000 รอบ มันใช้เวลาไม่ถึงเสี้ยววินาที และไม่มีวันบ่นเหนื่อยสักคำเดียว! กลไกวิเศษนี้เรียกว่า Loop (การวนซ้ำ) ครับ
1. สองยอดขุนพลแห่งการวนซ้ำ: `for` vs `while`
ในโลกของการเขียนโปรแกรม การวนซ้ำแบ่งออกเป็น 2 ประเภทหลักตามลักษณะของโจทย์:
| ประเภท Loop | หลักการทำงาน | เปรียบเทียบในชีวิตจริง | เหมาะกับสถานการณ์ |
|---|---|---|---|
| for loop | วนซ้ำตามจำนวนรอบที่แน่นอน หรือวนทีละชิ้นในชุดข้อมูล | “วิดพื้น 10 ครั้ง” หรือ “ตรวจการบ้านนักเรียนทีละคนจนครบทั้งห้อง” | รู้จำนวนรอบแน่นอนล่วงหน้า |
| while loop | วนซ้ำไปเรื่อยๆ ตราบใดที่เงื่อนไขยังคงเป็นจริง (True) | “วิ่งวนรอบสนามไปเรื่อยๆ จนกว่าแบตนาฬิกาจะหมด หรือจนกว่าจะเหนื่อย” | ไม่รู้จำนวนรอบแน่นอน รันจนกว่าสถานะจะเปลี่ยน |
2. เจาะลึก for loop: วนรอบแบบมีเป้าหมายชัดเจน
ลองดูตัวอย่างการนับถอยหลังปล่อยจรวด หรือการส่งข้อความซ้ำ 5 ครั้ง:
# สั่งให้ทำงานซ้ำ 5 รอบ (รอบที่ 1 ถึง 5)
for round_number in range(1, 6):
print("📢 ยิงพลุลูกที่", round_number)
print("🎆 จบการแสดงพลุ!")
ในแต่ละรอบ ตัวแปร round_number จะเปลี่ยนค่าไปเรื่อยๆ จาก 1 -> 2 -> 3 -> 4 -> 5 เมื่อครบ 5 รอบ โปรแกรมจะหลุดออกจากลูปอัตโนมัติแล้วไปรันบรรทัดถัดไป
3. เจาะลึก while loop: วนไปจนกว่าเงื่อนไขจะเปลี่ยน
while loop เหมาะมากกับโปรแกรมประเภทรอผู้ใช้งาน เช่น การให้ผู้ใช้เดารหัสผ่าน หรือรอรับคำสั่ง:
battery = 100
# ตราบใดที่แบตเตอรี่ยังมากกว่า 0 ให้เปิดไฟฉายต่อไป
while battery > 0:
print("💡 ไฟฉายกำลังสว่าง... แบตเหลือ:", battery, "%")
battery = battery - 25 # แบตลดลงทีละ 25%
print("🪫 แบตหมดแล้ว ไฟฉายดับลง!")
4. ฝันร้ายของโปรแกรมเมอร์: Infinite Loop (ลูปนรกไม่รู้จบ)
สิ่งที่มือใหม่ทุกคนต้องเคยเจอคือ โปรแกรมค้าง พัดลมเครื่องหมุนดังจี๊ด CPU วิ่ง 100% สาเหตุเกิดจากเราเขียน while loop โดยลืมอัปเดตตัวแปร ทำให้เงื่อนไขเป็นจริง (True) ตลอดกาล!
# ❌ โค้ดมรณะ (อย่าลองรันเด็ดขาด!):
count = 1
while count > 0:
print("ฉันจะไม่หยุดวิ่ง!")
# ลืมเขียนคำสั่งให้ count ลดลง หรือเปลี่ยนค่า
# count จะเป็น 1 ตลอดกาล โปรแกรมจะพิมพ์ไม่มีวันสิ้นสุด!
🛑 วิธีเอาตัวรอด: คำสั่ง break และ continue
- break: คำสั่งเบรกฉุกเฉิน สั่งให้ “หยุดลูปทันทีเดี๋ยวนี้” แล้วกระโดดออกจากลูปไปเลย (เช่น เมื่อผู้ใช้กดปุ่ม ‘ยกเลิก’)
- continue: คำสั่งข้ามรอบ สั่งให้ “ข้ามงานที่เหลือในรอบนี้ แล้วขึ้นรอบถัดไปทันที” (เช่น ถ้าเจอข้อมูลที่เสีย ให้ข้ามไปตรวจคนถัดไป)
🎯 มินิชาเลนจ์ประจำตอน: แม่สูตรคูณใน 3 บรรทัด
ถ้าคุณต้องการพิมพ์สูตรคูณแม่ 2 ตั้งแต่ 2 x 1 = 2 จนถึง 2 x 12 = 24 คุณสามารถเขียน for loop เพื่อทำสิ่งนี้ในโค้ดเพียงไม่กี่บรรทัดได้อย่างไร?
สรุปภาพรวม EP.3
การวนซ้ำ (Loop) คือหัวใจของการทำงานแบบอัตโนมัติ (Automation) เพียงรู้วิธีใช้ for เมื่อรู้รอบ และใช้ while เมื่อรอเงื่อนไข คุณก็สามารถจัดการข้อมูลปริมาณมหาศาลได้ในพริบตา
แต่ยิ่งโค้ดของเรายาวขึ้นเรื่อยๆ เราจะเริ่มพบปัญหาใหม่: โค้ดกระจัดกระจายและเขียนซ้ำไปซ้ำมา! ในตอนหน้า EP.4 เราจะมาเรียนรู้การสร้าง “ฟังก์ชัน (Function)” เครื่องมือจัดระเบียบโค้ดให้กลายเป็นชิ้นส่วนเลโก้ที่หยิบมาใช้ซ้ำได้ตลอดเวลาครับ!
📚 ไม่พลาดทุกบทเรียนในซีรีส์ Zero to Coder
เรียนรู้พื้นฐานการเขียนโปรแกรมทีละสเต็ป พร้อมตัวอย่างที่นำไปใช้ได้จริงกับทุกภาษาคอมพิวเตอร์