วันพุธที่ 17 ธันวาคม พ.ศ. 2557

หลักการเขียนโปรแกรม
กระบวนการแก้ปัญหา

ขั้นที่ 1
การวิเคราะห์และกำหนดรายละเอียดของปัญหา

การวิเคราะห์และกำหนดรายละเอียดของปัญหา (State theproblem) 
คือ การทำความเข้าใจกับปัญหาเพื่อแยกให้ออกว่าข้อมูลที่กำหนด
มาในปัญหาหรือเงื่อนไขของปัญหาคืออะไร สิ่งที่ต้องการคืออะไรและวิธีการที่ใช้
ประมวลผลเป็นอย่างไร โดยองค์ประกอบในการวิเคราะห์ปัญหามีดังนี้
1.1 การระบุข้อมูลเข้า ได้แก่ การพิจารณาข้อมูลและเงื่อนไขที่กำหนดมาในปัญหา
1.2 การระบุข้อมูลออก ได้แก่ การพิจารณาเป้าหมายหรือสิ่งที่ต้องหาคำตอบ
1.3 การกำหนดวิธีประมวลผล ได้แก่ การพิจารณาขั้นตอนวิธีการได้มาซึ่งคำตอบหรือข้อมูลออก
ขั้นที่ 2
การเลือกเครื่องมือและออกแบบขั้นตอนวิธี
การเลือกเครื่องมือและออกแบบขั้นตอนวิธี (Tools and Algorithmdevelopment)
เป็นขั้นตอนของการวางแผน ในการแก้ปัญหาอย่างละเอียด
ถี่ถ้วน ขั้นตอนนี้เริ่มจากการเลือกเครื่องมือที่ใช้ในการแก้ปัญหา โดยพิจารณาความ
เหมาะสมระหว่างเครื่องมือกับเงื่อนไขต่างๆของปัญหา อีกสิ่งหนึ่งที่สำคัญในการ
แก้ปัญหา คือ ยุทธวิธีที่ใช้ในการแก้ปัญหาหรือที่เราเรียกว่าขั้นตอนวิธี
(algorithm) ในการแก้ปัญหาในขั้นตอนการแก้ปัญหาเพื่อให้ง่ายต่อการเข้าใจ
ก็อาจใช้รหัสจำลอง (pseudo code) หรือ ผังงาน (Flow Chart)
ขั้นที่ 3
การดำเนินการแก้ปัญหา
    การดำเนินการแก้ปัญหา (Implementation) หลังจากที่ได้ออกแบบขั้นตอนวิธีเรียบร้อยแล้ว ขั้นตอนนี้เป็นขั้นตอนที่ต้องลงมือแก้ปัญหาโดยใช้เครื่องมือที่ได้เลือกไว้ หากการแก้ปัญหาดังกล่าวใช้คอมพิวเตอร์เข้ามาช่วยง่าน ขั้นตอนนี้ก็เป็นการใช้โปรแกรมสำเร็จหรือใช้ภาษาคอมพิวเตอร์เขียนโปรแกรมแก้ปัญหา ขั้นตอนนี้ต้องอาศัยความรู้เกี่ยวกับเครื่องมือที่เลือกใช้ซึ่งผู้แก้ปัญหาต้องศึกษาให้เข้าใจและเชี่ยวชาญ ในขณะที่ดำเนินการหากพบแนวทางที่ดีกว่าที่ออกแบบไว้ก็สามารถปรับเปลี่ยนไ

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

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

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

k สัญลักษณ์
          เครื่องหมายรูปแบบต่างๆ ซึ่งใช้สำหรับสื่อสารความหมายให้เข้าใจตรงกัน สถาบันมาตรฐานแห่งชาติอเมริกา (The American National Standard Institute, ANSI) ได้กำหนดสัญลักษณ์ไว้เป็นมาตรฐานแล้ว สามารถนำไปใช้ได้ตามความเหมาะสมต่อไป ซึ่งมีรายละเอียด รูปแบบและความหมายที่ควรทราบตามตารางต่อไปนี้

ตารางที่ 2 ความหมายของสัญลักษณ์

สัญลักษณ์
ชื่อเรียก
ความหมาย
การทำงานด้วยมือ
(manual operation)
แทนจุดที่มีการทำงานด้วยแรงคน
การนำข้อมูลเข้า  ออกโดยทั่วไป
(general input/output)
แทนจุดที่จำนำข้อมูลเข้าหรือออกจากระบบคอมพิวเตอร์โดยไม่ระบุชนิดของอุปกรณ์
แถบบันทึกข้อมูล
(magnetic tape)
แทนจุดที่นำข้อมูลเข้าหรือออกจากโปรแกรมด้วยแถบบันทึกข้อมูล
จานบันทึกข้อมูล
(magnetic disk)
แทนจุดที่นำข้อมูลเข้าหรือออกจากโปรแกรมด้วยจานบันทึกข้อมูล
การนำข้อมูลเข้าด้วยมือ
(manual input)
แทนจุดที่จะนำข้อมูลเข้าด้วยมือ
การแสดงข้อมูล
(display)
แทนจุดที่แสดงข้อมูลด้วยจอภาพ
การทำเอกสาร
(document)
แทนจุดที่มีข้อมูลเป็นเอกสารหรือแสดงข้อมูลด้วยเครื่องพิมพ์
การตัดสินใจ
(decision)
แทนจุดที่จะต้องเลือกปฏิบัติอย่างใดอย่างหนึ่ง
การปฏิบัติงาน
(process)
แทนจุดที่มีการปฏิบัติงานอย่างใดอย่างหนึ่ง
การเตรียมการ
(preparation)
แทนจุดกำหนดชื่อข้อมูลหรือค่าเริ่มต้นต่างๆ
การเรียกโปรแกรมภายนอก
(external subroutine)
แทนจุดเรียกใช้โปรแกรมย่อยที่ไม่ได้อยู่ในโปรแกรมนั้น
การเรียกโปรแกรมภายใน
(internal subroutine)
แทนจุดเรียกใช้โปรแกรมย่อยที่อยู่ในโปรแกรมนั้น
การเรียงข้อมูล
(sort)
แทนจุดที่มีการเรียงข้อมูลใหม่ตามข้อกำหนด
ทิศทาง
(flow line)
แทนทิศทางขั้นตอนการดำเนินงานซึ่งจะปฏิบัติต่อเนื่องกันตามหัวลูกศรชี้
หมายเหตุ
(annotation)
แทนจุดที่แสดงรายละเอียดเพิ่มเติมหรือหมายเหตุของจุดต่างๆ ที่แสดงในผังงานด้วยสัญลักษณ์ไม่ชัดเจน
การติดต่อทางไกล
(communication link)
แทนช่วงที่มีการติดต่อหรือย้ายข้อมูลด้วยระบบการติดต่อทางไกล
จุดเชื่อมต่อ
(connector)
แทนจุดเชื่อมต่อของผังงานเมื่อใช้สัญลักษณ์เพื่อให้ดูง่าย
จุดเชื่อมต่อหน้ากระดาษ
(off page connector)
แทนจุดเชื่อมต่อของผังงานที่อยู่คนละหน้ากระดาษ
เริ่มต้นและลงท้าย
(terminal)
แทนจุดเริ่มต้นและลงท้ายของผังงานของโปรแกรมหลักและโปรแกรมย่อย

3. การเขียนโปรแกรม
          จากการศึกษาหลักการขั้นตอนการแก้ปัญหาในหัวข้อที่ และ ที่ผ่านมา หลังจากที่เราสามารถวิเคราะห์ปัญหา และสร้างแบบจำลองความคิดเพื่อแสดงขั้นตอนในการแก้ปัญหาแล้ว ขั้นตอนต่อไปคือการลงมือแก้ปัญหาตามขั้นตอนที่ออกแบบไว้ โดยใช้เครื่องมือช่วยในการแก้ปัญหา ในที่นี้หากเครื่องมือที่นักเรียนเลือกคือภาษาคอมพิวเตอร์ ขั้นตอนในการลงมือแก้ปัญหาก็คือขั้นตอนของการเขียนโปรแกรมคอมพิวเตอร์ซึ่งถือได้ว่าเป็นขั้นตอนหนึ่งที่สำคัญในการแก้ปัญหาด้วยคอมพิวเตอร์
          การเขียนโปรแกรม (Programming) หมายถึง กระบวนการใช้ภาษาคอมพิวเตอร์เพื่อกำหนดโครงสร้างของข้อมูล และกำหนดขั้นตอนวิธีเพื่อใช้แก้ปัญหาตามที่ได้ออกแบบไว้ โดยอาศัยหลักเกณฑ์การเขียนโปรแกรมคอมพิวเตอร์ของแต่ละภาษา
          ก่อนการเขียนโปรแกรม ผู้พัฒนาโปรแกรมจะต้องเลือกภาษาคอมพิวเตอร์ที่จะนำมาใช้ช่วยงานโดยพิจารณาจากปัจจัยต่างๆ ในการทำงาน เช่น ลักษณะของปัญหา ความถนัดของผู้เขียนโปรแกรม สภาพแวดล้อมในการทำงานของระบบคอมพิวเตอร์ เป็นต้น เนื่องจากในปัจจุบันมีภาษาคอมพิวเตอร์ให้เลือกใช้ได้หลายภาษา เช่น ภาษาปาสคาล ภาษาซี ภาษาจาวา ภาษาเดลฟาย เป็นต้น ถึงแม้แต่ละภาษาจะมีรูปแบบและหลักการในการสร้างงานที่แตกต่างกัน แต่ทุกภาษาจะต้องมีโครงสร้างควบคุมหลักทั้ง แบบ ได้แก่ โครงสร้างแบบลำดับ (sequential structure) โครงสร้างแบบมีทางเลือก (selection structure) และโครงสร้างแบบทำซ้ำ (repetition structure)

j โครงสร้างแบบลำดับ (Sequential structure)
          คือ โครงสร้างแสดงขั้นตอนการทำงานที่เป็นไปตามลำดับก่อนหลัง และแต่ละขั้นตอนจะถูกประมวลผลเพียงครั้งเดียวท่านั้น สามารถแสดงการทำงานของโครงสร้างนี้ โดยใช้ผังงานได้ดังรูปที่ 1

รูปที่ 1 การทำงานของโครงสร้างแบบลำดับ


k โครงสร้างแบบมีทางเลือก  (Selection structure)
          คือ โครงสร้างที่มีเงื่อนไข ขั้นตอนการทำงานบางขั้นตอนต้องมีการตัดสินใจเพื่อเลือกวิธีการประมวลผลขั้นต่อไป และจะมีบางขั้นตอนที่ไม่ได้รับการประมวลผล การตัดสินใจอาจมีทางเลือก ทางหรือมากกว่าก็ได้ โครงสร้างที่มีทางเลือกเพียง ทาง เราเรียกชื่อว่าโครงสร้างแบบ if…then…else และโครงสร้างที่มีทางเลือกมากกว่า 2 ทาง เราเรียกชื่อว่า โครงสร้างแบบ case ซึ่งสามารถแสดงการทำงานของโครงสร้างนี้โดยใช้ผังงานได้ดังรูปที่ และ 3


รูปที่ 2 การทำงานของโครงสร้างแบบมีทางเลือก if…then…else


กรณีที่ 4
 

รูปที่ 3 การทำงานของโครงสร้างแบบมีทางเลือก case


l โครงสร้างแบบทำซ้ำ (Repetition structure)
          คือ โครงสร้างที่ขั้นตอนการทำงานบางขั้นตอนได้รับการประมวลผลมากกว่า ครั้ง ทั้งนี้ขึ้นอยู่กับเงื่อนไขบางประการ โครงสร้างแบบทำซ้ำนี้ต้องมีการตัดสินใจในการทำงานซ้ำ และลักษณะการทำงานของโครงสร้างแบบนี้มีลักษณะ ได้แก่
·   แบบที่มีการตรวจสอบเงื่อนไขในการทำซ้ำทุกครั้งก่อนดำเนินการกิจกรรมใดๆ ถ้าเงื่อนไขเป็นจริงจะทำงานซ้ำไปเรื่อยๆ และหยุดเมื่อเงื่อนไขเป็นเท็จ เรียกการทำงานลักษณะนี้ว่า การทำซ้ำแบบ do while
·   แบบที่ทำกิจกรรมซ้ำเรื่อยๆ จนกระทั่งเงื่อนไขที่กำหนดเป็นจริงแล้วจึงหยุดการทำงาน โดยแต่ละครั้งที่เสร็จสิ้นการดำเนินการแต่ละรอบจะต้องมีการตรวจสอบเงื่อนไข เรียกการทำซ้ำลักษณะนี้ว่า การทำซ้ำแบบ do until
ผังงานแสดงขั้นตอนการทำงานของโครงสร้างแบบทำซ้ำทั้งสองแบบ แสดงดังรูปที่ และ 5
รูปที่ 4 การทำงานของการทำซ้ำแบบ do while

รูปที่ 5 การทำงานของการทำซ้ำแบบ do until

ตัวอย่างที่ 7 แสดงผังงานที่จำลองขั้นตอนวิธีการหาค่าเฉลี่ยของจำนวนเต็ม จำนวน ให้อยู่ในรูปของสัญลักษณ์

ไม่มีความคิดเห็น:

แสดงความคิดเห็น