บทที่ 5

การทำซ้ำ - Loop

for & while Loops

สอนให้โปรแกรมทำงานซ้ำๆ อย่างมีประสิทธิภาพ

🎯 จุดประสงค์การเรียนรู้

• เข้าใจแนวคิดการทำงานแบบวนซ้ำ

• ใช้ for loop สำหรับการวนซ้ำที่รู้จำนวนรอบ

• ใช้ while loop สำหรับการวนซ้ำแบบมีเงื่อนไข

• ประยุกต์ใช้ loop ในการแก้ปัญหาจริง

การทำซ้ำ (Loop) คืออะไร?

🔄 เปรียบเทียบกับชีวิตประจำวัน

การทำซ้ำ = ทำกิจกรรมเดิมซ้ำไปซ้ำมา เช่น

• กิน 3 มื้อต่อวัน

• นับเลข 1, 2, 3, 4, 5...

• เล่นเกมจนชนะ

❌ แบบไม่มี Loop

print("Hello")
print("Hello")
print("Hello")
print("Hello")
print("Hello")

✅ แบบมี Loop

for i in range(5):
    print("Hello")
💡 ประโยชน์: ประหยัดเวลา ลดการเขียนโค้ดซ้ำ และจัดการข้อมูลจำนวนมากได้

for Loop - วนซ้ำจำนวนรอบที่แน่นอน

🔢 ใช้เมื่อรู้จำนวนรอบที่ต้องทำ

เหมาะสำหรับงานที่มีจุดเริ่มต้นและจุดสิ้นสุดชัดเจน

# รูปแบบพื้นฐาน
for ตัวแปร in range(จำนวนรอบ):
    คำสั่งที่จะทำซ้ำ

# ตัวอย่างจริง - นับเลข 1 ถึง 5
for i in range(1, 6):
    print(f"รอบที่ {i}")

🏃‍♂️ ลองทำดู

เขียนโค้ดที่พิมพ์ "สวัสดี" 10 ครั้ง

ฟังก์ชัน range() - กำหนดช่วงการวนซ้ำ

range(n)

เริ่ม 0 ถึง n-1

for i in range(3):
    print(i)
# 0, 1, 2
range(start, stop)

เริ่ม start ถึง stop-1

for i in range(2, 5):
    print(i)
# 2, 3, 4
range(start, stop, step)

กำหนดขั้นการเพิ่ม

for i in range(0, 10, 2):
    print(i)
# 0, 2, 4, 6, 8
range ย้อนกลับ

นับถอยหลัง

for i in range(5, 0, -1):
    print(i)
# 5, 4, 3, 2, 1
💡 เทคนิค: range() ไม่รวมตัวเลขสุดท้าย เช่น range(1, 5) จะได้ 1, 2, 3, 4

ตัวอย่างการใช้ for Loop

นับเลข 1 ถึง 5

for i in range(1, 6):
    print(i)
# 1, 2, 3, 4, 5

สูตรคูณแม่ 2

for i in range(1, 13):
    print(f"2 x {i} = {2 * i}")

while Loop - วนซ้ำตามเงื่อนไข

⚡ ใช้เมื่อไม่รู้จำนวนรอบที่แน่นอน

วนซ้ำไปเรื่อยๆ จนกว่าเงื่อนไขจะเป็นเท็จ

# รูปแบบพื้นฐาน
while เงื่อนไข:
    คำสั่งที่จะทำซ้ำ
    อัปเดตตัวแปร  # สำคัญมาก!

# ตัวอย่างจริง - นับถอยหลัง
count = 5
while count > 0:
    print(f"เหลือ {count} วินาที")
    count = count - 1
print("เวลาหมด!")

✅ ถูกต้อง

x = 0
while x < 3:
    print(x)
    x += 1  # อัปเดต!

❌ ผิด - วนไม่สิ้นสุด

x = 0
while x < 3:
    print(x)
    # ไม่มีการอัปเดต x!
⚠️ ระวัง: ต้องมีการอัปเดตตัวแปรใน while loop ไม่งั้นจะวนไม่สิ้นสุด!

ตัวอย่างการใช้ while Loop

นับถอยหลังจาก 5 ถึง 1

count = 5
while count > 0:
    print(count)
    count -= 1

รับข้อมูลซ้ำจนถูกต้อง

password = ""
while password != "python":
    password = input("ใส่รหัส: ")
print("ถูกต้อง!")

for กับ while ต่างกันอย่างไร?

🔢 for Loop

ใช้เมื่อ:

• รู้จำนวนรอบที่แน่นอน

• นับหรือวนครบทุกตัว

for i in range(1, 6):
    print(i)

⚡ while Loop

ใช้เมื่อ:

• ไม่รู้จำนวนรอบที่แน่นอน

• รอข้อมูลที่ถูกต้อง

n = 1
while n <= 5:
    print(n)
    n += 1

สรุป Loop

• for loop ใช้กับจำนวนรอบที่แน่นอน
• while loop ใช้กับงานที่ไม่รู้จำนวนรอบ
• range() ช่วยสร้างลำดับตัวเลข

ลูปซ้อนลูป (Nested Loop)

for loop ซ้อน for loop

เช่น พิมพ์ตารางสูตรคูณ

for i in range(2, 4):
    print(f"แม่ {i}")
    for j in range(1, 4):
        print(f"{i} x {j} = {i*j}")

คำสั่งพิเศษใน loop

break

หยุด loop ทันที

for i in range(1, 6):
    if i == 3:
        break
    print(i)

continue

ข้ามรอบนี้ไป เริ่มรอบถัดไป

for i in range(1, 6):
    if i == 3:
        continue
    print(i)

else ใน loop

ทำงานเมื่อ loop จบเอง ไม่ถูก break

for i in range(3):
    print(i)
else:
    print("จบ loop")

while: รับข้อมูลจนกว่าจะถูกต้อง

กรอกชื่อห้ามเว้นว่าง

while True:
    name = input("กรอกชื่อ: ")
    if name:
        break
    print("กรุณาใส่ชื่อ!")
print(f"สวัสดี, {name}!")

🔖 แบบฝึกหัดท้ายบท

1. สูตรคูณแม่ 7

ใช้ for loop แสดง 7 x 1 ถึง 7 x 12

2. รับคะแนนซ้ำจนกว่าจะได้ 0-100

ใช้ while รับ input ถ้าไม่อยู่ในช่วง 0-100 ให้ถามซ้ำ

3. (ท้าทาย) วาดสี่เหลี่ยมด้วยดาว

รับ input กว้างและสูง พิมพ์รูปสี่เหลี่ยมจัตุรัสด้วย * (ใช้ลูปซ้อนลูป)