ในชีวิตประจำวันทุกคนต้องเคยพบกับปัญหาต่าง ๆ เช่น ปัญหาด้านการเรียน ปัญหาด้านการงาน ปัญหาด้านการเงิน เป็นต้น เมื่อพบกับปัญหา แต่ละคนมีวิธีที่จะจัดการหรือแก้ปัญหาเหล่านั้นแตกต่างกันไปตามความรู้ ความสามารถ และประสบการณ์ของบุคคล ซึ่งแต่ละวิธีอาจให้ผลลัพธ์เหมือนหรือแตกต่างกัน แต่ถ้านำวิธีการแก้ปัญหาต่าง ๆ มาศึกษาพิจารณาจะพบว่าหลายวิธีคล้ายคลึงกัน จนสามารถสรุปเป็นทฤษฎีที่สามารถนำไปประยุกต์ใช้ ได้กับหลาย ๆ ปัญหา โดยปกติแล้วมนุษย์มีกระบวนการในการแก้ปัญหาด้วยตนเองอยู่เสมอ แต่ในบางครั้งต้องอาศัยการเรียนรู้ระดับสูง เพื่อแก้ปัญหาได้อย่างเป็นขั้นตอน มีระบบ เป็นไปอย่างสมเหตุสมผลและมีประสิทธิภาพ
การแก้ปัญหาด้วยกระบวนการเทคโนโลยีสารสนเทศ
การแก้ปัญหาอย่างเป็นระบบจะมีกระบวนการแก้ปัญหาอยู่ 4 ขั้นตอน ดังนี้
1. การวิเคราะห์และกำหนดรายละเอียดของปัญหา
เป็นขั้นตอนที่ถือว่าสำคัญที่สุด เป็นขั้นตอนแรกก่อนที่จะลงมือแก้ปัญหา ซึ่งผู้แก้ปัญหามักจะไม่ให้ความสำคัญ เพราะเป็นขั้นตอนที่ต้องใช้เวลามาก จนทำให้ผู้แก้ปัญหาข้ามขั้นตอนนี้ไปดำเนินการเลือกเครื่องมือหรือข้ามขั้นตอนไปดำเนินการแก้ปัญหาเลยทันที ในการวิเคราะห์ปัญหา มีแนวทางหลายรูปแบบซึ่งในที่นี้จะแบ่งออกเป็น 5 ขั้นตอน ดังนี้
กล่าวโดยสรุป การวิเคราะห์งานจะเป็นการศึกษาผลลัพธ์(Output) ข้อมูลที่นำเข้า (Input) และวิธีการประมวลผล(Process) รวมทั้งการกำหนดชื่อตัวแปร (Variable) ที่จะใช้ในโปรแกรมนั่นเองวิธีการวิเคราะห์งานให้ได้ผลดีนั้นมีหลายแบบ แต่หลักเกณฑ์ใหญ่ ๆ ที่นิยมใช้กันอย่างทั่วไปสามารถแยกเป็นข้อ ๆ ตามลำดับดังต่อไปนี้
1.1 สิ่งที่โจทย์ต้องการ หมายถึง สิ่งที่ต้องการให้เครื่องคอมพิวเตอร์ทำให้ เช่น ต้องการให้คำนวณคะแนนเฉลี่ยของนักศึกษา ต้องการให้คำนวณเงินเดือนและค่าแรง เป็นต้นงานแต่ละชิ้นอายต้องกานใช้เครื่องทำงานให้มากว่าหนึ่งอย่าง ซึ่งควรจะเขียนไว้เป็นข้อ ๆ ให้ชัดเจน การพิจารณาถึงสิ่งที่โจทย์ต้องการเป็นส่วนที่สำคัญมาก เพราะถ้าไม่ทราบก็ไม่สามารถจะทำขั้นตอนต่อไปได้เลย หรือถ้าเข้าใจส่วนนี้ผิดก็จะทำให้งานขั้นตอนต่อไปผิดหมด
1.2 ผลลัพธ์ที่ต้องแสดง (Output) หมายถึง การวิเคราะห์ลักษณะของงาน หรือรูปแบบผลลัพธ์ที่ต้องการให้คอมพิวเตอร์แสดงออกมาว่าควรจะมีลักษณะอย่าง ไร มีรายละเอียดที่ต้องการให้แสดงในรายงานมากน้อยเพียงใด หรือรายละเอียดชนิดใดที่ไม่ต้องการให้แสดงออกมาในรายงาน ในกรณีนี้เป็นหน้าที่ของผู้เขียนโปรแกรมเองว่าจะต้องการรูปแบบรายงานออกมา โดยมีรายละเอียดที่จำเป็นและสวยงามเพียงใด เนื่องจากรายงานหรือผลลัพธ์นี้มีความสำคัญต่อผู้บริหาร เนื่องจากผู้บริหารจะใช้รายงานหรือผลลัพธ์ไปช่วยในการตัดสินใจวิเคราะห์และ แก้ไขปัญหาต่าง ๆ ได้
1.3 ข้อมูลที่ต้องนำเข้า (Input) หมายถึง ข้อมูลที่ต้องป้อนเข้ามาเพื่อใช้ในการประมวลผล ซึ่งเป็นขั้นตอนที่ต่อเนื่องจากการวิเคราะห์ลักษณะของผลลัพธ์ คือ เมื่อพิจารณาถึงลักษณะของ Output ที่แน่นอนแล้ว ข้อมูลที่ต้องนำเข้าไปก็ควรจะพิจารณาให้เหมาะสมกับผลลัพธ์ที่ต้องการแสดง ด้วย ทั้งนี้อาจจะต้องพิจารณาถึงขั้นตอนในการประมวลผลควบคู่ไปด้วย
1.4 ตัวแปรที่ใช้ (Variable) หมายถึง การกำหนดชื่อแทนความหมายของข้อมูลต่าง ๆ เพื่อความสะดวกในการอ้างถึงข้อมูลนั้น และการเขียนโปรแกรมด้วยการตั้งชื่อตัวแปรที่ใช้ควรคำนึงถึงความหมายที่ เกี่ยวข้องกับข้อมูล การตั้งขื่อตัวแปรนี้จะขึ้นอยู่กับกฎเกณฑ์ของภาษาคอมพิวเตอร์ที่ใช้ในการ เขียนโปรแกรม เพราะภาษาคอมพิวเตอร์แต่ละภาษามีกฎเกณฑ์และความสามารถในการตั้งตัวแปรแตก ต่างกันไป แต่โดยทั่ว ๆ ไป การตั้งชื่อตัวแปรจะพิจารณาความหมายของข้อมูลว่าตรงกับคำใดในภาษาอังกฤษ แล้วนำมาตัดแปลงหรือย่อให้เข้ากับหลักเกณฑ์ของภาษาคอมพิวเตอร์ที่ใช้
1.5 วิธีการประมวลผล (Processing) หมายถึงวิธีการประมวลผลโดยแสดงขั้นตอนต่าง ๆ ที่ต้องทำตามาลำดับ เริ่มจาการรับข้อมูลนำไปประมวลผลจนได้ผลลัพธ์ ขั้นตอนนี้จะต้องแสดงการทำงานที่ต่อเนื่องตามลำดับ จึงต้องจัดลำดับก่อนหลังให้ถูกต้อง ในขั้นตอนของวิธีการนี้ถ้ายิ่งกระทำให้ละเอียดก็จะช่วยในการเขียนโปรแกรม ยิ่งง่ายขึ้น
2. การเลือกเครื่องมือและขั้นตอนการออกแบบวิธีการแก้ปัญหา
หลังจากที่ได้วิเคราะห์ปัญหาแล้ว ขั้นตอนต่อไปจะใช้เครื่องมือช่วยในการออกแบบโปรแกรม โดยเขียนเป็นลำดับขั้นตอนการทำงานของโปรแกรมที่เรียกว่าอัลกอริทึม (Algorithm) โดยจะเขียนแสดงขั้นตอนการแก้ปัญหา ด้วยประโยคที่ชัดเจนไม่คลุมเครือ และมีรายละเอียดการทำงานพอสมควรเพียงพอที่จะนำไปเขียนเป็นโปรแกรมให้ทำงาน จริง โดยอัลกอริทึมนั้นอาจเขียนให้อยู่ในรูปของรหัสจำลองหรือซูโดโค้ด (Pseudo-code) หรือเขียนเป็นผังงาน (Flowchart) ก็ได้
การเขียนผังงาน เป็นการอธิบายลำดับวิธีการทำงาน โดยใช้สัญลักษณ์ที่มีรูปร่างต่าง ๆ โดยมีความหมายที่ตกลงกัน ควบคู่ไปกับการกำหนดทิศทางด้วยเส้นที่มีลูกศร เพื่อแสดงการไหลของข้อมูลหรือลำดับการทำงาน โดยมีตำแหน่งเริ่มของวิธีการเพียงตำแหน่งเดียวและตำแหน่งสิ้นสุดการทำงานเพียงจุดเดียวเช่นกัน ซึ่งผังงานสามารถจำแนกได้เป็น2 ประเภท คือ
2.1 ผังงานระบบ (System Flowchat)
เป็นผังงานที่แสดงถึงขั้นตอนการทำงานภายในระบบหนึ่ง ๆ โดยจะแสดงถึงความเกี่ยวข้องของส่วนที่สำคัญต่าง ๆ ในระบบนั้น เช่น เอกสารเบื้องต้น หรือสื่อบันทึกข้อมูลที่ใช้อยู่เป็นอะไร และผ่านไปยังหน่วยงานใด มีกิจกรรมอะไรในหน่วยงานนั้น แล้วจะส่งต่อไปหน่วยงานใด เป็นต้น ดังนั้นผังงานระบบอาจเกี่ยวข้องกับคน วัสดุ และเครื่องจักร ซึ่งแต่ละจุดจะประกอบไปด้วย การนำข้อมูลเข้า วิธีการประมวลผลและการแสดงผลลัพธ์ (Input – Process – Output) ว่ามาจากที่ใดอย่างกว้าง ๆ โดยจะไม่บอกรายละเอียดของการปฏิบัติมากนัก จึงไม่สามารถเขียนโปรแกรมจากผังงานระบบได้
2.2 ผังงานโปรแกรม(Program Flowchat) หรือเรียกสั้น ๆ ว่า ผังงาน
ผังงานประเภทนี้แสดงถึงขั้นตอนของคำสั่งที่ใช้ในโปรแกรม ผังงานนี้อาจสร้างจากผังงานระบบโดยผู้เขียนผังงานจะดึงเอาแต่ละจุดที่เกี่ยว ข้องการทำงานของเครื่องคอมพิวเตอร์ที่ปรากฏในผังงานระบบมาเขียน เพื่อให้ทราบว่าถ้าจะใช้คอมพิวเตอร์ทำงานในจุดนั้นเพื่อให้ได้ผลลัพธ์ที่ตาม ต้องการ ควรที่จะมีขั้นตอนคำสั่งอย่างไร และจะได้นำมาเขียนโปรแกรมคอมพิวเตอร์ทำงานต่อไป
3. การดำเนินการแก้ไขปัญหา
เป็นขั้นตอนที่ต้องลงมือแก้ปัญหาโดยใช้เครื่องมือที่เลือกไว้ โดยใช้โปรแกรมสำเร็จรูปหรือการใช้ภาษาคอมพิวเตอร์เขียนโปรแกรมแก้ปัญหา ขั้นตอนนี้ต้องอาศัยความรู้เกี่ยวกับเครื่องมือที่เลือกใช้ ซึ่งผู้แก้ปัญหาต้องศึกษาให้เข้าใจและเชี่ยวชาญ ในขณะดำเนินการก็จะมีการประเมินผลในระหว่างการดำเนินการด้วย ซึ่งหากพบว่ามีแนวทาง ขั้นตอน เครื่องมือที่ดีกว่าที่ผู้แก้ปัญหาได้ออกแบบไว้ ก็สามารถปรับเปลี่ยนการดำเนินใหม่ได้ โดยไม่จำเป็นต้องยึดขั้นตอนการเลือกเครื่องมือและขั้นตอนการออกแบบวิธีการแก้ปัญหาที่เคยออกแบบไว้ เพราะบางครั้งการเลือกเครื่องมือและขั้นตอนการออกแบบวิธีการแก้ปัญหา อาจเกิดจากความผิดพลาดของขั้นตอนการวิเคราะห์และการกำหนดรายละเอียดของปัญหาที่พิจารณาไม่ครอบคลุมได้
4. การตรวจสอบและการปรับปรุงวิธีการ
หลังจากที่ได้ลงมือแก้ปัญหาแล้ว ผู้แก้ปัญหาจะต้องตรวจสอบให้แน่ใจว่าวิธีการที่ได้ดำเนินการมานั้นให้ผลลัพธ์ที่ถูกต้อง โดยตรวจสอบความสอดคล้องของขั้นตอนการดำเนินการแก้ปัญหากับรายละเอียดของปัญหา ซึ่งได้แก่ ข้อมูลนำเข้าและข้อมูลออกเพื่อให้มั่นใจว่าสามารถรองรับข้อมูลนำเข้าได้ทุกกรณีอย่างถูกต้องสมบูรณ์ ในขณะเดียวกันก็ต้องปรับปรุงวิธีการในการแก้ปัญหาให้การแก้ปัญหานี้ได้ผลลัพธ์ที่ดีที่สุด
👻 กิจกรรมที่ 1.1 การแก้ปัญหา
1. ข้อใดคือ ผลลัพธ์จากขั้นตอนวิธีต่อไปนี้
1. ให้ตัวแปร i เท่ากับ 0
2. ทำซ้ำ เมื่อ i น้อยกว่า 5
2.1. ให้ i เท่ากับ i+1
2.2. พิมพ์ “hi ”
2.3. ถ้า i มากกว่า 4
2.3.1. พิมพ์ “Hello ”
ก. hi hi hi Hello hi Hello ข. hi hi hi hi Hello ค. hi Hello hi Hello hi ง. hi hi hi hi hi Hello
2. ขั้นตอนวิธีต่อไปนี้ ถ้า number มีค่าเท่ากับ 50 จะแสดงค่าตรงกับข้อใด
1. ให้ number เป็นจำนวนเต็มบวก
2. ให้ตัวแปร i มีค่าเป็น 1 และตัวแปร s มีค่าเป็น 0
3. ทำซ้ำจนกว่า i > number
3.1 ให้ s มีค่าเท่ากับ s + i
3.2 ให้ i มีค่าเท่ากับ i + 1
4. พิมพ์ค่า s
ก. 50 ข. 1225 ค. 1275 ง. 2550
3. ขั้นตอนวิธีต่อไปนี้ ถ้า n มีค่าเป็น 10 ผลลัพธ์ที่ได้จะตรงกับข้อใด เมื่อ k! หมายถึงแฟคทอเรียลของ k
1. ให้ n เป็นจำนวนเต็มบวก
2. ให้ตัวแปร i มีค่าเป็น 2
3. ทำซ้ำเมื่อ i < n
3.1 ถ้าเศษที่เหลือจากการหาร ((i - 1)! + 1) ด้วย i เท่ากับ 0
3.1.1 พิมพ์ค่า i
3.2 ให้ i มีค่าเท่ากับ i+1
ก. 2 3 5 7 ข. 2 4 6 8 ค. 2 4 7 9 ง. 3 5 7 9
4. ถ้า n มีค่าเป็น 10 การทำงานใน ขั้นตอนที่ 3.1 ในข้อ 3 จะถูกประมวลผลกี่ครั้ง
ก. 7 ข. 8 ค. 9 ง. 10
5. พิจารณารหัสเทียม (pseudocode) ต่อไปนี้
1) รับข้อมูลจำนวนเต็มเก็บในตัวแปรชื่อ n
2) ให้ตัวแปร a เริ่มต้นมีค่าเท่ากับ 0
3) ให้ตัวแปร b เริ่มต้นมีค่าเท่ากับ 1
4) ถ้า n มีค่าเท่ากับ 0 จะแสดงค่า a เป็นคำตอบ
5) ให้ตัวแปร i เริ่มต้นมีค่าเท่ากับ 2
6) ทำซ้ำข้อ 6.1-6.3 ตั้งแต่ i มีค่าเป็น 2 จนกระทั่ง i มีค่าน้อยกว่าหรือเท่ากับ n แต่ละรอบ i เพิ่ม ค่าทีละ 1
6.1) c = a+b
6.2) a = b
6.3) b = c
7) แสดงค่า b เป็นคำตอบ ถ้าทำการป้อนตัวเลขจำนวนเต็ม n เป็น 9 แล้วคำตอบที่ได้จะตรงกับข้อใด
ก. 21 ข. 34 ค. 55 ง. 67