หน่วยการเรียนรู้ที่ 3
เรื่อง ขั้นตอนวิธีการแก้ไขปัญหา (Algorithm) และผังงาน (Flow Chart)
ขั้นตอนการแก้ปัญหา
ในปัจจุบัน การดำเนินชีวิตต้องมีการใช้งานอุปกรณ์เทคโนโลยีสารสนเทศเพื่อการสื่อสารอยู่ตลอดเวลา โดยมีระบบการทำงานที่ซับซ้อนอยู่เบื้องหลัง เช่น สมาร์ทโฟนที่ทำหน้าที่หลังในการสื่อสารและมีโปรแกรมสำหรับสื่อสารอยู่เบื้องหลัง ซึ่งโปรแกรมเหล่านี้ ล้วนอาศัยการเขียนโปแรกรมเพื่อแก้ปัญหาทั้งสิ้น
ขั้นตอนการแก้ปัญหา
การแก้ปัญหาเป็นกิจกรรมพื้นฐานในการดำรงชีวิตของมนุษย์ ปัญหาบางปัญหาสามารถคิดหาคำตอบได้ทันที แต่ในบางปัญหาอาจต้องใช้เวลานานในการค้นหาคำตอบ ซึ่งคำตอบที่ได้ต้องสามารถพิสูจน์ได้เป็นเป็นคำตอบที่ดีที่สุด น่าเชื่อถือ และสามารถนำไปใช้อ้างอิงได้ การแก้ปัญหา ประกอบด้วย 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 แสดงถึงการทำงานลักษณะต่างๆ เชื่อมต่อกัน
ตัวอย่าง
สถานการณ์ : เขียนผังงานการคำนวณหาพื้นที่รูปสามเหลี่ยม
เขียนผังงาน :
การกำหนดค่าให้ตัวแปร
การกำหนดค่าให้กับตัวแปรสามารถทำได้ 3 วิธีคือ
1. รับค่าจากภายนอก
2. กำหนดค่าจากค่าคงที่
3. กำหนดค่าจากการคำนวณ
สัญลักษณ์ที่นิยมใช้สำหรับกำหนดค่าให้กับตัวแปรคือ <– ใช้เพื่อนำค่าทางขวาของ <– ไปกำหนดให้กับตัวแปรทางด้านซ้ายของ <–
ตัวอย่าง
สถานการณ์ : เขียนรหัสลำลองการคำนวณหาพื้นที่รูปสามเหลี่ยม
เขียนรหัสลำลอง :
เริ่ม
1. width <– รับค่าความกว้างของฐาน
2. height <– รับค่าความสูง
3. trianglearea <– ½ x ความกว้างของฐาน x ความสูง
จบ
เขียนผังงาน :
ภาษาโปรแกรม
การเขียนโปรแกรมเพื่อแก้ปัญหานั้น ไม่จำเป็นต้องใช้กับสถานการณ์ที่ซับซ้อนเสมอไป แต่ยังสามารถเขียนโปรแกรมเพื่อแก้ไขปัญหาในชีวิตประจำวันได้ เช่น นักเรียนอาจเขียนโปรแกรมเพื่อประมวลผลการฝากเงินออมทรัพย์ประจำวันของนักเรียน แทนที่จะต้องจดลงบนกระดาษ นักเรียนสามารถกลั่นกรองแนวคิดของตนเอง ออกแบบขั้นตอนวิธี และเขียนโปรแกรมเพื่อช่วยประมวลผล
ภาษาโปรแกรม
ภาษาโปรแกรม คือภาษาประดิษฐ์ชนิดหนึ่งที่มีวิวัฒนาการมาอย่างยาวนาน ออกแบบขึ้นมาเพื่อสื่อสารชุดคำสั่งแก่เครื่องจักร โดยเฉพาะอย่างยิ่งคอมพิวเตอร์ โดยภาษาโปรแกรมสามารถควบคุมคอมพิวเตอร์ด้วยภาษาเครื่องที่ประกอบด้วยเลข 0 และ 1
ในยุคเริ่มต้นภาษาโปรแกรมเป็นอุปสรรคต่อการเขียนโปรแกรมเป็นอย่างมาก จนมาถึงปัจจุบันภาษาโปรแกรมมีความคล้ายคลึงกับภาษาอังกฤษ ทำให้การเขียนโปรแกรมง่ายมากขึ้น แต่เนื่องจากคอมพิวเตอร์ยังคงต้องทำงานตามคำสั่งภาษาเครื่อง เมื่อเราเขียนโปรแกรมแล้ว จึงต้องมีการแปลให้เป็นภาษาเครื่องก่อน
ตัวแปลภาษา
อินเตอร์พรีเตอร์ (Interpreter) เป็นตัวแปลภาษาระดับสูงซึ่งแปลภาษาที่ใกล้เคียงกับภาษามนุษย์ ไปเป็นภาษาเครื่อง โดยใช้หลักการแปลพร้อมกับงานตามคำสั่งทีละบรรทัดตลอดทั้งโปรแกรมทำให้การแก้ไขโปรแกรมทำได้ง่ายและรวดเร็ว ภาษาที่แปลแบบอินเตอร์พรีเตอร์ เช่น Python , LOGO
คอมไพเลอร์ (Compiler) เป็นตัวแปลภาษาระดับสูงเช่นเดียวกับอินเตอร์พรีเตอร์แต่จะใช้วิธีแปลคำสั่งทั้งโปรแกรมให้ถูกต้อง จึงจะได้ผลลัพธ์ของโปรแกรม ภาษาที่แปลแบบคอมไพเลอร์ เช่น C , C++ , JAVA
ปัจจุบันยังมีภาษาอีกกลุ่มหนึ่งที่ไม่ได้ใช้ในการสั่งงานคอมพิวเตอร์โดยตรง แต่ใช้ในการกำหนดรูปแบบการแสดงผล หรือรูปแบบการจัดเก็บข้อมูล เพื่อให้เป็นมาตรฐานให้ใช้งานร่วมกันได้ เช่น HTML (HyperText Markup Language) , XML (Extensible Markup Language)