การเขียนโปรแกรมแบบทำซ้ำ (Loops & Simulations)
คอมพิวเตอร์คำนวณซ้ำ 1,000,000 รอบในเสี้ยววินาทีได้อย่างไร? การจำลองการเติบโตทางวิทยาศาสตร์ด้วย For และ While Loop
การจำลองการเพิ่มจำนวนของแบคทีเรียหรือคำนวณวงโคจร 1,000 รอบใน 1 วินาที!
"มนุษย์อาจต้องใช้เวลาคำนวณการแบ่งตัวของเซลล์เป็นเวลาหลายวัน แต่คอมพิวเตอร์สามารถทำซ้ำการคำนวณนั้น 1,000,000 รอบได้ภายในเสี้ยววินาทีด้วยคำสั่ง Loop! วิทยาศาสตร์ยุคใหม่พึ่งพาการจำลอง (Computer Simulation) ในการค้นพบสิ่งใหม่"
ชีววิทยา (Biology)
การแบ่งเซลล์แบคทีเรีย Nt=N0*2^t จำลองการเติบโตของประชากรทีละชั่วโมง
ฟิสิกส์ (Physics)
คำนวณตำแหน่งวัตถุตกแบบเสรีทุก 0.1 วินาที เพื่อดูวิถีการเคลื่อนที่
เคมี (Chemistry)
การสลายตัวกัมมันตรังสี (Half-life) คำนวณปริมาณสารที่เหลืออยู่ซ้ำๆ จนกว่าจะหมด
1 ทำไมต้องใช้ Loop?
การทำซ้ำ (Loop) คือการสั่งให้คอมพิวเตอร์ทำงานคำสั่งเดิมซ้ำๆ หลายๆ รอบ อุปมาเหมือนการทำซ้ำในงานทดลองวิทยาศาสตร์ เช่น การวัดอุณหภูมิน้ำทุกๆ 1 ชั่วโมง เป็นเวลา 24 ชั่วโมง แทนที่เราจะเขียนโค้ด 24 บรรทัด เราสามารถใช้ Loop เพื่อลดความซ้ำซ้อนและทำให้โปรแกรมทำงานได้เร็วขึ้น
2 โครงสร้าง for loop และฟังก์ชัน range()
for loop ในไพทอนใช้สำหรับการทำซ้ำที่เรารู้จำนวนรอบที่แน่นอน มักใช้คู่กับฟังก์ชัน range() เพื่อสร้างลำดับตัวเลข
รูปแบบการใช้ range()
- •
range(stop): เริ่มจาก 0 ถึง stop-1 (เช่นrange(5)จะได้ 0, 1, 2, 3, 4) - •
range(start, stop): เริ่มจาก start ถึง stop-1 (เช่นrange(1, 6)จะได้ 1, 2, 3, 4, 5) - •
range(start, stop, step): เริ่มจาก start ถึง stop-1 โดยเพิ่มทีละ step (เช่นrange(0, 10, 2)จะได้ 0, 2, 4, 6, 8)
for i in range(5):
print("รอบที่", i)
# ผลลัพธ์: รอบที่ 0, รอบที่ 1, รอบที่ 2, รอบที่ 3, รอบที่ 4
3 for loop กับการท่องเข้าไปในชุดข้อมูล (Iterating Lists)
เราสามารถใช้ for loop เพื่อดึงข้อมูลออกจากลิตส์ (List) มาประมวลผลทีละตัวได้โดยตรง เช่น รายชื่อสารเคมี หรือ อุณหภูมิห้องทดลอง
chemicals = ["H2O", "CO2", "O2", "NaCl"]
for chem in chemicals:
print("กำลังวิเคราะห์สาร:", chem)
# ผลลัพธ์: กำลังวิเคราะห์สาร: H2O ...
4 โครงสร้าง while loop — การทำซ้ำตามเงื่อนไข
while loop เป็นการทำซ้ำตราบใดที่เงื่อนไขยังเป็น True (Condition-controlled loop) เช่น จำลองการลดลงของสารกัมมันตรังสีจนกว่าสารจะหมด
mass = 100.0 # มวลเริ่มต้น 100 กรัม
days = 0
while mass > 1.0: # ทำซ้ำจนกว่ามวลจะน้อยกว่าหรือเท่ากับ 1 กรัม
mass = mass / 2 # ลดลงครึ่งหนึ่ง (Half-life)
days += 1
print("วันที่", days, "มวลเหลือ", mass, "กรัม")
5 คำสั่งควบคุมลูป break และ continue
เราสามารถควบคุมกระแสของการทำซ้ำได้ด้วยคำสั่ง:
break: สั่งให้ออกจากลูป (หยุด) ทันที (เช่น หยุดการทดลองฉุกเฉินเมื่ออุณหภูมิสูงเกินไป)continue: สั่งให้ข้ามโค้ดที่เหลือในรอบปัจจุบัน ไปเริ่มรอบถัดไปทันที (เช่น ข้ามการบันทึกข้อมูลที่ Error)
for temp in [25, 26, 25, 30, 24, 25]:
if temp > 28:
print("อันตราย! อุณหภูมิสูงเกินไป")
break # หยุดลูปทันที
print("อุณหภูมิปกติ:", temp)
6 รูปแบบการคำนวณสะสมค่า (Accumulator Pattern)
ในวิทยาศาสตร์ เรามักต้องหาผลรวม (Sum), ค่าเฉลี่ย (Mean), ค่าสูงสุด/ต่ำสุด (Min/Max) ของชุดข้อมูล รูปแบบนี้ใช้ตัวแปรตัวหนึ่งคอยสะสมค่าจากลูป
temps = [24.5, 25.0, 26.2, 25.8, 24.9]
total = 0.0
for t in temps:
total += t # นำค่า t มาบวกสะสมไว้ใน total
average = total / len(temps)
print("อุณหภูมิเฉลี่ยคือ", average)
🟢 ระดับ 1 โจทย์พื้นฐาน: สูตรคูณแม่ 7
จงเติมโค้ดในช่อง ___ ให้ครบถ้วน เพื่อแสดงสูตรคูณแม่ 7 จำนวน 12 บรรทัด (ตั้งแต่ 7 x 1 ถึง 7 x 12)
for คู่กับ range(1, 13) เพื่อให้ลูปทำงานตั้งแต่รอบที่ 1 ถึง 12
กดปุ่ม "รันโค้ด" หรือ "ตรวจคำตอบ" เพื่อดูผลลัพธ์...
🟡 ระดับ 2 โจทย์ท้าทาย: สถิติอุณหภูมิห้องทดลอง
คำนวณหาค่าเฉลี่ยอุณหภูมิน้ำในตู้เพาะเลี้ยง 5 วันจากลิสต์ temps = [24.5, 25.0, 26.2, 25.8, 24.9] และหาค่าอุณหภูมิสูงสุด (Max) โดยใช้ Loop พื้นฐาน
total สะสมค่ารวม และ max_temp เพื่อเก็บค่าสูงสุด ในลูปสามารถใช้ if t > max_temp: max_temp = t
กดปุ่ม "รันโค้ด" หรือ "ตรวจคำตอบ" เพื่อดูผลลัพธ์...
🔴 ระดับ 3 โจทย์สร้างสรรค์ (ALPS-AI): จำลองปรากฏการณ์ทางวิทยาศาสตร์
ALPS Frameworkเขียนโปรแกรมจำลองปรากฏการณ์ทางวิทยาศาสตร์ด้วย Loop ตัวอย่างเช่น (ชีวะ: จำลองการเพิ่มจำนวนประชากรแบคทีเรีย 10 ชั่วโมง, ฟิสิกส์: จำลองความเร็ววัตถุตกตามเวลา t=0 ถึง 5 วิ, เคมี: จำลองการสลายตัวของสาร)
"คุณคือนักชีววิทยา ช่วยเขียนโค้ด Python ใช้ for loop และ while loop จำลองการเจริญเติบโตของแบคทีเรียหรือการสลายตัวของสารกัมมันตรังสีตามช่วงเวลา"
pop = 100 และใช้ for hr in range(1, 11): pop = pop * 2 ในการจำลอง
กดปุ่ม "รันโค้ด" เพื่อดูผลลัพธ์...
แบบบันทึกผลงานโครงงานและการตรวจทานโค้ด (ALPS Portfolio)
บันทึกขั้นตอนการออกแบบแนวคิด คำสั่ง และการตรวจทานโค้ดจาก AI เพื่อประเมินผลการเรียนรู้
ตอบคำถาม 5 ข้อ เพื่อประเมินความเข้าใจและบันทึกผลการเรียนรู้ของบทที่ 6:
1. คำสั่ง range(1, 6) จะสร้างลำดับตัวเลขใด?
2. หากต้องการให้ลูปกระโดดทีละ 2 เช่น 2, 4, 6, 8, 10 ต้องเขียน range อย่างไร?
3. คำสั่งใดใช้สำหรับ "หยุดและออกจากลูปทันที"?
4. ใน while loop หากไม่มีคำสั่งปรับค่าตัวแปรเงื่อนไข จะเกิดอะไรขึ้น?
5. โค้ดนี้: total = 0; for x in [2, 4, 6]: total += x ค่า total สุดท้ายคือเท่าใด?