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

การถ่ายทอดความคิดในการแก้ปัญหาด้วยอัลกอลิทึม


การถ่ายทอดความคิดในการแก้ปัญหาด้วยอัลกอลิทึม

การเขียนรหัสจำลอง
   


รหัสลำลองหรือ pseudocode เป็นคำบรรยายที่เขียนแสดงขั้นตอนวิธี(algorithm) ของการเขียนโปรแกรม โดยใช้ภาษาที่กะทัดรัด สื่อสารกับโปรแกรมเมอร์ผู้เขียนโปรแกรม โดยอาจใช้ภาษาที่ใช้ทั่วไปและอาจมีภาษาที่ใช้ในการเขียนโปรแกรมประกอบ แต่ไม่มีมาตรฐานแน่นอนในการเขียน pseudocode  และไม่สามารถนำไปทำงานบนคอมพิวเตอร์โดยตรง(เพราะไม่ใช่คำสั่งในภาษาคอมพิวเตอร์) และไม่ขึ้นกับภาษาคอมพิวเตอร์ภาษาใดภาษาหนึ่ง นิยมใช้ pseudocode แสดง algorithmมากกว่าใช้ผังงาน เพราะผังงานอาจไม่แสดงรายละเอียดมากนักและใช้สัญลักษณ์ซึ่งทำให้ไม่สะดวกในการเขียน เช่นโปรแกรมใหญ่ ๆ มักจะประกอบด้วยคำสั่งต่างๆที่ใกล้เคียงกับภาษาคอมพิวเตอร์ที่ใช้ในการเขียนโปรแกรมจริงๆ เช่น begin…end, if…else, do…while, while, for, read และ print การเขียนรหัสจำลองจะต้องมีการวางแผนสำหรับการอ้างอิงถึงข้อมูลต่างๆที่จะใช้ในโปรแกรมด้วยการสร้างตัวแปร โดยใช้เครื่องหมายเท่ากับ (=) แทนการกำหนดค่าให้กำหนดตัวแปรนั้น

ตัวอย่าง การเขียน Pseudocode ในการหาค่าผลบวกเลข 3 จำนวน ที่รับเข้ามาทางแป้นพิมพ์

Algorithm Summation
1. SUM = 0
2. INPUT (value1)
3. INPUT (value2)
4. INPUT (value3)
5. SUM = value1 + value2 + value3
6. OUTPUT (SUM)
End.

การเขียนผังงาน

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







ตัวอย่าง flowchartการส่งจดหมาย

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

กระบวนการเทคโนโลยีสารสนเทศ


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

2.  ขั้นตอนการแก้ปัญหาด้วยกระบวนการเทคโนโลยีสารสนเทศ
                นอกจากวิธีการแก้ปัญหาทียกตัวอย่างมา ซึ่งได้แก่ วิธีการลองผิดลองถูก การใช้เหตุผล การใช้วิธีขจัด ยังมีวิธีการแก้ปัญหาอีกมากมายที่ผู้แก้ปัญหาสามารถเลือกใช้ให้เข้ากับตัวปัญหาและประสบการณ์ของผู้แก้ปัญหาเอง แต่อย่างไรก็ตามวิธีการเหล่านั้นล้วนมีขั้นตอนที่คล้ายคลึงกัน และจากการศึกษาพฤติกรรมในการเรียนรู้และแก้ปัญหาของมนุษย์พบว่า โดยปกติมนุษย์มีกระบวนในการแก้ปัญหา ซึ่งประกอบด้วย 4 ขั้นตอน ดังนี้
               
         1)  การวิเคราะห์และกำหนดรายละเอียดของปัญหา
                การวิเคราะห์และกำหนดรายละเอียดของปัญหา(State The Problem) ขั้นตอนนี้เป็นขั้นตอนแรกสุดก่อนที่จะลงมือปัญหา แต่ผู้แก้ปัญหามักจะมองข้ามความสำคัญของขั้นตอนนี้อยู่เสมอ จุดประสงค์ของขั้นตอนนี้ คือ การทำความเข้าใจกับปัญหาเพื่อแยกให้ออกว่าข้อมูลที่กำหนดมาในปัญหาหรือเงื่อนไขของปัญหาคืออะไร อีกทั้งวิธีการที่ใช้ประมวลผล ในการวิเคราะห์ปัญหาใด กล่าวโดยสรุปมีองค์ประกอบในการวิเคราะห์ดังนี้
        การระบุข้อมูลเข้า ได้แก่ การพิจารณาข้อมูลและเงื่อนไขที่กำหนดมาในปัญหา
        การระบุข้อมูลออก  ได้แก่ การพิจารณาเป้าหมายหรือสิ่งที่ต้องหาคำตอบ
        การกำหนดวิธีประมวลผล ได้แก่ การพิจารณาขั้นตอนวิธีการได้มาซึ่งคำตอบหรือข้อมูลออก

    2) การเลือกเครื่องมือและออกแบบขั้นตอนวิธี
        การเลือกเครื่องมือและออกแบบขั้นตอนวิธี (Tools And Algorithm Development) ขั้นตอนนี้เป็นขั้นตอนของการวางแผนในการแก้ปัญหาอย่างละเอียดถี่ถ้วน หลังจากที่เราทำความเข้าใจกับปัญหา พิจารณาเงื่อนไขและข้อมูลที่มีอยู่ และสิ่งที่ต้องการหาในการแก้ปัญหาอย่างละเอียดถี่ถ้วน หลังจากที่เราทำความเข้าใจกับปัญหา พิจารณาเงื่อนไขและข้อมูลที่มีอยู่ และสิ่งที่ต้องการหาในขั้นตอนที่ 1 แล้ว เราสามารถคาดคะเนวิธีการที่จะใช้ในการแก้ปัญหา ขั้นตอนนี้จำเป็นต้องอาศัยประสบการณ์ของผู้แก้ปัญหาเป็นหลัก หากผู้แก้ปัญหาเคยพบกับปัญหาทำนองนี้มาแล้วก็สามารถดำเนินการตามแนวทางที่เคยปฏิบัติมา

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

        อีกสิ่งหนึ่งที่สำคัญในการแก้ปัญหา คือ ยุทธวิธีที่ใช้ในการแก้ปัญหา หรือที่เราเรียกว่า “ขั้นตอนวิธี” (Algorithm) ในการแก้ปัญหา หลังจากที่เราได้เครื่องมือช่วยแก้ปัญหาแล้ว ผู้แกปัญหาต้องวางแผนว่าจะใช้เครื่องมือดังกล่าวเพื่อให้ได้ผลลัพธ์ที่ถูกต้องที่สุด การออกแบบขั้นตอนวิธีในการแก้ปัญหา ผู้แก้ปัญหาควรใช้แผนภาพหรือเครื่องมือในการแสดงขั้นตอนการทำงาน เพื่อให้ง่ายต่อความเข้าใจ เช่น ผังงาน (Flowchart) ที่จำลองวิธีขั้นตอนการแก้ปัญหาในรูปแบบสัญลักษณ์ รหัสจำลอง (Pseudo Code) ซึ่งเป็นการจำลองขั้นตอนวิธีการปัญหาในรูปแบบคำบรรยาย การใช้เครื่องมือช่วยออกแบบดังกล่าว นอกจากแสดงกระบวนการที่ชัดเจนแล้วยังช่วยให้ผู้แก้ปัญหาสามารถหาข้อผิดพลาดของวิธีการที่ใช้ได้ง่ายและแก้ไขได้อย่างรวดเร็ว


        3) การดำเนินการแก้ปัญหา

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

        4) การตรวจสอบและปรับปรุง

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