การแก้ปัญหา

ขั้นตอนการแก้ปัญหา

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

การแก้ปัญหา ประกอบด้วย 4 ขั้นตอน ดังนี้

1. วิเคราะห์และกำหนดรายละเอียดของปัญหา

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

2. วางแผนการแก้ปัญหา

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

3. ดำเนินการแก้ปัญหา

เป็นการพัฒนาโปรแกรมตามอัลกอริทึมที่ได้วางไว้ โดยอาจใช้ภาษาโปรแกรมช่วยในการดำเนินการ

4. ตรวจสอบละประเมินผล

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

ตัวอย่าง

สถานการณ์ : ต้องการหาค่ามากที่สุดของจำนวนสามจำนวนดังนี้ 30 5 25

ขั้นตอนการแก้ปัญหา :

1. วิเคราะห์และกำหนดรายละเอียดของปัญหา

ข้อมูลเข้า : จำนวน 3 จำนวนคือ 30 5 และ 25

ข้อมูลออก : ตัวเลขที่มีค่ามากที่สุด

วิธีตรวจสอบความถูกต้อง : ดำเนินการหาตัวเลขที่มีค่ามากที่สุดตัวตนเอง

2. วางแผนการแก้ปัญหา

– เปรียบเทียบจำนวนที่หนึ่งกับจำนวนที่สอง เพื่อหาค่ามากกว่าระหว่างสองจำนวน

– นำค่าที่ได้มาเปรียบเทียบกับค่าที่สาม เพื่อหาค่าที่มากกว่า

– ค่าที่มากที่สุดคือ ผลลัพธ์จากขั้นตอนก่อนหน้า

3. ดำเนินการแก้ปัญหา

ดำเนินการทดสอบตามขั้นตอนที่วางไว้ โดย

– เปรียบเทียบจำนวนที่หนึ่งคือ 30 กับจำนวนที่สองคือ 5 พบว่า 30 มากที่สุด

– นำค่าที่ได้คือ 30 มาเปรียบเทียบกับค่าที่สามคือ 25 พบว่า 30 มากที่สุด

– ค่าที่มากที่สุดคือ 30

4. ตรวจสอบละประเมินผล

เมื่อพิจารณาคำตอบแล้ว ผลที่ได้คือ 30 มีค่ามากที่สุด

รหัสลำลองและผังงาน


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

รหัสลำลอง (pseudocode)

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

ตัวอย่าง

สถานการณ์ : เขียนรหัสลำลองการคำนวณหาพื้นที่รูปสามเหลี่ยม

เขียนรหัสลำลอง :

เริ่ม

1. รับค่าความกว้างของฐาน

2. รับค่าความสูง

3. คำนวณหาพื้นที่รูปสามเหลี่ยมจากสูตร ½ x ความกว้างของฐาน x ความสูง

จบ

ผังงาน (Flowchart)

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

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

การกำหนดค่าให้ตัวแปร


การกำหนดค่าอย่างใดอย่างหนึ่งให้กับตัวแปรสามารถทำได้ 3 วิธี คือ

1. การรับค่าจากภายนอก

2. การกำหนดค่าจากค่าคงที่หรือตัวแปรอื่น

3. การกำหนดค่าจากการคำนวณ

จากตัวอย่างที่ 2.2 และ 2.3 สามารถเขียนรหัสลำลองและผังงานที่ใช้ตัวแปรได้ ดังตัวอย่างที่ 2.4

ตัวอย่างที่ 2.4 รหัสลำลองและผังงานที่มีการใช้ตัวแปร

ตัวอย่างที่ 2.5 รหัสลำลองและผังงานที่มีการทำงาแบบมีเงื่อนไข

สถานการณ์ หลังรับประทานข้าว ถ้านักเรียนมีเงินเหลือจะซื้อขนม

ตัวอย่างที่ 2.6 รหัสลำลองและผังงานที่มีการทำงานแบบวนซ้ำ

สถานการณ์ นักเรียนร่วมวิ่งแข่งขันในงานกีฬาของหมู่บ้านซึ่งหากไม่ครบ 5 กิโลเมตรจะไม่หยุดวิ่ง

ภาษาโปรแกรม


ภาษาโปรแกรมคอมพิวเตอร์มีวิวัฒนาการมายาวนาน นับตั้งแต่การสั่งงานคอมพิวเตอร์ด้วยภาษาเครื่องที่ประกอบด้วยเลข 0 และ 1 เมื่อเราเขียนโปรแกรมแล้วจึงต้องมีการแปลให้เป็นภาษาเครื่องก่อนตัวแปรภาษาโปรแกรมมี 2 ประเภท คือ

1. คอมไพเลอร์ (compiler) จะแปลโปรแกรมทั้งโปรแกรมให้ถูกต้อง จึงจะได้ผลลัพธ์เป็นโปรแกรมภาษาเครื่องที่นำไปสั่งงานคอมพิวเตอร์ได้ ภาษาที่ต้องแปลด้วยคอมไพเลอร์ เช่น C, C++, Java

2. อินเทอร์พรีเตอร์ (interpreter) จะแปลคำสั่งในโปรแกรมทีละคำสั่งให้เป็นภาษาเครื่องส่งให้คอมพิวเตอร์ทำงานทันทีโดยไม่ต้องรอให้แปลเสร็จทั้งโปรแกรม เช่น Python, Logo





** สรุปความรู้จากบทเรียน


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


อ้างอิง:

สถาบันส่งเสริมการสอนวิทยาศาสตร์และเทคโนโลยี, “เทคโนโลยี(วิทยาการคำนวณ)”, โรงพิมพ์แห่งจุฬาลงกรณ์มหาวิทยาลัย, ศูนย์หนังสือแห่งจุฬาลงกรณ์มหาวิทยาลัย, 2561