หน่วยการเรียนรู้ที่ 2
เรื่อง การแก้ปัญหา วิชาเทคโนโลยี (วิทยาการคํานวณ) ชั้นมัธยมศึกษาปีที่ 1
กลุ่มสาระการเรียนรู้วิทยาศาสตร์และเทคโนโลยี เวลา 6 ชั่วโมง
ในโลกยุคดิจิทัล การดำเนินชีวิตต้องมีการใช้งานอุปกรณ์เทคโนโลยีสารสนเทศเพื่อการสื่อสารอยู่ตลอดเวลา โดยมีระบบการทำงานที่ซับซ้อนอยู่เบื้องหลัง เช่น สมาร์ตโฟนที่ทำหน้าที่หลักในการสื่อสารและมีโปรแกรม สำหรับสื่อสารทำงานอยู่เบื้องหลัง การทำธุรกรรมทางการเงินจากเครื่องเอทีเอ็มผู้ใช้สามารถฝากถอน หรือโอนเงินได้ ซึ่งภายในมีโปรแกรมควบคุมการทำงาน การทำงานของอุปกรณ์ที่ชาญฉลาดเหล่านี้ ล้วนอาศัยการเขียนโปรแกรมเพื่อแก้ปัญหาทั้งสิ้น
การเขียนโปรแกรมเพื่อการแก้ปัญหานั้นไม่จำเป็น ต้องใช้กับสถานการณ์ที่ซับซ้อนเสมอไปแต่ยังสามารถเขียนโปรแกรม เพื่อแก้ปัญหาในชีวิตประจำวันได้ ตัวอย่างเช่น นักเรียนอาจเขียนโปรแกรมประมวลผลข้อมูล โดยมีการรวบรวมข้อมูลเชิงปริมาณมากจากหลายแหล่ง แทนที่จะคำนวณทุกอย่างบนกระดาษทด หรือเครื่องคิดเลขซ้ำๆ กันสำหรับข้อมูลแต่ละชุด นักเรียนสามารถกลั่นกรองแนวคิดของตนเอง ออกแบบขั้นตอนวิธี และเขียนโปรแกรมเพื่อช่วยประมวลผลข้อมูล
นักเรียนทราบหรือไม่ว่าทุกคนสามารถเขียนโปรแกรมได้ เนื่องจากพื้นฐานการเขียนโปรแกรม คือการคิดแก้ปัญหาอย่างเป็นขั้นตอน และเป็นระบบ ซึ่งนักเรียนต้องเคยฝึกฝนวิธีการแก้ปัญหาต่างๆ ในชีวิตจริงมาแล้วทั้งสิ้น ในบทนี้จะกล่าวถึงขั้นตอน และเครื่องมือสำหรับการแก้ปัญหาในชีวิตประจำวันและปัญหาที่ใช้การคำนวณเป็นพื้นฐานเพื่อนำไปสู่การเขียนโปรแกรมในบทถัดไป
กิจกรรมพื้นฐานในการดำรงชีวิตของมนุษย์ ปัญหาบางปัญหาสามารถหาคำตอบได้ทันที ขณะที่บางปัญหาอาจต้องใช้เวลา ในการค้นหาคำตอบ ซึ่งคำตอบที่ได้ต้องสามารถพิสูจน์ได้ว่าเป็นคำตอบที่ถูกต้อง น่าเชื่อถือ และสามารถนำไปอ้างอิงต่อได้ การแก้ปัญหาของแต่ละบุคคลมีขั้นตอนและใช้เวลาที่แตกต่างกัน ความรู้และประสบการณ์จะส่งผลต่อความสามารถในการแก้ปัญหา อย่างไรก็ตามทุกคนต่างต้องการหาวิธีการ ในการแก้ปัญหาที่ทำให้ได้คำตอบที่ถูกต้องในเวลารวดเร็ว
การแก้ปัญหา ประกอบด้วย 4 ขั้นตอนดังรูป คือ
1.การวิเคราะห์และกำหนดรายละเอียดของปัญหา เป็นการทำความเข้าใจเกี่ยวกับรายละเอียดเงื่อนไข ข้อกำหนด รวมถึงข้อจำกัดต่าง ๆ ของปัญหา ข้อมูลที่จำเป็นในการแก้ปัญหา ตรวจสอบว่ามีข้อมูลเพียงพอหรือไม่ จะหาข้อมูลเพิ่มเติมให้ครบถ้วนต่อการใช้แก้ปัญหาได้อย่างไร ข้อมูลผลลัพธ์ที่ได้คืออะไร และจะตรวจสอบความถูกต้องผลลัพธ์ที่ได้อย่างไร
2. การวางแผนการแก้ปัญหา เป็นการคิดค้นกระบวนการต่าง ๆที่เป็นขั้นตอน ตั้งแต่เริ่มต้นจนกระทั่งได้ผลลัพธ์ที่ต้องการ ซึ่งต้องอาศัยประสบการณ์และความรู้ของผู้แก้ปัญหา โดยอาจนำวิธีที่เคยแก้ปัญหา หรือค้นหาวิธีการอื่นแล้ว นำมาประยุกต์เข้ากับปัญหาที่แก้ไข เครื่องมือที่ใช้ในการวางแผนแก้ปัญหา สำหรับการพัฒนาโปรแกรม อาจเลือกใช้รหัสลำลอง หรือผังงาน โดยวิธีการแก้ปัญหาที่ได้เรียกว่า ขั้นตอนวิธีหรืออัลกอริทึม (algorithm) ซึ่งเป็นลำดับขั้นตอนในการแก้ปัญหาหรือ การทำงานที่ชัดเจนตั้งแต่เริ่มต้นแก้ปัญหา จนกระทั่งได้ผลลัพธ์ที่ต้องการ
3.การดำเนินแก้ปัญหา เป็นการนำกระบวนการที่ได้วางแผนได้ไว้มาปฏิบัติ หรือพัฒนาโปรแกรมเพื่อแก้ปัญหา โดยใช้ภาษาโปรแกรมช่วยในการดำเนินการ
4. การตรวจสอบและประเมินผล ขั้นตอนนี้จะทำควบคู่ไปกับขั้นตอนการดำเนินการแก้ปัญหา โดยการตรวจสอบผลลัพธ์ที่ได้ หากผลลัพธ์ที่ได้ไม่ถูกต้อง หรือยังมีส่วนที่ต้อง ปรับปรุงอยู่ ต้องย้อนกลับไปทำซ้ำตั้งแต่ขั้นตอนแรกจนกว่าจะได้ผลที่ถูกต้อง
นักเรียนจะนำขั้นตอนการแก้ปัญหาข้างต้น มาแก้ปัญหาที่ต้องการได้อย่างไร ลองศึกษาตัวอย่างต่อไปนี้
ตัวอย่างที่ 2.1 การหาค่ามากที่สุดของจำนวนสามจำนวนที่กำหนดให้
การแก้ปัญหามีขั้นตอนดังนี้
ขั้นตอนที่ 1 การวิเคราะห์และกำหนดรายละเอียดของปัญหา
ข้อมูลเข้า จำนวนสามจำนวน ได้แก่ a,b และ c
ข้อมูลออกหรือสิ่งที่ต้องการ ตัวเลขที่มีค่ามากที่สุดของเลขสามจำนวน
วิธีตรวจสอบความถูกต้อง ดำเนินการหาตัวเลขที่มากที่สุดด้วยตนเอง โดยกำหนดชุดตัวเลข 3 จำนวน เช่น 30,5 และ 25 ในกรณีนี้ตัวเลขที่มีค่ามากที่สุด คือ30
ขั้นตอนที่ 2 การวางแผนการแก้ปัญหา
เปรียบเทียบ a และ b เพื่อหาค่ามากกว่าระหว่างสองจำนวน
นำค่าที่ได้เปรียบเทียบกับ c เพื่อหาค่าที่มากว่า
ค่าที่มากที่สุดคือ ผลลัพธ์ที่ได้
ขั้นตอนที่ 3 การดำเนินการแก้ปัญหา
ดำเนินการทดสอบตามขั้นตอนที่วางแผนได้กับชุดตัวเลขที่กำหนด โดยสมมติ a,b และ c เป็น 30, 5 และ 25 ตามลำดับ
เปรียบเทียบเพื่อหาค่าที่มากกว่าระหว่าง 30 และ 5 พบว่า 30 เป็นค่าที่มากกว่า
เปรียบเทียบเพื่อหาค่ามากว่าระหว่าง 30 และ 25 พบว่า 30 เป็นค่าที่มากกว่า
ค่าที่มากที่สุดของ 30,5 และ25 คือ30
ขั้นตอนที่ 4 การตรวจสอบและปรับปรุง
เมื่อพิจารณาคำตอบที่ได้คือ 30 กับค่าที่เหลือซึ่งได้แก่ 5 และ 25 พบว่า 30 มีค่า มากกว่าค่าที่เหลือทั้งคู่ คำตอบนี้จึงเป็นคำตอบที่ถูกต้องตามข้อกำหนดของสิ่งที่ต้องการ
แนวคิดข้างต้นใช้งานได้เนื่องจากว่าหากพิจารณาจำนวนสามจำนวนใดๆ เมื่อ a > b และ b< c แล้ว a > c ด้วย
เมื่อเราทำความเข้าใจกับปัญหาและความต้องการแล้ว สิ่งต่อไปคือการคิดอย่างมีเหตุผลเพื่อหาแนวทางในการแก้ปัญหา โดยกระบวนการในการออกแบบแนวทางการแก้ปัญหานั้น จะต้องถ่ายทอดความคิดและความเข้าใจไปสู่การนำไปปฏิบัติได้ การถ่ายทอดความคิดจะต้องมีจุดเริ่มต้น จุดสิ้นสุด และลำดับก่อนหลังที่ชัดเจนอาจอยู่ในรูปของข้อความที่เรียงกันเป็นลำดับซึ่งเรียกว่ารหัสลำลอง (pseudocode) หรืออยู่ในรูปผังงาน (flowchart) ที่ประกอบไปด้วยสัญลักษณ์ ข้อความ และเส้นเชื่อมโยง ทำให้เห็นคำสั่งที่ต้องการปฏิบัติ ลักษณะการทำงาน และลำดับในการปฏิบัติงานการถ่ายทอดความคิด เป็นเครื่องมือที่จะช่วยให้สามารถวางแผนการแก้ปัญหา และพัฒนาโปรแกรมได้อย่างถูกต้อง ครบถ้วน และตรวจสอบได้โดยเฉพาะปัญหา หรือโปรแกรมที่ซับซ้อน
2.2.1 รหัสลำลอง
การเขียนรหัสลำลองเป็นการใช้คำบรรยายขั้นตอนอย่างชัดเจนในการแก้ปัญหา หรือการทำงานของโปรแกรมซึ่งในรูปแบบของการเขียนจะขึ้นอยู่กับประสบการณ์ และความถนัดของผู้เขียน โดยอาจเขียนเป็นภาษาพูด ทำให้เขียนง่ายไม่ต้องกังวลรูปแบบ
ถ้าผู้เขียนมีความชำนาญแล้ว สามารถเขียนรหัสลำลองในรูปแบบที่คล้ายกับ ภาษาโปรแกรม ซึ่งจะสามารถนำไปดัดแปลงเป็นภาษาโปรแกรมได้ง่าย การใช้รหัสสำรองในการถ่ายทอดความคิดแสดงดังตัวอย่างต่อไปนี้
ตัวอย่างสถานการณ์ : เขียนรหัสลำลองการคำนวณหาพื้นที่รูปสามเหลี่ยม
เริ่มต้น
1. รับค่าความยาวฐาน
2. นับค่าความสูง
3. คำนวณพื้นที่สามเหลี่ยม จากสูตร พื้นที่สามเหลี่ยม คือ 1/2 X ความยาวฐาน X ความยาวสูง
4. แสดงผลลัพธ์พื้นที่สามเหลี่ยม
จบ
การเขียนรหัสลำลองเป็นการใช้คำบรรยายอธิบายขั้นตอนอย่างชัดเจนในการแก้ปัญหา หรือการทำงานของโปรแกรม โดยใช้ถ้อยคำหรือประโยคคำสั่งที่เขียนอยู่ในรูปแบบของภาษาที่เข้าใจง่าย เช่นภาษาอังกฤษ ภาษาไทย ที่ไม่ขึ้นกับภาษาคอมพิวเตอร์ภาษาใดภาษาหนึ่ง เพื่ออธิบายรายละเอียดของอัลกอริทึม
2.2.1 ผังงาน (Flowchart)
ผังงาน คือ แผนภาพแสดงลำดับขั้นตอนการทำงานของอัลกอริทึม เป็นเครื่องมือที่ใช้การรวบรวมจัดลำดับความคิด เพื่อให้เห็นขั้นตอนการทำงานที่ชัดเจนและใช้วางแผนการทำงานขั้นแรก โดยสัญลักษณ์ Flowchart แสดงถึงการทำงานลักษณะต่างๆ เชื่อมต่อกัน
ผังงานเป็นเครื่องมือหนึ่งที่ใช้ในการวางแผนหรือออกแบบการแก้ปัญหาเพื่อให้สามารถนำไปปฏิบัติตาม หรือเขียนโปรแกรมเพื่อสั่ง ให้เครื่องคอมพิวเตอร์ทำงานได้ง่าย สถาบันมาตรฐานแห่งชาติอเมริกา (The American National Standard Institute : ANSI) ได้กำหนดสัญลักษณ์ที่เป็นมาตรฐานในการเขียนผังงานไว้ ซึ่งในที่นี้แนะนำการใช้งาน 5 สัญลักษณ์ สัญลักษณ์ขึ้นพื้นฐาน
ตัวอย่างสถานการณ์ : เขียนผังงานการคำนวณหาพื้นที่รูปสามเหลี่ยม
เขียนรหัสลำลอง :
เริ่มต้น
1. รับค่าความยาวฐาน
2. นับค่าความสูง
3. คำนวณพื้นที่สามเหลี่ยม จากสูตร พื้นที่สามเหลี่ยม คือ 1/2 X ความยาวฐาน X ความยาวสูง
4. แสดงผลลัพธ์พื้นที่สามเหลี่ยม
จบ
เขียนผังงาน :
บางครั้งในการเขียนรหัสลำลอง หรือผังงานจะมีชื่อข้อมูลที่ยาวจนทำให้เกิดความสับสน หรือมีการอ้างถึงชื่อข้อมูลซ้ำกันหลายครั้ง เพื่อให้เขียนได้ง่ายและกระชับสามารถแทนชื่อข้อมูลตัวแปร (variable) ซึ่งอาจเป็นอักษรภาษาอังกฤษ และ ณ ขณะใดขณะหนึ่งตัวแปรจะมีค่าได้เพียงค่าเดียวเท่านั้น อย่างไรก็ตามค่าของตัวแปรสามารถเปลี่ยนแปลงได้ ขึ้นอยู่กับการดำเนินการกับตัวแปรนั้น ๆ
การกำหนดค่าอย่างใดอย่างหนึ่งให้กับตัวแปรสามารถทำได้ 3 วิธีคือ
การรับค่าจากภายนอก
การกำหนดค่าจากค่าคงที่หรือตัวแปรอื่น
การกำหนดค่าจากการคำนวณ
สัญลักษณ์ที่นิยมใช้สำหรับกำหนดค่าให้กับตัวแปร คือ<--------ใช้เพื่อนำค่าทางขวาของ <--------ไปกำหนดให้กับตัวแปรทางด้านซ้ายของ <-------- เช่น
x <-------- 2 นำค่า 2 ไปใส่ในตัวแปร x
a <-------- b x c นำผลลัพธ์ของตัวแปร b คูณกับตัวแปร c ไปใส่ในตัวแปร a
s <-------- a x b นำผลลัพธ์ของตัวแปร a คูณกับตัวแปร b ไปใส่ในตัวแปร a
x <-------- x + 1 นำผลลัพธ์ของตัวแปร x บวกกับ 1 ไปใส่ในตัวแปร x
y <-------- 3 นำค่า 3 ไปใส่ในตัวแปร y
z <-------- x x y นำผลลัพธ์ของตัวแปร x คูณกับตัวแปร y ไปใส่ในตัวแปร z
การตั้งชื่อตัวแปรควรตั้งชื่อให้เหมาะสมกับค่าที่เก็บในตัวแปร เช่น ตัวแปร name เก็บข้อมูลชื่อ ตัวแปรและเก็บข้อมูลอายุ
เขียนรหัสลำลอง :
เริ่ม
1. width <-------- รับค่าความกว้างของฐาน
2. height <-------- รับค่าความสูง
3. trianglearea <-------- ½ x ความกว้างของฐาน x ความสูง
4. แสดงผลลัพธ์ trianglearea
จบ
เขียนผังงาน :
ตัวอย่างสถานการณ์ หลังรับประทานข้าว ถ้านักเรียนมีเงินเหลือจะซื้อขนม
เขียนรหัสลำลอง :
เริ่มต้น
1.ซื้อข้าวและกินข้าว
2.ถ้าเงินเหลือ จริง
2.1 ซื้อขนม
จบ
เขียนผังงาน :