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

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

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

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

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

 

     หลักในการเขียนผังงาน


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

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

  ผังงาน มีรูปแบบที่จำกัดอยู่ 3 แบบด้วยกัน คือ

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

   จากผังงาน เราสามารถเขียนโปรแกรมได้ ตาม syntax ของภาษาที่ใช้ ตัวอย่างโปรแกรมข้างล่างนี้ จะเป็นการเขียนโปรแกรมด้วยภาษา C
 

#include <stdio.h>
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 <stdio.h>
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 <stdio.h>
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);
}

โปรแกรมที่ช่วยในการสร้าง Flowchart

คือ โปรแกรม visio ซึ่งจะช่วยให้การเขียน Flowchart ง่ายขึ้นค่ะ

download visio