36
ขขขขขขขขขข ขขขขขขขขขขขข ขขขขขขขขขขขข ขขขขข ขขขข ขขข ขขขขขขขขขขขขขขขขขขขขขข ขขขขขขขขขขขขขขข ขขขขขขขขขขขขขข ขขขขขขขขขขขขขขขขขขขขขขข ขขขขขขขขข ขขขขขขขขขขขขขขขขขขขขขขขขขขขขขข ผผผผผผผผผผผผผผผผผผผผผผผผผผผผ ผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผ ผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผ ผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผ ผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผ ผผผผผผผผผผผผผผผผผผผผผผผ ผผผผผผผผผผผผผผผผผผ ผผผผผผผผผผผ ผผผผผผผผผผผผผผผผผผผผผผ ผผผผผผผผ ผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผ ผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผ ผผผผผผผผผผผผผผผผ ผผผผผผผผผผผผผผผผผผผผผผผ ผผผผผผผผผผผผผผผผผผผผผผผผ ผผผผผผผผผผผผผผผผผผ ผ 30248 ผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผ ผผผผผผผผผผผผ ผผผผผผผผผผผผผผผผผผผ 2 ผผผผผผผผผผผผผผผผผผผผผผผผผผผผ 16 ขขขขขขขขขขขขข ขขข ขขขขขขขขขขขขขข ขขขขขขขขขขขขขข ผผผผผผผผผผผผผผผผผผผผผผผผผผผผ ผผผผผ ผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผ ผผผผผผผ ผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผ ผผผ ผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผ ผผผผ ผผผผผผผผผผผผผผผผผผผผผผผผผผผผ ผผผผผผผผผผผผผผ ผผผผผผผผผผผผ ผผผผผผผผผผ 5 ผผผผผผผผผผผผผผผผ 1. ผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผ 2. ผผผผผผผผผผผผผผผผผผผผผผ 3. ผผผผผผผผผผผผผผผผผผผผผผผผผผผ 4. ผผผผผผผผผผผผผผผผผผผผผผผผผผผผผ ผผผผผผผ 5. ผผผผผผผผผผผผผผผผผผผผผผผผผผผผผผ ผผผ

ผังงาน (Flowchart) · Web viewผ งงาน (Flowchart) ค อ ร ปภาพหร อส ญล กษณ ท ใช เข ยนแทนคำอธ บาย

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

ผังงาน (Flowchart)

PAGE

20

ง30248 การเขียนโปรแกรมภาษาคอมพิวเตอร์ เอกสารประกอบการเรียนรู้หน่วยที่ 2 ขั้นตอนวิธีและการเขียนผังงาน

รูปแบบการวิเคราะห์ปัญหา

1.1 วัตถุประสงค์ของงาน

เป็นการหาคำตอบว่า โจทย์ต้องการผลลัพธ์อะไร

1.2 ออกแบบผลลัพธ์ ( Output )

เป็นการออกแบบจอภาพหรือผลลัพธ์ของโปรแกรมเมื่อเขียนเสร็จแล้ว ต้องการให้มีรูปแบบอย่างไร แสดงข้อมูลอะไรบ้าง 1.3 ข้อมูลนำเข้า ( Input )

ต้องวิเคราะห์ว่า ผลลัพธ์ที่ต้องการนั้น ต้องป้อนข้อมูลอะไรเข้าไป เพื่อให้โปรแกรมที่เขียนขึ้นมาประมวลผล 1.4 ชื่อตัวแปรที่ใช้

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

เป็นการกำหนดวิธีการหรือขั้นตอนเพื่อให้คอมพิวเตอร์ทำงาน เป็นขั้น ๆ ตามลำดับ

ตัวอย่าง

จงเขียนวิเคราะห์ เพื่อเขียนโปรแกรมคำนวณหาเงินได้สุทธิต่อเดือนของพนักงาน หลังจากหักค่าใช้ภาษี ณ ที่จ่าย 10% และค่าประกันสังคม 5% 1.1 วัตถุประสงค์ของงาน คำนวณหา รายได้คงเหลือของพนักงาน 1.2 ออกแบบผลลัพธ์ ( Output )

1.3 ข้อมูลนำเข้า ( Input ) ได้แก่ เงินเดือน

1.4 ชื่อตัวแปรที่ใช้ salary แทนข้อมูล เงินเดือน tax เก็บข้อมูล ภาษี ณ ที่จ่าย 10% ที่คำนวณได้ SocialPayment เก็บข้อมูล ค่าปรันสังคม 5% ที่คำนวณได้

Net เก็บข้อมูล รายได้สุทธิของพนักงาน

1.5 ขั้นตอน/ลำดับงาน - พิมพ์หัวตาราง

- ป้อนข้อมูล เงินเดือนของพนักงาน (salary) - คำนวณหักภาษี 10% tax = salary * 0.1 - คำนวณค่าประกันสังคม SocialPayment = salary * 0.05

- คำนวณ หารายได้สุทธิของพนักงาน Net = salary – tax – SocialPayment - แสดงผลลัพธ์ tax, SocialPayment, Net - จบการทำงาน

                  หลังจากทำความเข้าใจและวิเคราะห์ปัญหาโจทย์จนได้ข้อสรปุว่าโจทย์ต้องการอะไรแล้ว ผู้เขียนโปรแกรมก็จะทำการกำหนดแผนในการแก้ไขปัญหาโดยการเขียนผังงาน (Flowchart) ซึ่งการเขียนผังงานคือการเขียนแผนภาพที่เป็นลำดับ เพื่อแสดงขั้นตอนการทำงานของโปรแกรมเพื่อให้ง่ายต่อการทำความเข้าใจ การเขียนผังงานมี 3 แบบคือ แบบเรียงลำดับ(Sequential) แบบมีการกำหนดเงื่อนไข(Condition) และแบบมีการทำงานวนรอบ(Looping) 

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

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

สัญลักษณ์ของผังงาน(Flowchart Symbol)

สัญลักษณ์

ความหมาย

เริ่มต้นทำงานและจุดสิ้นสุดการทำงาน

กำหนดค่าหรือประมวลผล

รับข้อมูลและแสดงผลข้อมูล

รับข้อมูลทางแป้นพิมพ์

การตัดสินใจ

ใช้แสดงผลข้อมูลทางจอภาพ

ใช้แสดงผลข้อมูลออกทางเอกสาร

ทิศทางการดำเนินงาน

ตัวเชื่อมต่อภายในหน้าเดียวกัน

ตัวเชื่อมต่อไปหน้าอื่น

            หลักในการเขียนผังงาน                  การเขียนผังงานนั้น ไม่มีวิธีการที่แน่ชัดว่าจะต้องใช้คำสั่งอะไรบ้าง ทั้งนี้ขึ้นอยู่กับลักษณะของงานที่จะทำ ซึ่งลักษณะงานจะมีอยู่ 3 ขั้นตอน คือ การรับข้อมูล (Input) การประมวลผล (Process) และการแสดงผลลัพธ์ (Output) การศึกษาลำดับขั้นตอนในการทำงานของผังงาน ให้สังเกตจากลูกศรที่แสดงทิศทางการไหลของข้อมูลในผังงานเป็นหลักในการเขียนผังงาน จะต้องคำนึงถึงสิ่งต่าง ๆ ต่อไปนี้                 1. ใช้สัญลักษณ์ที่มีรูปแบบเป็นมาตรฐาน                 2. ขนาดของสัญลักษณ์ขึ้นอยู่กับความเหมาะสม                 3. ควรเขียนทิศทางการไหลของข้อมูล เริ่มจากบนลงล่าง หรือจากซ้ายไปขวา และควรทำหัวลูกศรกำกับทิศทางด้วย                 4. การเขียนคำอธิบายให้เขียนภายในสัญลักษณ์ ใช้ข้อความที่เข้าใจง่าย สั้นและชัดเจน                 5. พยายามให้เกิดจุดตัดน้อยที่สุด หรืออาจใช้สัญลักษณ์ที่เรียกว่า "ตัวเชื่อม" (Connector) แทน เพื่อหลีกเลี่ยงข้อผิดพลาดที่อาจเกิดขึ้น                 6. หากเป็นไปได้ควรเขียนผังงานให้จบภายในหน้าเดียวกัน                 7 . ผังงานที่ดีควรเป็นระเบียบเรียบร้อย สะอาด ชัดเจน เข้าใจและติดตามขั้นตอนได้ง่าย                 8. จุดเริ่มต้นและสิ้นสุดของงาน ควรมีเพียงจุดเดียว

                รูปแบบของผังงาน

                    ผังงาน มีรูปแบบที่จำกัดอยู่ 3 แบบด้วยกัน คือ                     1. รูปแบบเรียงลำดับ (Sequence Structure)                         เป็นการทำงานแบบเรียงลำดับ ตั้งแต่ต้นจนจบ เป็นรูปแบบง่าย ๆ ไม่มีการเปรียบเทียบใด ๆ มีทิศทางการไหลของข้อมูลเพียงทางเดียว ซึ่งอาจจะเป็นแบบบนลงล่าง หรือ จากซ้ายไปขวาก็ได้ เช่น การให้คำนวณหาพื้นที่ของสี่เหลี่ยมผืนผ้า จะเขียนเป็นผังงานได้ดังรูป

                    จากผังงาน เราสามารถเขียนโปรแกรมได้ ตาม syntax ของภาษาที่ใช้ ตัวอย่างโปรแกรมข้างล่างนี้ จะเป็นการเขียนโปรแกรมด้วยภาษา C                                                         #include                                                         void main(void)                                                         {                                                         float a, b, c;                                                         printf("Enter Width : ");                                                         scanf("%f",&a);                                                          printf("Enter Higth : ");                                                          scanf("%f",&b);                                                         c = a * b;                                                         printf("Area = %.2f",c);                                                         }                  

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

                        และจากผังงานเราสามารถเขียนเป็นโปรแกรมได้ โดยใช้คำสั่งเกี่ยวกับการตัดสินใจ หรือการเปรียบเทียบ เช่น if - else , switch ตามภาษาที่ท่านใช้เขียนโปรแกรม ในที่นี้เป็นตัวอย่างการใช้ if - else ของภาษา C                                                         #include                                                         void main(void)                                                         {                                                         int a, b;                                                         printf ("Enter Numeric (1 - N) : ");                                                         scanf ("%d",&a);                                                         if ((a%2) == 1)                                                         printf("%d is Odd",a);                                                         else                                                         printf("%d is Even",a);                                                         }                         3. รูปแบบที่มีการทำงานแบบวนรอบ หรือ loop (Iteration Structure)                             การทำงานของรูปแบบนี่ จะเป็นการทำงานซ้ำ ๆ กัน หลาย ๆ ครั้งเท่าที่เราต้องการ (หรืออาจจะทำเพียงครั้งเดียว หรืออาจจะไม่มีการทำงานเลยก็ได้) ซึ่งการทำงานนี้จะขึ้นอยู่กับเงื่อนไขที่กำหนดให้ และจะมีการนำเอาลักษณะของการตัดสินใจมาช่วยว่าจะมีการทำงานซ้ำอีกหรือไม่ เช่น การหาผลบวกของตัวเลข ตั้งแต่ 1-10 จะเขียนเป็นผังงานได้ดังรูป

                        จากผังงานเราสามารถเขียนเป็นโปรแกรมได้ โดยใช้คำสั่งการวนลูป ในที่นี้จะเป็นตัวอย่างโปรแกรมการใช้ do... while ในภาษา C ซึ่งสามารถที่จะนำไปปรับให้เข้ากับภาษาที่ท่านใช้เขียนได้ ดังตัวอย่าง

                        ตัวอย่าง การใช้ do.... While

                                                        #include                                                         void main(void)                                                         {                                                          int i;                                                           int sum;                                                          i = 1;                                                          sum = 0;                                                          do                                                         {                                                         

 sum = sum + i;                                                       

 i++;                                                        }                                                            while (i <=10);                                                         printf("sum (1-10) = %d",sum);                                                         }

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

                        ตัวอย่าง เขียนผังงานแสดงวิธีการรับประทานยา ที่แบ่งขนาดรับประทานตามอายุของผู้ทานดังนี้                                         อายุมากกว่า 10 ปี รับประทานครั้งละ 2 ช้อนชา                                         อายุมากกว่า 3 ปี ถึง 10 ปี รับประทานครั้งละ 1 ช้อนชา                                         อายุมากกว่า 1 ปี ถึง 3 ปี รับประทานครั้งละ 1/2 ช้อนชา                                         แรกเกิดถึง 1 ปี ห้ามรับประทาน

                 

   โครงสร้างการทำงานแบบมีการเลือก ( Selection )                         เป็นโครงสร้างที่ใช้การตรวจสอบเงื่อนไขเพื่อการทำงานอย่างใดอย่างหนึ่ง โดยโครงสร้างแบบนี้จะมีอยู่ด้วยกัน 2 รูปแบบ คือ IF - THEN - ELSE และ IF - THEN

                    โครงสร้างแบบ IF - THEN - ELSE                             เป็นโครงสร้างที่จะทำการเปรียบเทียบเงื่อนไขที่ใส่ไว้ในส่วนหลังคำว่า IF และเมื่อได้ผลลัพธ์จากการเปรียบเทียบก็จะเลือกว่าจะทำงานต่อในส่วนใด กล่าวคือถ้าเงื่อนไขเป็นจริง ( TRUE ) ก็จะเลือกไปทำงานต่อที่ส่วนที่อยู่หลัง THEN แต่ถ้าเงื่อนไขเป็นเท็จ ( FALSE ) ก็จะไปทำงานต่อในส่วนที่อยู่หลังคำว่า ELSE แต่ถ้าสำหรับโครงสร้างแบบ IF - THEN เป็นโครงสร้างที่ไม่มีการใช้ ELSE ดังนั้น ถ้ามีการเปรียบเทียบเงื่อนไขที่อยู่หลัง IF มีค่าเป็นจริง ก็จะไปทำส่วนที่อยู่หลัง Then แต่ถ้าเงื่อนไขเป็นเท็จ ก็จะไปทำคำสั่งที่อยู่ถัดจาก IF - THEN แทน

                    ตัวอย่าง การเขียนผังงานอ่านค่าข้อมูลเข้ามาเก็บไว้ในตัวแปร A และ B แล้วทำการเปรียบเทียบในตัวแปรทั้งสอง โดยมีเงื่อนไขดังนี้ ถ้า A มากกว่า B ให้คำนวณหาค่า A - B และเก็บผลลัพธ์ไว้ในตัวแปรชื่อ RESULT ถ้า A น้อยกว่าหรือเท่ากับ B ให้คำนวณหาค่า A + B และเก็บผลลัพธ์ไว้ในตัวแปรชื่อ RESULT

                    ตัวอย่าง การเขียนผังงานเปรียบเทียบค่าข้อมูลที่เก็บอยู่ในตัวแปร X โดยมีเงื่อนไขดังนี้                                     ถ้า X > 0 ให้พิมพ์คำว่า " POSITIVE NUMBER "                                     ถ้า X < 0 ให้พิมพ์คำว่า " NEGATIVE NUMBER "                                     ถ้า X = 0 ให้พิมพ์คำว่า " ZERO NUMBER "

                    โครงสร้างการทำงานแบบมีการทำงานซ้ำ                         เป็นโครงสร้างที่มีการประมวลผลกลุ่มคำสั่งซ้ำหลายครั้ง ตามลักษณะเงื่อนไขที่กำหนด อาจเรียก การทำงานซ้ำแบบนี้ได้อีกแบบว่า การวนลูป ( Looping ) โครงสร้างแบบการทำงานซ้ำนี้จะมีอยู่ 2 ประเภท คือ                                 *DO WHILE                                 *DO UNTIL                                 *DO WHILE                                         เป็นโครงสร้างที่มีการทดสอบเงื่อนไขก่อน ถ้าเงื่อนไขเป็นจริงก็จะเข้ามาทำงานในกลุ่มคำสั่งที่ต้องทำซ้ำ ซึ่งเรียกว่าการเข้าลูป หลังจากนั้นก็จะย้อนกลับไปตรวจสอบเงื่อนไขใหม่อีก ถ้าเงื่อนไขยังคงเป็นจริงอยู่ ก็ยังคงต้องทำกลุ่มคำสั่งซ้ำหรือเข้าลูปต่อไปอีก จนกระทั่งเงื่อนไขเป็นเท็จ ก็จะออกจากลูปไปทำคำสั่งถัดไปที่อยู่ถัดจาก DO WHILE หรืออาจเป็นการจบการทำงาน

                                *DO UNTIL                                         เป็นโครงสร้างการทำงานแบบทำงานซ้ำเช่นกัน แต่มีการทำงานที่แตกต่างจาก DO WHILE คือจะมีการเข้าทำงานกลุ่มคำสั่งที่อยู่ภายในลูปก่อนอย่างน้อย 1 ครั้ง แล้วจึงจะไปทดสอบเงื่อนไข ถ้าเงื่อนไขเป็นเท็จก็จะมีการเข้าทำกลุ่มคำสั่งที่ต้องทำซ้ำอีก หลังจากนั้นก็จะย้อนกลับไปตรวจสอบเงื่อนไขใหม่อีก ถ้าเงื่อนไขยังคงเป็นเท็จอยู่ ก็ยังต้องทำกลุ่มคำสั่งซ้ำหรือเข้าลูปต่อไปอีก จนกระทั่งเงื่อนไขเป็นจริง จึงจะออกจากลูปไปทำคำสั่งถัดจาก UNTIL หรืออาจเป็นการจบการทำงาน

                                สรุปข้อแตกต่างระหว่าง DO WHILE และ DO UNTIL มีดังนี้                                             1. DO WHILE ในการทำงานครั้งแรกจะต้องมีการตรวจสอบเงื่อนไขก่อนทุกครั้ง ก่อนที่จะมีการเข้ลูปการทำงาน                                             2. DO UNTIL การทำงานครั้งแรกจะยังไม่มีการตรวจสอบเงื่อนไข แต่จะเข้าไปทำงานในลูปก่อนอย่างน้อย 1 ครั้งแล้วจึงจะไปตรวจสอบเงื่อนไข                                             3. DO WHILE จะมีการเข้าไปทำงานในลูปก็ต่อเมื่อตรวจสอบเงื่อนไขแล้วพบว่า เงื่อนไขเป็นจริง แต่เมื่อพบว่าเงื่อนไขเป็นเท็จ ก็จะออกจากลูปทันที                                             4. DO UNTIL จะมีการเข้าไปทำงานในลูปก็ต่อเมื่อตรวจสอบเงื่อนไขแล้วพบว่า เงื่อนไขเป็นเท็จ แต่เมื่อพบว่าเงื่อนไขเป็นจริง ก็จะออกจากลูปทันที

                            ตัวอย่าง จงเขียนผังงานแสดงการเพิ่มของข้อมูลตัวเลขที่เก็บอยู่ในหน่วยความจำที่แอดเดรส 1 โดยที่ค่าเริ่มต้นจาก 0 ให้ทำการเพิ่มค่าทีละ 1 เรื่อยไปจนกระทั่ง J มีค่าข้อมูลมากกว่า 100 จึงหยุดการทำงาน ตัวอย่างนี้ เป็นตัวอย่างการทำงานแบบทำซ้ำ ซึ่งจะสามารถแสดงการเขียนได้ทั้งแบบ DO WHILE และ DO UNTIL ดังนี้

                            ตัวอย่างการเขียน Flowchart                                     เราต้องการเขียน Flowchart เพื่อคำนวณภาษีที่พนักงานต้องชำระ อัตราภาษี 10% Flowchart ดังกล่าวกำหนดให้ผู้ใช้ป้อนค่าเงินเดือน (salary) แล้วเครื่องจะทำการคำนวณ ภาษี (tax) 10% ให้โดยอัตโนมัติ และจะพิมพ์ค่า salary กับ tax Output ที่เราต้องการก็คือ salary และ tax (การสั่งพิมพ์ขึ้นอยู่ที่เราว่าเราต้องการให้พิมพ์อะไร ไม่จำเป็นต้องพิมพ์ salary, tax ตามตัวอย่างก็ได้ เราอาจสั่งพิมพ์ tax อย่างเดียวก็ได้ Input คือสิ่งที่ผู้ใช้ต้องป้อนให้ระบบ จากตัวอย่างก็คือ salary เพราะหากผู้ใช้ไม่ป้อน salary ระบบจะคำนวณ tax ไม่ได้ ส่วนอัตราภาษี 10% ผู้ใช้ไม่ต้องป้อนเพราะมีการกำหนด มาอยู่แล้วว่าภาษีคือ 10% ระบบไม่จำเป็นต้องถามผู้ใช้ เพราะฉะนั้นอัตราภาษี 10% จึงไม่ใช่ input หากจะสรุปง่ายๆ input ก็คือสิ่งที่เราต้องถามผู้ใช้ ส่วนอัตราภาษีคือ ค่าคงที่ ซึ่งเราจะกำหนดไว้ในโปรแกรมเลย โดยผู้ใช้ไม่ต้องป้อน

                                        หากเราต้องการเขียน Flowchart ให้บวกเลข 1 ถึง 10 จะพบว่า Flowchart ดังกล่าวไม่มี input เลยเพราะ flow ดังกล่าวไม่จำเป็นต้องถามผู้ใช้ ดังรูป แต่หากเราต้องการเขียน Flowchart ให้บวกเลขจำนวนที่หนึ่ง ถึง เลขจำนวนที่สอง เราจะพบว่าผู้ใช้จำเป็นต้องบอกเราว่า จำนวนที่หนึ่ง คือเลขอะไร และ จำนวนที่สอง คือเลขอะไร เพราะฉะนั้น input คือ first (เลขจำนวนที่หนึ่ง) และ last (เลขจำนวนที่สอง) ดังรูป

 

                        Iteration (การทำซ้ำ) Flowchart หากเราต้องการให้คำนวณคนที่สอง สาม สี่ … เราจะต้องสั่งให้กลับมาทำงานดังรูป

                            ให้สังเกตว่า flowchart ดังกล่าวไม่มีทางออกจาก loop ได้เลย นั่นหมายถึงหลังจากคำนวณภาษีเสร็จเครื่องจะรอรับค่า salary คนต่อไปไม่มีวันสิ้นสุด                             คำถามที่เกิดขึ้นก็คือ เมื่อไหร่ที่เราต้องการออกจาก loop คำตอบก็คือ เมื่อคำนวณภาษีให้พนักงานทุกคนครบแล้ว วิธีการที่เราจะบอกระบบว่าพนักงานหมดแล้วเราสามารถบอกได้โดย “ถ้าเรา input ค่า salary เป็น 0 หมายถึงพนักงานหมดแล้ว นั่นคือให้ออกจาก loop” (ที่ใช้เป็น 0 เพราะไม่มีพนักงานคนใดที่มีเงินเดือนเท่ากับ 0 บาท) ซึ่งเราเรียกค่าดังกล่าวว่าค่า dummy ดังได้กล่าวไว้ต้นแล้วว่าการเลือกใช้ loop มีให้เลือกใช้สองชนิดคือ DO WHILE และ DO UNTIL ซึ่ง DO WHILE จะทำการเช็คเพื่อออกจาก loop ที่ต้น loop ในขณะที่ DO UNTIL เช็คปลาย loop

                            สังเกตว่า การเช็ค ณ ต้น loop คือ การเช็คก่อนมี process ใดๆทั้งสิ้น (DO WHILE) ในขณะที่การเช็ค ณ ปลาย loop คือให้มี process ทุกอย่างก่อนแล้วค่อยเช็ค (DO UNTIL) โดยปกติแล้วเราจะใช้ DO WHILE หรือ DO UNTIL ก็ได้ (แต่มีบางกรณีที่จำเป็นต้องใช้ DO WHILE หรือ DO UNTIL) จาก flowchart รูปที่ 11 หากเราใช้ DO UNTIL จะได้ flowchart ดังรูป

                            จะเห็นว่าเงื่อนไขออกจาก loop จะต้องเป็นจริง และการเช็คออกจาก loop จะอยู่ ณ ตำแหน่งสุดท้ายของ loop นอกจากนี้การที่ต้องมี input salary เพิ่มขึ้นมาอีกหนึ่ง process และไว้อยู่หน้าการเช็คเพื่อออกจาก loop เพราะว่า เมื่อ ผู้ใช้ใส่ค่า 0 มา ระบบจะทำการออกจาก loop ทันที เพราะหากไว้ตำแหน่งอื่นระบบอาจจะมีการ print หรือคำนวณ tax ซึ่งเราไม่ต้องการให้ทำ

                            Flowchart แสดงการใช้ DO WHILE loop ให้สังเกตุว่า การเช็คเพื่อที่จะออกจาก loop อยู่ต้น loop และเงื่อนไขเพื่อที่จะออกจาก loop จะเป็นเท็จ (เพราะฉนั้น เงื่อนไขจึงต้องเป็น salary > 0)

                            ใน Flowchart จะมีการ input Salary อยู่สองตำแหน่งคือบนสุด และใน loop ณ ตำแหน่งล่างสุด input Salary ซึ่งอยู่บนสุดมีไว้เพื่อ input ค่า salary คนแรก เท่านั้น สำหรับค่า salary คนต่อๆมา จะถูก input จาก input salary ที่อยู่ใน loop สาเหตุที่เราไม่สามารถเขียน flowchart ให้วนกลับไป input salary คนต่อๆมาดังรูปที่ 14 แม้ว่าจะสามารถทำงานได้ถูกต้อง เนื่องจากจะผิดกฏ DO WHILE ซึ่งกำหนดไว้ว่า การเช็คเพื่อออกจาก loop จะต้องอยู่ต้น loop

โจทย์ปัญหา ข้อที่ 1

จงเขียนวิเคราะห์ ผังงานเพื่อเขียนโปรแกรมคำนวณพื้นที่ สี่เหลี่ยม ผืนผ้า จำนวน 1 รูป 1.1 วัตถุประสงค์ของงาน คำนวณหาพื้นที่ สี่เหลี่ยมผืนผ้า 1.2 ผลลัพธ์ ( Output ) แสดงผลข้อมูล ของ ด้านยาว และด้านสูง และผลลัพธ์ที่ได้จากคำนวณหาพื้นที่ 1.3 ข้อมูลนำเข้า ( Input ) ได้แก่ Widht (กว้าง) 5 CM Height (สูง) 4 CM 1.4 ชื่อตัวแปรที่ใช้ Widht = กว้าง Height = สูง Area = พื้นที่สี่เหลี่ยมผืนผ้า 1.5 ขั้นตอน/ลำดับงาน - ป้อนข้อมูล ความยาวด้านของสี่เหลี่ยมผืนผ้า - ป้อนข่อมูล ด้าน 2 ( สูง ) - คำนวณหาพื้นที่สี่เหลี่ยมผืนผ้า Area = Width x Height - แสดงผลลัพธ์ - จบการทำงาน----------------------------------------------------------------------------------------------------------------------เขียน Flowchart ได้ดังนี้

โจทย์ปัญหา ข้อ 2.

จงเขียนวิเคราะห์ งานเพื่อเขียนโปรแกรมคำนวณพื้นที่ สี่เหลี่ยมจตุรัส จำนวน 1รูป2.1 วัตถุประสงค์ของงาน คำนวณหาพื้นที่ สี่เหลี่ยมจตุรัส2.2 ผลลัพธ์ ( Output ) แสดงผลข้อมูล ของ ด้าน และผลลัพธ์ที่ได้จากคำนวณหาพื้นที่

Widht 4 CM

Area = 162.3 ข้อมูลนำเข้า ( Input )

ได้แก่ ความยาวของด้าน 2.4 ชื่อตัวแปรที่ใช้ Widht = ความยาวด้านของสี่เหลี่ยมจตุรัส Area = พื้นที่สี่เหลี่ยมผืนผ้า2.5 ลำดับงาน - ป้อนข้อมูล ด้าน - คำนวณหาพื้นที่สี่เหลี่ยมจัตุรัส Area = Width x Width - แสดงผลลัพธ์ - จบการทำงาน-----------------------------------------------------------------------------

โจทย์ปัญหา ข้อ3

จงเขียนวิเคราะห์ งานเพื่อเขียนโปรแกรมคำนวณหาอายุ โดยข้อมูล ปีเกิดเป็นค.ศ. 1989 3.1 วัตถุประสงค์ของงาน คำนวณหาหาอายุ 3.2 ผลลัพธ์ ( Output ) แสดงผลข้อมูล ของอายุ Birth = 1989 Year = 2010 Age = 21 3.3 ข้อมูลนำเข้า ( In Put ) ได้แก่ Year และ Birth 3.4 ชื่อตัวแปรที่ใช้ Birth = ปีเกิด Year = ปีปัจจุบัน Ace = อายุ 3.5 ลำดับงาน - ป้อนข้อมูล ปีเกิด - ป้อนข้อมูล ปีปัจจุบัน - คำนวณหาอายุ Age = Year - Birth - แสดงผลลัพธ์ - จบการทำงาน------------------------------------------

เขียนผังงาน ได้ดังนี้

โจทย์ปัญหา ข้อ 4

จงเขียนวิเคราะห์ งานเพื่อเขียนโปรแกรมคำนวณหาค่าเฉลี่ยของน้ำหนักของนักเรียน 3 คน 4.1 วัตถุประสงค์ของงาน

คำนวณหาค่าเฉลี่ยของน้ำหนัก 4.2 ผลลัพธ์ ( Output ) แสดงผลข้อมูล ของ Weight และผลลัพธ์ที่ได้จากคำนวณค่าเฉลี่ยน้ำหนัก

" Weight 1 = 40 กก.

" Weight 2 = 50 กก.

" Weight 3 = 60 กก. 4.3 ข้อมูลนำเข้า ( In Put )

ได้แก่ " Weight 1," Weight 2," Weight 3 4.4 ชื่อตัวแปรที่ใช้ Weight 1 = น้ำหนักของนักเรียนคนที่ 1 Weight 2 = น้ำหนักของนักเรียนคนที่ 2 Weight 3 = น้ำหนักของนักเรียนคนที่ 3

Average = ค่าเฉลี่ยของน้ำหนัก 4.5 ลำดับงาน - ป้อนข้อมูล น้ำหนักนักศึกษา 3คน - ป้อนข่อมูล จำนวนทั้งหมด - คำนวณหาน้ำหนักเฉลี่ย

- แสดงผลลัพธ์ - จบการทำงาน

-------------------------------------------------------------------------

หน่วยการเรียนรู้

ขั้นตอนวิธีและการเขียนผังงาน

ขั้นตอนการพัฒนาโปรแกรม

การวิเคราะห์งาน

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

ตัวอย่างการวิเคราะห์งานและผังงาน

เนื้อหา

ขั้นตอนการพัฒนาโปรแกรม

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

      � INCLUDEPICTURE "http://www.lks.ac.th/anchalee/four2.gif" \* MERGEFORMATINET ��� 1. ทำความเข้าใจและวิเคราะห์ปัญหา

    � INCLUDEPICTURE "http://www.lks.ac.th/anchalee/four3.gif" \* MERGEFORMATINET ��� 2. กำหนดแผนในการแก้ปัญหา

� INCLUDEPICTURE "http://www.lks.ac.th/anchalee/four2.gif" \* MERGEFORMATINET ��� 3. เขียนโปรแกรมตามแผนที่กำหนด

    � INCLUDEPICTURE "http://www.lks.ac.th/anchalee/four3.gif" \* MERGEFORMATINET ��� 4. ทดสอบและตรวจสอบความถูกต้องของโปรแกรม

� INCLUDEPICTURE "http://www.lks.ac.th/anchalee/four2.gif" \* MERGEFORMATINET ��� 5. นำโปรแกรมที่ผ่านการทดสอบไปใช้งาน

การวิเคราะห์ปัญหา

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

COMPUTE INCOME OF EMPLOYEE

-------------------------------------------------------------

เงินเดือน : ……………….

- หักภาษี ณ ที่จ่าย 10% : …………….……

- หักค่าประกันสังคม 5% : …………….…..

--------------------------------------------------------------

เงินได้สุทธิ = ………………………

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

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

start

a,b

c = a + b

c

stop

start

a

odd

stop

a mod 2 ==1

even

Yes

No

start

stop

i > 10

sum

sum=0

i = 1

sum=sum+1

i ++

No

start

stop

i > 10

sum

sum=0

i = 1

sum=sum+1

i ++

No

Yeso

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

start

Width,Height

Area = Width * Height

Area

stop

start

Width

Area = Width * Width

Area

stop

start

Birth, Year

Age = Year - Birth

Age

stop

start

Weight1,Weight2,Weight3

Average = (Weight1+Weight2+Weight3)/3

Average

stop