หน่วยการเรียนรู้ที่ 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)