Flowchart

Flowchart หรือ “ผังงาน” เป็นหนึ่งในเครื่องมือที่ช่วยจัดการ Algorithm โดยใช้สัญลักษณ์เป็นสื่อให้คนอื่นเข้าใจแนวคิดได้ง่าย เล่ากันว่า การออกแบบผังงานเกิดขึ้นมานานแล้ว ย้อนกลับไปได้ถึงปี พ. ศ. 2488 โดย John Von Neumann

Better to be without logic than without feeling.

— Charlotte Bronte

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

ความจริงยังมีวิธีอื่นในการสื่อสารอย่างเช่น Pseudo Code แต่เป็นการอธิบายด้วยข้อความเป็นหลัก ในขณะที่ Flowchart ใช้สัญลักษณ์เพื่อช่วยในการเรียงลำดับขั้นตอน จึงคิดว่าแนะนำเรื่องผังงานน่าจะดีกว่า

สำหรับสัญลักษณ์ต่าง  ๆ ที่จะใช้ในการเขียนผังงานนั้น สามารถดูได้จาก Wikipedia แต่ที่ใช้กันอยู่บ่อย ๆ ก็จะเป็นตามรูปที่แสดงให้ดูนี้

Flowchart
Flowchart

อย่างที่บอกว่า การเขียน Flowchart ก็คือการเขียน Algorithm นั่นเอง การตอบโจทย์หรือแก้ไขปัญหา (Problem Solving) จะต้องมีการเรียงลำดับขั้นตอนการทำงานที่เรียบง่าย ชัดเจน

ยกตัวอย่างแบบง่ายที่สุด ขั้นตอนที่เรียงเป็นลำดับทีละรายการ สมมติเราเขียน Algorithm ง่าย ๆ ว่า รับข้อมูล – คำนวณบวกเลข – ได้ผลลัพธ์ จะออกมาแบบนี้

Flowchart
  1. เริ่ม
  2. ใส่เลข 2 ตัว ตั้งค่าตัวแปรเป็น A, B
  3. คำนวณ C = A + B
  4. แสดงค่า C
  5. จบ

อีกตัวอย่างหนึ่ง จะมีเงื่อนไขให้เลือก สมมติว่า เราจะเปรียบเทียบตัวเลข 2 ตัว แล้ว ให้แสดงผล ค่าตัวเลขที่น้อยกว่าออกมา จะได้ Algorithm แบบนี้

  1. เริ่ม
  2. ใส่เลข 2 ตัว ตั้งค่าตัวแปรเป็น A, B
  3. เปรียบเทียบค่า A กับ B
  4. ถ้า A มีค่าน้อยกว่า B ให้ พิมพ์ค่า A
  5. ถ้า B มีค่าน้อยกว่า A ให้พิมพ์ค่า B
  6. ถ้า A เท่ากับ B ให้พิมพ์ เท่ากัน
  7. จบ

แต่ถ้ามันยุ่งยากขึ้น เช่น เปรียบเทียบตัวเลข 3 ตัว ให้แสดงค่าที่มากที่สุด และสมมติว่าตัวเลขจะไม่เท่ากัน (เพราะขี้เกียจเขียนขั้นตอนเพิ่ม แต่ในตรรกะจริง จะมีโอกาสที่ตัวเลขจะเท่ากัน) จะได้ Algorithm แบบนี้

  1. เริ่มต้น
  2. ใส่ตัวเลข 3 ตัว ตั้งค่าตัวแปรเป็น A, B, C
  3. เปรียบเทียบ A กับ B
  4. ถ้า A > B ไปขั้นตอนที่ 6
  5. ถ้า B > A ไปขั้นตอนที่ 9
  6. เปรียบเทียบ A กับ C
  7. ถ้า C > A ไปขั้นตอนที่ 14
  8. ถ้า A > C ไปขั้นตอนที่ 12
  9. เปรียบเทียบ B กับ C
  10. ถ้า C > B ไปขั้นตอนที่ 14
  11. ถ้า B > C ไปขั้นตอนที่ 13
  12. พิมพ์ค่า A
  13. พิมพ์ค่า B
  14. พิมพ์ค่า C
  15. จบ

แต่จากโจทย์เดียวกัน เราสามารถคิดรูปแบบ Algorithm ได้อีกแบบ ยกตัวอย่างเดิมคือเปรียบเทียบตัวเลข 3 ตัว ให้แสดงค่าที่มากที่สุด และสมมติว่าตัวเลขจะไม่เท่ากัน ถ้าคิดต่างจากเดิม ก็จะได้ Algorithm แบบนี้

  1. เริ่ม
  2. ใส่ค่า A, B, C
  3. ตั้งตัวแปร OP = A (ให้ OP เป็นผลลัพธ์ ค่ามากที่สุด ตั้งค่าในตอนแรกให้เท่ากับ A ไปเลย)
  4. ถ้า B > OP ให้เปลี่ยนค่า OP ให้เท่ากับ B
  5. ถ้าไม่ใช่ ให้เอา OP ไปเทียบกับ C
  6. ถ้า C > OP ให้เปลี่ยนค่า OP ให้เท่ากับ C
  7. พิมพ์ค่า OP
  8. จบ

มันก็ไม่มีอะไรผิดถูก อยู่ที่ตรรกะการคิดขั้นตอนว่าจะไปทางใด และ เวลาทำงานจริงมันจะช่วยลดขั้นตอนการประมวลผลขนาดไหน

ความคิดเห็นของคุณ :)

%d bloggers like this: