วันจันทร์ที่ 8 กรกฎาคม พ.ศ. 2556

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

1. การเขียนรหัสจำลอง (Pseudo Code)

ซูโดโค้ด (Pseudocode) หรือ ในภาษาไทย เรียกว่า รหัสจำลอง หรือ รหัสเทียม
คือ การจำลองการเขียนโปรแกรม โดยเขียนคำสั่งเป็นภาษาอะไรก็ได้ เช่น ไทย หรือ อังกฤษ ฯลฯ ที่ไม่ใช่ภาษาคอมพิวเตอร์ขั้นสูงอย่าง ภาษา C หรือ Java ซูโดโค้ดนี้จะไม่ขึ้นกับภาษาคอมพิวเตอร์ใดๆ โดยเฉพาะ ใช้อธิบายการทำงานของโปรแกรม เนื่องจากสื่อด้วยภาษาง่ายๆ อย่าง ไทย, อังกฤษ ทำให้ผู้อ่านเข้าใจได้ง่าย และตรงกัน โดยปกติแล้วมักใช้ภาษาอังกฤษ เนื่องจากสามารถแปลเป็นภาษาคอมพิวเตอร์ได้ง่าย
 หลักในการเขียน Pseudocode
1. คำสั่งที่เขียนใช้ภาษาที่เข้าใจง่าย ไม่ต้องคำนึงถึงภาษาคอมพิวเตอร์
2. ในหนึ่งบรรทัด ให้มีเพียงหนึ่งคำสั่งเท่านั้น
3. ใช้ย่อหน้าในการแสดงกลุ่มของคำสั่ง ที่เป็นคำสั่งย่อยในคำสั่งพวกเงื่อนไข เช่น if-else, while, for ฯลฯ
4. ในการเขียนแต่ละคำสั่งให้เรียงการทำงานจากบนลงล่าง และมีทางออกหรือจุดสิ้นสุดเพียงจุดเดียว
5. กลุ่มคำสั่งอาจจะเขียนรวมกันเป็นโมดุล และเวลาเรียกใช้ก็เรียกใช้ผ่านชื่อโมดุล (คล้ายกับการเรียกใช้ฟังก์ชัน)

2. การเขียนผังงาน Flowchart )

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

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

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


ผังงานโปรแกรม ( Program Flowchart )

การเขียนผังโปรแกรมจะประกอบไปด้วยการใช้สัญลักษณ์มาตรฐานต่าง ๆ ที่เรียกว่า สัญลักษณ์ ANSI ( American National Standards Institute ) ในการสร้างผังงาน ดังตัวอย่างที่แสดงในรูปต่อไปนี้

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

วันเสาร์ที่ 6 กรกฎาคม พ.ศ. 2556

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

ขั้นตอนการแก้ปัญหา

 1.การวิเคราะห์และกำหนดรายละเอียดของปัญหา
 การวิเคราะห์และกำหนดรายละเอียดของปัญหา (State the problem)  ขั้นตอนนี้เป็นขั้นตอนแรกสุดก่อนที่จะลงมือแก้ปัญหา  แต่ผู้แก้ปัญหามักจะมองข้ามความสำคัญของขั้นตอนนี้อยู่เสมอ  จุดประสงค์ของขั้นตอนนี้  คือ  การทำความเข้าใจกับปัญหาเพื่อแยกให้ออกว่า  ข้อมูลที่กำหนดมาในปัญหาหรือเงื่อนไขของปัญหาคืออะไร  สิ่งที่ต้องการคืออะไร  และวิธีการที่ใช้ประมวลผลเป็นอย่างไร  โดยสรุป  องค์ประกอบในการวิเคราะห์ปัญหามีดังนี้
1.1      การระบุข้อมูลเข้า  ได้แก่  การพิจารณาข้อมูลและเงื่อนไขที่กำหนดมาในปัญหา
1.2      การระบุข้อมูลออก  ได้แก่  การพิจารณาเป้าหมายหรือสิ่งที่ต้องการหาคำตอบ
1.3      การกำหนดวิธีประมวลผล  ได้แก่  การพิจารณาขั้นตอนวิธีการได้มาซึ่งคำตอบหรือข้อมูลออก
 2.การเลือกเครื่องมือและออกแบบขั้นตอน
การเลือกเครื่องมือและออกแบบขั้นตอนวิธี  (Tool  and Algorithm development)  ขั้นตอนนี้เป็นขั้นตอนการวางแผนในการแก้ปัญหาอย่างละเอียดถี่ถ้วน  หลังจากที่เราทำความเข้าใจกับปัญหา  พิจารณาข้อมูลและเงื่อนไขที่มีอยู่  และสิ่งที่ต้องการหาในขั้นตอนที่ 1  เราสามารถคาดคะแนนวิธีการที่เราจะใช้ในการแก้ปัญหา  กระบวนการนี้จำเป็นอาศัยประสบการณ์ของผู้แก้ปัญหาเป็นหลัก  หากผู้แก้ปัญหาเคยพบกับปัญหาทำนองนี้มาแล้วก็สามารถดำเนินการตามแนวทางที่เคยปฏิบัติมา
ขั้นตอนนี้จะเริ่มจากการเลือกเครื่องมือที่ใช้ในการแก้ปัญหาโดยพิจารณาความเหมาะสมระหว่างเครื่องมือกับเงื่อนไขต่าง ๆ ของปัญหาซึ่งหมายรวมถึงความสามารถของเครื่องมือในการแก้ปัญหาดังกล่าว  และสิ่งที่สำคัญคือ  ความคุ้นเคยในการใช้เครื่องมือนั้น ๆ ของผู้แก้ปัญหา 
อีกสิ่งหนึ่งที่สำคัญในการแก้ปัญหา  คือ  ยุทธวิธีที่ใช้ในการแก้ปัญหาหรือที่เราเรียกว่าขั้นตอนวิธี (algorithm)  ในการแก้ปัญหา  หลังจากที่เราได้เครื่องมือช่วยแก้ปัญหาแล้ว  ผู้แก้ปัญหาต้องวางแผนว่าจะใช้เครื่องมือดังกล่าวอย่างไรเพื่อให้ได้ผลลัพธ์ที่ถูกต้องและดีที่สุด  ในการออกแบบขั้นตอนวิธีในการแก้ปัญหา  ผู้แก้ปัญหาควรใช้แผนภาพหรือเครื่องมือในการแสดงขั้นตอนการทำงานเพื่อให้ง่ายต่อความเข้าใจ  เช่น  ผังงาน (Flowchart)  รหัสจำลอง  (Pseudo Code)  เป็นต้น  การใช้เครื่องมือช่วยออกแบบดังกล่าวนอกจากแสดงกระบวนการที่ชัดเจนแล้วยังช่วยให้ผู้แก้ปัญหาสามารถหาข้อผิดพลาดของ  วิธีการที่ใช้ได้ง่ายและแก้ไขได้อย่างรวดเร็ว
3.การดำเนินการแก้ปัญหา
การดำเนินการแก้ปัญหา (Implementation)  หลังจากที่ได้ออกแบบขั้นตอนวิธีเรียบร้อยแล้ว  ขั้นตอนนี้เป็นขั้นตอนที่ต้องลงมือแก้ปัญหาโดยใช้เครื่องมือที่ได้เลือกไว้  หากการแก้ปัญหาดังกล่าวใช้คอมพิวเตอร์เข้ามาช่วยงาน  ขั้นตอนนี้ก็เป็นการใช้โปรแกรมสำเร็จ  หรือใช้ภาษาคอมพิวเตอร์เขียนโปรแกรมแก้ปัญหา  ขั้นตอนนี้ต้องอาศัยความรู้เกี่ยวกับเครื่องมือที่เลือกใช้ซึ่งผู้แก้ปัญหาต้องศึกษาให้เข้าใจและเชี่ยวชาญ  ในการดำเนินการอาจพบแนวทางที่ดีกว่าที่ออกแบบไว้  ผู้แก้ปัญหาก็สามารถปรับเปลี่ยนได้
4.การตรวจสอบและปรับปรุง
การตรวจสอบและปรับปรุง   (Refinement)  หลังจากที่ลงมือแก้ปัญหาแล้ว  ต้องตรวจสอบให้แน่ใจว่าวิธีการนี้ให้ผลลัพธ์ที่ถูกต้อง  โดยผู้แก้ปัญหาต้องตรวจสอบว่าขั้นตอนที่สร้างขึ้นสอดคล้องกับรายละเอียดของปัญหาได้แก่  ข้อมูลเข้าและข้อมูลออก  เพื่อให้มั่นใจว่าสามารถรองรับข้อมูลเข้าได้ในทุกกรณีอย่างถูกต้องสมบูรณ์  ในขณะเดียวกันก็ต้องปรับปรุงวิธีการเพื่อให้การแก้ปัญหานี้  ได้ผลลัพธ์ที่ดีที่สุด