พื้นฐานโปรแกรมมิ่ง EP.2: ทางแยกและการตัดสินใจ เมื่อโค้ดต้องเลือกทางเดินด้วย if-else และตรรกะ Boolean
ยินดีต้อนรับสู่ EP.2 ของซีรีส์ Zero to Coder ครับ! จาก EP.1 เราได้รู้จักกับ “ตัวแปร” ที่ทำหน้าที่เก็บข้อมูลกันไปแล้ว แต่โปรแกรมที่มีแค่ตัวแปร ก็เหมือนสมุดจดบันทึกที่อยู่นิ่งๆ ไม่สามารถโต้ตอบอะไรได้
สิ่งที่ทำให้ซอฟต์แวร์ดูเหมือนมี “สมอง” สามารถคิดและตอบสนองต่อผู้ใช้งานได้ คือความสามารถในการ ตัดสินใจตามเงื่อนไข (Conditionals) หรือการบอกคอมพิวเตอร์ว่า “ถ้าเกิดเหตุการณ์ A ให้ทำแบบนี้ แต่ถ้าไม่ใช่ ให้ทำอีกแบบหนึ่ง” นั่นเองครับ
1. โครงสร้าง if-else: ทางแยกในชีวิตประจำวัน
ในชีวิตจริง เราตัดสินใจด้วยเงื่อนไขตลอดเวลาโดยไม่รู้ตัว:
- ถ้า (if) ฝนตก -> พกร่มออกจากบ้าน
- ไม่อย่างนั้น (else) -> ใส่แว่นกันแดด
ในโลกของการเขียนโปรแกรม โครงสร้างนี้ถูกเขียนขึ้นมาแบบตรงไปตรงมาเช่นเดียวกัน ดังนี้ครับ:
is_raining = True
if is_raining:
print("☔ พกร่มออกจากบ้านด้วยนะ!")
else:
print("🕶️ อากาศแจ่มใส ใส่แว่นกันแดดได้เลย!")
คอมพิวเตอร์จะตรวจเช็คสิ่งที่อยู่หลังคำว่า if เสมอ หากก้อนนั้นเป็น จริง (True) มันจะวิ่งเข้าไปทำคำสั่งด้านใน แต่ถ้าเป็น เท็จ (False) มันจะกระโดดข้ามไปทำในส่วนของ else ทันที
2. เมื่อมีหลายทางเลือก: แวะพักที่ elif (else if)
ชีวิตจริงไม่ได้มีแค่ขาวกับดำ เช่น การตัดเกรด หรือระบบแนะนำส่วนลดตามยอดซื้อ เมื่อมีมากกว่า 2 เงื่อนไข เราจะใช้ elif (ย่อมาจาก else if) มาช่วยต่อแถวตรวจสอบทีละขั้น:
score = 75
if score >= 80:
print("เกรด A 🎉 ยอดเยี่ยมมาก!")
elif score >= 70:
print("เกรด B 👍 ทำได้ดี!")
elif score >= 60:
print("เกรด C สู้ต่อไป!")
elif score >= 50:
print("เกรด D ผ่านฉิวเฉียด!")
else:
print("เกรด F เสียใจด้วยนะ ต้องลงเรียนใหม่")
⚠️ กฎทองของการตรวจเงื่อนไขแบบเรียงลำดับ
คอมพิวเตอร์จะตรวจเช็คจากบนลงล่าง ทันทีที่พบเงื่อนไขแรกที่เป็นจริง มันจะทำงานในบล็อกนั้นแล้ว “กระโดดข้ามเงื่อนไขที่เหลือทั้งหมดทันที” ดังนั้น การเรียงลำดับเงื่อนไขก่อนหลังจึงมีความสำคัญอย่างยิ่ง
3. ตัวเปรียบเทียบ (Comparison Operators) หัวใจของการตั้งคำถาม
เพื่อให้คอมพิวเตอร์ตอบได้ว่า จริง หรือ เท็จ เราต้องใช้เครื่องหมายเปรียบเทียบเหล่านี้:
==: เท่ากับหรือไม่? (ระวัง: อย่าสับสนกับ=ตัวเดียว เพราะ=คือการนำค่าไปใส่ในตัวแปร ส่วน==คือการเปรียบเทียบ)!=: ไม่เท่ากับ>และ<: มากกว่า / น้อยกว่า>=และ<=: มากกว่าหรือเท่ากับ / น้อยกว่าหรือเท่ากับ
4. การเชื่อมเงื่อนไขด้วยตรรกะ AND, OR, NOT
ในหลายสถานการณ์ เงื่อนไขเดียวอาจไม่เพียงพอ เช่น ระบบตรวจสิทธิ์การเข้าชมภาพยนตร์สำหรับผู้ใหญ่:
- AND (และ): ต้องจริง “ทั้งหมด” ถึงจะผ่าน
ตัวอย่าง:age >= 18 and has_ticket == True(ต้องอายุ 18 ขึ้นไป และ ต้องมีตั๋วหนังด้วย ขาดข้อใดข้อหนึ่งไม่ได้) - OR (หรือ): ขอแค่จริง “อย่างใดอย่างหนึ่ง” ก็ผ่าน
ตัวอย่าง:is_vip == True or spending > 5000(เป็นสมาชิก VIP หรือ มียอดซื้อเกิน 5,000 บาท ก็ได้รับสิทธิ์ส่งฟรี) - NOT (กลับค่า): เปลี่ยนจาก จริง เป็น เท็จ และเปลี่ยนจาก เท็จ เป็น จริง
ตัวอย่าง:not is_locked(ถ้าไม่ได้ล็อกอยู่)
🎯 มินิชาเลนจ์ประจำตอน: ออกแบบระบบแจ้งเตือนล็อกอิน
สมมติคุณมีตัวแปร 2 ตัว: username_correct (เป็น True/False) และ password_correct (เป็น True/False)
คุณจะเขียน if-else อย่างไร เพื่อให้:
1. ถ้าถูกทั้งคู่ ให้แสดงคำว่า “เข้าสู่ระบบสำเร็จ ยินดีต้อนรับ!”
2. ถ้ามีตัวใดตัวหนึ่งผิด ให้แสดงคำว่า “ชื่อผู้ใช้หรือรหัสผ่านไม่ถูกต้อง โปรดลองใหม่”
สรุปภาพรวม EP.2
โครงสร้าง if-else และตัวเชื่อมตรรกะคือสิ่งที่มอบพลังในการตัดสินใจให้แก่โปรแกรม ทำให้แอปพลิเคชันฉลาดและยืดหยุ่นตามบริบทของผู้ใช้
แต่ถ้าเราต้องสั่งให้คอมพิวเตอร์ตรวจสอบเงื่อนไขนี้ซ้ำๆ กับคน 1,000 คนล่ะ? เราจะต้องเขียน if 1,000 บรรทัดหรือไม่? คำตอบคือไม่ต้องครับ! เพราะในตอนถัดไป EP.3 เราจะไปรู้จักกับ การวนซ้ำ (Loops: for & while) ตัวช่วยผ่อนแรงอันทรงพลังของโปรแกรมเมอร์ครับ!
📚 ไม่พลาดทุกบทเรียนในซีรีส์ Zero to Coder
เรียนรู้พื้นฐานการเขียนโปรแกรมทีละสเต็ป พร้อมตัวอย่างที่นำไปใช้ได้จริงกับทุกภาษาคอมพิวเตอร์