หน่วยที่ 2 การแก้ปัญหาด้วยไพทอน
5. การแยกฟังก์ชันย่อย
หน่วยที่ 2 การแก้ปัญหาด้วยไพทอน
5. การแยกฟังก์ชันย่อย
โปรแกรมภาษาไพทอน : ภาระงาน
ใบงานที่ 5 ระบบออเดอร์ด้วยฟังก์ชัน
กรณีศึกษา : ระบบรับออเดอร์ร้านน้ำอิตาเลี่ยนโซดา
🌸 การแยกฟังก์ชันย่อย
สถานการณ์ PISA
“ร้าน Café Soda Smile เปิดโปรโมชั่นพิเศษ ลูกค้าแห่กันมาสั่งวันละหลายสิบออเดอร์ ทำให้พนักงานคิดยอดรวมผิดบ่อย และเขียนออเดอร์ซ้ำ ทำให้ลูกค้าไม่พอใจ เจ้าของร้านจึงอยากได้ ‘ระบบคำนวณยอดรวมและจัดเก็บออเดอร์อัตโนมัติ’ เพื่อให้ข้อมูลถูกต้องแม่นยำ”
Q: คำถามชวนคิด
· “ถ้าเราเขียนโปรแกรมยาวต่อเนื่องแบบไม่แยกฟังก์ชัน จะเกิดอะไรขึ้น”
· “ถ้าอยากให้โค้ดแก้ไขง่ายในอนาคต ควรทำอย่างไร”
ฟังก์ชันใน Python :
· ฟังก์ชัน คือ “ชุดคำสั่งที่ทำงานเฉพาะเรื่อง” เช่น คำนวณยอดรวม บันทึกออเดอร์
· การสร้างฟังก์ชันด้วย def ทำให้สามารถเรียกใช้ซ้ำได้ทุกครั้งที่ต้องการ
· ฟังก์ชันรับ argument คือค่าที่ส่งเข้าไปให้ทำงาน และสามารถ return ค่ากลับมาได้
ตัวอย่างเข้าใจง่าย : ถ้าเราต้องทักชื่อเพื่อน 10 คน เราแค่เรียก greet() ซ้ำ ๆ ไม่ต้องเขียน print ใหม่ 10 ครั้ง!
โครงสร้างฟังก์ชันที่เกี่ยวกับระบบออเดอร์ เช่น :
1) ฟังก์ชันคำนวณยอดรวม
· รับราคาและจำนวนสินค้า
· คืนค่าผลคูณเป็นยอดรวม
2) ฟังก์ชันจัดเก็บออเดอร์
· รับออเดอร์จากลูกค้า
· บันทึกลงในตัวแปรประเภท dictionary
ประโยชน์ : “ฟังก์ชันช่วยลดความซ้ำซ้อน แก้โค้ดครั้งเดียว ใช้ได้หลายที่ ทำให้โค้ดอ่านง่ายขึ้น”
เขียนโปรแกรมที่ใช้ฟังก์ชันแยกงาน เช่น :
โจทย์เสริม :
· รับข้อมูลออเดอร์หลายครั้ง (ลูกค้าหลายคน)
· เก็บออเดอร์ทั้งหมดใน dictionary
📄ใบงานคาบ 5 : "ระบบออเดอร์ด้วยฟังก์ชัน"
ชื่อ-สกุล ..................................................... ชั้น ................ เลขที่ ............
โจทย์สถานการณ์ PISA :
ร้าน Café Soda Smile ต้องการโปรแกรมที่ลูกค้าสามารถสั่งเครื่องดื่ม ระบบต้องคำนวณยอดรวมแต่ละออเดอร์ และบันทึกออเดอร์โดยใช้ฟังก์ชัน เพื่อป้องกันความผิดพลาดและแก้ไขข้อมูลได้ง่ายในอนาคต
1. เขียนฟังก์ชัน cal_total(price, qty) รับราคาและจำนวน แสดงยอดรวม
2. เขียนฟังก์ชัน add_order(orders, menu, qty) รับ dictionary orders, ชื่อเมนู และจำนวนสินค้า
บันทึก ออเดอร์ลง orders
3. สร้างโปรแกรมที่
o รับเมนู จำนวน และราคา จากลูกค้า
o ใช้ 2 ฟังก์ชันข้างต้นทำงานร่วมกัน
o แสดงยอดรวม และออเดอร์ปัจจุบัน
“ฟังก์ชันคือกุญแจสำคัญในการทำโปรแกรมให้ยืดหยุ่นและง่ายต่อการพัฒนา — ใครทำได้ดี จะต่อยอดไปทำโปรเจกต์ใหญ่ๆ ได้เลย!”