ผังงาน  (Flowchart)  

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

 
 
 ตารางแสดงสัญลักษณ์ที่ใช้ในการเขียนผังงาน
 
 
 
 
 
 
 
 
 

 

2. โครงสร้างแบบมีทางเลือก (Selection Structure) หมายถึง โครงสร้างที่มีเงื่อนไข ขั้นตอนการทำงานบางขั้นตอน ต้องมีการตัดสินใจ

2. โครงสร้างแบบทางเลือก

ตัวอย่าง  ลำดับขั้นตอนการประเมินผลสอบ

เริ่มต้น

ทดสอบ

ตรวจผลการสอบและคิดคะแนนที่ได้

ตรวจสอบคะแนนที่ได้ว่าน้อยกว่าร้อยล่ะ 50 หรือไม่

ถ้าน้อยกว่า ให้สอบแก้ตัว

ถ้าไม่น้อยกว่า ให้สอบผ่าน

จบ

J  การจำลองความคิดเป็นผังงาน (แบบทางเลือก)

 

3. โครงสร้างแบบทำซ้ำ (Repetition Structure)  หมายถึง โครงสร้างที่ขั้นตอนการทำงานบางขั้นตอนได้รับการประมวลผลมากกว่า 1 ครั้ง

3. โครงสร้างแบบทำซ้ำ

ตัวอย่าง  ลำดับการตักน้ำจากตุ่มครั้งล่ะ 1 ขันใส่จนถังน้ำเต็ม

เริ่มต้น

ตักน้ำจากตุ่ม 1 ขัน

เทน้ำใส่ถัง

ตรวจสอบน้ำเต็มถัง หรือไม่

ถ้าไม่เต็ม ให้ตักน้ำต่อไป

ถ้าเต็ม ให้หยุดตักน้ำ

จบ

J  การจำลองความคิดเป็นผังงาน (แบบทำซ้ำ)


ประโยชน์ของผังงาน

   1. ช่วยอธิบายลำดับขั้นตอนการทำงานของโปรแกรม

   2. ทำให้ตรวจสอบข้อผิดพลาดของโปรแกรมได้ง่าย   

   3. ทำให้ผู้อื่นสามารถศึกษาการทำงานของโปรแกรมและแก้ไขโปรแกรมได้ง่าย  

ในการเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ โดยทั่วไปจะมีหลักการหรือขั้นตอนที่สาคัญทั้งหมด 5 ขั้นตอนได้แก่
 
                             1. การวิเคราะห์ปัญหา
                             2. การออกแบบโปรแกรม 
                             3. การเขียนโปรแกรม 
                             4. การทดสอบและแก้ไขโปรแกรม 
                             5.ทำเอกสารประกอบโปรแกรม
 
            ดังนั้นก่อนที่จะลงมือเขียนโปรแกรมในขั้นตอนที่ 3 หลังจากทาการวิเคราะห์ปัญหาแล้ว จะต้องมีการออกแบบโปรแกรมเพื่อเป็นการวางแผนการทางานก่อน ผังงาน Flowchart เป็นเครื่องมือหนึ่งที่ใช้อธิบายลาดับขั้นตอนการทางานในรูปแบบแผนภาพ โดยใช้สัญลักษณ์รูปร่างต่าง ๆ ที่มีความหมายแทนคาสั่ง และใช้ข้อความในสัญลักษณ์แทนข้อมูลตัวแปร ตัวดาเนินการทางการคานวณ และการเปรียบเทียบ นอกจากนั้นผังงานยังใช้แสดงความสัมพันธ์ระหว่างขั้นตอนการทางานต่าง ๆ โดยสามารถแบ่งลักษณะการทางานและความสัมพันธ์เป็นรูปแบบต่างๆ ได้แก่ การทางานแบบมีลาดับ การทางานแบบมีเงื่อนไข และการทางานแบบทาซ้าภายใต้เงื่อนไขต่าง ๆ หลังจากนั้นจึงนาผังงาน Flowchart ที่ออกแบบไว้นาไปเขียนเป็นภาษาคอมพิวเตอร์ ดังนั้นผังงานจึงเป็นเครื่องมือที่ช่วยให้ผู้เขียนโปรแกรมและผู้ใช้ สามารถ
มองเห็นภาพการทางานของโปรแกรมที่กาลังจะสร้างได้อย่างเป็นระบบและง่ายขึ้น
 
ประเภทของผังงาน โดยทั่วไปผังงานคอมพิวเตอร์แบ่งเป็น 2 ประเภทใหญ่
 
        1. ผังงานระบบ (System Flowchart)
 
                        เป็นผังงานที่แสดงถึงขั้นตอนการทางานภายในระบบหนึ่ง ๆ เพื่อให้เห็นโครงสร้างโดยภาพรวมของระบบ ซึ่งจะแสดงถึงความเกี่ยวข้องของส่วนที่สาคัญต่างๆ ในระบบนั้น เช่น เอกสารข้อมูลเบื้องต้น สื่อบันทึกข้อมูลที่ใช้ ข้อมูลจะส่งผ่านไปยังหน่วยงานใด มีกิจกรรมประมวลผลข้อมูลอะไรในหน่วยงานนั้น แล้วจะส่งต่อไปหน่วยงานใด เป็นต้น ดังนั้นผังงานระบบอาจเกี่ยวข้องกับข้อมูล สื่อหรือแหล่งบันทึกข้อมูล วัสดุปกรณ์ คน หรือฝ่ายงานที่เกี่ยวข้อง ซึ่งแต่ละจุดจะประกอบไปด้วย 
การนาข้อมูลเข้า วิธีการประมวลผล และการแสดงผลลัพธ์ (Input – Process – Output) ดังภาพ
 
ภาพแสดงตัวอย่างผังงานระบบ
 
 
        2. ผังงานโปรแกรม (Program Flowchart) หรือเรียกสั้นๆ ว่า ผังงาน
 
            ผังงานประเภทนี้แสดงถึงขั้นตอนของคาสั่งที่ใช้ในโปรแกรม ผังงานนี้อาจสร้างจากผังงานระบบโดยผู้เขียนผังงานจะดึงเอาแต่ละจุด ที่เกี่ยวข้องกับการทางานของเครื่องคอมพิวเตอร์ที่ปรากฏในผังงานระบบมาเขียน เพื่อให้ทราบว่าถ้าจะใช้คอมพิวเตอร์ทางานควรที่จะมีขั้นตอนคาสั่งอย่างไร เพื่อให้ได้ผลลัพธ์ตามที่ต้องการ และจะได้นามาเขียนโปรแกรมคอมพิวเตอร์ต่อไป
            ดังนั้นการเขียนผังงานก็จะมีประโยชน์ เหมาะสาหรับผู้บริหาร ผู้วิเคราะห์ระบบ ผู้เขียนโปรแกรม และบุคคลอื่นที่ต้องการศึกษา ทาให้ทราบถึงความสัมพันธ์ของระบบตั้งแต่เริ่มต้น ว่ามีการปฏิบัติแต่ละขั้นตอนอย่างไร ใช้วิธีการอะไรบ้าง สุดท้ายจะได้ผลลัพธ์อะไรบ้าง เมื่อเข้าใจระบบงานหรือสิ่งที่กาลังศึกษาก็จะช่วยให้สามารถปฏิบัติงานและแก้ปัญหาได้อย่างมีประสิทธิภาพมากยิ่งขึ้น ดังภาพ
 
ภาพแสดงตัวอย่างการกำหนดจุดเริ่มต้นและสิ้นสุดของการเขียนผังงาน
 
 
 
ประโยชน์ของผังงาน
 
    ผังงานเป็นเครื่องมือที่ช่วยให้การศึกษาลาดับขั้นตอนของโปรแกรมง่ายขึ้น จึงนิยมเขียนผังงานประกอบการเขียนโปรแกรม ด้วยเหตุผลดังนี้
                1. คนส่วนใหญ่สามารถเรียนรู้และเข้าใจผังงานได้ง่าย เพราะผังงานไม่ขึ้นอยู่กับภาษาคอมพิวเตอร์ภาษาใดภาษาหนึ่ง เป็นเครื่องมือที่ใช้ในการสื่อสารได้ทุกภาษา 
                2. ผังงานเป็นการสื่อความหมายด้วยภาพ ช่วยลาดับขั้นตอนการทางานของโปรแกรมให้ง่ายและสะดวกต่อการทาความเข้าใจ สามารถนาไปเขียนโปรแกรมได้โดยไม่สับสน ซึ่งถ้าหากใช้ข้อความหรือคาพูดอาจจะสื่อความหมายผิดไปได้
                3. ในงานโปรแกรมที่ไม่สลับซับซ้อน ช่วยในการตรวจสอบความถูกต้องของลาดับขั้นตอน และแก้ไขโปรแกรมได้ง่าย เมื่อเกิดข้อผิดพลาด 
                4. ช่วยให้ผู้อื่นสามารถศึกษาการทางานของโปรแกรมได้อย่างง่าย สะดวก และรวดเร็วมากขึ้น
                5. การบารุงรักษาโปรแกรมหรือการเปลี่ยนแปลงแก้ไขโปรแกรมในภายหลัง ให้มีประสิทธิภาพ ถ้าพิจารณาจากผังงานจะช่วยให้สามารถทบทวนงานในโปรแกรมก่อนปรับปรุง แก้ไขได้สะดวกและง่ายขึ้น
 
ข้อจากัดของการเขียนผังงาน
 
        นักเขียนโปรแกรมบางคนไม่นิยมการเขียนผังงานก่อนที่จะเขียนโปรแกรม เพราะเสียเวลา ในการเขียนเป็นรูปภาพหรือสัญลักษณ์ต่างๆ นอกจากนี้ยังมีเหตุผลอื่นๆ ได้แก่
                 1. ผังงานเป็นการสื่อความหมายระหว่างบุคคลต่อบุคคลมากกว่าที่จะสื่อความหมายบุคคลกับเครื่องคอมพิวเตอร์ เพราะผังงานไม่ขึ้นอยู่กับภาษาคอมพิวเตอร์ ภาษาใดภาษาหนึ่ง ทาให้เครื่องคอมพิวเตอร์ไม่สามารถรับรู้และเข้าใจว่าผังงานต้องการอะไร 
                2. ผังงานไม่สามารถแทนลักษณะคาสั่งของภาษาคอมพิวเตอร์บางคาสั่งได้อย่างชัดเจน 
                3. กรณีที่งานมีขนาดใหญ่ ผังงานจะมีขนาดใหญ่ด้วย ถ้ามีการเปลี่ยนแปลงแก้ไขจะทาได้ยาก ควรเขียนแยกเป็นส่วน ๆ แล้วค่อยสร้างจุดเชื่อมโยงในแต่ละส่วน
                4. การเขียนผังงานอาจเป็นการสิ้นเปลืองกระดาษและอุปกรณ์อื่นๆ ประกอบการเขียนภาพ ทั้ง ๆ ที่การอธิบายงานหรือการเขียนโปรแกรมจะใช้เนื้อที่เพียง      3 – 4 บรรทัดเท่านั้น
 
วิธีการเขียนผังงานที่ดี 
 
การเขียนผังงานควรคานึงถึงสิ่งต่าง ๆ ดังนี้ 
                1. ใช้สัญลักษณ์ตามที่กาหนดไว้ 
                2. ผังงานจะต้องมีจุดเริ่มต้น (Start)และสิ้นสุด (Stop/End/Finish) 
                3. ใช้หัวลูกศรแสดงทิศทางการไหลของข้อมูลจากบนลงล่างหรือซ้ายไปขวา (ยกเว้นที่ต้องทาซ้า) 
                4. ทุกแผนภาพต้องมีลูกศรแสดงทิศทางเข้า 1 เส้นและออก 1 เส้นโดยไม่มีการปล่อยจุดใดจุดหนึ่งไว้ 
                5. เขียนคาอธิบายการทางานในแต่ละขั้นตอนโดยใช้ข้อความที่สั้น กะทัดรัด ชัดเจนและเข้าใจได้ง่าย 
                6. ควรหลีกเลี่ยงโยงเส้นไปมาทาให้เกิดจุดตัดมากเพราะจะทาให้เกิดข้อผิดพลาดง่าย ควรใช้สัญลักษณ์เชื่อมจุดต่อเนื่องแทน
                7. ไม่ควรโยงเส้นเชื่อมผังงานที่อยู่ไกลมาก ๆ ควรใช้สัญลักษณ์จุดเชื่อมต่อแทน
                8. ผังงานที่ดีควรมีความเป็นระเบียบเรียบร้อย สะอาดและชัดเจน สามารถเข้าใจและติดตามขั้นตอนได้ง่าย
                9. ผังงานควรมีการทดสอบความถูกต้องของการทางานก่อนไปเขียนโปรแกรม
 
 
สัญลักษณ์และความหมายของผังงาน
 
การเขียนผังโปรแกรมจะมีขั้นตอนในการเขียนที่สาคัญประกอบกันดังนี้
 
                    1. การกำหนดจุดเริ่มต้นและสิ้นสุดโปรแกรม 
                                    โดยการเริ่มต้นผังงานจะใช้คาว่า Start และการสิ้นสุดจะใช้คาว่า Stop ซึ่งข้อความดังกล่าวจะอยู่ในสัญลักษณ์ ดังภาพ
 
ภาพแสดงตัวอย่างการกาหนดจุดเริ่มต้นและสิ้นสุดของการเขียนผังงาน
 
                    2. การกำหนดค่าเริ่มต้นและการคำนวณ
                                    ในการเขียนผังงานโปรแกรม จะมีการกาหนดค่าเริ่มต้น หรือ การกาหนดค่าคงที่ ให้กับข้อมูล รวมถึงจะมีการคานวณข้อมูลในรูปของสูตรสมการคณิตศาสตร์ ซึ่งขั้นตอนเหล่านี้จะเขียนข้อความภายในสัญลักษณ์กรอบสี่เหลี่ยมผืนผ้า ดังภาพ
ภาพแสดงการกาหนดค่าเริ่มเริ่มต้น ค่าคงที่ และ การคานวณ
 
                       3. การรับข้อมูลนาเข้า
                                    เป็นการรับข้อมูลเข้าสู่โปรแกรม หรือข้อมูลที่ต้องป้อนให้คอมพิวเตอร์นาไปใช้ในการคำนวณ หรือประมวลผลข้อมูล หากไม่ระบุว่าจะรับเข้าทางอุปกรณ์ใด จะเขียนข้อความรับค่า หรือ Read ข้อมูล ภายในสัญลักษณ์สี่เหลี่ยมด้านขนาน ดังภาพ
 
ภาพแสดงการรับข้อมูล a , b เข้าสู่โปรแกรมโดยไม่ระบุอุปกรณ์นาเข้า
 
 
ภาพแสดงการรับข้อมูล a , b เข้าสู่โปรแกรมทางคีย์บอร์ด
 
                         4. การแสดงผลข้อมูล
                                        เป็นการนาข้อมูลที่ได้จากการกาหนดค่า หรือ การคานวณ หรือการประมวลผลใดใด มาแสดงผลออกทางอุปกรณ์ที่กาหนด จะเขียนข้อความแสดงผล หรือ Print ภายในสัญลักษณ์ ดังภาพ
 
ภาพแสดงการแสดงผลข้อมูล x , y โดยไม่ระบุอุปกรณ์แสดงผล
 
 
 
             ภาพการแสดงผลข้อมูล x , y ออกทางจอภาพ    ภาพการแสดงผลข้อมูล x , y ออกทางเครื่องพิมพ์
 
 
                            5. การตรวจสอบเงื่อนไข
                                          เป็นการเปรียบเทียบเพื่อตรวจสอบเงื่อนไข ซึ่งจะได้ผลลัพธ์จากการตรวจสอบเป็นตรรกะ จริงหรือเท็จอย่างใดอย่างหนึ่งเท่านั้น โดยจะเขียนข้อความเงื่อนไขที่ต้องการเปรียบเทียบภายในสัญลักษณ์สี่เหลี่ยมขนมเปียกปูน ดังภาพ
 
 
ภาพแสดงการเปรียบเทียบเพื่อตรวจสอบข้อมูล G มีค่ามากกว่า 100 ใช่หรือไม่ 
ถ้าหากมากกว่าจริงให้แสดงข้อความ “Over” ถ้าหากเท็จ ให้แสดงข้อความ “Ok”
 
                            6. จุดต่อและการเชื่อมโยงผังงาน
                                          ในการเขียนผังงานอาจมีลาดับการทางานหลายขั้นตอน ต้องใช้กระดาษมากกว่า 1 แผ่น หรือมีจุดต่อหลายจุดในหน้าเดียวกันจึงจาเป็นต้องใช้สัญลักษณ์เชื่อมโยงผังงานดังกล่าวเพื่ออ้างอิงจุดเชื่อมต่อนั้นไปยังตาแหน่งที่มีชื่อหรืออักษรเดียวกัน ดังภาพ
 
 
ภาพแสดงจุดต่อ A เชื่อมโยงผังงานในหน้าเดียวกัน
 
ภาพแสดงจุดต่อ A เชื่อมโยงผังงานที่อยู่คนละหน้า
 
                                    7.เส้นแสดงทิศทาง 
                                                    เป็นสัญลักษณ์แสดงทิศทางการทำงานของ Flowchart 
 
                                               
 
 
                                    8.การอธิบายผังงาน
                                           เป็นสัญลักษณ์แสดงการอธิบายผังงาน เพิ่มเติมหรือเป็นการหมายเหตุ (Comment)
               
 
                                            

 
ตัวอย่างการเขียนผังงาน Flowchart
    
    ตัวอย่างที่ 1 ผังงานการต้มบะหมี่สำาเร็จรูป
 
 
 
 
 
ตัวอย่างที่ 2 ผังงานหาพื้นที่สี่เหลี่ยม
 
 
 
 
ตัวอย่างที่ 3 ผังงานตัดสินผลการเข้าร่วมกิจกรรม

 
 
หลักในการเขียนโฟลว์ชาร์ต
 
            ในการเขียนผังงานหรือโฟลว์ชาร์ต ต้องรู้จักเลือกใช้รูปภาพหรือสัญลักษณ์ที่เหมาะสม รวมถึงอุปกรณ์ที่ช่วยในการเขียนผังงานที่เรียกว่า “ Flow Chart Template “ ซึ่งอุปกรณ์นี้จะช่วยให้การเขียนผังงานสะดวกและรวดเร็วยิ่งขึ้น
            ในการเขียนผังงานนี้จะเขียนตามขั้นตอนและวิธีการประมวลผลที่ได้ทำการวิเคราะห์งานเอาไว้แล้ว ซึ่งต้องพิจารณาตามลำดับก่อนหลังของการทำงาน เพื่อจัดภาพของผังงานให้เป็นมาตรฐานง่ายต่อการเข้าใจ และช่วยให้การเขียนโปรแกรมจากผังงานมีประสิทธิภาพมากยิ่งขึ้น เพื่อให้การเขียนผังงานเป็นมาตรฐานเดียวกันจะใช้ลำดับในการเขียนผังงานดังนี้
 
                        1. การกำหนดค่าเริ่มต้น เป็นการกำหนดค่าเริ่มต้นให้กับตัวแปรต่างๆ ที่จำเป็นบางตัว ได้แก่ ตัวแปรที่ใช้เป็นตัวนับ หรือตัวแปรที่เป็นตัวคำนวณผลรวมต่างๆ
                        2. การรับข้อมูลเข้า เป็นการรับข้อมูลนำเข้ามาจากแหล่งข้อมูลต่างๆ เพื่อใช้เป็นส่วนหนึ่งของการประมวลผล แล้วนำค่ามาเก็บไว้ในตัวแปรใด ๆ ที่กำหนดเอาไว้
                        3. การประมวลผล เป็นการประมวลผลตามที่ได้มีการกำหนด หรือเป็นการคำนวณต่างๆ ซึ่งจะต้องทำทีละลำดับขั้นตอนและแยกรูปแต่ละรูปออกจากกันให้ชัดเจนด้วย
                        4. การแสดงผลลัพธ์ เป็นการแสดงข้อมูลที่ได้จากการคำนวณหรือผลลัพธ์ที่ต้องการหรือค่าจากตัวแปรต่างๆ ซึ่งการแสดงผลลัพธ์นี้มักจะกระทำหลังจากการประมวลผล
                            หรือหลังจากการรับข้อมูลเข้ามาแล้ว
 
ข้อสังเกตในการเขียนโฟลว์ชาร์ต
 
                        1. โฟลว์ชาร์ตใด ๆ จะมีจุดเริ่มต้นและจุดสิ้นสุดเพียงอย่างละแห่งเดียวเท่านั้น
                        2. ทุกสัญลักษณ์ที่ใช้แทนขั้นตอนการทำงาน จะต้องมีทิศทางเข้าเพียง 1 แห่งและทิศทางออกเพียง 1 แห่งเท่านั้น ยกเว้นสัญลักษณ์ของจุดเริ่มเริ่มต้น จุดสิ้นสุด จุดต่อ
                             และ การตัดสินใจ
                        3. ทิศทางของลำดับขั้นตอนการทำงานในโฟลว์ชาร์ตนิยมเขียนจากซ้ายไปขวาหรือจากบนลงล่าง
                        4. หลีกเลี่ยงการขีดเส้นโยงไปโยงมาในลักษณะที่ตัดกัน ถ้าจำเป็นต้องโยงเส้นดังกล่าวถึงกันควรใช้เครื่องหมายต่อจุดเพื่อเชื่อมความสัมพันธ์แทน
                        5. สัญลักษณ์ต่าง ๆ นั้นจะเปลี่ยนรูปเป็นอย่างอื่นไม่ได้ ต้องเป็นไปตามมาตรฐานที่กำหนดไว้แล้วเท่านั้น
                        6. ควรมีเครื่องหมายลูกศรกำกับทิศทางทางไหลให้กับแต่ละสัญลักษณ์ ด้วย
                        7. คำอธิบายการทำงานควรเขียนให้สั้นเข้าใจง่ายและเขียนในสัญลักษณ์ของโฟลว์ชาร์ต ทั้งหมดหากมีคำอธิบายเพิ่มเติมให้เขียนไว้บนสัญลักษณ์ด้านขวา
                        8. ในการเขียนโฟลว์ชาร์ตควรเขียนให้เป็นระเบียบ เรียบร้อย และสะอาด
 
ที่มา:https://sites.google.com/site/programmingm42/kar-kheiyn-phang-ngan-flowchart