บรรดาปัญหาต่าง ๆ ที่เราต้องประสบอยู่ในชีวิตประจำวันนั้นจัดเป็นปัญหาหลากหลายรูปแบบ ถ้าจะจัดกลุ่มโดยพิจารณาที่วิธีการแก้ปัญหาก็จะแบ่งได้เป็น 2 กลุ่ม คือ กลุ่มแรกเป็นปัญหาที่มีลำดับขั้นตอนในการแก้ปัญหาอย่างเป็นระบบ เป็นขั้นตอนที่เป็นวิทยาศาสตร์ มีเหตุผลอธิบายได้ กลุ่มที่สองเป็นปัญหาที่ไม่มีลำดับขั้นตอนในการแก้ปัญหาที่เป็นระบบ เช่น ปัญหาที่ต้องใช้ความรู้สึกนึกคิด ต้องใช้ดุลยพินิจในการตัดสินแก้ไข ขึ้นอยู่กับพื้นฐานทางวัฒนธรรมประเพณีความเชื่อ ภูมิหลัง และเหตุปัจจัยแวดล้อมอื่น ๆ มาเกี่ยวข้องกับการแก้ปัญหานั้น ๆ

ปัญหาและอัลกอริทึม (Algorithmic Problems and Algorithm)

    จากปัญหาทั้งสองกลุ่มดังกล่าวข้างต้น กลุ่มแรกเราจะเรียกว่าเป็นปัญหาอัลกอริทมิก (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 ขั้น ดังนี้

  1. ขั้นวิเคราะห์ผลลัพธ์
  2. ขั้นวิเคราะห์ข้อมูล

สรุปได้ว่าลักษณะข้อมูลที่วิเคราะห์ได้จากโจทย์ปัญหาจะมีอยู่ 3 ลักษณะ ดังนี้

  1. ข้อมูลที่โจทย์กำหนดมาให้โดยตรง ตัวอย่างเช่น
    กำหนดให้ a = 20 b = 15 c = 5
    จำนวนนักเรียน 10 คน
    รายชื่อลูกค้าคือ กานดา จินตนา และ อาภรณ์
  2. ข้อมูลที่โจทย์ไม่ได้บอกโดยตรง แต่บอกมาโดยอ้อม โดยบ่งบอกลักษณะ แหล่งที่มา ความเกี่ยวพันหรือพรรณนาถึงข้อมูลแบบเปิดกว้าง ตัวอย่างเช่น
    จำนวนนักเรียนทั้งชั้นเรียน นั่นคือ จำนวนนักเรียน N คน
    ตัวเลขข้อมูลตามที่ผู้ใช้เตรียมมา นั่นคือ ข้อมูลเป็นตัวเลขค่าตามที่ผู้ใช้ เตรียมมา
    เลขจำนวนเต็ม 2 จำนวนให้ใส่ทางแป้นพิมพ์ นั่นคือ ข้อมูลเป็นเลขจำนวน เต็มตามที่ผู้ใช้เตรียมมา 2 ตัว
  3. ข้อมูลที่เป็นพื้นฐานกิจกรรมการประมวลผลนั้น ๆ เป็นข้อมูลที่ทราบกันดีแล้วว่าจะต้องใช้ในกระบวนการประมวลผลเรื่องนั้น ๆ โจทย์ไม่จำเป็นต้องบอกหรือชี้แนะ ตัวอย่าง เช่น
    จงคำนวณหาพื้นที่สามเหลี่ยม โดยให้ผู้ใช้ใส่ข้อมูลที่เกี่ยวข้องทาง แป้นพิมพ์
    นั่นคือ ข้อมูลที่จะต้องใช้ในการคำนวณพื้นที่ดังกล่าวนี้ ได้แก่
    นั่นคือ ข้อมูลที่จะต้องใช้ในการคำนวณพื้นที่ดังกล่าวนี้ ได้แก่
    ตัวเลขบอกขนาด ฐาน (Base)
    ตัวเลขบอกขนาด สูง (Height) ซึ่งวัดจากมุมมาตั้งฉากกับฐาน
    ตัวเลข 1/2 หรือ 0.5 ซึ่งเป็นเลขค่าคงที่ (Constant) จะต้องมาใช้คูณ ร่วมกับฐาน และสูง เป็นไปตามสูตรการคำนวณพื้นที่สามเหลี่ยมที่ว่า พื้นที่ = 1/2 x ฐาน x สูง ที่ทุกคนรู้กันโดยทั่วไป
  1. ขั้นวิเคราะห์กระบวนการแก้ปัญหาหรือขั้นการประมวลผลข้อมูล

การเขียนอัลกอริทึมและเทคนิคการนำเสนอ

    วิธีนำเสนออัลกอริทึมที่นิยมมี 2 วิธี คือ

  1. ผังงาน (Flowchart)
  2. รหัสจำลอง (Pseudo code)

ตัวอย่างปัญหาโจทย์ทางคอมพิวเตอร์

    ให้วิเคราะห์ปัญหา 7 ประการต่อไปนี้ โดยเรียงลำดับกิจกรรม (an ordered set of activities) แล้วนำเสนอด้วยผังงาน(Flowchart) หลังจากนั้นนำไปเขียน ประโยคคำสั่ง ด้วยภาษาคอมพิวเตอร์ที่ท่านถนัด

  1. ต้องการทราบผลลัพธ์ของ 7+5 ให้แสดงผลลัพธ์ที่กระดาษพิมพ์
  2. ให้รับข้อมูลเข้าจากผู้ให้ โดยข้อมูลนำเข้าทั้งสองจำนวนเป็นตัวเลขจำนวนเต็มใด ๆ แล้วให้ทำการเปรียบเทียบ หาค่าที่มากกว่า แสดงผลทางจอภาพ
  3. ให้รับข้อมูลจำนวนเต็มจากผู้ใช้ 3 จำนวน แล้วดำเนินการเปรียบเทียบหาค่า สูงสุด สมมุติว่าทั้ง 3 ค่าไม่เท่ากัน แล้วแสดงค่าสูงสุดค่านั้น
  4. ให้พิมพ์ ค่า 1-10
  5. ให้คำนวณพื้นที่แต่ ละชนิดต่อไปนี้ : พื้นที่สี่เหลี่ยม, พื้นที่สามเหลี่ยม พื้นที่ รูปวงกลม พื้นที่รูปขนมเปียกปูน โดยรับข้อมูลที่เกี่ยวข้องจากผู้ใช้นำเข้าทางแป้นพิมพ์ แสดงขนาดของข้อมูลที่ใส่ พร้อมทั้งจำนวนเนื้อที่ที่คำนวณได้
  6. ให้รับข้อมูลตัวเลขทศนิยมจากผู้ใช้ 100 จำนวน เพื่อดำเนินการหาผลรวม และค่าเฉลี่ยของตัวเลขทั้ง 100 จำนวนนั้น แสดงผลรวม และค่าเฉลี่ยที่ได้
  7. รับข้อมูลไม่ทราบจำนวนจากผู้ใช้ ในที่นี้ข้อมูลเป็นตัวเลข และทำการบวกสะสมจนกระทั่งหมดข้อมูล ให้แสดงค่ายอดรวมและค่าเฉลี่ย

 

ศึกษาเนื้อหาโดยละเอียดได้จากหนังสือเสริม ....