บรรดาปัญหาต่าง ๆ ที่เราต้องประสบอยู่ในชีวิตประจำวันนั้นจัดเป็นปัญหาหลากหลายรูปแบบ ถ้าจะจัดกลุ่มโดยพิจารณาที่วิธีการแก้ปัญหาก็จะแบ่งได้เป็น 2 กลุ่ม คือ กลุ่มแรกเป็นปัญหาที่มีลำดับขั้นตอนในการแก้ปัญหาอย่างเป็นระบบ เป็นขั้นตอนที่เป็นวิทยาศาสตร์ มีเหตุผลอธิบายได้ กลุ่มที่สองเป็นปัญหาที่ไม่มีลำดับขั้นตอนในการแก้ปัญหาที่เป็นระบบ เช่น ปัญหาที่ต้องใช้ความรู้สึกนึกคิด ต้องใช้ดุลยพินิจในการตัดสินแก้ไข ขึ้นอยู่กับพื้นฐานทางวัฒนธรรมประเพณีความเชื่อ ภูมิหลัง และเหตุปัจจัยแวดล้อมอื่น ๆ มาเกี่ยวข้องกับการแก้ปัญหานั้น ๆ
จากปัญหาทั้งสองกลุ่มดังกล่าวข้างต้น กลุ่มแรกเราจะเรียกว่าเป็นปัญหาอัลกอริทมิก (Algorithmic Problem) เป็นปัญหาที่มีอัลกอริทึม (Algorithm) ในการแก้ปัญหา เราสามารถใช้เครื่องคอมพิวเตอร์ประมวลผลตามอัลกอริทึมนั้นได้ นั่นคือมีลำดับกิจกรรมเป็นขั้น ๆ เพื่อการแก้ปัญหาจนถึงขั้นท้ายสุดก็จะได้คำตอบที่สมบูรณ์ ปัญหากลุ่มนี้ส่วนใหญ่จะเกี่ยวข้องกับปัญหาทางคณิตศาสตร์ เกี่ยวข้องกับตัวเลขและวิธีการคำนวณทางคณิตศาสตร์ เกี่ยวข้องกับด้านภาษา นั่นคือ ตัวอักษร คำ และข้อความที่เป็นสารสนเทศ และเกี่ยวข้องกับด้านรูปภาพ Graphic นั่นคือเกี่ยวข้องกับจุด (Point) เส้น (Lines) รูปทรง ต่าง ๆ เช่น ทรงกลม (Circle) ทรงเหลี่ยม (Rectangle) เป็นต้น
"An algorithm is a list of instructions specifying a precise description of a step-by-step process that is guaranteed to give the answer to any problem of a given type and to terminate after a finite number of steps have been completed."
" An algorithmic problem is any problem, conceptual or practical, whose solution can be expressed by an algorithm."
จากคำจำกัดความพอสรุปสั้นๆ ได้ว่า อัลกอริทึมเป็นลำดับของคำสั่งที่คอมพิวเตอร์ จะปฏิบัติตามเพื่อแก้ปัญหาให้กับเรา โดยคำสั่งจะเรียงกันตามลำดับ ก่อนหลังจะไม่ข้ามขั้น ผลลัพธ์แต่ละคำสั่งจะส่งต่อกันตามลำดับขั้น จนถึงคำสั่งสุดท้าย จะได้ผลลัพธ์ที่เสร็จสมบูรณ์
ในชีวิตประจำวันเมื่อเราประสบปัญหาใด ๆ ก็ตาม สิ่งแรกที่เรากระทำก็คือ การพินิจพิเคราะห์ปัญหานั้นอย่างถี่ถ้วน แล้วขั้นต่อไปก็จะตั้งคำถามถามตัวเองเป็นลำดับว่า อะไรคือปัญหาหรือปัญหานั้นต้องการคำตอบอะไร สิ่งใดเป็นข้อมูลบ้าง และวิธีการแก้ปัญหาควรเป็นอย่างไร จากนั้นก็จะคิดวางแผนการแก้ปัญหา ซึ่งวิธีการแก้ปัญหาบางปัญหาอาจมีทางเลือกได้หลายทางเลือก แต่ละทางเลือกจะมีความแตกต่างกันตามกระบวนการ ปัจจัย และสภาพแวดล้อมที่เป็นองค์ประกอบ ทางเลือกทางหนึ่งอาจเป็นทางตรง อีกทางเลือกหนึ่งอาจเป็นทางอ้อม นั่นคือข้อแตกต่างอยู่ที่ใช้เวลาสั้นกว่าหรือใช้เวลายาวกว่ากัน จำนวนกิจกรรมย่อยมากว่าหรือน้อยกว่ากันนั่นเอง แต่ไม่ว่าจะเป็นทางเลือกใด คำตอบของปัญหาที่ได้จะเหมือนกัน
ในการวิเคราะห์ปัญหา (โจทย์) เพื่อจัดทำซอฟต์แวร์สำหรับให้คอมพิวเตอร์ประมวลผลข้อมูลนั้น ก็ไม่ได้แตกต่างไปจากหลักการที่กล่าวแต่ประการใด อาจกล่าวได้ว่าเป็นการวิเคราะห์ตามธรรมชาติของการแก้ปัญหาในชีวิตประจำวันนั่นเอง เพียงแต่ปัญหาที่จะนำมาวิเคราะห์เพื่อจัดทำซอฟต์แวร์นั้นจะต้องเป็นปัญหาประเภท อัลกอริทมิกเท่านั้นเราอาจแบ่งขั้นตอนการวิเคราะห์ปัญหาได้ 3 ขั้น ดังนี้
- ให้ผู้ใช้ใส่ตัวเลขคะแนนทางแป้นพิมพ์ (Key board) นั่นก็คือเป็นการบอกว่า ข้อมูลเป็นตัวเลขเป็นเลขอะไรก็แล้วแต่ผู้ใช้เตรียมมา โดยใส่เองทางแป้นพิมพ์ เมื่อโปรแกรมทำงานมาถึงคำสั่งให้ใส่ข้อมูล
- ให้ประมวลผลคะแนนสอบนักเรียนทั้งชั้นเรียน นั่นก็หมายถึงว่าจะมีข้อมูลตัวเลขตัวหนึ่งที่บ่งบอกจำนวนนักเรียนในชั้นนั้น ซึ่งอาจจะเป็นค่าเท่าไรก็ได้ โจทย์ไม่ได้กำหนดมาตายตัว ข้อมูลที่บ่งบอกจำนวนนักเรียน ดังกล่าวนี้ จึงสามารถเปลี่ยนแปรค่าได้ สุดแล้วแต่ผู้ใช้จะกำหนดในแต่ละครั้งของการแก้ปัญหางาน จึงใช้ตัวแปรแทนข้อมูลตัวนี้ไปก่อน เช่น จำนวนนักเรียน N คน เป็นต้น
สรุปได้ว่าลักษณะข้อมูลที่วิเคราะห์ได้จากโจทย์ปัญหาจะมีอยู่ 3 ลักษณะ ดังนี้
- ข้อมูลที่โจทย์กำหนดมาให้โดยตรง ตัวอย่างเช่น
กำหนดให้ a = 20 b = 15 c = 5
จำนวนนักเรียน 10 คน
รายชื่อลูกค้าคือ กานดา จินตนา และ อาภรณ์- ข้อมูลที่โจทย์ไม่ได้บอกโดยตรง แต่บอกมาโดยอ้อม โดยบ่งบอกลักษณะ แหล่งที่มา ความเกี่ยวพันหรือพรรณนาถึงข้อมูลแบบเปิดกว้าง ตัวอย่างเช่น
จำนวนนักเรียนทั้งชั้นเรียน นั่นคือ จำนวนนักเรียน N คน
ตัวเลขข้อมูลตามที่ผู้ใช้เตรียมมา นั่นคือ ข้อมูลเป็นตัวเลขค่าตามที่ผู้ใช้ เตรียมมา
เลขจำนวนเต็ม 2 จำนวนให้ใส่ทางแป้นพิมพ์ นั่นคือ ข้อมูลเป็นเลขจำนวน เต็มตามที่ผู้ใช้เตรียมมา 2 ตัว- ข้อมูลที่เป็นพื้นฐานกิจกรรมการประมวลผลนั้น ๆ เป็นข้อมูลที่ทราบกันดีแล้วว่าจะต้องใช้ในกระบวนการประมวลผลเรื่องนั้น ๆ โจทย์ไม่จำเป็นต้องบอกหรือชี้แนะ ตัวอย่าง เช่น
จงคำนวณหาพื้นที่สามเหลี่ยม โดยให้ผู้ใช้ใส่ข้อมูลที่เกี่ยวข้องทาง แป้นพิมพ์
นั่นคือ ข้อมูลที่จะต้องใช้ในการคำนวณพื้นที่ดังกล่าวนี้ ได้แก่
นั่นคือ ข้อมูลที่จะต้องใช้ในการคำนวณพื้นที่ดังกล่าวนี้ ได้แก่
ตัวเลขบอกขนาด ฐาน (Base)
ตัวเลขบอกขนาด สูง (Height) ซึ่งวัดจากมุมมาตั้งฉากกับฐาน
ตัวเลข 1/2 หรือ 0.5 ซึ่งเป็นเลขค่าคงที่ (Constant) จะต้องมาใช้คูณ ร่วมกับฐาน และสูง เป็นไปตามสูตรการคำนวณพื้นที่สามเหลี่ยมที่ว่า พื้นที่ = 1/2 x ฐาน x สูง ที่ทุกคนรู้กันโดยทั่วไป
วิธีนำเสนออัลกอริทึมที่นิยมมี 2 วิธี คือ
ให้วิเคราะห์ปัญหา 7 ประการต่อไปนี้ โดยเรียงลำดับกิจกรรม (an ordered set of activities) แล้วนำเสนอด้วยผังงาน(Flowchart) หลังจากนั้นนำไปเขียน ประโยคคำสั่ง ด้วยภาษาคอมพิวเตอร์ที่ท่านถนัด
ศึกษาเนื้อหาโดยละเอียดได้จากหนังสือเสริม ....
|