More Related Content
Similar to บทที่ 5 : หลักการแก้ปัญหาด้วยคอมพิวเตอร์ (20)
More from Todsapol Aryuyune (7)
บทที่ 5 : หลักการแก้ปัญหาด้วยคอมพิวเตอร์
- 2. 5.1 หลักการแก้ปัญหา
ในบทนี้ผู้เรียนจะได้ศึกษาเกี่ยวกับหลักและวิธีการแก้ปัญหาด้วยคอมพิวเตอร์ และการนาภาษาโปรแกรมคอมพิวเตอร์และเครื่องมือต่างๆ มาช่วยในการแก้ปัญหา
โดย ทั่งไปการแก้ปัญหาหนึ่งอาจทาได้หลายวิธี ตัวอย่างเช่น ปัญหาจากการเล่นเกมทายใจก็สามารถแก้ได้หลายวิธีเช่นกัน เพียงแต่ว่าแต่ละวิธีที่แตกต่างกัน
จะทาให้ผู้เล่นเกมแก้ปัญหาได้ช้าเร็วไม่ เท่ากัน
ตัวอย่างเกมทายใจ
เกม ทายใจคือเกมที่จะให้ผู้เล่นทายตัวเลข 3 ตัวโดยต้องทายถูกตัวเลขและตาแหน่งซึ่งต้องใช้ผุ้เล่น 2 คน ผู้เล่นคนที่หนึ่งกาหนดตัวเลข 3 ตัวที่ไม่ซ้ากันโดยเลือกจา
ตัวเลข 1-9 และผู้เล่นคนที่หนึ่งต้องแจ้งผลการทายว่าตัวเลขที่ทายมานั้นถูกต้องกี่ตัว และถูกต้องกี่ตาแหน่ง ตัวอย่างเช่น ถ้าตัวเลขที่กาหนดไว้เป็น 8 1 5 และ
ผู้เล่นคนที่สองทายว่า 1 2 3 ผู้เล่นคนที่หนึ่งต้องแจ้งว่าตัวเลขที่ทายนั้นถูกเพียงตัวเดียวและไมามีตัว ใดถูกตาแหน่ง
ตัวอย่างการเล่นเกมทายใจ
จะเห็นได้ว่าในครั้งแรกๆ ของการทาย ผู้ทายจะใช้วิธีลองผิดลองถูกโดยการสุ่มตัวเลข 1-9 สาหรับเลขทั้ง 3 ตัว ดยไม่ให้มีตัวเลขซ้ากัน ซึ้งเมื่อผู้กาหนดให้
รายละเอียดเกี่ยวกับจานวนตัวเลขและจานวนตาแหน่งที่ถูก ต้องแล้ว ผู้ทายก็สามารถแยกตัวเลขที่ไม่ถูกต้องทั้งค่าของตัวเลขและตาแหน่ง ออกจากการทาย
คาตอบของปัญหาในครั้งถัดๆไป การใช้เหตุผลเพื่อแยกตัวเลขที่ไม่ต้องการใรการทายแต่ละครั้งนี้ จะช่วยให้ผู้ทายสามารถค้นพบคาตอบของปัญหาได้ใน
ที่สุด การแก้ปัญหาโดยใช้รูปแบบของการใช้เหตุผลประกอบกับการแยกคาตอบที่ไม่ต้องการ จะขึ้นอยู่กับเงื่อนไขของปัญหา ในบางปัญหาวิธีการนี้อาจไม่
สามารถหาคาตอบสุดท้ายได้แต่อาจช่วยจากัดจานวนคาตอบที่เป็นไปได้ให้น้อยลง นอกจากวิธีการแก้ปัญหาที่ยกตัวอย่างมาซึ่งได้แก่ การลองผิดลองถูก
การใช้เหตุผลและการใช้วิธีแยกคาตอบที่ไม่ต้องการ ยังมีวิธีการแก้ปัญหาอีกมากมายที่สามารถเลือกใช้ให้เหมาะสมกับตัวปัญหาและ ประสบการณ์ของผู้
แก้ปัญหาเอง อย่างไรก็ตาม เมื่อพิจารณาในภาพรวมจะพบว่า วิธีการเหล่านี้ล้วนมีขั้นตอนหลักที่คล้ายคลึงกัน ซึ่งประกอบด้วย 4 ขั้นตอน
- 3. 5.1.1 การวิเคราะห์และกาหนดรายละเอียดของปัญหา
ขั้นตอนแรกของการแก้ปัญหาใดๆ ก็ตาม จะต้องเริ่มต้นด้วยการทาความเข้าใจกับปัญหาให้ถ่องแท้เพื่อ
วิเคราะห์เงื่อนไขของปัญหาให้ชัดเจน รวมไปถึงข้อมุลที่จาเป็นในการแก้ปัญหาและรูปแบบหรือ
ลักษณะของผลลัพธ์หรือคา ตอบที่ต้องการโดยเหล่านี้จะเป็นประโยชน์ในการเลือกวิธีการแก้ปัญหา
ต่อไป กล่าวโดยสรุป การวิเคราะห์และกาหนดรายละเอียดของปัญหามีองค์ประกอบดังนี้
1. การระบุข้อมูลออก
2. การระบุข้อมูลเข้า
3. ราบละเอียดของปัญหา
1. การระบุข้อมูลออก
ข้อมูล ออกหรือคาตอบ คือสิ่งที่โจทย์ต้องการในการแก้ปัญหาด้วยคอมพิวเตอร์จาเป็นต้องระบุให้ ชัดเจนว่า
สิ่งที่ต้องการให้เป้นผลลัพธ์ของปัญหาคืออะไร และต้องการให้แสดงออกในรูปแบบใด
2. การระบุข้อมูลเข้า
ข้อมูล เข้าคือ ข้อมูลเริ่มต้นหรือเงื่อนไขที่โจทย์กาหนดมาให้ตั้งแต่แรก ในการแก้ปัญหา ผู้แก้ปัญหาจะต้อง
ใช้ข้อมูลเหล่านี้ในการประมวลผู้เพื่อให้ได้ผลลัพธ์ตามที่ต้องการ
3. รายละเอียดของปัญหา
รายละเอียดของปัญหา คือ การพิจารณาความต้องการของปัญหา ให้แสดงการวิเคราะห์และกาหนด
รายละเอียดของการหาค่าเฉลี่ยนของจานวนเต็ม 5 จานวนองค์ประกอบของขั้นตอนการวิเคราะห์และ
กาหนดรายละเอียดของปัญหา
- 4. 5.1.2 การเลือกเครื่องมือและวิธีออกแบบขั้นตอนวิธีใน
การแก้ปัญหา
สาหรับปัญหาทีมีขั้นตอนในการแก้ปัญหาอย่างซับซ้อน หรือต้องมีการ
แก้ปัญหาในลักษณะเดิมซ้าอีกหลายครั้ง จาเป็นต้องใช้คอมพิวเตอร์
เป็นอุปกรณ์ในการแก้ปัญหา โดยเขียนโปรแกรมเพื่อรับข้อมูลเข้าไป
ประมวลผล
ในการแก้ปัญหาโดยใช้คอมพิวเตอร์นั้น การออกแบบวิธีแก้ปัญหาอย่างเป็น
ขั้นตอนและง่ายต่อการทาความเข้าใจสาคัญมาก เพราะจะทาให้
สามารถเขียนโปรแกรมจากขั้นตอนที่ได้ออกแบบไว้อย่างง่ายดาย
เครื่องมือที่ใช้เพื่อการออกแบบขั้นตอนวิธี เช่น รหัสลาลอง
( pseudocode ) ซึ่งเป็นการจาลองขั้นตอนวิธีแก้ปัญหา โดยการ
อธิบายด้วยคาพูดที่เข้าใจได้ง่ายเป็นขั้นๆหรือผังงาน ( flowchart )
ซึ่งเป็นการใช้สัญลักษณ์ในการแสดงรายละเอียดและลาดับของแต่ละ
ขั้นตอนที่ใช้แก้ปัญหา ข้อดีอีกประการหนึ่งของการใช้เครื่องมือ
เหล่านี้ช่วยในการออกแบบวิแก้ปัญหา คือ จะทาให้สามารถตรวจสอบ
ความถูกต้อง หาจุดผิดพลาด และแก้ไขขั้นตอนในการแก้ปัญหาที่
ซับซ้อนได้รวดเร็ว
- 5. 5.1.3 การดาเนินการแก้ปัญหา
การดาเนินการแก้ปัญหา เป็นขั้นตอนการใช้
โปรแกรมประยุกต์หรือเขียนโปรแกรมขึ้นเอง
โดยใช้ภาษา คอมพิวเตอร์ ซึ่งต้องอาศัยความ
เชี่ยวชาญเฉพาะในการใช้โปรแกรมหรือภา
คอมพิวเตอร์นั้นๆ ข้นตอนนี้จะเสร็จได้เร็วหรืช้า
ขึ้นอยู่กับหลายปัจจัย เช่น ความชัดเจนและ
ถูกต้องของวิธีแก้ปัญหาที่ได้ออกแบบไว้และ
สามารถในการเขียนหรือใช้งานโปรแกรมหรือ
ภาษาคอมพิวเตอร์ที่เหลือในขั้นตอนนี้ผู้พัฒนา
ควรคานึงถึงความยืดหยุ่นของโปรแกรมที่ได้
ออกแบบขึ้น ด้วย เพื่อให้สามารถรองรับการ
เปลี่ยนแปลงที่อาจเกิดขึ้นในอนาคต เช่น การ
เปลี่ยนแปลงข้อมูลเข้า การเปลี่ยนรูปแบบของ
ข้อมูลออกหรือวิธีการประมวลผลที่เปลี่ยนไป
นอกจากนี้โปรแกรมควรต้องรองรับการ
ขยายตัวในอนาคตได้อีกด้วย
- 9. 5.2.2 ผังงาน
ผังงานเป็นการอธิบายขั้นตอนวิธีการแก้ปัญหาโดยใช้รูปสัญลักษณ์มา
เรียงต่อกัน สัญลักษณ์แต่ละแบบจะมีถึงความหมายถึงกระบวนการที่
แตกต่างกัน โดยจะมีคาอธิบายสั้นๆเพิ่มเติมในสัญลักษณ์ ความหมาย
ของสัญลักษณ์ต่างๆ ที่ใช้ในผังงานที่ถูกกาหนดโดยสถาบันมาตรฐาน
แห่งชาติอเมริกา ( The American National Standard Institute :
ANSI)เพื่อให้สามารถสื่อความหมายได้ตรงกัน ซึ่งมีรายละเอียดของ
สัญลักษณ์และความหมายที่ควรทราบสัญลักษณ์และความหมายของผัง
งาน
ในการเขียนผังงานมีหลักการ คือ ให้เลือกสัญลักษณ์แทนกระบวนการที่
ถูกต้อง และเขียนข้อความสั้นๆ แทนสิ่งที่ต้องกระทาลงในรูปสัญลักษณ์
แล้วนามาเรียงต่อกัน เชื่อมแต่ละสัญลักษณ์ด้วยลูกศร โดยทั่วไปแล้ว จะ
เรียงลาดับของสัญลักษณ์ไว้จากบนลงล่าง ตามลาดับชองการทางาน
หรือ อาจจะใช้หัวลูกศรระบุลาดับก่อนหลังของการทางานก็ได้
การเชื่อมต่อสัญลักษณ์ต่างๆ ของผังงาน อาจทาให้มีการตัดกันของเส้นลุก
ศรจนอาจเกิดความสับสนได้ ผู้เขียนจึงควรเลือกใช้สัญลักษณ์จุดเชื่อมต่อ
ในหน้าเดียวกัน โดยระบุตัวอักษรเดียวกันเพื่อหมายถึงการเชื่อมสองจุด
ของผังงานเข้าด้วยกัน แต่ถ้าผังงานใหญ่เกินหน้ากระดาษ ให้เลือกใช้
สัญลักษณ์จุดเชื่อมต่อหน้ากระดาษ เพื่อเชื่อมระหว่างสองจุดของผังงาน
ที่ข้ามไปอยู่คนละหน้ากัน
- 10. 5.3 โครงสร้างการเขียนโปรแกรม
ก่อนการเขียนโปรแกรม ผู้พัฒนาโปรแกรมจะต้องเลือกภาษา
คอมพิวเตร์ ที่จะนามาใช้ช่วยงานโดยพิจารณาจากปัจจัยต่างๆ
ในการทางาน เช่น ลักษณะของปัญหา ความถนัดของนักเขียนด
โปรแกรม สภาพแวดล้อมในการทางานของระบบคอมพิวเตอร์
เป็นต้น เนื่องจากในปัจจุบันมีภาษาคอมพิวเตอร์ให้เลือกได้หลาย
ภาษา เช่น ภาษาปาสคาล ภาษาซี ภาษาจาวา และภาษาเดลฟาย
ภึงแม้แต่ละภาษาจะมีรูปแบบและหลักการในการสร้างงานที่
แตกต่างกันแต่ทุกภาษา จะต้องมีโครงสร้างควบคุมหลักทั้ง 3
แบบ ได้แก่ โดครงสร้างแบบลาดับ (sequential structure)
โครงสร้างแบบทางเลือก (selection structure) และโครงสร้าง
แบบวนซ้า(repetition structure)
- 11. 5.3.1 โครงสร้างแบบลาดับ
( sequential structure )
โปรแกรมที่ทางานเป็นขั้นตอนเพื่อแก้ปัญหาจะทางานตามคาสั่งที่เขียนไว้ตามลาดับ ตั้งแต่คาสั่ง
แรกไปจนถึงคาสั่งสุดท้าย โดยที่คาสั่งในที่นี้อาจเป็นคาสั่งเดี่ยวๆ หรือเป็นคาสั่งเชิงซ้อนทีมี
หลายคาสั่งย่อยประกอบกันในลักษณะเป็นโครงสร้าง แบบทางเลือกหรือแบบวนซ้าก็ได้
โครงสร้างแบบเรียงลาดับเมื่อเขียนเป็นผังงาน จะมีลักษณะดังเช่นรูปที่ 6.9 และมีกระบวนการ
ทางานพื้ฐานอยู่3 ชนิด ดังแสดงในรูปที่ 6.10 ได้แก่
-การคานวณ เป็นกระบวนการที่คอมพิเตอร์ทาการคานวณ ประมวลผล ซึ่งจะรวมไปถึงการ
กาหนดค่าให้กับตัวแปร เพื่อให้สามารถนาค่าของตัวแปรนั้นมาใช้ในภายหลังได้
– การรับข้อมูลเข้า เป็นกระบวนการรับข้อมูลจากอุปกรณ์ของหน่วยรับเข้า เช่น คีย์บอร์ด เพื่อนาค่า
ไปกาหนดให้กับตัวแปร และเก็บไว้ในหน่วยความจา
– การส่งข้อมูลออก เป็น กระบวนการนาค่าของข้อมูลไปแสดงผลยังอุปกรณ์ของหน่วยส่งออก เช่น
จอภาพหรือเครื่องพิมพ์ข้อมูลที่จะส่งออกโดยทั่งไปจะเป็นค่าคงที่ หรือค่าของตัวแปร
ใน การดาเนินการเพื่อแก้ปัญหาด้วยคอมพิวเตอร์ กระบวนการเหล่านี้ต้องถูกแปลงให้อยู่รูปของ
คาสั่งหลายคาสั่งประกอบกันเพื่อ ให้ทางานตามขั้นตอนที่ได้ออกแบบไว้เช่น กรบวนการการ
คานวณในการเพิ่มค่าของตัวแปรcounter ขึ้นอีกหนึ่ง จะใช้คาสั่ง ” counter <
counter + 1 ” กระบวนการรับข้อมูลเข้าเพื่อเก็บไว้ในตัวแปร x จะใช้คาสั่ง ” input
x” และกระบวนการส่งข้อมูลออกไปยังจอภาพเพื่อแสดงผลของตัวแปร average จะใช้
คาสั่ง “print avereage” เป็นต้น
- 12. 5.3.2 โครงสร้างแบบทางเลือก( selection structure )
ปัญหาบางอย่างต้องการการตัดสินใจเพื่อเลือกว่าจะใช้วิธีการใด โดยต้องมี
การตรวจสอบว่าเงื่อนไขที่ใช้ในการตัดสินใจว่าเป็นจริงหรือเท็จ ถ้าเป็นจริง
จะไปเลือกทาคาสั่งชุดหนึ่งแต่ถ้าเป็นเท็จจะไปเลือกทาคาสั่งอีกชุดหนึ่งซึ่ง
ชุดคาสั่งเหล่านี้จะประกอบด้วยโครงสร้างแบบลาดับนั่นเอง
5.3.3 โครงสร้างแบบวนซ้า ( repetition structure )
ในการแก้ปัญหาบางอย่างอาจต้องมีการทางานในบางคาสั่งหรือชุดของคาสั่ง
ซ้ากัน มากกว่าหนึ่งรอบขึ้นไป โครงสร้างแบบมีการวนซ้านี้ต้องมีการ
ตัดสินใจร่วมอยู่ด้วยเสมอ เพื่อเป็นเงื่อนไขที่ตัดสินใจว่าเมื่อใดจะวนซ้า หรือ
เมื่อไรจะถึงเวลาหยุดวนซ้าโดยทั่วไปผังงานของการวนว้าจะมีลักษณะดังรูป
ที่ 6.14 หรือรูปที่ 6.15 โดยมีความแตกต่างกันตือในรูปที่ 6.14 เป็นการวนซ้า
แบบที่ต้องตรวจสอบเงื่อนไขที่จะใช้วนซ้าก่อนที่จะทางานในชุดคา สั่งใน
โครงสร้างแบบวนซ้า เรียกว่า การวนซ้าแบบ while ซึ่งจะสังเกตได้ว่าถ้า
เงื่อนไขไม่เป็นจริงตั้งแต่แรกคาสั่งแบบโครงสร้างในการวนซ้าจะไม่ถูกเรียก
ให้ทางานเลยแต่สาหรับ 6.15 เป็นการวนซ้าแบบมีการตรวจสอบเงื่อนไขที่จะ
ให้วนซ้าหลังจากที่ได้ทางานตามชุดคาสั่ง ในโครงสร้างแบบวนซ้าไปรอบ
หนึ่งแล้วเรียกว่า การวนว้าแบบ until สาหรับตัวอย่างของการวนซ้า เช่น การ
รับค่าตัวเลขเข้ามาหลายค่า ในโครงสร้าเพื่อคานวนหาผลรวม ในตัวอย่างที่
6.7 ถือเป็นการวนซ้าแบบ until