บทเรียนที่ 2 การแก้ปัญหา
ในโลกยุคดิจิทัล การดําเนินชีวิตต้องมีการใช้งานอุปกรณ์เทคโนโลยีสารสนเทศเพื่อการสื่อสาร อยู่ตลอดเวลา โดยมีระบบการทํางานที่ ซับซ้อนอยู่เบื้องหลัง เช่น สมาร์ตโฟนที่ทําหน้าที่หลัก ในการสื่อสารและมีโปรแกรมสําหรับสื่อสารทํางานอยู่เบื้องหลัง การทําธุรกรรมทาง การเงิน จากเครื่องเอทีเอ็มผู้ใช้สามารถฝากถอน หรือโอนเงินได้ ซึ่งภายในมีโปรแกรมควบคุมการทํางาน การทํางานของอุปกรณ์ที่ชาญฉลาดเหล่านี้ ล้วนอาศัยการเขียนโปรแกรมเพื่อแก้ปัญหาทั้งสิ้น
การเขียนโปรแกรมเพื่อแก้ปัญหานั้นไม่จําเป็นต้องใช้กับสถานการณ์ที่ซับซ้อนเสมอไป แต่ยังสามารถเขียนโปรแกรมเพื่อแก้ปัญหาในชีวิตประจําวันได้ ตัวอย่างเช่น นักเรียนอาจเขียน โปรแกรมประมวลผลข้อมูล โดยมีการรวบรวมข้อมูลปริมาณมากจากหลายแหล่ง แทนที่จะ คํานวณทุกอย่างบนกระดาษทด หรือเครื่องคิดเลขซ้ํา ๆ กันสําหรับข้อมูลแต่ละชุด นักเรียน สามารถกลั่นกรองแนวคิดของตนเอง ออกแบบขั้นตอนวิธี และเขียนโปรแกรมเพื่อช่วยประมวลผลข้อมูล
นักเรียนทราบหรือไม่ว่าทุกคนสามารถ เขียนโปรแกรมได้ เนื่องจากพื้นฐานการเขียน โปรแกรม คือ การคิดแก้ปัญหาอย่างเป็นขั้นตอน และเป็นระบบ ซึ่งนักเรียนต้องเคยฝึกฝนวิธี
การแก้ปัญหาต่าง ๆ ในชีวิตจริงมาแล้วทั้งสิ้น ในบทนี้จะกล่าวถึงขั้นตอนและเครื่องมือ สําหรับการแก้ปัญหาทั้งปัญหาในชีวิตประจําวัน และปัญหาที่ใช้การคํานวณเป็นพื้นฐานเพื่อนํา ไปสู่การเขียนโปรแกรมในบทถัดไป
2.1 ขั้นตอนการแก้ปัญหา
การแก้ปัญหาเป็นกิจกรรมพื้นฐานในการดํารงชีวิตของมนุษย์ ปัญหาบางปัญหาสามารถหาคําตอบได้ในทันที ขณะที่บางปัญหาอาจ ต้องใช้เวลานานในการค้นหาคําตอบ ซึ่งคําตอบที่ได้ต้องสามารถพิสูจน์ได้ว่าเป็นคําตอบ ที่ถูกต้อง น่าเชื่อถือ และสามารถนําไปอ้างอิง ต่อได้ การแก้ปัญหาของแต่ละบุคคลมีขั้นตอนและใช้เวลาที่ แตกต่างกัน ความรู้และประสบการณ์จะส่งผลต่อความสามารถในการแก้ปัญหา อย่างไรก็ตามทุกคนต่าง ต้องการหาวิธีการในการแก้ปัญหาที่ทําให้ได้คําตอบที่ถูกต้องในเวลารวดเร็ว
การแก้ปัญหา ประกอบด้วย 4 ขั้นตอนดังรูป 2.1 คือ
1. การวิเคราะห์และกําหนดรายละเอียดของปัญหา เป็นการทําความเข้าใจเกี่ยวกับรายละเอียด เงื่อนไข ข้อกําหนด รวมถึงข้อจํากัดต่าง ๆ ของปัญหา ข้อมูลที่จําเป็นในการแก้ปัญหา ตรวจสอบว่ามีข้อมูลเพียงพอหรือไม่ จะหาข้อมูลเพิ่มเติมให้ครบถ้วนต่อการใช้แก้ปัญหาได้อย่างไร ข้อมูลผลลัพธ์ที่ได้คืออะไร และจะตรวจสอบความถูกต้องของผลลัพธ์ที่ได้อย่างไร
2. การวางแผนการแก้ปัญหา เป็นการคิดค้นกระบวนการต่าง ๆ ที่เป็นขั้นตอน ตั้งแต่เริ่มต้นจนกระทั่ง ได้ผลลัพธ์ที่ต้องการ ซึ่งต้องอาศัยประสบการณ์และความรู้ของผู้แก้ปัญหา โดยอาจนําวิธีที่เคย แก้ปัญหา หรือค้นหาวิธีการอื่นแล้วนํามาประยุกต์เข้ากับปัญหาที่กําลังแก้ไข เครื่องมือที่ใช้ในการ วางแผนแก้ปัญหา สําหรับการพัฒนาโปรแกรม อาจเลือกใช้รหัสลําลอง หรือผังงาน โดยวิธีการแก้ปัญหาที่ได้เรียกว่า ขั้นตอนวิธีหรืออัลกอริทึม (algorithm) ซึ่งเป็นลําดับขั้นตอนในการแก้ปัญหาหรือการทํางานที่ชัดเจนตั้งแต่เริ่มต้นแก้ปัญหา จนกระทั้งได้ผลลัพธ์ที่ต้องการ
3. การดําเนินการแก้ปัญหา เป็นการนํากระบวนการที่ได้วางแผนไว้มาปฏิบัติ หรือพัฒนาโปรแกรมเพื่อแก้ปัญหา โดยอาจใช้ภาษาโปรแกรมช่วยในการดําเนินการ
4. การตรวจสอบและประเมินผล ขั้นตอนนี้จะทําควบคู่ไปกับขั้นตอนการดําเนินการแก้ปัญหา โดยการตรวจสอบผลลัพธ์ที่ได้ หากผลลัพธ์ที่ได้ไม่ถูกต้อง หรือยังมีส่วนที่ต้องแก้ไขปรับปรุงอยู่ ต้องย้อนกลับไป ทําซ้ําตั้งแต่ขั้นตอนแรกจนกว่าจะได้ผลลัพธ์ที่ถูกต้อง
นักเรียนจะนําขั้นตอนการแก้ปัญหาข้างต้น มาแก้ปัญหาที่ต้องการได้อย่างไร ลองศึกษาตัวอย่างต่อไปนี้
ตัวอย่างที่ 2.1 การหาค่ามากที่สุดของจํานวนสามจํานวนที่กําหนดให้
การแก้ปัญหามีขั้นตอนดังนี้
ขั้นตอนที่ 1 การวิเคราะห์และกําหนดรายละเอียดของปัญหา
ข้อมูลเข้า จํานวนสามจํานวน ได้แก่ a, b และ C
ข้อมูลออกหรือสิ่งที่ต้องการ ตัวเลขที่มีค่ามากที่สุดของเลขสามจํานวน
วิธีตรวจสอบความถูกต้อง ดําเนินการหาตัวเลขที่มากที่สุดด้วยตนเอง โดยกําหนดชุด ตัวเลข 3 จํานวน เช่น 8,7 และ 12 ในกรณีนี้ตัวเลขที่มีค่ามากที่สุด คือ 12
ขั้นตอนที่ 2 การวางแผนการแก้ปัญหา
2.1 เปรียบเทียบ a และ b เพื่อหาค่ามากกว่าระหว่างสองจํานวน
2.2 นําค่าที่ได้มาเปรียบเทียบกับ C เพื่อหาค่าที่มากกว่า
2.3 ค่าที่มากที่สุดคือ ผลลัพธ์ที่ได้จากขั้นตอนที่ 2.2
ขั้นตอนที่ 3 การดําเนินการแก้ปัญหา
ดําเนินการทดสอบตามขั้นตอนที่วางแผนไว้กับชุด ตัวเลขที่กําหนด โดยสมมติ a, b และ C เป็น 8, 7 และ 12 ตามลําดับ
3.1 เปรียบเทียบเพื่อหาค่าที่มากกว่าระหว่าง 8 และ 7 พบว่า 8 เป็นค่าที่มากกว่า
3.2 เปรียบเทียบเพื่อหาค่ามากกว่าระหว่าง 8 และ 12 พบว่า 12 เป็นค่าที่มากกว่า
3.3 ค่าที่มากที่สุดของ 8, 7 และ 12 คือ 12
ขั้นตอนที่ 4 การตรวจสอบและปรับปรุง
เมื่อพิจารณาคําตอบที่ได้คือ 12 กับค่าที่เหลือ ซึ่งได้แก่ 8 และ 7 พบว่า 12 มีค่ามากกว่าค่าที่เหลือ ทั้งคู่ คําตอบนี้จึงเป็นคําตอบที่ถูกต้องตามข้อกําหนด ของสิ่งที่ต้องการ
แนวคิดข้างต้นใช้งานได้เนื่องจากว่าหากพิจารณา จํานวนสามจํานวนใด ๆ เมื่อ a > b และ b > C แล้ว a> C ด้วย จากตัวอย่าง แม้ว่าเราจะไม่ได้นําค่า 12 มาเปรียบ เทียบกับ 7 โดยตรง แต่เราได้นํามาเปรียบเทียบกับ 8 ซึ่ง 8 ถูกตรวจสอบมาก่อนหน้านี้แล้วว่ามากกว่า 7 เพราะฉะนั้น 12 จึงมากกว่า 7 ด้วย
หากพิจารณาตัวอย่างที่ 2.1 นักเรียนอาจคิดว่ามองด้วยสายตาก็สามารถ หาจํานวนที่มีค่ามากที่สุดได้แล้ว โดยไม่จําเป็นต้องทําตาม ขั้นตอนการแก้ปัญหา เลย นั่นเป็นเพราะจํานวนที่เปรียบเทียบมีเพียงสามจํานวนเท่านั้น หากมีจํานวน ตัวเลขมากกว่านี้ นักเรียนอาจจะ ไม่สามารถเปรียบเทียบจํานวนทั้งหมดได้ โดยใช้สายตาเพียงอย่างเดียว แต่หากใช้ขั้นตอนการแก้ปัญหา จะทําให้สามารถ ออกแบบการ แก้ปัญหาที่มีประสิทธิภาพและสั่งงานให้คอมพิวเตอร์หาคําตอบ ได้อย่างถูกต้องและใช้เวลารวดเร็ว