บทที่ 1

บทที่ 1 ขั้นตอนและการวางแผนพัฒนาโปรแกรม
สาระการเรียนรู้
1.         ความรู้เบื้องต้นเกี่ยวกับการเขียนโปรแกรม
2.         หลักการเขียนโปรแกรม
3.         วงจรการพัฒนาโปรแกรม
4.         คุณลักษณะของโปรแกรมที่ดี
5.         เครื่องมือมือในการออกแบบโปรแกรม
จุดประสงค์การเรียนรู้
1.         บอกขั้นตอนการวางแผนและพัฒนาโปรแกรมได้
2.         บอกคุณลักษณะของโปรแกรมที่ดีได้
3.         อธิบายเครื่องมือต่างๆ ในการออกแบบโปรแกรมได้
4.         บอกวิธีการลงรหัสของโปรแกรมได้
5.         อธิบายการทดสอบและแก้ไขโปรแกรมได้
6.         วิเคราะห์ขั้นตอนเพื่อแก้ไขปัญหาของคอมพิวเตอร์ได้
7.         พัฒนาลำดับขั้นตอนวิธีการทำงานได้
8.         เขียนขั้นตอนการหาแนวทางการแก้ไขปัญหาด้วยคอมพิวเตอร์ได้
9.         เลือกเครื่องมือในการออกแบบโปรแกรมให้ที่เหมาะสม
10.     มีความสุขใจใฝ่เรียนรู้ ตั้งใจเรียน
11.     มีวินัย เข้าเรียนทันเวลาปฏิบัติตามกฎระเบียบของวิทยาลัยฯ
12.     มีความรับผิดชอบต่องานที่ได้รับมอบหมาย
13.     มีความคิดริเริ่มสร้างสรรค์ มีความเชื่อมั่นกล้าลองผิดลองถูก
14.     มีความซื่อสัตย์ต่อตนเองและผู้อื่น





ม้วนกระดาษแนวนอน: ความรู้เบื้องต้นเกี่ยวกับการออกแบบโปรแกรม 


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





ขนาดของโปรแกรม
จำนวนของนักเขียนโปรแกรม
เวลาที่ใช้สำหรับการเขียนโปรแกรม
จำนวนบรรทัดของโปรแกรม
เล็กมาก
1คน
1-4 สัปดาห์
500
เล็ก
1 คน
1-6 เดือน
1,000 – 5,000
ปานกลาง
2-5 คน
1-2 ปี
5,000 -50,000
ใหญ่
5-20 คน
2-3 ปี
50,000 -100,000
ใหญ่มาก
100-1,000 คน
4-5 ปี
1,000,000

ม้วนกระดาษแนวนอน: หลักการออกแบบโปรแกรม
 




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




     ในการเขียนโปรแกรมหรือพัฒนาโปรแกรม  ผู้เขียนโปรแกรมต้องเตรียมงานเกี่ยวกับการเขียนโปรแกรมอย่างเป็นขั้นตอน อาจแบ่งขั้นตอนสำหรับการออกแบบและการพัฒนาการเขียนโปรแกรมด้วยคอมพิวเตอร์ออกเป็น 6 ขั้นตอนดังนี้
1.          การวิเคราะห์ความต้องการ  (Requirement Analysis & Feasibility Study)
เป็นขั้นตอนการวิเคราะห์ปัญหาจากระบบงาน  สำหรับการวิเคราะห์ความต้องการ  การทำความเข้าใจกับปัญหาและค้นหาสิ่งที่ต้องการนิยมใช้วิธีวิเคราะห์   จากผลลัทธ์หรือลักษณะรูปแบบรายงานของระบบงานนั้น ๆ เพื่อย้อนกลับไปถึงที่มาของข้อมูล  สมการคำนวณจนถึงการป้อนข้อมูลที่มีความเกี่ยวข้องในการดำเนินการประมวลผล   เพื่อให้ผลลัทธ์เข้าระบบการกำหนดลักษณะของการทำงานของโปรแกรม  ระหว่างผู้ที่ทำการออกแบบโปรแกรมต้องเก็บความต้องการทั้งหมดของผู้ใช้  ที่ต้องการได้รับจากโปรแกรมคอมพิวเตอร์  ยิ่งเก็บรายละเอียดความต้องการของผู้ใช้งานได้มากเท่าใด  โปรแกรมคอมพิวเตอร์ที่ได้รับการออกแบบจะสามารถแก้ปัญหานั้นได้ดียิ่งขึ้น  การเก็บรายละเอียดของความต้องการได้ไม่ครบถ้วนจะทำให้เสียเวลาในการออกแบบโปรแกรม  เพราะต้องทำการแก้ไขโปรแกรมหลังจากที่ทำการออกแบบไปแล้ว  รวมไปถึงอาจต้องทำการเขียนโปรแกรมเพิ่มขึ้นในส่วนที่ต้องการให้โปรแกรมทำงานเพิ่มเติม

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

ตัวอย่างการวิเคราะห์ความต้องการ
ตัวอย่างที่  1 จงคำนวณค่าลงทะเบียนของนักศึกษาระดับ  ปวช. คิดค่าลงทะเบียนหน่วยกิตละ  80  บาท
1.         สิ่งที่ต้องการ   ค่าลงทะเบียน
2.         รูปแบบผลลัพธ์ ชื่อนักศึกษา,จำนวนหน่วยกิต,ค่าลงทะเบียน
3.         ข้อมูลนำเข้า        ชื่อนักศึกษา
จำนวนหน่วยกิต
4.         ตัวแปรที่ใช้          :NAME  =ชื่อนักศึกษา
: CRE      = จำนวนหน่วยกิต
: MONEY =คะแนนคณิตศาสตร์
: ENG      =ค่าหน่วยกิต
5.         วิธีการประมวลผล : 1. เริ่มต้น
2.รับค่า NAME, CRE
3.คำนวณค่าลงทะเบียน  MONEY = CRE * 80
                                                      4.คำนวณคะแนนเฉลี่ย AVER = SUM / 3
5.พิมพ์  NAME,CRE,MONEY
                                                      6.จบการทำงาน

ตัวอย่างที่  2    จงคำนวณคะแนนเฉลี่ยจากการสอบ  3 วิชา  ของนกศึกษา  ประกอบด้วยวิชาภาษาไทยชื่อนักศึกษาคณิตศาสตร์และภาษาอังกฤษ
1.         สิ่งที่ต้องการ     คะแนนเฉลี่ย  3 วิชา
2.         รูปแบบผลลัพธ์  :ชื่อนักศึกษา ,คะแนนรวม ,คะแนนเฉลี่ย
3.         ข้อมูลนำเข้า  : ชื่อนักศึกษา
                      คะแนนภาษาไทย
                       คณิตศาสตร์
                       ภาษาอังกฤษ
4.   ตัวแปรที่ใช้   :NAME  = ชื่อนักศึกษา
THAI     =   คะแนนภาษาไทย
MATH  =คะแนนคณิตศาสตร์
ENG  =คะแนนภาษาอังกฤษ
SUM  =คะแนนรวม
AVER  =คะแนนเฉลี่ย
5.วิธีการประมวลผล  :  
                                    1.  เริ่มต้น
2. รับค่า  NAME , THAI , MATH ,ENG
3.คำนวณคะแนนรวม  SUM  = THAI + MATH + ENG
4. คำนวรคะแนนเฉลี่ย  AVER = SUM /3
5.  พิมพ์  NAME , SUM ,AVER
                                               6.  จบการทำงาน

ตัวอย่างที่ 3    จงคำนวณรายได้สุทธิของพนักงาน  หาได้จากเงินเดือนและเงินล่วงหน้าจากอัตราปกติชั่วโมงล่ะ 80 บาท ถ้าทำล่วงเวลาเกน  30  ชั่วโมง ๆ ละ 100 บาท
1.         สิ่งที่ต้องการ  :  เงินล่วงเวลา , รายได้สุทธิ
2.         รูปแบบผลลัทธ์ :  ชื่อพนักงาน,เงินเดือน,เงินล่วงเวลา,รายได้สุทธิ
3.         ข้อมูลนำเข้า  :  ชื่อพนักงาน
เงินเดือน
  ชั่วโมงทำงานล่วงเวลา
4.         ตัวแปรที่ใช้  : NAME = ชื่อพนักงา
                       SAL = เงินเดือน
                       HOUR = ชั่วโมงทำงานล่วงเวลา
                       OT = เงินเดือน
                       NET = รายได้สุทธิ
5.         วิธีการประมวลผล :
1. เริ่มต้น
                                 2.  รับค่า NAME ,SAL,HOUR
3.ตรวจสอบชั่วโมงทำงานล่วงเวลา เพื่อคำนวณเงินล่วงเวลา
ถ้า HOUR <= 30 ให้ OT =HOUR * 80 แล้วไปทำข้อ 4.
 ถ้า HOUR > 30 ให้ OT = HOUR * 100 แล้วไปทำข้อ 4.
4. คำนวณรายได้สุทธิ NET = SAL + OT
5.พิมพ์ NAME , SAL, OT,NET
6. จบการทำงาน
2. ขั้นวางแผนแก้ไขปัญหา (Algorithm  Design)
       การทำงานแผนแก้ไข้ปัญหาเป็นการจัดลำดับการทำงานของโปแกรมตามขั้นตอนการประมวลผล และสอดคล้องกับวิธีการทำงานของคอมพิวเตอร์ขั้นตอนนี้มักเรียกว่า การออกอัลกอริทึม ซึ่งเป็นแนวทางที่ช่วยให้โปรแกรมเมอร์เขียนโปรแกรมได้ง่ายขั้น ขั้นตอนการงวางแผนแก้ไขปัญหาทางคอมพิวเตอร์มีหลายวิธี เช่น ใช้วิธีการแก้ไขอัลกอริทึม ( Algorithm ) การเขียนคำสั่งเทียม ( Pseudo Code )การเขียนผังงาน ( Flowchart ) เป็นต้น ทั้งนี้แต่ละวิธีมีจุดประสงค์เพื่อแสดงลำดับขั้นตอนกระบวนการแก้ไขปัญหางาน เพื่อให้ได้ผลลัพธ์ตามต้องการ  ก่อนไปสู้ขั้นตอนการเขียนคำสั่งงาน
1การเขียนอัลกอริทึม  เป็นการนำเอาลำดับขั้นตอนการทำงานที่ออกแบบไว้  มาเขียนอยู่ในรูปภาษาเขียน  หรืออาจเขียนอยู่ในรูปภาษาอังกฤษที่จัดเป็นโครงการไว้ เช่นเดียวกับการเขียนคำสั่งเทียมแต่ต่างกันที่การเขียนอัลกอริทึมจะเน้นลำดับขั้นตอนการทำงานเป็นหลักจึงมีการตัดทอนรายละเอียดปลีกย่อยออก
2.  การเขียนผังงาน เป็นการนำเอาขั้นตอนการทำงานมาเขียนเป็นแผนภาพหรือสัญลักษณ์ โดยเปลี่ยนจากคำพูดหรือข้อความในการวิเคราะห์ มาเป็นรูปภาพก่อนแล้วใช้คำอธิบายข้อความนั้น ๆ เขียนเพิ่มเติมในรูปสัญลักษณ์ที่เป็นมาตรฐานสากล โดยสัญลักษณ์แต่ล่ะรูปจะสื่อความหมายแทนการกระทำแต่ละอย่าง ที่จะต้องศึกษาทำความเข้าใจ
3การเขียนคำสั่งเทียม เป็นเครื่องมือที่ใช้กันมากในการออกแบบโปรแกรมช่วยให้โปรแกรมเมอร์สามารถเขียนโปรแกรมได้ง่ายขึ้น ภาษาหรือคำที่ใช้เขียนคำสั่งเทียม  เป็นการผสมผสานระหว่างคำในภาษาอังกฤษทั่วไปกับภาษาคอมพิวเตอร์ โครงสร้างของคำสั่งเทียมจึงมีส่วนที่คล้ายกับการเขียนโปรแกรมมาก
  3.  ขั้นดำเนินการเขียนโปรแกรม (Program Coding)
  การเขียนโปรแกรมทางคอมพิวเตอร์  ต้องใช้คำสั่งของภาษาคอมพิวเตอร์ภาษาใดภาษาหนึ่งโดยเลือกใช้ภาษาที่เหมาะสมกับลักษณะและประเภทของงาน   โดยใช้หลักพิจารณาถึงความรู้ความสามารถและความถนัดของผู้เขียนโปรแกรมว่า  สามารถใช้โปรแกรมใดได้บ้าง  จากนั้นจึงพิจารณาประสิทธิภาพการทำงานของคำสั่งในภาษาเป็นลำดับถัดมาแล้วจึงนำมาเป็นชุดคำสั่งตามลำดับขั้นที่ได้วางแผนแก้ปัญหาไว้  การเขียนโปรแกรมภาษาคอมพิวเตอร์ต้องการเขียนให้ถูกต้องตามหลักไวยากรณ์ของภาษาที่เลือก ตัวอย่างของโปรแกรมภาษาคอมพิวเตอร์  เช่น  ภาษาปาสคาล , ภาษาซีหรือภาษาเบสิกเป็นต้น

ตัวอย่างของโปรแกรมภาษาสำหรับส่วนของการคำนวณหาคะแนนเฉลี่ยและการแสดงผล
ภาษาคอมพิวเตอร์
คำสั่งคำนวณ
คำสั่งเหตุผล
ภาษาปาสคาล
Average := Sum / Number;
Write (Average);
ภาษาซี
Average = Sum / Number;
print (“%f” , Average);
ภาษาเบสิก
Let A = S / N
Print A

จากตัวอย่างโปรแกรมภาษาคอมพิวเตอร์สำหรับการทำงานต่าง ๆ โดยเขียนในลักษณะของโปรแกรมภาษาคอมพิวเตอร์ที่แตกต่างกันออกไปแต่ลักษณะการทำงานของแต่ละโปรแกรมภาษาคอมพิวเตอร์จะมีการทำงานที่เหมือนกัน
4.  ขั้นทดสอบและแก้ไขโปรแกรม(Program Testing & Debugging)
การทดสอบการทำงานของโปรแกรม นิยมดำเนินการใน 2 ช่วง คือ ช่วงแรกทดสอบโดยผู้พัฒนาระบบงานเอง ก่อนนำไปใช้งานจริง โดยใช้ข้อมูลสมมติบันทึกเข้าระบบ ประมวลผลเพื่อพิจารณาผลลัพธ์ว่าเป็นไปตามที่ได้วิเคราะห์หรือไม่ หากยังมีข้อผิดพลาด ต้องดำเนินการแก้ไขปรับปรุงโปรแกรมให้ถูกต้อง จากนั้นเมื่อทดสอบการทำงานจนได้ผลถูกต้องแล้ว จึงนำไปทดสอบในอีกช่วง คือ ทดสอบโดยผู้ใช้ระบบจริงหากยังมีข้อแก้ไขปรับปรุงอีก ผู้พัฒนาระบบงานต้องดำเนินการให้แล้วเสร็จ ให้เป็นไปตามวัตถุประสงค์ของระบบงานและผู้ใช้ระบบ
    การทดสอบการทำงานของโปรแกรมด้วยชุดข้อมูลจริง 1, 10 หรือ 100 ชุดข้อมูล แล้วโปรแกรมคอมพิวเตอร์สามารถทำงานได้อย่างถูกต้อง จะแน่ใจได้อย่างไรว่าโปรแกรมคอมพิวเตอร์ที่ทำการเขียนขึ้นมานั้น สามารถทำงานได้ถูกต้องกับทุกข้อมูลจริงที่ใช้งาน วิธีการพื้นฐานที่ใช้สำหรับทดสอบการทำงานของโปรแกรมคอมพิวเตอร์ที่ทำการเขียนขึ้นมา มีด้วยกัน 2 วิธีคือ ทดสอบด้วยข้อมูลจำนวนมาก (Empirical testing) และการทดสอบอย่างมีแบบแผน (Formal Verification)
1.         การทดสอบด้วยข้อมูลจำนวนมาก
 เป็นการทดสอบโดยทดลองป้อนชุดข้อมูลที่เหมือนกับข้อมูลที่ใช้งานจริง จำนวนมากเข้าไปในโปรแกรมแล้วทดลองให้โปรแกรมทำงาน จากนั้นสังเกตผลลัพธ์ที่ได้จากการทำงานของโปรแกรม ว่าสามารถทำงานได้อย่างถูกต้องหรือไม่ กับทุกชุดข้อมูลจริงที่ทำการป้อนเข้าไป โปรแกรมคอมพิวเตอร์ต้องทำงานได้อย่างถูกต้องกับชุดข้อมูลที่ทำการป้อนเข้าไป จำนวนของชุดข้อมูลที่ใช้ในการทดสอบขึ้นอยู่กับจำนวนข้อมูลจริงที่ใช้งาน
2.   การทดสอบอย่างมีแบบแผน
เป็นการทดสอบโดยใช้หลักเกณฑ์ทางคณิตศาสตร์หรืทางตรรกศาสตร์มาสนับสนุนความ   ถูกต้องของการทำงานของโปรแกรม โดยใช้ชุดข้อมูลที่มีความซับซ้อน มาทำการทดสอบการทำงานของโปรแกรม หรือทาการทดสอบการทางานของโปรแกรมทุกกรณีที่ชุดข้อมูลสามารถเป็นได้ เพื่อสนับสนุนว่าโปรแกรมคอมพิวเตอร์ที่ทำการสร้างขึ้นมานี้สามารถทำงานได้อย่างถูกต้อง
                     การตรวจสอบจุดผิดพลาดของโปรแกรม (Bugs) ที่เขียนขึ้น และดำเนินการแก้ไขข้อผิดพลาดนั้น เรียกว่าการ Debugs โปรแกรมที่ทำงานไม่ได้ตามวัตถุประสงค์ เรียกว่า โปรแกรมมี Error มักเกิดจาก 2 สาเหตุหลัก คือ
 1.ข้อผิดพลาดทางไวยากรณ์ของภาษา (Syntax Error) คือข้อผิดพลาดที่เกิดจากการเขียนโค้ดคำสั่ง (Source Code) ที่ไม่ตรงกับไวยากรณ์ (Syntax) ของภาษาโปรแกรมนั้น ๆ ข้อผิดพลาดนี้เป็นข้อผิดพลาดที่ง่ายต่อการตรวจหาและแก้ไข เนื่องจากจะพบในระหว่างที่มีการแปลภาษาโปรแกรม ถ้ามีข้อผิดพลาดประเภทนี้อยู่ตัวแปลภาคอมพิวเตอร์จะแจ้งให้ทราบทันที และต้องแก้ไขจนถูกต้องจึงจะทำงานต่อไปได้
2. ข้อผิดพลาดที่เกิดจากการตีความหมายของปัญหาผิดไป(Logical Error) เป็นข้อผิดพลาดที่เกิดจากการออกแบบอัลกอริทึมให้ทำงานผิดจากวัตถุประสงค์หรือความต้องการ การแก้ไขข้อผิดพลาดประเภทนี้จะต้องทำโดยการตรวจไล่โปรแกรมทีละคำสั่ง เพื่อหาข้อผิดพลาดนั้นให้พบ
การตรวจสอบโปรแกรมเพื่อหาข้อผิดพลาด อาจจะทำเป็นขั้นตอน ดังนี้
1.    การตรวจสอบก่อนนำโปรแกรมเข้าเครื่องคอมพิวเตอร์ เรียกขั้นตอนนี้ว่า “Desk Checking” วิธีการนี้จะตรวจสอบว่าโปแรกรมสามารถให้ผลลัพธ์ตามต้องหารหรือไม่ เป็นการตรวจสอบข้อผิดพลาดทางตรรกะ โดยกำหนดข้อมูลชุดหนึ่งขึ้นมาแล้วแทนค่าตามขั้นตอนต่าง ๆ ที่เขียนโปแรกรมไว้ตั้งแต่ต้นจนจบ โดยสมมติว่าเป็นการปฏิบัติงานของเครื่องคอมพิวเตอร์ วิธีการนี้จะช่วยลดข้อผิดพลาดทางตรรกะได้มาก
2. การตรวจสอบโดยเครื่องคอมพิวเตอร์ โดยส่งโปรแกรมเข้าเครื่องพร้อมข้อมูลสมมติที่ทราบคำตอบ ขั้นแรกเครื่องคอมพิวเตอร์จะทำการตรวจ Syntax Error หรือข้อผิดพลาดทางไวยากรณ์ ถ้าพบจะพิมพ์ข่าวสารข้อผิดพลาดนั้นออกมา ถ้าได้คาตอบตรงตามต้องการ ก็ค่อนข้างมั่นใจว่าโปรแกรมน่าจะถูกต้อง เมื่อทดสอบโปรแกรมแล้วสามารถนำโปรแกรมพร้อมข้อมูลจริงเข้าเครื่องคอมพิวเตอร์ เพื่อทำการประมวลผลต่อไป
5. การทาเอกสารรายงานประกอบโปรแกรม (Documentation)
           เมื่อทาทุกอย่างเรียบร้อยแล้ว ถ้าจะให้สมบูรณ์ที่สุด ผู้เขียนโปรแกรมควรจะทำคู่มือการใช้โปรแกรมหรือทาเอกสารรายงานประกอบการใช้งาน ซึ่งเป็นขั้นตอนที่นำเอาโปรแกรมและผลลัพธ์ของโปรแกรมที่ได้มาจัดทำเป็นเอกสารรายงานประกอบโปรแกรม ในคู่มือหรือเอกสารประกอบการใช้งานควรจะบอกวิธีการแก้ปัญหาต่าง ๆ เบื้องต้นที่อาจเกิดขึ้นระหว่างการใช้งานโปรแกรมนั้น ขั้นตอนการทำงานของโปรแกรม และแนะนำวิธีการใช้งานที่ถูกต้อง เอกสารดังกล่าวจะช่วยให้ผู้ใช้โปรแกรมเข้าใจวัตถุประสงค์และสามารถใช้งานได้สะดวกยิ่งขึ้น ตลอดจนการปรับปรุงเปลี่ยนแปลงแก้ไขโปรแกรมก็สามารถดูได้จากเอกสารรายงานประกอบโปรแกรม
เอกสารรายงานประกอบโปรแกรมควรมีลักษณะดังนี้
1. วัตถุประสงค์
2. คุณสมบัติของเครื่องคอมพิวเตอร์ และอุปกรณ์ที่ใช้ในการเขียนโปรแกรม
3. ภาษาที่ใช้ในการเขียนโปรแกรม
4. ขั้นตอนการใช้โปรแกรม
5. สาระสำคัญเกี่ยวกับการออกแบบโปรแกรม
6. รายละเอียดของโปรแกรม
7. ตัวอย่างข้อมูลที่ใช้ทดสอบโปรแกรม
8. ผลลัพธ์ของการทดสอบโปรแกรม
           จากนั้นนาเอาเอกสารทั้งหมดที่ได้มาทำการรวมให้เป็นเอกสารประกอบที่สมบูรณ์ เพื่อให้สะดวกกับการใช้งานและใช้สำหรับผู้ที่ทาการเขียนโปรแกรมคนต่อ ๆ ไป ที่จะมาศึกษาการทางานของโปรแกรมและพัฒนาการทำงานของโปรแกรมในภายหลัง
                เอกสารประกอบการทำงานของโปรแกรม สามารถแบ่งได้ 2 ประเภท คือ
               1. คู่มือระบบ (System Manual) คือ เอกสารที่เป็นรายละเอียดความต้องการของผู้ใช้งานโปรแกรม วิธีการออกแบบส่วนของมอดูลต่าง ๆ ที่มีใช้งานในโปรแกรม ขั้นตอนวิธีที่ใช้สาหรับนำมาเขียนโปรแกรม ลักษณะโครงสร้างข้อมูลที่มีการใช้งาน หรือใช้เป็นกรณีศึกษาสำหรับพัฒนาโปรแกรมในด้านอื่นต่อไป จะมีประโยชน์ต่อการปรับปรุงแก้ไขโปรแกรมในอนาคต
                2. คู่มือการใช้งาน (User Manual) คือ เอกสารที่บอกถึงวิธีการใช้งานโปรแกรมที่ได้ทำการเขียนขึ้น เช่น โปรแกรมนี้ทำอะไร วิธีเปิดโปรแกรม วิธีการป้อนข้อมูล วิธีการพิมพ์เอกสารออกทางเครื่องพิมพ์ ตัวอย่างข้อมูลที่ใช้งานในโปรแกรมลักษณะของหน้าจอของโปรแกรมที่ใช้สำหรับติดต่อระหว่างโปรแกรมคอมพิวเตอร์กับผู้ใช้งานโปรแกรม คู่มือการใช้งานโปรแกรมจะมีประโยชน์สาหรับผู้ใช้งานโปรแกรม ศึกษาเพื่อสามารถนำโปรแกรมที่เขียนขึ้นมาใช้งานได้อย่างถูกต้อง
6. การบำรุงรักษาโปรแกรม (Program Maintenance)
        หลังจากที่โปรแกรมที่เขียนขึ้นได้ถูกใช้งานไประยะเวลาหนึ่ง ผู้ใช้โปรแกรมอาจจะมีวามต้องการเพิ่มเติมจากโปรแกรมเดิมที่เป็นอยู่ ซึ่งจะต้องทำการปรับปรุงให้ตรงกับความต้องการนั้น ๆ การบำรุงรักษาโปรแกรม คือการนำโปรแกรมมาเปลี่ยนแปลงบางส่วนหรือแก้ไขเพียงเล็กน้อย ทั้งนี้ถ้ามีการเปลี่ยนแปลงทั้งหมดจะทำให้สิ้นเปลืองกาลังคนและค่าใช้จ่าย โปรแกรมที่ได้รับการบำรุงรักษาแล้ว ควรเป็นโปรแกรมที่อ่านแล้วเข้าใจง่าย และสามารถแก้ไขได้ง่าย ฉะนั้น เอกสารประกอบระบบต่าง ๆ ที่ทำไว้จึงมีความสำคัญยิ่งในการปรับปรุงแก้ไขโปรแกรม โดยทั่วไปแล้วการปรับปรุงแก้ไขโปรแกรมสามารถกระทำใน 2 ลักษณะ คือ
             1. การบำรุงรักษาระบบ (Maintenance)
2. การเปลี่ยนแปลงระบบทั้งหมด (Redevelopment)
           การบำรุงรักษาระบบหรือการเปลี่ยนแปลงแก้ไขเพียงเล็กน้อย จะไม่กระทบกระเทือนต่อผู้ใช้และไม่ ต้องสิ้นเปลืองกาลังคนและค่าใช้จ่ายมากนัก ในขณะที่การเปลี่ยนแปลงระบบทั้งหมดจะทำให้สิ้นเปลืองทั้งกาลังคน และค่าใช้จ่ายทำให้เกิดความเสียหายเป็นอย่างมาก เพราะเท่ากับเป็นการเริ่มต้นใหม่อีกครั้ง บางองค์กรจะให้มีคณะกรรมการปรับปรุงแก้ไข เพื่อตัดสินใจในกรณีที่จะต้องมีการแก้ไขเล็กน้อย การตัดสินใจอาจจะพิจารณาแก้ไขในกรณีที่เลวร้ายที่สุดก่อน หรือบางองค์กรอาจจะพิจารณาที่อัตราผลได้ ผลเสียและค่าใช้จ่ายเป็นหลัก
ม้วนกระดาษแนวนอน: คุณลักษณะของโปรแกรมที่ดี (The Characteristic of a good Program)
 




        โปรแกรมเกิดจากการนำเอาคาสั่ง (Instruction) มาเรียงลำดับหรือเป็นการนำเอาคาสั่งต่าง ๆ มาประกอบกันขึ้นเป็นโปรแกรม เพื่อประมวลผลงานอย่างใดอย่างหนึ่งตามความต้องการของผู้ใช้ การที่จะมีลักษณะของโปรแกรมที่ดีจะต้องมีคุณสมบัติดังต่อไปนี้
          1. มีความถูกต้อง (Correctness) โปรแกรมที่ดีจะต้องมีความถูกต้อง ให้ผลลัพธ์ถูกต้องแม่นยำตรงกับความต้องการของผู้ใช้เป็นสำคัญ
2. มีความแม่นยำและเชื่อถือได้ (Reliability) การทำงานของโปรแกรมนั้นจะต้องไม่มีข้อผิดพลาดเกิดขึ้นในการทำงานของโปรแกรม เช่น เมื่อโปรแกรมรันงานเดิมเป็นจำนวน หลาย ๆ ครั้ง จะต้องให้ผลลัพธ์ที่ได้ในลักษณะเดิมทุกครั้ง โดยไม่มีข้อผิดพลาดใด ๆ เกิดขึ้น เป็นต้น
 3. มีความเข้ากันได้ (Portability) จะต้องมีความเข้ากันได้กับ Hardware ไม่ติดอยู่กับ Hardware ตัวใดตัวหนึ่ง โดยจะต้องสามารถที่จะนำโปรแกรมไปรันงานที่เครื่องใดๆก็ได้
   4. บำรุงรักษาโปรแกรมได้ง่าย (Maintainability) ต้องมีการบำรุงรักษาโปรแกรมได้อย่างสะดวก นั่นคือ หากมีการปรับปรุงเปลี่ยนแปลงโปรแกรมก็จะต้องสามารถแก้ไขได้ง่าย เป็นต้น
5. ต้องอ่านง่าย (Readability) ผู้เขียนโปรแกรมจะต้องเขียนโปรแกรมให้อ่านง่าย เช่นการ Coding Program จะต้องเป็นระบบระเบียบ มีย่อหน้า เว้นวรรค มีการหมายเหตุในโปรแกรม กำหนดตัวแปรต่าง ๆ จะต้องสื่อความหมายได้ เพื่อผู้เขียนโปรแกรมคนอื่น ๆ หรือเจ้าของโปรแกรมเองจะสามารถเข้าไปปรับปรุงแก้ไขได้ด้วยความสะดวก หากมีการปรับเปลี่ยนเกิดขึ้นในอนาคต
6. มีความเป็นมิตรต่อผู้ใช้ (User-friendliness) ปัจจุบันมีผู้ใช้โปรแกรมในการทางานมากขึ้น มีผู้ใช้ที่เป็นผู้ที่เริ่มต้นและไม่มีพื้นฐานทางด้านคอมพิวเตอร์เลย และมีแนวโน้มมากขึ้นการสร้างโปรแกรมให้ใช้งานง่าย ใช้เวลาในการเรียนรู้โปรแกรมในระยะเวลาอันสั้น จึงเป็นสิ่งที่สำคัญ
 7. สามารถนำกลับมาใช้ใหม่ (Reusability) โปรแกรมที่มีความสามารถมาก มักมีโครงสร้างขนาดใหญ่และซับซ้อน จึงควรมีการออกแบบเป็นโมดูลย่อย ๆ ที่มีอิสระต่อกัน และเรียบง่าย เพื่อให้ผู้พัฒนานำโปรแกรมคนอื่นสามารถเข้าใจและนำไปพัฒนาต่อกับยุคสมัยได้ หรือเพื่อใช้งานร่วมกับสภาวะแวดล้อมใหม่ได้อีก โดยการพัฒนาโปรแกรมด้วยภาษาเชิงวัตถุ
8. มีความปลอดภัย (Security) มีความสามารถในการป้องกันการเข้าถึงข้อมูล หรือแฟ้มข้อมูลเพื่อป้องกันการทำลายข้อมูลจากผู้ที่ไม่มีสิทธิในการใช้งานโปรแกรม
9. ค่าใช้จ่ายต่ำ  ( Low Cost) ก่อนการพัฒนาต้องวางแผนและประเมินค่าใช้จ่าย เมื่อพัฒนาก็ต้องควบคุมค่าใช้จ่ายให้เป็นตามแผน ทั้งส่วนของผู้ใช้และผู้พัฒนาโปรแกรม
ม้วนกระดาษแนวนอน: เครื่องมือในการออกแบบโปรแกรม (Program Design Tools)10. ใช้เวลาในการพัฒนาน้อย เทคโนโลยีเปลี่ยนแปลงอย่างรวดเร็ว การพัฒนาโปรแกรมต้องเร็วเพื่อให้ทันส่งมอบงานและการนาไปใช้ของผู้ใช้


           เครื่องมือในการออกแบบโปรแกรมจัดว่าเป็น Graphic Model Diagram ที่จะเป็นแผนภาพบอกลาดับและขั้นตอนการทำงานของโปรแกรม เครื่องมือในการออกแบบโปรแกรมนี้มีอยู่หลายรูปแบบ เช่น
*   ผังงาน (Flowchart)
ผังงาน (Flowchart) จัดว่าเป็นเครื่องมือที่เก่าแก่และเป็นที่รู้จักกันมากที่สุด นักโปรแกรมส่วนใหญ่จะต้องรู้จักใช้ผังงานในการออกแบบโปรแกรม หรือใช้ในการเขียนโปรแกรมเป็นอย่างดี โดยเฉพาะในช่วงที่เริ่มฝึกหัดเขียนโปรแกรมใหม่ ๆ แต่พอมีความชำนาญมากขึ้นก็อาจจะเลิกใช้และลงมือเขียนคำสั่งโปรแกรมเลย แต่อย่างไรก็ตามการศึกษาเครื่องมือชนิดนี้ก็ยังจัดว่ามีความสำคัญเป็นอย่างมาก สำหรับผู้ฝึกหัดเขียนโปรแกรมเริ่มต้นที่จะต้องมีความเข้าใจ เนื่องจากจะช่วยให้ผู้เขียนโปรแกรมสามารถกำหนดขั้นตอนการทำงานก่อนหลังของโปรแกรมได้ง่าย หากมีการปรับปรุงโปรแกรมที่จะเกิดขึ้นในอนาคตได้ ในการเขียนผังงานนั้นสามารถจำแนกแบบของผังงานออกเป็น 2 แบบใหญ่ คือ
1. ผังงานระบบ (System Flowchart) ผังงานระบบอาจเรียกอีกอย่างหนึ่งว่า ผังงานในระดับกว้าง ซึ่งจะเป็นการแสดงขั้นตอนการทำงานของระบบทั้งหมด ผังงานระบบมักจะมีลักษณะย่นย่อ รวบรัด และแสดงแต่ตัวงานที่จะต้องทำในระบบเท่านั้น ไม่ได้แสดงว่างานนั้นจะทำอย่างไร ความสำคัญของผังงานระบบอยู่ที่การแสดงความสัมพันธ์ระหว่างงาน หรือขั้นตอนต่าง ๆ ในระบบว่าเกี่ยวข้องกันอย่างไร
2. ผังงานโปรแกรม (Program Flowchart) ผังงานโปรแกรมอาจเรียกอีกอย่างหนึ่งว่า ผังงานระดับละเอียด คือ ในแต่ละขั้นตอนจะแสดงการทำงานในแต่ละคำสั่งโดยละเอียดสำหรับโปรแกรมนั้น ๆ ที่ผู้เขียนโปรแกรมกำลังทำงานอยู่ ไม่ได้แสดงความสัมพันธ์ระหว่างโปรแกรมนั้นกับโปรแกรมอื่น ๆ
ในความเป็นจริงแล้วการใช้ผังงานในการออกแบบโปรแกรม โดยเริ่มจากผังงานระบบ (System Flowchart) ลงมายังผังงานโปรแกรมอย่างคร่าว ๆ และเป็นผังงานโปรแกรมอย่างละเอียดนั้น เป็นเทคนิคการออกแบบชนิดจากบนลงล่าง (Top-Down-Design) แต่เหตุผลที่นักโปรแกรมไม่ค่อยจะใช้ผังงานกันมากนัก เป็นเพราะเวลาเขียนและทดสอบโปรแกรมนั้นจาเป็นจะต้องเขียนและทดสอบโปรแกรมบ่อยครั้ง และถ้าใช้ผังงานก็จาเป็นจะต้องคอยแก้ไขผังงานให้สอดคล้องกับโปรแกรมอยู่เสมอ ซึ่งทาให้การแก้ไขโปรแกรมต้องล่าช้าตามไปด้วย
*   ผังงานแบบ Nassi - Shneiderman (N-S chart)
    ผังงานแบบแนสซี-ชไนเดอร์แมน หรือเรียกย่อ ๆ ว่าผังงาน N-S Chart ได้ตั้งชื่อขึ้นตามผู้คิด คือ I.Nassiและ B. Shneidermanซึ่งเป็นผู้เขียนวิธีการนี้ ในบทความเรื่อง Flowchart Techniques for Structured Programming
             การเขียนผังงานแบบ N – S Chart นี้เหมาะกับแนวทางการเขียนโปรแกรมแบบมีโครงสร้างมาก เนื่องจากไม่มีการใช้ลูกศรสาหรับระบุแนวทางการไหลของข้อมูล (Flow Line) เหมือนผังงานโปรแกรม ดังนั้น จึงไม่อาจใช้คาสั่ง GOTO ในโปรแกรมได้ ข้อแตกต่างอีกอย่างหนึ่งคือ สัญลักษณ์ที่ใช้ในผังงาน N – S Chart จะน้อยกว่าสัญลักษณ์ของผังงานแบบธรรมดา คือจะให้สัญลักษณ์ดังนี้
1. เส้นขีดแบ่งงานออกเป็นส่วน ๆ เพื่อแสดงขั้นตอนที่จะต้องทำตามลำดับ
คำสั่งที่ 1
คำสั่งที่ 2
คำสั่งที่ 3
........
คำสั่งที่ N




2. ใช้รูปสามเหลี่ยมแสดงทางเลือกเพื่อการตัดสินใจ คือถาเงื่อนไขเป็นจริง ทำคำสั่งที่ 1 และถ้าเงื่อนไขเป็นเท็จให้ทำคำสั่งที่ 2
T                    เงื่อนไข                   Y
คำสั่งที่ 1                         คำสั่งที่ 2

3. ในรูปตัวอักษร L (แอล) แสดงการทางานซ้ำ  หรือการวนรอบ (Loop) ดังนี้
       Do While เงื่อนไข                     For  I= J to K by L                                              คำสั่งที่ 1
กล่องข้อความ: …….กล่องข้อความ: คำสั่งที่ 2กล่องข้อความ: คำสั่งที่ 2คำสั่งที่1                                              คำสั่งที่ 1                                                              คำสั่งที่ 2
กล่องข้อความ: คำสั่งที่ Nกล่องข้อความ: ……..กล่องข้อความ: ……...                                                                                                                                           
กล่องข้อความ: คำสั่งที่ Nกล่องข้อความ: คำสั่งที่ N                                                                                                                               Until เงื่อนไข




ตัวอย่างการเขียนผังงานแบบ Nassi-Shneidermanและผังงานโปรแกรมแบบธรรมดา
Start





        ผังงานโครงสร้าง
        เครื่องมือในการออกแบบโปรแกรมอีกรูปแบบหนึ่งก็คือ การเขียนผังงานในลักษณะ Structure Chart จะมีลักษณะคล้ายกับ Organization Chart ที่แบ่งออกเป็นลำดับขั้น เพื่อที่จะบอกฟังก์ชั่นการทำงานของโปรแกรมทั้งหมด แต่ไม่ได้แสดงรายละเอียดการทำงานของโปรแกรมเอาไว้ แนวทางการออกแบบในลักษณะนี้จะคล้ายกับการออกแบบจากบนลงล่าง คือ เริ่มต้นกำหนดหน้าที่ของระบบทั้งระบบเอาไว้เป็นระดับบนสุด แล้วย่อยระดับบนลงเป็นระดับที่ 2 และที่ 3 ต่อไปเรื่อย ๆ โดยแต่ละระดับพยายามให้แตกโมดูล (Module) ย่อยออกเป็น 3 โมดูล คือ โมดูลรับข้อมูลเข้า โมดูลสำหรับการประมวลผล และโมดูลสาหรับการแสดงผลลัพธ์ ระหว่างโมดูลย่อยกับโมดูลหลัก จะแสดงการแลกเปลี่ยนข้อมูลระหว่างกัน การเรียงลาดับจะเรียงจากซ้ายไปขวา
ตัวอย่าง กำหนดให้มีตัวเลขหนึ่งชุด ต้องการทราบว่าจะมีตัวเลขอยู่กี่ตัวจากชุดของตัวเลขดังกล่าว เช่น 25 14 0 36 4 58 2 15 และ 81 พบว่ามีตัวเลขทั้งหมดอยู่ 9 ตัว หากต้องการหาคาตอบสำหรับปัญหานี้ โดยกระบวนการผังงานโครงสร้าง สามารถเขียนได้ดังนี้

ตาราง

              จะเห็นว่าผังงานแบบโครงสร้างจะแสดงงานที่ทา และความสัมพันธ์ระหว่างโมดูลเท่านั้น ไม่มีการแสดงลำดับการประมวลผล จึงไม่สามารถนำผังงานโครงสร้างมาทดแทนผังงานโปรแกรมได้ ในการออกแบบโปรแกรมโดยใช้เทคนิคแบบบนลงล่าง จะเน้นการมองภาพโครงสร้างทั้งหมดของโปรแกรม ส่วนรายละเอียดของโมดูลต่าง ๆ จะกระทำภายหลัง ตรงกันข้ามกับการเขียนผังงานโปรแกรม (Program Flowchart) ซึ่งจะวางแผนในขั้นรายละเอียดทันที ถ้าหากมีการปรับต้องกระทบทั้งหมด แต่ถ้าการวางแผนเริ่มทำที่ผังโครงสร้าง จะไม่กำหนดรายละเอียดของการประมวลผลจนกว่าผังงานโครงสร้างจะเสร็จสมบูรณ์แล้ว
           คำสั่งเทียม (Pseudo Code)
           คำสั่งเทียม (Pseudo Code) เป็นคำสั่งที่ไม่ใช่คำสั่งในภาษาคอมพิวเตอร์ใด ๆ อย่างแท้จริง แต่เป็นคำสั่งที่เขียนเลียนแบบคำสั่งจริงอย่างย่อ ๆ และใช้เป็นแนวทางของคำสั่งควบคุมในภาษานั้น ๆ เพื่อให้เห็นแนวทางของการทำงานในโปรแกรม เช่น ในโปรแกรมเราอาจตั้งค่าตัวแปรต่าง ๆ ของโปรแกรมให้มีค่าเป็นศูนย์ เพื่อให้โปรแกรมทำงานได้อย่างถูกต้อง ซึ่งกระบวนการนี้หากเขียนเป็นผังงานโปรแกรม จะต้องกำหนดค่าตัวแปรที่ใช้ในโปรแกรมทั้งหมดให้เป็นศูนย์ ถ้ามีตัวแปร 10 ตัวก็จะต้องเขียนชื่อตัวแปรทั้ง 10 ตัง พร้อมกับการกำหนดค่าเริ่มต้นให้มีค่าเป็น 0 แต่หากเขียนด้วยคำสั่งเทียม สามารถเขียนย่อ ๆ ว่า การกำหนดค่าเริ่มต้น” (Initial Program) ได้
                            ประโยชน์ของคำสั่งเทียม มีดังต่อไปนี้
 1. คำสั่งเทียมมีประโยชน์มากสำหรับการร่างเค้าโครงโปรแกรมที่จะเขียน ใช้สาหรับทบทวนความถูกต้องของการออกแบบ อาจจะทบทวนได้ด้วยตนเอง หรือประชุมทบทวนตามหลักการ Walkthrough คือให้ทีมงานออกแบบและเขียนโปรแกรมได้มีส่วนศึกษา พิจารณาและแสดงความเห็นได้
2. ใช้สำหรับกำหนดงานเขียนโปรแกรม โดยให้นักเขียนโปรแกรมนำคำสั่งเทียมไปเพิ่มเติมรายละเอียดที่จาเป็น
3. ใช้เป็นเอกสารกำกับโปรแกรม สำหรับใช้ในการบำรุงรักษาโปรแกรมในอนาคต
4. ใช้เป็นเครื่องมือประกอบในวิธีการออกแบบอื่น ๆ เช่น การออกแบบผังงานโครงสร้าง เป็นต้น
ตัวอย่าง       กำหนดให้มีตัวเลขหนึ่งชุด ต้องการทราบว่าจะมีตัวเลขอยู่กี่ตัวจากชุดของตัวเลขดังกล่าว เช่น 25 14 0 36 4 58 2 15 และ 81 พบว่ามีตัวเลขทั้งหมดอยู่ 9 ตัว หากต้องการหาคำตอบสาหรับปัญหานี้ โดยกระบวนการคำสั่งเทียม สามารถเขียนได้ดังนี้



Start เริ่มต้น
Initial for Accumulation Value N กำหนดข้อมูลเริ่มต้นเพื่อสะสมค่าเท่ากับ 0 คือ N=0
Read Numberอ่านข้อมูลชุดตัวเลขตัวที่ 1
Do While not end of Number อ่านจนกว่าจะหมดชุดข้อมูล
Compute N = N + 1   นับจำนวนชุดตัวเลข N = N + 1
Read Next Numberอ่านข้อมูลตัวเลขตัวต่อไป
End Doสิ้นสุดรอบการทำงาน
Print result พิมพ์ผลลัพธ์จากการสะสมค่า (N)
Stop                                                                       จบการทำงาน
















แบบประเมินผลการเรียนรู้ การออกแบบและพัฒนาโปรแกรม
1.จงเขียนวงจรการวางแผนและพัฒนาโปรแกรม
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
2.จงบอกคุณลักษณะของโปรแกรมที่ดี
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
3.จงอธิบายวิธีการลงรหัสของโปรแกรม
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
4.จงอธิบายวิธีการทดสอบและแก้ไขโปรแกรม
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................


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

9.จงบอกความหมายและประโยชน์ของคำสั่งเทียม
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
10.จงบอกความหมายของผังงานโครงสร้าง
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................

******************