Computational Thinking
วิธีคิดที่ช่วยแก้ปัญหาให้กลายเป็นโปรแกรมได้
ปัญหาคือ โปรแกรมคือคำตอบ
ทุกโปรแกรมเริ่มจาก ปัญหา ที่ต้องการคำตอบ ก่อนจะเขียนโค้ดสักบรรทัด เราต้องรู้จัก คิดให้เป็นระบบ นี่คือสิ่งที่เราเรียกว่า Computational Thinking (การคิดเชิงคอมพิวเตอร์)
ไม่ต้องกลัวชื่อใหญ่ มันมีอยู่ 4 หลักการเท่านั้น:
1. Decomposition — แยกย่อย
แบ่งปัญหา ใหญ่ ให้เป็นปัญหา เล็ก ที่จัดการได้
ตัวอย่าง: อยากทำแอป "ร้านกาแฟออนไลน์" อย่ามองมันเป็นก้อนเดียว — แบ่งเป็น:
- แสดงเมนูกาแฟ
- ให้ลูกค้าเลือกและใส่ตะกร้า
- คำนวณราคา
- ชำระเงิน
- ส่งใบเสร็จ
แต่ละส่วนเล็กพอจะคิดและเขียนได้ทีละอย่าง
2. Pattern Recognition — หาแบบรูปแบบ
มองหาสิ่งที่ ซ้ำ ๆ หรือคล้ายกัน เพราะถ้าเจอแล้ว เราแก้ครั้งเดียวแล้วใช้ได้หลายที่
ตัวอย่าง: ในร้านกาแฟ
- ลาเต้ ร้อน / ลาเต้เย็น / อเมริกาโน่เย็น → ทุกแก้วมี "ราคา + ขนาด + หวานน้อย/ปกติ"
- เป็นรูปแบบซ้ำ → เราออกแบบ "รูปแบบสินค้า" ทั่วไปแล้วนำไปใช้ทั้งหมด
3. Abstraction — เก็บสำคัญ ซ่อนรายละเอียด
โฟกัสเฉพาะ สิ่งที่จำเป็น และเพิกเฉยต่อสิ่งที่ไม่สำคัญตอนนี้
ตัวอย่าง: พอเราบอกว่า "สั่งลาเต้ 1 แก้ว" เราไม่ได้สนว่าเครื่องชงจะหมุนกี่รอบ หรือน้ำตาลเข้าไปก่อนหรือหลัง เรา abstract รายละเอียดเหล่านั้นทิ้ง เก็บเฉพาะสิ่งที่ลูกค้าต้องสื่อสาร
4. Algorithm — ขั้นตอนที่ชัดเจน
เมื่อเข้าใจปัญหาแล้ว เขียน ขั้นตอนแก้ปัญหา ออกมาเป็นลำดับชัด ๆ ขั้นตอนที่ดีต้อง:
- ชัดเจน ไม่คลุมเครือ
- มีลำดับที่ถูกต้อง
- จบได้ (ไม่วนไม่รู้จบโดยไม่จำเป็น)
บทหน้าเราจะฝึกเขียนขั้นตอนแบบนี้เป็น Flowchart กัน
ลองฝึกทันที
ลองใช้ 4 ขั้นนี้กับปัญหาง่าย ๆ:
ปัญหา: หาเลขที่มากที่สุดในลิสต์
[3, 9, 2, 7]
- Decomposition: เทียบเลขทีละคู่
- Pattern: การเทียบ "ใครมากกว่า" เป็นแบบซ้ำ
- Abstraction: สนแค่ค่าตัวเลข ไม่สนว่ามาจากไหน
- Algorithm:
- ตั้ง "มากสุด" = เลขแรก (3)
- เทียบกับ 9 → 9 มากกว่า → เปลี่ยน "มากสุด" เป็น 9
- เทียบกับ 2 → น้อยกว่า → ไม่เปลี่ยน
- เทียบกับ 7 → น้อยกว่า → ไม่เปลี่ยน
- คำตอบคือ 9
นี่คือวิธีคิดที่โปรแกรมเมอร์ใช้ ทุกวัน — และมันใช้ได้กับทุกภาษา
สรุป
| หลักการ | สรุป |
|---|---|
| Decomposition | แบ่งปัญหาใหญ่ → เล็ก |
| Pattern Recognition | หาสิ่งที่ซ้ำ แล้วนำกลับมาใช้ใหม่ |
| Abstraction | เก็บสำคัญ ซ่อนรายละเอียด |
| Algorithm | เขียนขั้นตอนให้ชัดและจบได้ |
บทหน้าเราจะแปลง "ขั้นตอน" ให้เป็นภาพ ด้วย Flowchart 📊
อ่านจบแล้ว? ทำเครื่องหมายว่าเสร็จเพื่อบันทึกความคืบหน้า
แบบทดสอบ
ตอบให้ครบแล้วกด “ตรวจคำตอบ” เพื่อเช็คความเข้าใจ
1. ‘Decomposition’ ใน computational thinking คืออะไร?
2. Pattern recognition ช่วยอะไรเวลาเขียนโปรแกรม?
3. Abstraction หมายถึง?
กำลังโหลด…