Flowchart หรือ “ผังงาน” เป็นหนึ่งในเครื่องมือที่ช่วยจัดการ Algorithm โดยใช้สัญลักษณ์เป็นสื่อให้คนอื่นเข้าใจแนวคิดได้ง่าย เล่ากันว่า การออกแบบผังงานเกิดขึ้นมานานแล้ว ย้อนกลับไปได้ถึงปี พ. ศ. 2488 โดย John Von Neumann
“Better to be without logic than without feeling.“
— Charlotte Bronte
การใช้สัญลักษณ์ในการเขียนทำให้คนอื่นจะเข้าใจ Algorithm ได้ง่ายขึ้น ทำให้คนเขียนโปรแกรมนิยมใช้เป็นเครื่องมือในการอธิบายขั้นตอนการดำเนินการและลำดับของการดำเนินการในระบบ ซึ่งจะช่วยให้มองภาพของปัญหาได้ชัดเจน วิเคราะห์ แก้ไขปัญหาได้ง่ายขึ้น สามารถสื่อสารว่ากระบวนการต่าง ๆ ใช้ตรรกะอะไร และใช้ได้กับทุกงาน ทุกภาษา
ความจริงยังมีวิธีอื่นในการสื่อสารอย่างเช่น Pseudo Code แต่เป็นการอธิบายด้วยข้อความเป็นหลัก ในขณะที่ Flowchart ใช้สัญลักษณ์เพื่อช่วยในการเรียงลำดับขั้นตอน จึงคิดว่าแนะนำเรื่องผังงานน่าจะดีกว่า
สำหรับสัญลักษณ์ต่าง ๆ ที่จะใช้ในการเขียนผังงานนั้น สามารถดูได้จาก Wikipedia แต่ที่ใช้กันอยู่บ่อย ๆ ก็จะเป็นตามรูปที่แสดงให้ดูนี้
อย่างที่บอกว่า การเขียน Flowchart ก็คือการเขียน Algorithm นั่นเอง การตอบโจทย์หรือแก้ไขปัญหา (Problem Solving) จะต้องมีการเรียงลำดับขั้นตอนการทำงานที่เรียบง่าย ชัดเจน
ยกตัวอย่างแบบง่ายที่สุด ขั้นตอนที่เรียงเป็นลำดับทีละรายการ สมมติเราเขียน Algorithm ง่าย ๆ ว่า รับข้อมูล – คำนวณบวกเลข – ได้ผลลัพธ์ จะออกมาแบบนี้
- เริ่ม
- ใส่เลข 2 ตัว ตั้งค่าตัวแปรเป็น A, B
- คำนวณ C = A + B
- แสดงค่า C
- จบ
อีกตัวอย่างหนึ่ง จะมีเงื่อนไขให้เลือก สมมติว่า เราจะเปรียบเทียบตัวเลข 2 ตัว แล้ว ให้แสดงผล ค่าตัวเลขที่น้อยกว่าออกมา จะได้ Algorithm แบบนี้
- เริ่ม
- ใส่เลข 2 ตัว ตั้งค่าตัวแปรเป็น A, B
- เปรียบเทียบค่า A กับ B
- ถ้า A มีค่าน้อยกว่า B ให้ พิมพ์ค่า A
- ถ้า B มีค่าน้อยกว่า A ให้พิมพ์ค่า B
- ถ้า A เท่ากับ B ให้พิมพ์ เท่ากัน
- จบ
แต่ถ้ามันยุ่งยากขึ้น เช่น เปรียบเทียบตัวเลข 3 ตัว ให้แสดงค่าที่มากที่สุด และสมมติว่าตัวเลขจะไม่เท่ากัน (เพราะขี้เกียจเขียนขั้นตอนเพิ่ม แต่ในตรรกะจริง จะมีโอกาสที่ตัวเลขจะเท่ากัน) จะได้ Algorithm แบบนี้
- เริ่มต้น
- ใส่ตัวเลข 3 ตัว ตั้งค่าตัวแปรเป็น A, B, C
- เปรียบเทียบ A กับ B
- ถ้า A > B ไปขั้นตอนที่ 6
- ถ้า B > A ไปขั้นตอนที่ 9
- เปรียบเทียบ A กับ C
- ถ้า C > A ไปขั้นตอนที่ 14
- ถ้า A > C ไปขั้นตอนที่ 12
- เปรียบเทียบ B กับ C
- ถ้า C > B ไปขั้นตอนที่ 14
- ถ้า B > C ไปขั้นตอนที่ 13
- พิมพ์ค่า A
- พิมพ์ค่า B
- พิมพ์ค่า C
- จบ
แต่จากโจทย์เดียวกัน เราสามารถคิดรูปแบบ Algorithm ได้อีกแบบ ยกตัวอย่างเดิมคือเปรียบเทียบตัวเลข 3 ตัว ให้แสดงค่าที่มากที่สุด และสมมติว่าตัวเลขจะไม่เท่ากัน ถ้าคิดต่างจากเดิม ก็จะได้ Algorithm แบบนี้
- เริ่ม
- ใส่ค่า A, B, C
- ตั้งตัวแปร OP = A (ให้ OP เป็นผลลัพธ์ ค่ามากที่สุด ตั้งค่าในตอนแรกให้เท่ากับ A ไปเลย)
- ถ้า B > OP ให้เปลี่ยนค่า OP ให้เท่ากับ B
- ถ้าไม่ใช่ ให้เอา OP ไปเทียบกับ C
- ถ้า C > OP ให้เปลี่ยนค่า OP ให้เท่ากับ C
- พิมพ์ค่า OP
- จบ
มันก็ไม่มีอะไรผิดถูก อยู่ที่ตรรกะการคิดขั้นตอนว่าจะไปทางใด และ เวลาทำงานจริงมันจะช่วยลดขั้นตอนการประมวลผลขนาดไหน
Learn Python – เรียนรู้ไพธอนไปด้วยกัน
Divider
บันทึกส่วนตัว เกี่ยวกับการเรียนรู้ภาษาไพธอน