หน่วยที่ 2 การเขียนผังงาน Flowchart และ Pseudo Code (ซูโดโค้ด)

ผังงาน  (Flowchart)  

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

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

 f1f2f4f5f6f7

 โครงสร้างของผังงาน  (Sequence  Structure) โครงสร้างพื้นฐานของผังงานแบ่งเป็น  3 ประเภท  ดังนี้

1. โครงสร้างแบบลำดับ (Sequential Structure)  หมายถึง โครงสร้างที่แสดงขั้นตอนการทำงานเป็นไปตามลำดับก่อนหลัง 

 

 1. โครงสร้างแบบลำดับ

ตัวอย่าง  ลำดับขั้นตอนการวางแผนไปโรงเรียน

เริ่มต้น

ตื่นนอน

อาบน้ำแต่งตัว

ไปโรงเรียน

จบ

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

sequ

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

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

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

เริ่มต้น

ทดสอบ

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

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

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

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

จบ

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

if

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

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

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

เริ่มต้น

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

เทน้ำใส่ถัง

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

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

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

จบ

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

while

 

   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. ผังงานควรมีการทดสอบความถูกต้องของการทางานก่อนไปเขียนโปรแกรม
 

Pseudo Code (ซูโดโค้ด) คืออะไรและใช้ตอนไหน ?

Pseudo Code (soodo) ตามความหมายคือ "รหัสเทียม"ซึ่งเป็นการรวมเอา 2 คำมารวมกันก็คือ Pseudo ที่เป็น adjective (คำคุณศัพท์) ซึ่งในบริบทนี้แปลว่า "เทียม" โดยทาง Oxford ให้คำนิยามว่า "Not genuine" ซึ่งแปลว่าไม่ใช่ของจริงหรือเรียกว่าเทียมก็ได้เช่นกัน

และอีกคำหนึ่งคือ Code ซึ่งแปลว่า "รหัส

 

ดังนั้นเมื่อนำมารวมกันก็จะได้เป็นคำว่า "รหัสเทียม"และนี่คือความหมายและคำนิยามแบบกระชับ ส่วนการใช้งานนั้นถือว่าเป็นอีกหนึ่งขั้นตอนที่มีประโยชน์ไม่น้อย ซึ่งขั้นตอนการเขียน Pseudo code นี่แหละจะเป็นการอธิบายอัลกอริทึมและลอจิกต่างของของระบบ ซึ่งทำให้เรามอง flow งานของเราได้ชัดเจนและเข้าใจมากยิ่งขึ้น

ดังนั้นถ้าเป็นไปได้ควรที่จะเขียน flowchart หรือไม่ก็ Pseudo code กันก่อนที่จะเริ่มเขียนโปรแกรมจริง

Pseudo Code ใช้ภาษาอะไรเขียน ?

Pseudo code ไม่สนใจว่าเราจะเขียนโปรแกรมมิ่งภาษาไหน เพราะว่าไม่ว่าจะเขียนภาษาอะไรทุกคนสามารถเข้าใจ Pseudo Code ร่วมกันได้ทั้งหมด ตัวอย่างเช่นบางคนเขียนภาษา Assembly

เมื่อนำโค้ดมาให้คนเขียนภาษา Python ดูอาจจะทำให้ให้คนเขียน Python งงเป็นไก่ตาแตก

แต่ถ้านำ Pseudo code มาให้ดูก็จบเลยเข้าใจเพราะมันคือภาษามนุษย์เราไม่ได้โฟกัสที่ syntax ของ Assembly

 

และแน่นอนครับว่า Pseudo Code นั้นไม่สามารถทำให้คอมพิวเตอร์เข้าใจได้เพราะมันไม่สามารถรันหรือคอมไพล์ได้ในทางตรงกันข้ามมันก็ทำให้มนุษย์โปรแกรมเมอร์เราเข้าใจได้ดีนั่นเองครับ โดยการเขียน Pseudo code เราจะเขียนเป็นโครงสร้างแบบลำดับ (Sequential Structure) คือเขียนตามลำดับการทำงานของโค้ดแต่ละบรรทัด

 

 

ตัวอย่างและวิธีการเขียน Pseudo Code

นี่คือตัวอย่างการเขียน Pseudo code แบบพื้นฐานสุดสำหรับการตื่นนอนขึ้นมาแล้วไปซื้อกาแฟ

เดินไปซื้อกาแฟ

ถ้าร้านเปิด

    สั่งอเมริกาโน่ไม่ใส่น้ำตาล 1 แก้วครับ

ถ้าร้านไม่เปิด

    โอ้ววว ร้านปิดนี่นา

กลับบ้าน


ลองเขียนซูโดโค้ดเป็นภาษาไพธอน ลองนำ Pseudo code ด้านบนมาเขียนเป็นภาษาไพธอนแบบง่าย ๆ ในรูปแบบของฟังก์ชัน

def buy_coffee( ): if cafe_open: print("สั่งอเมริกาโน่ไม่ใส่น้ำตาล 1 แก้วครับ") else: print("ตอนนี้ร้านปิดนี่นา") print("กลับบ้าน") buy_coffee()

เราจะเขียน Pseudo Code ในไหน ? แล้วแต่ความสะดวกของแต่ละคนได้เลยครับ บางคนก็เขียนใส่กระดาษ บางคนก็เขียนใส่ในโปรแกรมต่าง ๆ เช่น Microsoft Word, Notepad, etc


  • ฮิต: 2609