บทที่6 หลักการแก้ปัญหาด้วยคอมพิวเตอร์

วัตถุประสงค์

1. อธิบายหลักการแก้ปัญหาด้วยคอมพิวเตอร์

2. วิเคราะและกำหมดรายละเอียดของปัญหา

3. ใช้ภาษาโปรแกรมคอมพิวเตอร์และเคื่องมือต่างๆในการแก้ปัญหา

4. ประยุกต์หลักการไปใช้แก้ปัญหาในรูปแบบที่แตกต่างกัน

6.1 หลักการแก้ปัญหา

หลักการแก้ปัญหา

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

ตัวอย่างที่ 6.1 เกมทายใจเกมทายใจคือเกมที่จะให้ผู้เล่นทายตัวเลข 3 ตัวโดยต้องทายถูกตัวเลขและตำแหน่งซึ่ง
ต้องใช้ผู้เล่น 2 คน ผู้เล่นคนที่หนึ่งกำหนดตัวเลข 3 ตัวที่ไม่ซ้ำกันโดยเลือกจาตัวเลข 1-9 และผู้เล่นคนที่หนึ่ง
ต้องแจ้งผลการทายว่าตัวเลขที่ทายมานั้นถูกต้องกี่ตัว และถูกต้องกี่ตำแหน่ง ตัวอย่างเช่น ถ้าตัวเลขที่กำหนดไว้เป็น
8 1 5 และผู้เล่นคนที่สองทายว่า 1 2 3 ผู้เล่นคนที่หนึ่งต้องแจ้งว่าตัวเลขที่ทายนั้นถูกเพียงตัวเดียวและไม่มีตัวใด
ถูกตำแหน่งตัวอย่างการเล่นเกมทายใจ

 

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

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

 

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

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

1.1 การระบุข้อมูลออก

1.2 การระบุข้อมูลเข้า

1.3 ราบละเอียดของปัญหา

1.1 การระบุข้อมูลออก

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

 

1.2 การระบุข้อมูลเข้า

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

 

1.3 รายละเอียดของปัญหา

รายละเอียดของปัญหา คือ การพิจารณาความต้องการของปัญหา ตัวอย่างที่ 6.2 และ 6.3ต่อไปนี้แสดงรายละเอียดแต่ละ
ขั้นตอนของตัวอย่างปัญหาตัวอย่างที่ 6.2 ให้แสดงการวิเคราะห์และกำหนดรายละเอียดของการหาค่าเฉลี่ยนของจำนวนเต็ม
5 จำนวนองค์ประกอบของขั้นตอนการวิเคราะห์และกำหนดรายละเอียดของปัญหาสามารถแสดงได้ดังนี้

 

         ตัวอย่างที่ 6.3 ให้แสดงการวิเคราะห์และกำหนดรายละเอียดของโจทย์ต่อไปนี้ กำหนดตัวเลข 3 4 8 12 และ x ให้หาค่า x เมื่อค่าเฉลี่ยของจำนวนเต็มทั้ง 5 จำนวน มีค่าเป็น 10องค์ประกอบของขั้นตอนการวิเคราะห์และกำหนดรายละเอียด
ของปัญหาสามารถแสดงได้ดังนี้

      การเลือกเครื่องมือและวิธีออกแบบขั้นตอนวิธีในการแก้ปัญหา

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

 

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

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

 

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

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

 

          การตรวจสอบและปรับปรุงวิธีการ

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

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

6.2 เครื่องมือที่ใช้ในการออกแบบและขั้นตอนวิธีในการแก้ปัญหา

เครื่องมือที่ใช้ในการออกแบบและขั้นตอนวิธีในการแก้ปัญหา

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

6.2.1 รหัสลำลอง

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

ตัวอย่างที่ี่ 6.4 และ 6.5

ให้เขียนรหัสลำลองเพื่อถ่ายทอดความคิดขั้นตอนวิธีในการเปลี่ยนยางรถเมื่อยางแบนในขณะขับรถ

 

ตัวอย่างที่ 6.5 ให้เขียนรหัสลำลองเพื่อถ่ายทอดความคิดขั้นตอนวิธีในการหาค่าเฉลี่ยของเลขจำนวนเต็ม 5 จำนวน โดยกำหนด
ให้สามารถรับค่าตัวเลขได้เพียงครั้งละหนึ่งจำนวนเท่านั้น

 

         ผังงาน

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

 

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

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

      ตัวอย่างที่ 6.6

ให้เขียนผังงานเพื่อถ่ายทอดความคิดขั้นตอนวิธีในการเปลี่ยนยางรถเมื่อยางแบนในขณะที่ขับรถ

จากผังงานข้างต้นแสดงวิธีการแก้ปัญหาแบบเป็นลำดับตั้งแต่ต้นจนจบ โดยการแก้ปัญหาจะไม่มีการข้ามขั้นตอน

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

เช่น

 

เป็นการกำหนดตัวแปรชื่อ age ให้มีค่าเป็น 16 ซึ่งถ้าตัวแปร  age เคยถูกกำหนดค่าไว้ก่อนแล้ว ค่าดั้งเดิมจะถูกแทนที่ด้วยค่าที่กำหนดให้ใหม่ทันที และค่านี้จะคงอยู่ไปจนกว่าจะถูกเปลี่ยนแปลงอีกครั้งหนึ่ง

     ตัวอย่างที่ 6.7

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

  

ในตัวอย่างนี้ มีการใช้งานตัวแปรหลายตัวเพื่อเก็บค่าที่ค่าแตดต่างกัน ได้แก่ ตัวแปร counter ซึ่งจะใช้เพื่อเป็นตัวนับว่ามีการรับค่าตัวเลขไปกี่ตัวแล้ว ตัวแปร sum ใช้เพื่อเก็บค่าผลรวมของตัวเลขทุกตัว ซึ่งตัวแปรทั้งสองตัวนี้จะต้องกำหนดค่าให้เป็น 0 ก่อนที่จะใช้งาน สำหรับตัวแปร x จะใช้เพื่อรับค่าตัวเลขทีละตัวเมื่อรับค่า จะถูกนำค่าไปรวมกับค่า sum เป็นการเก็บค่าผลรวม แล้วตัวแปร x จะสามารถถูกนำไปใช้ซ้ำเพื่อรับค่าเลขตัวถัดไปได้อีก ตัวแปรสุดท้ายคือ avreage ที่ใช้เพื่อเก็บค่าเฉลี่ยที่ได้แล้วรอการนำไปแสดงผลต่อไป

6.3 โครงสร้างการโปรแกรม

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

โดครงสร้างแบบลำดับ (sequential structure)

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

โครงสร้างแบบเรียงลำดับเมื่อเขียนเป็นผังงาน จะมีลักษณะดังเช่นรูปที่ 6.9 และมีกระบวนการทำงานพื้ฐานอยู่ 3 ชนิด ดังแสดงในรูปที่ 6.10 ได้แก่

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

- การรับข้อมูลเข้า เป็นกระบวนการรับข้อมูลจากอุปกรณ์ของหน่วยรับเข้า เช่น คีย์บอร์ด เพื่อนำค่าไปกำหนดให้กับตัวแปร และเก็บไว้ในหน่วยความจำ

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

ในการดำเนินการเพื่อแก้ปัญหาด้วยคอมพิวเตอร์ กระบวนการเหล่านี้ต้องถูกแปลงให้อย฿่รูปของคำสั่งหลายคำสั่งประกอบกันเพื่อให้ทำงานตามขั้นตอนที่ได้ออกแบบไว้ เช่น กรบวนการการคำนวณในการเพิ่มค่าของตัวแปร counter ขึ้นอีกหนึ่ง จะใช้คำสั่ง ” counter < counter + 1  ” กระบวนการรับข้อมูลเข้าเพื่อเก็บไว้ในตัวแปร x จะใช้คำสั่ง  ” input x” และกระบวนการส่งข้อมูลออกไปยังจอภาพเพื่อแสดงผลของตัวแปร average จะใช้คำสั่ง “print avereage” เป็นต้น

โครงสร้างแบบทางเลือก (selection structure)

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

      

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

 

โครงสร้างแบบวนซ้ำ(repetition structure)

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

        

 

สิ่งที่ควรระวังในการใช้งานขั้นตอนวิธีแบบมีการวนซ้ำคือ ต้องตรวจสอบว่าได้กำหนดเงื่อนไขอย่างรัดกุมและถูกต้อง มิเช่นนั้นแล้วอาจเกิดกรณีแบบวนซ้ำไม่รู้จบ (infinte loop) หรือกรณีที่วนซ้ำไม่ไ้ด้ตามจำนวนรอบที่ต้องการ