วันพุธที่ 30 กรกฎาคม พ.ศ. 2557

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

ขั้นตอนการแก้ปัญหาโจทย์ทางคอมพิวเตอร์
       ขั้นตอนการแก้ปัญหาโจทย์ทางคอมพิวเตอร์ประกอบด้วยขั้นตอนดังต่อไปนี้
1.กำหนดสิ่งที่โจทย์ต้องการ
   เป็นขั้นตอนที่จะต้องการวิเคราะห์ปัญหาจากโจทย์ กล่าวคือจะต้องตีโจทย์ให้แตก และสามารถบอกได้ว่าสิ่งที่โจทย์ต้องการนั้นคืออะไร ซึ่งความต้องการของโจทย์อาจมีมากกว่าหนึ่งงานก่เป็นได้ กระบวนการนี้จัดได้ว่าเป็นขั้นตอนแรกที่สำคัญทีเดียวกล่าวคือหากตีโจทย์ผิดพลาด หรือไม่ครอบคลุม นั่นหมายถึงขั้นตอนที่จะกระทำต่อไปนั้น อาจไม่ตรงหรือไม่เพียงพอต่อวัตถุประสงค์ที่โจทย์ต้องการ
2.กำหนดรูปแบบของผลลัพธ์(Output)
   เป็นขั้นตอนที่ทำการออกแบบผลลัพธ์ หรือรายงานที่ต้องการ โดยนำข้อมูลต่างๆที่แสดงบนรายงานนั้นจะต้องมีรายละเอียดครบถ้วน ซึ่งรายละเอียดข้อมูลของผลลัพธ์นั้นจะทำให้ทราบถึงข้อมูลนำเข้าว่าควรมีอะไรบ้าง
3.กำหนดข้อมูลนำเข้า(Input)
   เป็นขั้นตอนที่ทำการพิจารณาว่าข้อมูลที่ต้องป้อนเข้ามาเพื่อทำการประมวลผลนั้นควรมีข้อมูลอะไรบ้างที่จำเป็นต่อการนำไปประมวลผล เพื่อให้ได้มาซึ่งผลลัพธ์ที่ได้ออกแบบไว้
4.กำหนดตัวแปร
   เป็นขั้นตอนการกำหนดตัวแปรที่ใช้แทนความหมายค่าข้อมูลต่างๆซึ่งการกำหนดตัวแปรควรกำหนดชื่อตัวแปรให้สามารถสื่อความหมาขยได้ดี และถูกต้องตามกฎเกณฑ์การตั้งชื่อตัวแปร
5.ขั้นตอนการประมวลผล
   เป็นกระบวนการที่ประกอบด้วยขั้นตอนต่างๆที่ใช้แก้ปัญหา ด้วยการนำข้อมูลนำเข้าและตัวแปรต่างๆ ที่ได้กำหนดไว้มาทำการประมวลผล ไม่ว่าจะเป็นารคำนาณ การตรวจสอบเงื่อนไข เพื่อให้ได้ผลลัพธ์ตามที่ต้องการ
6.เขียนผังงานหรือรหัสจำลอง
   หลังจากที่ได้ทราบถึงขั้นตอนการประมวลผลที่ได้ออกแบบไว้แล้ว ขั้นตอนต่อไปก็คือการนำขั้นตอนการประมวลผลเหล่านั้นมาทำการเขียนเป็นผังงานหรือรหัสจำลอง หรือการเขียนทั้งสอง เพื่อนำไปใช้ประกอบการเขียนโปรแกรมต่อไป

อ้างอิง โอภาส เอี่ยมสิริวงศ์ หนังสือ วิทยาการคอมพิวเตอร์และเทคโนโลยีสารสนเทศ 
ซีเอ็ดยูเคชั่น,2548:กรุงเทพฯ หน้า248

วันอังคารที่ 29 กรกฎาคม พ.ศ. 2557

ผังงานแบบโครงสร้าง (Structure Flowchart)

ผังงานแบบโครงสร้าง (Structure Flowchart)
              ดังที่กล่าวไว้แล้วว่า การเขียนแผยผังนั้นไม่มีเกณฑ์ในการเขียนหรือวิธีการระบุอย่างชัดเจนว่าจะต้องเขียนอย่างไร ซึ่งดูเหมือนว่ามีรูปแบบที่ค่อนข่้างจะอิสระ ดังนั้นจึงเกิดแนวคิดการเขียนผังงานโดยให้อยู่ในรูปแบบระเบียบ กล่าวคือจะใช้หลักการแบ่งแยกและการจัดลำดับชั้นที่มีความชัดเจนและดูเป็นระบบระเบียบมากกว่าผังงานแบบธรรมดา
              ซึ่งเทคนิคโครงสร้างนี้จะช่วยให้การออกแบบชุดคำสั่งให้อยู่ในรูปแบบของโปรแกรมภาษาได้ง่ายยิ่งขึ้นโดยผังงานโครงสร้างจะมีอยู่ 3 รูปแบบด้วยกัน คือ
              1. ผังงานโครงสร้างแบบลำดับ (Sequence Flowchart)
เป็นผังงานที่มีโครงสร้างแบบลำดับกิจกรรมก่อนหลังที่เรียงกันเป็นลำดับต่อเนื่องกันไป
              2. ผังงานโครงสร้างแบบทางเลือก (Selection Flowchart)
 เป็นผังงานที่มีโครงสร้างให้เลือกตัดสินใจเพื่อให้เลือกทางใดทางหนึ่ง ซึ่งเงื่อนไขที่กำหนด                     อาจมีเพียงสองทางเลือก หรืออาจมีกลุ่มของทางเลือกก็แล้วแต่รูปแบบของเงื่อนไขนั้นๆ
              3. ผังงานโครงสร้างแบบทำซ้ำ (Looping/Iteration Flowchart)
ในการทำงานแบบทำซ้ำหรือมีลักษณะเป็นรอบจะมีโครงสร้างอยู่หลายรูปแบบด้วยกัน ซึ่ง                         อาจจะมีการตรวจสอบก่อนที่จะทำจนครบเงื่อนไข หรืออาจจะมีการทำซ้ำจนกระทั่งเงื่อนไขเป็นจริง
              3.1โครงสร้างการทำซ้ำแบบ Do...Until
                  การทำซ้ำในรูปแบบของ Do...Until จะทำการประมวลก่อนแล้วจึงตรวจสอบเงื่อนไขจนกระทั่งเงื่อนไขเป็นจริง กล่าวคือ จะทำในกระบวนการทำซ้ำอย่างน้อยหนึ่งครั้ง แล้วจึงค่อยตรวจสอบเงื่อนไข โดยหากเงื่อนไขยังเป็นเท็จก็ยังทำซ้ำต่อไป จนกระทั่งเมื่อเงื่อนไขเป็นจริงจึงหลุดจากกระบวนทำซ้ำ
              3.2โครงสร้างการทำซ้ำแบบ Do...While
                   การทำซ้ำในรูปแบบของ Do...While จะทำการตรวจสอบเงื่อนไขก่อนโดยหากเงื่อนไขเป็นจริงก็จะทำซ้ำต่อไป จนกระทั่งเงื่อนไขเป็นเท็จก็จะหลุดออกจากกระบวนการทำซ้ำ
              3.3โครงสร้างการทำซ้ำแบบ For...Next
                   การทำซ้ำในรูปแบบของ For...Next จะมีการกำหนดรอบที่ทำงานที่แน่นอนตามจำนวนรอบที่กำหนดไว้

 

อ้างอิง โอภาส เอี่ยมสิริวงศ์ หนังสือ วิทยาการคอมพิวเตอร์และเทคโนโลยีสารสนเทศ 
ซีเอ็ดยูเคชั่น,2548:กรุงเทพฯ หน้า241

คุณสมบัติของอัลกอริทึม

คุณสมบัติของอัลกอริทึม
           ในการออกแบบอัลกอริทึม จำเป็นต้องมีคุณสมบัติสำคัญดังต่อไปนี้ั
1.เป็นกระบวนวิธีการที่สร้างขึ้นจากกฏเกณฑ์
           เนื่องจากอัลกอริทึมจัดเป็นรูปแบบหนึ่งของการแก้ปัญหา และกระบวนวิธีการก็คือกลุ่มของขั้นตอนที่อยู่รวมกันเพื่อใช้แก้ปัญหาต่างๆเพื่อให้ได้มาซึ่งผลลัพธ์ ดังนั้นจึงจำเป็นต้องมีกฏเกณฑ์ที่ใช้ในการสร้างกระบวนวิธีการเหล่านั้นซึ่งอาจอยู่ในรูปแบบประโยคภาษาอังกฤษ สัญลักษณ์ หรือคำสั่งจำลอง

2.กฏเกณฑ์ที่สร้างอัลกอลิทึมต้องไม่คลุมเครือ
          รุปแบบของกฏเกณฑ์ใดก็ตามที่ใช้สร้างอัลกอริทึมจะต้องมีระบบ ระเบียบ อ่านแล้วไม่สับสนกล่าวคือจะต้องเป็นกฏเกณฑ์ที่เข้าใจตรงกัน และควรกลีกเหลี่ยงคำที่ก่อให้เกิดความเข้าใจได้หลายความหมาย
3.การประมวลผลต้องเป็นลำดับขั้นตอน
          คำสั่งต่างๆที่ถูกกำหนดด้วยกฏเกณฑ์จะต้องประมวณผลเป็นลำดับตามขั้นตอนที่แน่นอน
4.กระบวนวิธีการต้องให้ได้ผลลัพธ์ตามที่กำหนดใหปัญหา
          กล่าวคือ กลุ่มของขั้นตอนต่างๆ ที่กำหนดไว้จัต้องใช้งานทั่วไปได้สำหรับทุกๆ กรณี และจะต้องมีผลลัพธ์ตรงตามที่กำหนดในปัญหานั้นๆ
5.อัลกอลิทึมต้องมีจุดสิ้นสุด
          คุณสมบัติอีกข้อหนึ่งที่สำคัญคือ อัลกอริทึมต้องมีจุดสิ้นสุด เนื่องจากคอมพิวเตอร์จะไม่สามารถประมวลผลแบบไม่สิ้นสุดได้ (Infinite) เช่น การบวกเลขจำนวนเต็มบวกทีละตัว ในที่นี้จะไม่ถือเป็นอัลกอลิทึมเนื่องจากไม่ได้บอกขอบเขตสิ้นสุดของตัวเลขจำนวนเต็ม ดังน้ัน จึงเป็นขั้นตอนการทำงานที่ไม่มีจุดสิ้นสุด

อ้างอิง โอภาส เอี่ยมสิริวงศ์ หนังสือ วิทยาการคอมพิวเตอร์และเทคโนโลยีสารสนเทศ 
ซีเอ็ดยูเคชั่น,2548:กรุงเทพฯ หน้า231-232

วิธีการสร้างอัลกอริทึม

วิธีการสร้างอัลกอริทึม
            ในการสร้างอัลกอริทึมเพื่อใช้งานทาง คอมพิวเตอร์ สามารถสร้างได้หลายวิธีด้วยกัน โดยในที่นี้จะขอกล่าวถึงวิธีต่างๆ ดังต่อไปนี้
            1. การบรรยาย (Narrative Description)
            2. การเขียนผังงาน (Flowchart)
            3. การเขียนรหัสจำลอง (Pseudo Code)

การบรรยาย (Narrative Description)
            เป็นวิธีที่ว่าด้วยการใช้คำพูดบรรยายเป็นตัวอักษรซึ่งวิธีนี้จะค่อนข้างง่ายสำหรับตัวผู้เขียน แต่จะยากต่อการนำไปใช้ปฏิบัติ เนื่อจากอาจก่อให้เกิดปัญหาต่างๆไม่ว่าจะเป็นขอบเขตการบรรยายที่กว้างเกินไปยืดเยื้อเกินไป รวมถึงการบรรยายที่ยากต่อความเข้าใจ

การเขียนผังงาน (Flowchart)
             ผังงานจะเป็นการนำเสนอในรูปแบบของแผนภาพ ซึ่งจะประกอบด้วยสัญลักษณ์ต่างๆที่ได้มีการกำหนดไว้เป็นมาตราฐาน ทำให้แสดงรายละเอียดของขั้นตอนต่างๆได้ชัดเจนกว่าแบบวิธีการบรรยายในลักษณะคำพูดผังงานยังแบ่งออกเป็น ผังงานระบบ(System Flowchart) และผังงานโปรแกรม (Program Flowchart)

ผังงานระบบ(System Flowchart)
             เป็นผังงานที่แสดงขั้นตอนการปฏิบัติงานหลักๆโดยจะแสดงถึงตัวงานหลักที่จะต้องทำในระบบ ซึ่งเป็นการมุ้งเน้นความสัมพันธ์ระหว่างงานหรือขั้นตอนต่างๆในระบบว่ามีกิจกรรมอะไรบ้างและมีความเกี่ยวข้องกันอย่างไร แต่จะไม่แสดงรายละเอียดว่างานนั้นจะทำอย่างไร

ผังงานโปรแกรม (Program Flowchart)
             ผังงานโปรแกรม หรือผังงานแสดงรายละเอียด (Detailed Flowchart) ผังงานที่แสดงถึงขั้นตอนของกิจกรรมต่างๆโดยละเอียด ทำให้สามารถถ่ายทอดความเข้าใจหรือสือสารระหว่างกันได้ค่อนข้างดีและชัดเจน กล่าวคือจะมีการแสดงรายละเอียดของกิจกรรม การทำงานในทุกขั้นตอนของโปรแกรมว่าจะต้องทำอย่างไร อีกทั้งผังงานโปรแกรมอาจนำเสนอได้หลายหน้าเนื่องจากกระดาษไม่เพียงพอ ดังนั้นจึงจำเป็นต้องมีการเชื่อมโยงผังงานต่อไปอีกหน้าหนึ่ง โดยรายละเอียดการเขียนผังงานจะกล่าวในหัวข้อเทคนิคการเขียนผังงานต่อไป

การเขียนรหัสจำลอง (Pseudo Code)
              รหัสจำำลองหรือซูโด้โค้ด เป็นรหัสคำสั่งที่ไม่ใช่คำสั่งภาษาโปรแกรมคอมพิวเตอร์ แต่เป็นชุดหรัสคำสั่งที่เขียนเพื่อเลียนแบบคำสั่งโปรแกรมอย่างย่อๆเพื่อใช้เป็นแนวทางในการสร้างควบคุมของโปรแกรมภาษานั้นต่อไป แต่อย่างไรก็ตาม รหัสจำลองนั้นจะมีความใกล้เคียงกับภารษาระดับสูงมากจึงทำให้การเขียนรหัสจำลองนั้นเป็นอัลกอริทึมที่ค่อนข้างเป็นที่นิยม เนื่องจากโปรแกรมเมอร์สามารถนำอัลกอริทึมที่เขียนขึ้นจากรหัสจำลองมาพัฒนาเป็นโปรแกรมต่อไปค่อนข้างง่ายนั่นเอง สำหรับการออกแบบอัลกอริทึมในรูปแบบของรหัสจำลองนั้น ถ้อยคำหรือสเตตเมนต์(Statement) แรกของรหัสจำลอง คือการประกาศชื่อของอัลกอริทึม และสเตตเมนต์สุดท้ายจะแสดงถึงจุดจบหรือจุดสิ้นสุดของอัลกอริทึมนั้น

อ้างอิง โอภาส เอี่ยมสิริวงศ์ หนังสือ วิทยาการคอมพิวเตอร์และเทคโนโลยีสารสนเทศ 
ซีเอ็ดยูเคชั่น,2548:กรุงเทพฯ หน้า226-228

อัลกอรึทึม (Algorithms)

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

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

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

                              "อัลกอริทึม" หมายถึง กลุ่มของขั้นตอน หรือ กฎเกณฑ์ (list of step/ a set of rules)
                              ที่จะนำพาไปสู่การแก้ปัญหาได้
                               
                              "อัลกอริทึม" หายถึง ขั้นตอนวิธี ซึ่งจะอธิบายว่างานๆนั้นทำอย่างไร โดยจะประกอบ                                 ด้วยชุดลำดับเป็นขั้นตอนที่ชัดเจน และรับประกันว่าเมื่อได้ปฏิบัติถูกต้องตามขั้นตอน                               จนจบ ก็จะได้ผลลัพธ์ที่ถูกต้องตามต้องการ


อ้างอิง โอภาส เอี่ยมสิริวงศ์ หนังสือ วิทยาการคอมพิวเตอร์และเทคโนโลยีสารสนเทศ 
ซีเอ็ดยูเคชั่น,2548:กรุงเทพฯ หน้า224