บทที่ 5 คอมพิวเตอร์กับการแก้ไขปัญหา

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

ขั้นตอนการวิเคราะห์ปัญหา
การเขียนโปรแกรมคอมพิวเตอร์ เพื่อใช้สำหรับช่วยในการแก้ปัญหา ขั้นตอนของการวิเคราะห์ปัญหาสำหรับเตรียมการก่อนลงมือเขียนโปรแกรมคอมพิวเตอร์ มีขั้นตอนดังนี้
1. การทำความเข้าใจกับปัญหา
2. การพิจารณาลักษณะของข้อมูลเข้าและข้อมูลออก
3. การทดลองแก้ไขปัญหาด้วยตนเอง
4. การเขียนขั้นตอนวิธีการแก้ปัญหา
5. การทดสอบขั้นตอนวิธีการแก้ปัญหา

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

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

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

การเขียนขั้นตอนวิธีการแก้ไขปัญหา
ขั้นตอนของการพัฒนาลำดับขั้นตอนวิธีการแก้ปัญหา เป็นขั้นตอนที่สำคัญอีกขั้นตอนหนึ่ง เพราะเป็นขั้นตอนที่จะนำไปใช้สำหรับพัฒนาให้เป็นโปรแกรมภาษาคอมพิวเตอร์ต่อไป ขั้นตอนนี้เป็นขั้นตอนที่นำเอาวิธีการสำหรับการแก้ปัญหาที่ได้ทำการเลือกจากขั้นตอนของการทดลองการแก้ไขปัญหาด้วยตนเอง มาทำการเรียบเรียงเป็นลำดับขั้นตอนวิธีการทำงาน โดยเขียนขั้นตอนวิธีการทำงานเป็นข้อตั้งแต่ขั้นตอนแรกจนถึงขั้นตอนสุดท้าย
ขั้นตอนวิธี (Algorithm) คือ การเขียนอธิบายถึงลำดับขั้นตอนการทำงานของการแก้ปัญหาในลักษณะของข้อความตั้งแต่ขั้นตอนแรก จนถึงขั้นตอนสุดท้าย การพัฒนาลำดับขั้นตอนวิธีการแก้ปัญหา มีวิธีการดังนี้
1. เขียนลำดับขั้นตอนวิธีการทำงานทั้งหมดอย่างย่อ
            เป็นการเขียนการทำงานแต่ละขั้นตอนอย่างย่อ ไม่ละเอียดมากนัก ตั้งแต่ขั้นตอนแรก จนถึงขั้นตอนสุดท้ายของการทำงาน เพื่อดูภาพรวมของการทำงานของขั้นตอนวิธีการแก้ปัญหาทั้งหมด
2. เขียนลำดับขั้นตอนวิธีการทำงานอย่างละเอียด
           เป็นการเขียนรายละเอียดของการทำงานของแต่ละขั้นตอนที่ได้จากข้อ 1 เพื่อให้สามารถทำการเปลี่ยนให้เป็นรหัสเทียม และโปรแกรมภาษาคอมพิวเตอร์
3. เขียนลำดับขั้นตอนวิธีการทำงานแต่ละข้อให้อยู่ในรูปของรหัสเทียม
           รหัสเทียม (Pseudo Code) คือ ภาษาที่ใกล้เคียงกับภาษาคอมพิวเตอร์ ส่วนใหญ่นิยมเขียนเป็นภาษาอังกฤษ เมื่อผู้ที่ทำการเขียนโปรแกรมต้องการนำขั้นตอนวิธีการทำงานที่ได้เรียบเรียงขึ้นมาทำการเขียนเป็นโปรแกรมคอมพิวเตอร์ สามารถทำได้โดยการเปลี่ยนจากรหัสเทียมให้เป็นภาษาคอมพิวเตอร์ตามที่ต้องการ ตัวอย่างเช่น ถ้าผู้ที่ทำการเขียนโปรแกรมต้องการใช้ภาปาสคาล สำหรับการเขียนโปรแกรมสามารถทำได้โดยเปลี่ยนจากรหัสเทียมให้เป็นภาษาปาสคาล

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

แบบฝึกหัด
1.ขั้นตอนของการวิเคราะห์ปัญหาเพื่อที่จะนำคอมพิวเตอร์มาช่วยในการแก้ไขปัญหา มีทั้งหมดกี่ขั้นตอน
ก.2 ขั้นตอน
ข. 3 ขั้นตอน
ค.4 ขั้นตอน
ง.5 ขั้นตอน
2.ขั้นตอนของการวิเคราะห์ปัญหาในขั้นตอนใด ที่ต้องทำการศึกษาถึงลักษณะของปัญหาที่ต้องการจะนำมาแก้ไข
ก.การทำความเข้าใจกับปัญหา
ข.พิจารณาลักษณะข้อมูลเข้าและข้อมูลออก
ค.ทดลองแก้ไขปัญหาของข้อมูลเข้าและข้อมูลออก
ง.ทดสอบขั้นตอนวิธีการแก้ไขปัญหา
3.ข้อใดเป็นขั้นตอนสุดท้ายของขั้นตอนของการวิเคราะห์ปัญหา
ก.การทกลองแก้ไขปัญหาด้วยตนเอง
ข.การเขียนลำดับขั้นตอนวิธีการแก้ปัญหา
ค.การทดสอบลำดับขั้นตอนวิธีการแก้ปัญหา
ง.พิจารณาลักษณะข้อมูลเข้าและข้อมูลออก
4.ข้อใดเป็นวิธีการที่ไม่ถูกต้อง สำหรับการนำคอมพิวเตอร์มาช่วยสำหรับการแก้ปัญหา
ก.อยู่หน้าเครื่องแล้วทดลองเขียนโปรแกรม
ข.หาวิธีการแก้ไขปัญหาก่อน
ค.เขียนเอกสารที่เป็นลำดับขั้นตอนการทำงาน เพื่อความสะดวกในภายหลัง
ง.เรียบเรียงลำดับการทำงานทั้งหมด
5.ข้อใดเป็นประโยชน์ในการเขียนขั้นตอนวิธีสำหรับการแก้ปัญหาเป็นเอกสาร
ก.ใช้เป็นการอ้างอิงในการแก้ไข หรือพัฒนาภายหลัง
ข.เพื่อประโยชน์ในการศึกษาขั้นตอนการทำงานของวิธีการนั้น
ค.ลดเวลาในการศึกษาการทำงานของวิธีการแก้ปัญหา
ง.ถูกทุกข้อ
6.ขั้นตอนสำหรับการเขียนขั้นตอนวิธีการแก้ไขปัญหา ข้อใดกล่าวถูกต้องที่สุด
ก.จะต้องพิจารณาลักษณะของข้อมูลเข้าและข้อมูลออก
ข.ขั้นตอนการทำงานทั้งหมดเพื่อนำไปเขียนโปรแกรมคอมพิวเตอร์
ค.ทำการทดลองและหาวิธีการแก้ไขปัญหา
ง.ถูกต้องข้อ ข. และข้อ ค.
7.ความหมายของคำว่า ขั้นตอนวิธี (Algorithm)คือข้อใด
ก.การทำความเข้าใจกับปัญหาที่เกิดขึ้น
ข.การอธิบายลำดับขั้นตอนการทำงานเป็นข้อ ๆ ตั้งแต่ขั้นตอนแรกถึงขั้นตอนสุดท้าย
ค.การหาวิธีการที่ถูกต้องในการแก้ปัญหา
ง.การทดสอบลำดับขั้นตอนของวิธีการที่ใช้ในการแก้ปัญหา
8.จากการกระทำต่อไปนี้ คือ Answer        2.5 * 2 ลักษณะข้อมูลของ Answer ควรเป็นข้อมูลชนิดใด
ก.ตัวเลขจำนวนเต็ม
ข.ตัวเลขทศนิยม
ค.ค่าทางตรรกศาสตร์
ง.ตัวอักษร
9.ถ้าต้องการนำเครื่องคอมพิวเตอร์มาช่วยในการคำนวณหาค่าของพื้นที่สามาเหลี่ยม จากสูตรพื้นที่สามเหลี่ยม = ½  × ความยาวของฐาน × ความสูง ข้อมูลที่ต้องส่งเพื่อเป็นข้อมูลเข้าเครื่องคอมพิวเตอร์เพื่อใช้ในการแก้ไขปัญหา คือข้อมูลในข้อใด
ก.พื้นที่ของสามเหลี่ยม, ความยาวฐาน
ข.พื้นที่สามเหลี่ยม, ความสูง
ค.ความยาวฐาน, ความสูง
ง.พื้นที่ของสามเหลี่ยม, ความยาวฐาน, ความสูง
10.จากข้อ 9  ข้อมูลที่ต้องการให้เครื่องคอมพิวเตอร์ส่งกลับคือข้อมูลในข้อใด
ก.พื้นที่ของสามเหลี่ยม
ข.ความสูง
ค.ความยาวฐาน
ง.ความยาวฐาน, ความสูง

เฉลย
1. ง.
2. ก.
3. ค.
4. ก.
5. ง.
6. ข.
7. ข.
8. ข.
9. ค.
10. ก.