|
|
|
|
|
|
ศูนย์รวมการแลกเปลี่ยนความรู้เกี่ยวกับ การเขียนโปรแกรมภาษา Visual Basic.net ด้วย
Microsoft Visual Studio.net 2005 - 2008 - 2010 กับการใช้งาน MS-SQL Server , การเขียนโปรแกรมด้วยภาษา Java & NetBean IDE ,
การพัฒนาเว็บแอพลิเคชั่นด้วยภาษา PHP & MySQL, การพัฒนาโปรแกรมบนอุปกรณ์พกพา PocketPC , J2ME , และ E-Learning ที่ดีที่สุด +++
Webmaster
สวัสดีครับทุกท่าน ผมพัฒนาเว็บนี้ขึ้นมาโดยมีวัตถุประสงค์ ที่จะเห็นโปรแกรมเมอร์ของไทย ได้มีการคิดค้นและพัฒนาซอฟต์แวร์ ของคนไทย
กันมากขึ้น เพื่อเป็นการช่วยชาติของเราให้เจริญยิ่งขึ้นไป
คุณสามารถแนะนำหรือติชมเกี่ยวกับเว็บนี้ได้นะครับ เพื่อทางเราจะได้นำไปปรับปรุงแก้ไขให้เว็บดียิ่งขึ้นนะครับ
ร่วมสนับสนุนเว็บไซต์ของเราได้ผ่านบัญชี ธ. กรุงเทพ เลขที่ 0200138717 ชื่อบัญชี : นายนัฐพงศ์ ส่งเนียม
หากใครโอนมาแล้วโปรดแจ้งกลับมาที่เมล์ xnattapong@hotmail.com ทางเว็บจะถือเป็นน้ำใจและจะพัฒนาเว็บให้ดียิ่งขึ้นต่อไปครับ
ขอขอบคุณ นักศึกษาวิทยาการคอมพิวเตอร์ ภาค กศ.พบ. รุ่น 17 ทุกคน ที่ร่วมสนับสนุนเว็บไซต์นี้
|
|
|
|
|
|
:: Webboard เก่า | อ่านทั้งหมด | Programming Zone | VB.NET2010 & MS-SQL | PHP & MySQL | JAVA & NetBean | ตั้งกระทู้ใหม่ ::
|
|
VB.NET2010
บทความเรื่อง : หลักการเขียน ผังงาน (FlowChart) เบื้องต้น @.
- หลักการเขียน ผังงาน (FlowChart) เบื้องต้น
- FlowChart คืออะไร
- ประเภทของผังงาน
- รูปแบบสัญลักษณ์ที่ใช้ในการเขียนผังงาน
- โครงสร้างของผังงาน
- หลักการเขียนผังงานที่ดี
- ผังงาน (FlowChart) คืออะไร
ผังงาน (Flowchart) คือ รูปภาพ (Image) หรือสัญลักษณ์(Symbol) ที่ใช้เขียนแทนขั้นตอน คำอธิบาย ข้อความ หรือคำพูด ที่ใช้ในอัลกอริทึม (Algorithm) เพราะการนำเสนอขั้นตอนของงานให้เข้าใจตรงกัน ระหว่างผู้เกี่ยวข้อง ด้วยคำพูด หรือข้อความทำได้ยากกว่า [ที่มา : http://www.thaiall.com/flowchart/ ]
ในการพัฒนาโปรแกรมในขั้นตอนที่ 2 คือการวางแผนแก้ปัญหา เครื่องมือพื้นฐานที่ใช้ในขั้นตอนนี้จะมีให้เลือกอยู่สองชนิดด้วยกันคือ Flowchart และ Pseudo code การเขียน Flowchart จะมีข้อได้เปรียบ Pseudo code คือ Flowchart เขียนเป็นรูปภาพทำให้ง่ายต่อการเข้าใจมากกว่า Pseudo code ซึ่งเขียนเป็นตัวหนังสือ การเขียน Flowchart หรือ Pseudo code ก็คือการลำดับขั้นตอนการทำงานนั่นเอง
ต.ย. ของ FlowChart
- ประเภทของผังงาน
ผัังงานแบ่งออกเป็น 2 ประเภทดังนี้
1. ผังงานระบบ (System Flowchart)
คือ ผังงานที่แสดงขั้นตอนการทำงานในระบบอย่างกว้าง ๆ แต่ไม่เจาะลงในระบบงานย่อย
2. ผังงานโปรแกรม (Program Flowchart)
คือ ผังงานที่แสดงถึงขั้นตอนในการทำงานของโปรแกรม ตั้งแต่รับข้อมูล คำนวณ จนถึงแสดงผลลัพธ์
-
รูปแบบสัญลักษณ์ต่างๆ ที่ใช้ในการเขียนผังงาน
- โครงสร้างของผังงาน
ในการเขียน Flowchart แบบโครงสร้างมีประโยชน์คือทำให้การไล่ขั้นตอนการทำงานทำได้ง่ายและเป็นระเบียบ ซึ่งมีหลักการเขียนอยู่ สามข้อ คือ
- ต.ย. การเขียน Flowchartเราต้องการเขียน Flowchart เพื่อคำนวณภาษีที่พนักงานต้องชำระ อัตราภาษี 10%
Flowchart ดังกล่าวกำหนดให้ผู้ใช้ป้อนค่าเงินเดือน (salary) แล้วเครื่องจะทำการคำนวณ ภาษี (tax) 10% ให้โดยอัตโนมัติ และจะพิมพ์ค่า salary กับ tax 
Output ที่เราต้องการก็คือ salary และ tax ( การสั่งพิมพ์ขึ้นอยู่ที่เราว่าเราต้องการให้พิมพ์อะไร ไม่จำเป็นต้องพิมพ์ salary, tax ตามตัวอย่างก็ได้ เราอาจสั่งพิมพ์ tax อย่างเดียวก็ได้
Input คือสิ่งที่ผู้ใช้ต้องป้อนให้ระบบ จากตัวอย่างก็คือ salary เพราะหากผู้ใช้ไม่ป้อน salary ระบบจะคำนวณ tax ไม่ได้ ส่วนอัตราภาษี 10% ผู้ใช้ไม่ต้องป้อนเพราะมีการกำหนดมาอยู่แล้วว่าภาษีคือ 10% ระบบไม่จำเป็นต้องถามผู้ใช้ เพราะฉะนั้นอัตราภาษี 10% จึงไม่ใช่ input หากจะสรุปง่ายๆ input ก็คือสิ่งที่เราต้องถามผู้ใช้ ส่วนอัตราภาษีคือ ค่าคงที่ ซึ่งเราจะกำหนดไว้ในโปรแกรมเลย โดยผู้ใช้ไม่ต้องป้อน
หากเราต้องการเขียน Flowchart ให้บวกเลข 1 ถึง 10 จะพบว่า Flowchart ดังกล่าวไม่มี input เลยเพราะ flow ดังกล่าวไม่จำเป็นต้องถามผู้ใช้ ดังรูปที่ 8. แต่หากเราต้องการเขียน Flowchart ให้บวกเลขจำนวนที่หนึ่ง ถึง เลขจำนวนที่สอง เราจะพบว่าผู้ใช้จำเป็นต้องบอกเราว่า จำนวนที่หนึ่ง คือเลขอะไร และ จำนวนที่สอง คือเลขอะไร เพราะฉะนั้น input คือ first ( เลขจำนวนที่หนึ่ง) และ last ( เลขจำนวนที่สอง) ดังรูปที่ 9
Iteration ( การทำซ้ำ)
Flowchart ดังแสดงในรูปที่ 7 จะคำนวณภาษีสำหรับพนักงานหนึ่งคน หากเราต้องการให้คำนวณคนที่สอง สาม สี่
เราจะต้องสั่งให้กลับมาทำงานดังแสงในรูปที่ 10

ให้สังเกตว่า Flowchart ดังกล่าวไม่มีทางออกจาก loop ได้เลย นั่นหมายถึงหลังจากคำนวณภาษีเสร็จเครื่องจะรอรับค่า salary คนต่อไปไม่มีวันสิ้นสุด
คำถามที่เกิดขึ้นก็คือ เมื่อไหร่ที่เราต้องการออกจาก loop คำตอบก็คือ เมื่อคำนวณภาษีให้พนักงานทุกคนครบแล้ว วิธีการที่เราจะบอกระบบว่าพนักงานหมดแล้วเราสามารถบอกได้โดย ถ้าเรา input ค่า salary เป็น 0 หมายถึงพนักงานหมดแล้ว นั่นคือให้ออกจาก loop ( ที่ใช้เป็น 0 เพราะไม่มีพนักงานคนใดที่มีเงินเดือนเท่ากับ 0 บาท) ซึ่งเราเรียกค่าดังกล่าวว่าค่า dummy
ดังได้กล่าวไว้ต้นแล้วว่าการเลือกใช้ loop มีให้เลือกใช้สองชนิดคือ DO WHILE และ DO UNTIL ซึ่ง DO WHILE จะทำการเช็คเพื่อออกจาก loop ที่ต้น loop ในขณะที่ DO UNTIL เช็คปลาย loop
ให้สังเกตว่า การเช็ค ณ ต้น loop คือ การเช็คก่อนมี process ใดๆทั้งสิ้น (DO WHILE) ในขณะที่การเช็ค ณ ปลาย loop คือให้มี process ทุกอย่างก่อนแล้วค่อยเช็ค (DO UNTIL) โดยปกติแล้วเราจะใช้ DO WHILE หรือ DO UNTIL ก็ได้ ( แต่มีบางกรณีที่จำเป็นต้องใช้ DO WHILE หรือ DO UNTIL) จาก Flowchart รูปที่ 11 หากเราใช้ DO UNTIL จะได้ Flowchart ดังรูปที่ 12
จะเห็นว่าเงื่อนไขออกจาก loop จะต้องเป็นจริง และการเช็คออกจาก loop จะอยู่ ณ ตำแหน่งสุดท้ายของ loop นอกจากนี้การที่ต้องมี input salary เพิ่มขึ้นมาอีกหนึ่ง process และไว้อยู่หน้าการเช็คเพื่อออกจาก loop เพราะว่า เมื่อ ผู้ใช้ใส่ค่า 0 มา ระบบจะทำการออกจาก loop ทันที เพราะหากไว้ตำแหน่งอื่นระบบอาจจะมีการ print หรือคำนวณ tax ซึ่งเราไม่ต้องการให้ทำ
Flowchart รูปที่ 13 แสดงการใช้ DO WHILE loop ให้สังเกตว่า การเช็คเพื่อที่จะออกจาก loop อยู่ต้น loop และเงื่อนไขเพื่อที่จะออกจาก loop จะเป็นเท็จ ( เพราะฉะนั้น เงื่อนไขจึงต้องเป็น salary > 0)
ใน Flowchart จะมีการ input Salary อยู่สองตำแหน่งคือบนสุด และใน loop ณ ตำแหน่งล่างสุด input Salary ซึ่งอยู่บนสุดมีไว้เพื่อ input ค่า salary คนแรก เท่านั้น สำหรับค่า salary คนต่อๆมา จะถูก input จาก input salary ที่อยู่ใน loop สาเหตุที่เราไม่สามารถเขียน Flowchart ให้วนกลับไป input salary คนต่อๆมาดังรูปที่ 14 แม้ว่าจะสามารถทำงานได้ถูกต้อง เนื่องจากจะผิดกฏ DO WHILE ซึ่งกำหนดไว้ว่า การเช็คเพื่อออกจาก loop จะต้องอยู่ต้น loop
- ค่าตัวแปรใน Flowchart
ในการเขียน Flowchart เป็นสิ่งสำคัญอย่างยิ่งที่เราจะต้องรู้ว่าคอมพิวเตอร์มีวิธีการอย่างไรในการเก็บค่าของตัวแปร เพราะไม่เช่นนั้นแล้วเราจะไม่สามารถเขียน Flowchart ที่ถูกต้องได้เลย ในการเก็บค่าตัวแปรของคอมพิวเตอร์นั้น ตัวแปรแต่ละตัวจะมีค่าเพียงค่าเดียว ดังตัวอย่างข้างล่าง
สมมติ input salary 5000
ตำแหน่ง |
SALARY |
BONUS |
1 |
0 |
0 |
2 |
5,000 |
0 |
3 |
5,000 |
10,000 |
4 |
15,000
(5,000+10,000) |
10,000 |
5 |
30,000
(15,000+15.000) |
10,000 |
6 |
30,000 |
7,000
(10,000-3,000) |
7 |
60,000
(30,000+30,000) |
7,000 |
8 |
100 |
7,000 |
จะเห็นว่า ณ เวลาหนึ่งๆ ตัวแปรจะถูกแทนที่ด้วยค่าใหม่ โดยไม่มีการเก็บค่าเก่าเช่น salary จาก 0 --> 5,000 --> 15,000 --> 30,000 --> 60,000 --> 100
- ACCUMULATION ( การสะสมค่า )
ในการเขียน Flowchart ทางธุรกิจส่วนใหญ่จะต้องการให้หายอดรวม เช่น หายอดรวมเงินเดือนของพนักงานทุกคน หายอดรวมของเงินภาษี ฯลฯ ในการเขียน Flowchart เราจะใช้วิธีสะสมค่า โดยกำหนด ตัวแปรที่ไว้สำหรับเก็บค่าสะสม = ตัวแปรที่ไว้สำหรับเก็บค่าสะสม + ตัวแปรที่ต้องการสะสม
สมมติเราต้องการหายอดรวมของ salary เราสามารถเขียนการทำงานดังกล่าวได้ดังนี้
จากตัวอย่าง หากเราต้องการหายอดรวมของ Salary และ tax จะได้ process ดังนี้
T_SAL = T_SAL + Salary
T_TAX = T_TAX + TAX
การวางตำแหน่งของ process ดังกล่าวจะต้องวางในตำแหน่งที่ salary, และ tax ของทุกคนวิ่งผ่าน ( เนื่องจากเราจะหาค่าสะสมของทุกคน) นั่นก็คือจะต้องวาง process ทั้งสองใน loop แต่นั่นมิได้หมายความว่าทุกตำแหน่งภายใน loop จะสามารถวางได้ เราจะมาพิจารณาแต่ละจุดดังนี้
จุดที่ |
T_SAL = T_SAL + SALARY |
T_TAX = T_TAX + TAX |
1. |
ได้ |
ไว้ไม่ได้ ( ค่าของคนสุดท้ายจะไม่ถูกสะสม) |
2. |
ได้ |
ได้ |
3. |
ได้ |
ได้ |
4. |
ไม่ได้ (input ของคนที่หนึ่งจะไม่ถูกร่วมสะสม เนื่องจากถูกแทนที่ด้วยค่าของคนที่สอง) |
ได้ |
เพราะฉะนั้นเราสามารถวาง T_SAL = T_SAL + SALARY ไว้ ณ ตำแหน่ง 1, 2, หรือ 3 ก็ได้ สำหรับ T_TAX = T_TAX + TAX ไว้ ณ ตำแหน่ง 2, 3 หรือ 4 ก็ได้ สำหรับตัวอย่างเลือกวางทั้งสองไว้ ณ ตำแหน่งที่ 2 ( ทั้งสองไม่จำเป็นต้องวางตำแหน่งเดียวกัน)

นอกจากนี้เราจะสั่งให้พิมพ์ค่ารวมเงินเดือน (T_SAL) และ รวมภาษี (T_TAX) หลังจากที่คำนวณของทุกคนเรียบร้อยแล้ว นั่นคือต้องสั่งพิมพ์นอก loop นั่นเองดังแสดงในรูปที่ 17
- OUNTING ( การนับ )
เช่นเดียวกับการสะสมค่า การนับก็คือการประมวลผลอย่างหนึ่งที่มักจะทำในการประมวลผลทางธุรกิจ ตัวอย่างเช่นนับจำนวนพนักงานที่คำนวณว่ามีกี่คน นับจำสินค้าที่ลูกค้าซื้อว่ามีกี่ชิ้น ฯลฯ จากตัวอย่างในการคำนวณภาษี นอกจากหายอดรวมของ salary แล้วเราอาจจะเขียน Flowchart ให้ระบบนับว่ามีพนักงานทั้งสิ้นกี่คน
หลักการในการเขียน Flowchart ของการนับก็คือ
1.
ต้องวาง process ของการนับ ณ จุดที่ทุกคนวิ่งผ่าน นั่นก็คือจุดที่อยู่ใน loop
2.
ตัวแปรซึ่งไว้เก็บค่าการนับก็คือ การสะสมซึ่งเพิ่มค่าทีละหนึ่ง

จุดที่ |
T_COUNT = T_COUNT + 1 |
| 1. |
ได้ |
| 2. |
ได้ |
| 3. |
ได้ |
| 4. |
ได้ |
| 5. |
ไม่ได้ เนื่องจากค่า salary = 0 จะถูกร่วมนับด้วย ทำให้การนับเกินจริงมาหนึ่ง |
รูปที่ 19 เป็น Flowchart แสดงการนับ
-
SELECTION ( ทางเลือก)
ในการเขียน Flowchart เพื่อประมวลผล เราจะพบว่าบางกรณีระบบจะต้อง ทำการเลือก ( การเลือก ตัดสินใจ หรือเงื่อนไข เป็นคำที่มีความหมายเดียวกัน) เช่น พนักงาน เงินเดือนต่ำกว่า 10,000 บาท ไม่ต้องเสียภาษี ตั้งแต่ 10,000 บาทขึ้นไปเสีย 10% ระบบจะต้องทำการเลือกว่าจะให้พนักงานที่อ่านค่าเงินเดือนเข้ามาเสียภาษีเท่าไหร่

สมมติจากระบบที่ใช้เป็นตัวอย่างเราเพิ่มเงื่อนไขว่า พนักงาน เงินเดือนต่ำกว่า 10,000 บาท ไม่ต้องเสียภาษี ตั้งแต่ 10,000 บาทขึ้นไปเสีย 10% เราจะเขียน Flowchart ได้ดังนี้
จาก Flowchart จะเห็นว่า พนักงานหนึ่งคนจะผ่าน Tax = 0 หรือ Tax = salary*0.1 ได้เพียงอย่างเดียว
ทุกคนจะต้องผ่านการคำนวณ T_sal, T_tax, T_count นั่นหมายถึง T_sal, T_tax จะเป็นยอดรวมเงินเดือน ภาษี ของพนักงานทุกคน และ T_count จะเป็นการนับจำนวนพนักงานทุกคน เช่นเดียวกับการ print ก็จะ print พนักงานทุกคน ให้สังเกตว่า หลังเงื่อนไขทั้ง Yes หรือ No ต้องมาเจอกันแล้วค่อย process ต่อไปตามหลักการเขียนโปรแกรม โครงสร้าง หากเราต้องการให้ระบบคำนวณ ผลรวมของภาษี ผลรวมของเงินเดือน จำนวนพนักงาน ของผู้เสียภาษี 0% และ 10% โดย 1. ให้คำนวณแยกกัน 2. รวมกัน จะเขียน Flowchart ได้ดังนี้
(T_tax0 จริงๆแล้วไม่ต้องคำนวณก็ได้ เนื่องจาก tax จะเท่ากับ 0)
ในการคำนวณหายอดรวมของพนักงานทุกคน ทั้ง T_salary, T_tax, T_count สามารถคำนวณได้ยอดรวมสุดท้าย ของ ผู้เสียภาษี 0% + ผู้เสียภาษี 10% นั่นคือ
T_SALARY = T_SALARY0 + TSALARY10
T_TAX = T_TAX0 + T_TAX10
T_COUNT = T_COUNT0 + T_COUNT10
เพราะฉะนั้น Flowchart จะได้ตามรูปที่ 22 ซึ่งประสิทธิภาพการทำงานจะดีกว่า Flowchart รูปที่ 21 เนื่องจากการหาค่ารวมของรูปที่ 21 จำนวนครั้งที่ระบบจะต้องทำการบวกจะเท่ากันจำนวนพนักงาน แต่รูปที่ 22 ระบบจะทำการบวกครั้งเดียว
-
NESTED SELECTION ( ทางเลือกซ้อนทางเลือก)
ดังที่ได้กล่าวไว้ในตอนต้นแล้วว่า Selection จะมีทางเลือกเพียงสองทางคือ Yes หรือ No ( จริงหรือเท็จ) เท่านั้น บางครั้งอาจมีกรณีอื่นเช่น
- บางกรณีอาจมีทางเลือกมากกว่าสองทางเช่น อัตราการเสียภาษีของพนักงานมี 0% 10% และ 20% หรือ
- เมื่อผ่านการทางเลือกหนึ่งแล้วจะต้องผ่านอีกทางเลือกหนึ่งด้วย เช่น เป็น ชาย หรือ หญิง หากเป็นชายผ่านการเกณฑ์ หรือยังไม่ผ่านการเกณฑ์ทหาร
เมื่อเจอกรณีดังกล่าวข้างต้นเราจำเป็นต้องใช้ Nested Selection เข้ามาช่วย สมมติจากกรณีตัวอย่างอัตราภาษีมี 3 อัตราตามตารางข้างล่าง จะสามารถเขียน Flowchart ได้ดังตัวอย่างรูปที่ 23 ซึ่งเป็นการแสดงให้เห็นการใช้ selection ซ้อน selection
อัตราภาษี
เงินเดือน |
อัตรา |
0 ถึง <= 10,000 |
0% |
> 10,000 ถึง <= 20,000 |
10% |
> 20,000 |
20% |
- หลักการเขียนผังงานที่ดี่
|
[ แสดงความคิดเห็นกับบทความนี้ ]
|
| |
|
|
|
|
|
| |
| |
|
| |
|
|
ลงโฆษณา
ขนาด 120x200
ราคา 200 บาท
ต่อเดือน
สนใจติดต่อ
siam2dev@hotmail.com
หรือ
xnattapong@hotmail.com
|
copy โค้ดนี้ไปใส่ในเว็บของท่าน
แล้วแจ้งกลับมาที่เรา
|
|
|
| |
|
| |
|
| |
|
|