บทที่ 1 แนวคิดเชิงคำนวณ

ว22103 เทคโนโลยี (วิทยาการคำนวณ)

จุดประสงค์ของบทเรียน

  • อธิบายกระบวนการคิดตามแนวคิดเชิงคำนวณ ซึ่งประกอบไปด้วยการแบ่งปัญหาใหญ่เป็นปัญหาย่อย การพิจารณารูปแบบ การคิดเชิงนามธรรม และการออกแบบอัลกอริทึม

  • ออกแบบอัลกอริทึมเพื่อการแก้ปัญหาโดยใช้แนวคิดเชิงคำนวณ

1. การแบ่งปัญหาใหญ่เป็นปัญหาย่อย (Decomposition)

การแก้ปัญหาที่มีความซับซ้อนทำได้ยาก การแบ่งปัญหาใหญ่ให้เป็นปัญหาย่อย ๆ ทำให้ความซับซ้อนของปัญหาลดลง ช่วยให้การวิเคราะห์และพิจารณารายละเอียดของปัญหาทำได้อย่างถี่ถ้วน ส่งผลให้ออกแบบขั้นตอนการแก้ปัญหาย่อยแต่ละปัญหาได้ง่ายยิ่งขึ้น

การอธิบายรายละเอียดของภาพให้เพื่อนของนักเรียนวาดตามได้นั้นสามารถแบ่งออกเป็นปัญหาย่อยได้ดังนี้

  • ในภาพมีบ้านกี่หลัง

  • ขั้นตอนการวาดบ้านหลังที่ 1 เป็นอย่างไร และอยู่ตำแหน่งใด

  • ขั้นตอนการวาดบ้านหลังที่ 2 เป็นอย่างไร และอยู่ตำแหน่งใด

  • ขั้นตอนการวาดบ้านหลังที่ 3 เป็นอย่างไร และอยู่ตำแหน่งใด

ลองตอบปัญหาย่อย

1. ในภาพมีบ้านกี่หลัง ?

ตอบ 3 หลัง

2. ขั้นตอนการวาดบ้านหลังที่หนึ่งเป็นอย่างไร และอยู่ที่ตำแหน่งใด ?

ตอบ บ้านหลังที่หนึ่งวาดตัวบ้านเป็นรูปสี่เหลี่ยมจัตุรัสสีเหลืองขนาดด้านละ 100 หน่วย โดยที่มุมล่างซ้ายอยู่ที่พิกัด (0, 0) และด้านบนสี่เหลี่ยมวาดหลังคาเป็นรูปสามเหลี่ยมด้านเท่าสีม่วงยาวด้านละ 100 หน่วย

3. ขั้นตอนการวาดบ้านหลังที่สองเป็นอย่างไร และอยู่ที่ตำแหน่งใด ?

ตอบ บ้านหลังที่สองวาดตัวบ้านเป็นรูปสี่เหลี่ยมจัตุรัสสีแดงขนาดด้านละ 50 หน่วย โดยที่มุมล่างซ้ายอยู่ที่พิกัด (120, 90) และด้านบนสี่เหลี่ยมวาดหลังคาเป็นรูปสามเหลี่ยมด้านเท่าสีเทายาวด้านละ 50 หน่วย

3. ขั้นตอนการวาดบ้านหลังที่สามเป็นอย่างไร และอยู่ที่ตำแหน่งใด ?

ตอบ บ้านหลังที่สามวาดตัวบ้านเป็นรูปสี่เหลี่ยมจัตุรัสสีเขียวขนาดด้านละ 80 หน่วย โดยที่มุมล่างซ้ายอยู่ที่พิกัด (200, 10) และด้านบนสี่เหลี่ยมวาดหลังคาเป็นรูปสามเหลี่ยมด้านเท่าสีฟ้ายาวด้านละ 80 หน่วย

2. การพิจารณารูปแบบ (Pattern Recognition)

ปัญหาบางประเภทสามารถแบ่งออกเป็นปัญหาย่อยที่อาจจะมีรูปแบบเดียวกันหรือคล้ายกัน สามารถนำรูปแบบกระบวนการแก้ปัญหาย่อยปัญหาหนึ่งไปประยุกต์ใช้กับการแก้ปัญหาย่อยอื่น ๆ ได้ ทำให้ลดขั้นตอนในการออกแบบวิธีการแก้ปัญหาได้

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

บ้านหลังแรกวาดตัวบ้านเป็นรูปสี่เหลี่ยมจัตุรัสสีเหลืองขนาดด้านละ 100 หน่วย ตั้งอยู่ตำแหน่งมุมล่างซ้ายอยู่ที่พิกัด (0, 0) และด้านบนสี่เหลี่ยมวาดหลังคาเป็นรูปสามเหลี่ยมด้านเท่าสีม่วงขนาดด้านละ 100 หน่วย

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

บ้านหลังที่สองวาดตัวบ้านเป็นรูปสี่เหลี่ยมจัตุรัสสีเหลืองขนาดด้านละ 50 หน่วย ตั้งอยู่ตำแหน่งมุมล่างซ้ายอยู่ที่พิกัด (120, 90) และด้านบนสี่เหลี่ยมวาดหลังคาเป็นรูปสามเหลี่ยมด้านเท่าสีม่วงขนาดด้านละ 50 หน่วย

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

บ้านหลังที่สามวาดตัวบ้านเป็นรูปสี่เหลี่ยมจัตุรัสสีเหลืองขนาดด้านละ 80 หน่วย ตั้งอยู่ตำแหน่งมุมล่างซ้ายอยู่ที่พิกัด (200, 10) และด้านบนสี่เหลี่ยมวาดหลังคาเป็นรูปสามเหลี่ยมด้านเท่าสีม่วงขนาดด้านละ 80 หน่วย

สรุปสิ่งที่คล้ายคลึงกันของบ้านทั้งสามคือ

3. การคิดเชิงนามธรรม (Abtraction)

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

การคิดเชิงนามธรรมยังรวมถึงการซ่อนรายละเอียดโดยการแทนกลุ่มของปัญหา ขั้นตอน และกระบวนการที่มีรายละเอียดปลีกย่อย และกระบวนการที่มีรายละเอียดปีกย่อยหลายขั้นตอนให้เป็นขั้นตอนเดียว เพื่อให้สามารถ ให้เป็นขั้นตอนเดียวเพื่อให้สามารถอธิบายวิธีการแก้ปัญหาได้กระชับขึ้น

บ้านหลังที่ 1 อธิบายปัญหาโดยใช้รายละเอียดได้ดังนี้

บ้านหลังแรกวาดตัวบ้านเป็นรูปสี่เหลี่ยมจัตุรัสสีเหลืองขนาดด้านละ 100 หน่วย ตั้งอยู่ตำแหน่งมุมล่างซ้ายอยู่ที่พิกัด (0, 0) และด้านบนสี่เหลี่ยมวาดหลังคาเป็นรูปสามเหลี่ยมด้านเท่าสีม่วงขนาดด้านละ 100 หน่วย

อธิบายปัญหาแบบซ่อนรายละเอียดได้ดังนี้

บ้านหลังแรกมีขนาด 100 หน่วย ตัวบ้านสีเหลือง และหลังคาสีม่วง ตั้งอยู่ที่ตำแหน่ง (0, 0)

บ้านหลังที่ 2 อธิบายปัญหาโดยใช้รายละเอียดได้ดังนี้

บ้านหลังที่สองวาดตัวบ้านเป็นรูปสี่เหลี่ยมจัตุรัสสีเหลืองขนาดด้านละ 50 หน่วย ตั้งอยู่ตำแหน่งมุมล่างซ้ายอยู่ที่พิกัด (120, 90) และด้านบนสี่เหลี่ยมวาดหลังคาเป็นรูปสามเหลี่ยมด้านเท่าสีม่วงขนาดด้านละ 50 หน่วย

อธิบายปัญหาแบบซ่อนรายละเอียดได้ดังนี้

บ้านหลังที่สองมีขนาด 50 หน่วย ตัวบ้านสีแดง และหลังคาสีเทา ตั้งอยู่ที่ตำแหน่ง (120, 90)

บ้านหลังที่ 3 อธิบายปัญหาโดยใช้รายละเอียดได้ดังนี้

บ้านหลังที่สามวาดตัวบ้านเป็นรูปสี่เหลี่ยมจัตุรัสสีเหลืองขนาดด้านละ 80 หน่วย ตั้งอยู่ตำแหน่งมุมล่างซ้ายอยู่ที่พิกัด (200, 10) และด้านบนสี่เหลี่ยมวาดหลังคาเป็นรูปสามเหลี่ยมด้านเท่าสีม่วงขนาดด้านละ 80 หน่วย

อธิบายปัญหาแบบซ่อนรายละเอียดได้ดังนี้

บ้านหลังที่สามมีขนาด 80 หน่วย ตัวบ้านสีเขียว และหลังคาสีฟ้าตั้งอยู่ที่ตำแหน่ง (200, 10)

การออกแบบอัลกอริทึม (Algorithm)

รายการคำสั่งที่อธิบายขั้นตอนในการแก้ปัญหา โดยแต่ละคำสั่งนั้น รายการคำสั่งที่อธิบายขั้นตอนในการแก้ปัญหาโดยแต่ละคำสั่งนั้นต้องเป็นคำสั่งที่ให้ผู้อื่นนำไปปฏิบัติตามได้โดยไม่มีคำกำกวมซึ่งมักอยู่ในรูปขอรหัสลำลอง ซึ่งมักอยู่ในรูปแบบของรหัสลำลอง(peeudo code) หรือผังงาน (flowchart) ในกรณีที่ใช้คอมพิวเตอร์เป็นเครื่องมือในการแก้ปัญหา อันกอริทึมจะต้องถูกแปลงให้อยู่ในรูปแบบของภาษาโปรแกรมก่อนเพื่อให้คอมพิวเตอร์สามารถปฏิบัติตามได้ ดังนั้นการออกแบบรายละเอียดในอันกอริทึมจึงขึ้นอยู่กับคนหรือคอมพิวเตอร์ที่จะนำอันกอริทึมไปปฏิบัติ

ตัวอย่างอัลกอริทึมวาดภาพหมู่บ้านสำหรับคนนำไปปฏิบัติ

ขั้นตอนหลัก

1. วาดรูปบ้านขนาด 100 หน่วย ที่ตำแหน่ง (0, 0)

2. วาดรูปบ้านขนาด 50 หน่วย ที่ตำแหน่ง (120, 90)

3. วาดรูปบ้านขนาด 80 หน่วย ที่ตำแหน่ง (200,10)


ขั้นตอนย่อย การวาดรูปบ้านขนาด S หน่วยที่ตำแหน่ง (x,y)

1. วาดรูปสี่เหลี่ยมจัตุรัสยาวด้านละ S หน่วย ให้มีมุมล่างซ้ายอยู่ที่พิกัด (x,y)

2. วาดรูปสามเหลี่ยมด้านเท่าขนาด S หน่วยไว้บนสี่เหลี่ยมจัตุรัส

อัลกอริทึมวาดภาพหมู่บ้าน สำหรับสร้างเป็นโปรแกรมคอมพิวเตอร์