Module 2

Computational Thinking — แนวคิดเชิงคำนวณ

วันนี้เราจะเรียนรู้ 🧠

  1. แนวคิดเชิงคำนวณ (Computational Thinking) คืออะไร
  2. การแยกส่วน (Decomposition)
  3. การหารูปแบบ (Pattern Recognition)
  4. นามธรรม (Abstraction)
  5. อัลกอริทึม (Algorithms)
  6. เชื่อมโยงแนวคิดทั้งหมดสู่ Python 🐍

แนวคิดเชิงคำนวณคืออะไร 🧩

Computational Thinking

แนวคิดเชิงคำนวณ (Computational Thinking)

การนำตรรกะแบบวิทยาการคอมพิวเตอร์มาใช้แก้ปัญหา — ได้กับทุกสาขาวิชา ไม่ใช่แค่การเขียนโปรแกรม

เป็นวิธีคิดอย่างเป็นระบบ เพื่อ

  • แตกปัญหาที่ใหญ่และยุ่งเหยิง ให้เป็นส่วนย่อย ๆ ที่จัดการได้
  • ออกแบบวิธีแก้ที่นำกลับมาใช้ซ้ำได้

Note

แนวคิดเชิงคำนวณคือทักษะพื้นฐานของวิศวกร — เราจะใช้มันตลอดทั้งวิชานี้ ทบทวน: ทักษะที่สำคัญสำหรับการเขียนโปรแกรม (Module 1)

4 เสาหลักของแนวคิดเชิงคำนวณ

  • แยกส่วนหารูปแบบนามธรรมอัลกอริทึม
  • ในงานจริง ทั้งสี่อย่างทำงานร่วมกัน ไม่ได้แยกเป็นขั้นตอนตายตัว

Problem-Solving Loop — แล้ว CT อยู่ตรงไหน?

วงจร = ลำดับขั้นการแก้ปัญหา · CT (4 เสาหลัก) = วิธีคิดที่ใช้ในแต่ละขั้น — เห็นชัดตอน วางแผน 👇

1️⃣ เข้าใจปัญหา (Understand)

ปัญหาคืออะไร · มีข้อจำกัดและเป้าหมายแบบไหน

2️⃣ วางแผน (Plan) — ใช้ CT

🪓 แยกปัญหา · 🔁 หารูปแบบ · 🎯 ตัดรายละเอียด · 📝 เรียงขั้นตอน

3️⃣ ลงมือทำ (Implement)

ทำตามแผน · ทดสอบ · แก้ไข

4️⃣ ประเมินผล (Evaluate)

วัดผล · หาจุดปรับปรุง · วนรอบใหม่

Note

เป็นวงจร 🔁 ประเมินผลแล้ววนกลับไปปรับปรุงในรอบถัดไปได้เสมอ

1. การแยกส่วน 🪓

Decomposition — แบ่งแล้วพิชิต (Divide and Conquer)

การแยกส่วน (Decomposition)

เมื่อเจอปัญหาใหญ่จนน่าท้อ การแยกส่วนทำหน้าที่เหมือนลิ่มทางความคิด

  • แยกปัญหายักษ์ให้เป็นปัญหาย่อย ๆ ที่เป็นอิสระต่อกัน
  • แต่ละส่วนเข้าใจง่ายขึ้น มอบหมายงานได้ และแก้ทีละส่วนได้

ภาพ: “Jigsaw puzzle in progress” โดย Balise42 · CC BY-SA 4.0

Tip

วิธีคิดเดียวกันนี้ขยายขนาดได้ ตั้งแต่งานบ้านเล็ก ๆ ไปจนถึงโครงสร้างพื้นฐานของเมือง

ตัวอย่าง: แยกส่วนโครงการใหญ่

โครงการ รถไฟฟ้าเชียงใหม่ (AI-generated image) — แตกออกเป็นงานย่อยที่ทีมต่าง ๆ รับผิดชอบได้

ภาพจำลอง (AI-generated)

ชวนคิด: การจัดงานปีใหม่ 🎉

คิดก่อน: ถ้าได้รับมอบหมายให้จัดงานเลี้ยงปีใหม่ของภาควิชา จะแยกส่วนปัญหานี้ออกเป็นงานย่อยอะไรบ้าง?

ภาพจำลอง (AI-generated)

ดูตัวอย่างคำตอบ
  • สถานที่ — จองห้อง จัดโต๊ะ เครื่องเสียง
  • อาหาร — เมนู จำนวนคน งบประมาณ
  • กิจกรรม — เกม ของรางวัล พิธีกร
  • ประชาสัมพันธ์ — เชิญแขก ลงทะเบียน

แต่ละงานย่อยยังแยกส่วนต่อได้อีก และมอบหมายให้คนละทีมทำพร้อมกันได้ 👍

2. การหารูปแบบ 🔁

Pattern Recognition — หากฎที่ซ่อนอยู่ในความยุ่งเหยิง

การหารูปแบบ (Pattern Recognition)

การมองเห็นความสม่ำเสมอช่วยให้เราคาดการณ์ผลลัพธ์และสร้างวิธีแก้ที่นำมาใช้ซ้ำได้

Important

ถ้าเจอรูปแบบ (pattern) เราแก้ปัญหานั้นแค่ “ครั้งเดียว” แล้วนำไปใช้กับกรณีอื่นได้อีกมากมาย

รูปแบบ ระหว่าง ปัญหา (among)

พออบเค้กเป็นชิ้นหนึ่งได้ ก็อบเค้กชิ้นไหนก็ได้ — ทุกสูตรมีโครงเดียวกัน: ตั้งอุณหภูมิเตา → ผสมส่วนผสม → อบตามเวลา

รูปแบบ ภายใน ปัญหา (within)

เจาะลงในขั้นตอนเดียวก็เจอรูปแบบย่อย — ทุกส่วนผสมมีแบบเดียวกัน:

[ระบุชื่อ] + [ระบุปริมาณ]
แป้ง 200 ก. · เนย 100 ก. · ไข่ 2 ฟอง

รูปแบบ 2 แบบ: ระหว่าง & ภายใน

ภาพจำลอง (AI-generated)

ภาพจำลอง (AI-generated)

ตัวอย่าง: รูปแบบช่วยพยากรณ์

ฝุ่น PM 2.5 เชียงใหม่ — วิศวกรหารูปแบบเพื่อสร้างแบบจำลองพยากรณ์

ภาพ: “Chiang Mai Air Pollution” โดย FredTC · CC BY-SA 4.0

  • ช่วงเวลา: พุ่งสูงช่วงเดือนกุมภาพันธ์–เมษายน และช่วงเช้าตรู่
  • ภูมิศาสตร์: หุบเขากักฝุ่นไว้ พื้นที่เกษตรมีค่าพุ่งแรง
  • สภาพอากาศ: ทิศทางลมกระจายฝุ่น ฝนช่วยชะล้าง อุณหภูมิผกผันกักมลพิษ

Tip

เหมือนฤดูกาลที่คาดเดาได้ — รู้รูปแบบแล้ว วางแผนล่วงหน้าได้

3. นามธรรม 🎯

Abstraction — ตัดสิ่งที่ไม่เกี่ยวออก เหลือแต่แบบจำลองที่ใช้งานได้

นามธรรม (Abstraction)

ทำระบบที่ซับซ้อนให้เรียบง่าย โดยซ่อนความซับซ้อนที่ไม่จำเป็น — กรอง “สิ่งรบกวน (noise)” ออก เหลือเฉพาะสิ่งที่จำเป็นต่อการแก้ปัญหาตรงหน้า

Note

แบบจำลอง (Model) คือแนวคิดกลาง ๆ เช่น “แมวต้นแบบ” แทนแมวทุกตัว ไม่ใช่แมวตัวใดตัวหนึ่ง — จากแบบจำลอง เราเรียนรู้กฎที่ใช้ได้กับทั้งหมวดหมู่

แบบจำลอง (Model): แมวต้นแบบ 🐱

ภาพจำลอง (AI-generated)

ตัวอย่าง: แผนที่รถไฟฟ้า

ออกแบบแผนที่รถไฟฟ้า ถ้าแสดงทุกตึกทุกต้นไม้ตามจริง จะกลายเป็นเครื่องมือที่ใช้ไม่ได้

ภาพ: “Greater Surakarta Transit Map” โดย Forum Diskusi Transportasi Solo · CC BY-SA 4.0

  • นามธรรม = จงใจตัดความจริงทางกายภาพออก เพื่อเน้นสิ่งเดียวที่ผู้ใช้ต้องการ: การเชื่อมต่อของเส้นทาง
  • แผงหน้าปัดรถยนต์: แสดงความเร็วและไฟเตือน ซ่อนกลไกเครื่องยนต์
  • การทำงบประมาณ: ดูหมวดใหญ่ (ค่าเช่า, ค่าอาหาร) ไม่สนใจใบเสร็จทีละใบ

ตารางวินิจฉัยนามธรรม

จากตัวอย่างสูตรอาหาร — อะไรควรเก็บไว้ในแบบจำลอง อะไรคือรายละเอียดที่กรองทิ้ง

✅ รูปแบบทั่วไป (เก็บไว้) ❌ รายละเอียดเฉพาะ (กรองทิ้งก่อน)
แบบจำลองต้องมีส่วนผสม ยังไม่ต้องรู้ว่าส่วนผสมนั้นคืออะไร
ส่วนผสมแต่ละอย่างมีปริมาณ ยังไม่ต้องรู้ปริมาณที่แน่นอน
ระบบต้องใช้เวลาในการทำ ยังไม่ต้องรู้ว่ากี่นาทีพอดี

Tip

นามธรรมคือการรู้ว่า “ตอนนี้ยังไม่ต้องรู้อะไรบ้าง” เพื่อไม่ให้จมกับรายละเอียด

4. อัลกอริทึม 📝

Algorithms — แผนแม่บทที่ทำตามได้ทีละขั้น

อัลกอริทึม (Algorithms)

อัลกอริทึมคือสูตรอาหารที่ละเอียด ซึ่งรับประกันผลเหมือนเดิมทุกครั้งที่ทำตาม — เช่น ชงชา 1 ถ้วย ทีละขั้น 1 → 6

ภาพจำลอง (AI-generated)

Note

สังเกตว่าลำดับสำคัญ — สลับขั้นตอน ผลลัพธ์ก็เปลี่ยน (นี่คือหัวใจของการเขียนโปรแกรม)

อัลกอริทึมกับการตัดสินใจ

อัลกอริทึมอาศัยอินพุตที่ชัดเจนและจุดตัดสินใจ (decision gate) — เหมือนโปรแกรมที่เราจะเขียนต่อจากนี้

Note

รูปแบบ input → process → decision → output นี้ คือสิ่งที่เราจะเขียนด้วย Python ใน Module 5 (if-else) 👉

อัลกอริทึมนี้ เขียนเป็น Python ได้เลย 🐍

flowchart ↔︎ โค้ด Python — นี่คือสิ่งที่เราจะเขียนได้จริงในอีกไม่กี่สัปดาห์

Tip

กด Run ดูผล แล้วลองเปลี่ยน age เป็น 25 — เห็นไหมว่าจุดตัดสินใจทำงานยังไง 😃

พักสมอง 😄

คู่มือ “อ่าน flowchart” ที่นำเสนอในรูปแบบ flowchart เสียเอง 🔁

ที่มา: xkcd #1195 — “Flow Charts” (CC BY-NC 2.5)

การประกอบร่าง 🚀

The Synthesis — เครื่องยนต์ความคิดที่ทำงานพร้อมกัน

ทั้ง 4 อย่างทำงานพร้อมกัน

ในการออกแบบซอฟต์แวร์ (เช่น เกมแพลตฟอร์ม) เครื่องมือทั้งสี่ไม่ได้ทำงานแยกกัน แต่ทำงานพร้อมกัน

🪓 แยกส่วน (Decomposition)

แบ่งเกมเป็นงาน — ระบบคะแนน, ฟิสิกส์การเคลื่อนที่, เงื่อนไขผ่านด่าน

🔁 หารูปแบบ (Pattern recognition)

ใช้ความรู้ว่าแพลตฟอร์มทำงานยังไง เขียนลูปเดินของศัตรูจากพฤติกรรมซ้ำ ๆ

🎯 นามธรรม (Abstraction)

ลดโลกทั้งใบให้เหลือตารางของเส้นทาง ตำแหน่งผู้เล่น ไอเทม และทางออก

📝 อัลกอริทึม (Algorithm)

โค้ดทีละขั้นที่กำหนดว่าจะเกิดอะไรเมื่อผู้เล่นกดปุ่มหรือชนศัตรู

การประกอบร่าง: 4 อย่างในเกมเดียว 🎮

ภาพจำลอง (AI-generated)

จาก Computational Thinking สู่ Python 🐍

แนวคิด → เครื่องมือจริงที่เราจะได้ใช้ตลอดวิชานี้

4 เสาหลัก กลายเป็นอะไรใน Python

เสาหลัก (แนวคิด) ใน Python คือ ได้เรียนที่
🪓 แยกส่วน แยกโปรแกรมใหญ่เป็นฟังก์ชันย่อย ๆ Module 9, 10
🔁 หารูปแบบ สั่งงานซ้ำด้วย loop (for, while) และ list comprehension Module 6, 7, 8, 10
🎯 นามธรรม ซ่อนรายละเอียดด้วยตัวแปร, ฟังก์ชัน และโครงสร้างข้อมูล Module 3, 4, 9
📝 อัลกอริทึม เรียงลำดับคำสั่ง + เงื่อนไข (if-else) + การวนซ้ำ Module 3, 5, 6, 7

Tip

Computational Thinking = วิธีคิด · Python = เครื่องมือ — เราคิดแบบ CT แล้วสั่งให้คอมพิวเตอร์ทำจริงด้วย Python

เห็น 4 เสาหลักในโค้ดจริง 🐍

โปรแกรมสั้น ๆ นี้ใช้ทั้ง 4 เสาหลักพร้อมกัน — กด Run ดูผล (ยังอ่านไม่ออกก็ไม่เป็นไร)

Tip

🪓 ฟังก์ชัน · 🔁 loop · 🎯 ตัวแปร · 📝 if-else — นี่คือ Python ที่เราจะได้ฝึกจริงตลอดวิชานี้

Summary 🎯

สรุป Module 2 🎉

แนวคิดเชิงคำนวณ (Computational Thinking)

  • วิธีคิดอย่างเป็นระบบเพื่อนำความยุ่งเหยิงมาสู่ความเป็นระเบียบ
  • ใช้ได้กับทุกสาขา ไม่ใช่แค่การเขียนโปรแกรม

4 เสาหลัก

  • 🪓 แยกส่วน — แตกปัญหาใหญ่เป็นส่วนย่อยที่จัดการได้
  • 🔁 หารูปแบบ — หาความซ้ำเพื่อใช้วิธีเดิมซ้ำ


  • 🎯 นามธรรม — กรองรายละเอียดที่ไม่จำเป็น เหลือแบบจำลองที่ใช้งานได้
  • 📝 อัลกอริทึม — ออกแบบขั้นตอนที่ทำตามแล้วได้ผลเหมือนเดิม

Tip

ในงานจริงทั้งสี่ทำงานพร้อมกัน → เราจะได้ฝึกใช้ทั้งหมดนี้ผ่านการเขียน Python ตลอดวิชานี้

Note

ต่อ Module 3: Variables and Types, Operators, Math 👉