อัลกอริทึมและผังงานเบื้องต้น
อัลกอริทึมเบื้องต้น
อัลกอริทึม มีที่มาจากชื่อของนักคณิตศาสตร์ชาวเปอร์เซียในยุคศตวรรษที่ 9 ชื่ออะบู อับดิลลาห์ มูฮัมหมัด บิน มูซา อัลคอวาริซมีย์ (Abu Abdillah Muhammad binMusa al-Khawarizmi) คำว่าอัลคอวาริซมีย์ (al-Khawarizmi)ได้เพี้ยนเป็นอัลกอริทมี (Algoritmi)เมื่องานเขียนของเขาได้รับการแปลเป็นภาษาละติน แล้วกลายเป็นอัลกอริทึม(Algorithm) ซึ่งหมายถึงกฎที่ใช้ในการคิดคำนวณเลขคณิตในช่วงศตวรรษที่ 18 ในปัจจุบันคำนี้ได้มีความหมายที่กว้างขึ้นโดยหมายรวมถึงขั้นตอนวิธีการในการแก้ปัญหาต่าง ๆ มีนักการศึกษา นักวิชาการ ให้ความหมายของคำว่า อัลกอริทึม (Algorithm) ไว้หลายท่าน ดังนี้
ราชบัณฑิตยสถานได้บัญญัติศัพท์คำว่า “Algorithm” ใช้คำว่า “ขั้นตอนวิธี” หมายถึง ขั้นตอนวิธีการแก้ปัญหาเชิงคำนวณด้วยคอมพิวเตอร์
อัลกอริทึม (Algorithm) หมายถึง ขั้นตอนหรือลำดับการประมวลผลในการแก้ปัญหาใดปัญหาหนึ่งซึ่งจะช่วยให้ผู้พัฒนาโปรแกรมเห็นขั้นตอนการเขียนโปรแกรมอย่างง่ายขึ้น
อัลกอริทึม (Algorithm) หมายถึง แนวคิดอย่างมีเหตุผลที่ผู้เขียนโปรแกรมใช้ในการอธิบายวิธีการอย่างเป็นขั้นตอนตามลำดับในการที่จะพัฒนาโปรแกรมนั้น ๆ เพื่อตรวจสอบขั้นตอนต่าง ๆ ในการทำงานและความถูกต้องในแต่ละขั้นตอน
อัลกอริทึม (Algorithm) คือ กระบวนการแก้ปัญหาที่สามารถอธิบายออกมาเป็นขั้นตอนที่ชัดเจน เมื่อนำเข้าอะไร แล้วจะต้องได้ผลลัพธ์เช่นไร กระบวนการนี้ประกอบด้วยจะประกอบด้วย วิธีการเป็นขั้นๆ และมีส่วนที่ต้องทำแบบวนซ้ำอีก จนกระทั่งเสร็จสิ้นการทำงาน (http://mindphp.com)
ภาพที่ 1 บทเรียนอัลกอริทึมเบื้องต้น
ที่มา : วัชรพัฒน์ ศรีคำเวียง
จากที่กล่าวมาข้างต้น สรุปได้ว่า อัลกอริทึม (Algorithm) หมายถึง กระบวนการทำงานอย่างใดอย่างหนึ่ง ที่มีลำดับการทำงานเป็นขั้นเป็นตอนชัดเจน และปฏิบัติตามขั้นตอนแล้วได้ผลลัพธ์ที่ถูกต้อง
ซึ่งในการเริ่มต้นในการเขียนโปรแกรมอัลกอริทึมมีความสำคัญเป็นอย่างมากเพราะ เป็นการจัดลำดับขั้นตอนวิธีการแก้ปัญหาหรือจัดการความคิดให้เป็นขั้นตอนต่าง ๆ เพื่อแก้ไขปัญหาในขั้นตอนการเขียนโปรแกรมที่สอดคล้องกรรมวิธีแก้ปัญหาที่กำหนดไว้ การเขียนอัลกอริทึมจึงเป็นการแสดงลำดับการทำงานตามคุณสมบัติด้านการประมวลผลของคอมพิวเตอร์ ที่พร้อมจะนำไปแปลงเป็นลำดับคำสั่งให้คอมพิวเตอร์ทำงาน การเขียนโปรแกรมคอมพิวเตอร์ด้วยภาษาที่เหมาะสม เพื่อสั่งให้คอมพิวเตอร์ทำงานตามอัลกอริทึมที่กำหนดไว้ และการเขียนอัลกอริทึมออกมาให้ตรวจสอบความถูกต้องได้ครบถ้วนขึ้น
หลักการเขียนอัลกอริทึม
-
กระบวนการสำคัญเริ่มต้นที่จุดจุดเดียวในการมีจุดเริ่มต้นหลายที่จะทำให้กระบวนการวิธีสับสน จนในที่สุดอาจทำให้ผลลัพธ์ที่ได้ไม่ตรงกับความต้องการ หรืออาจทำให้อัลกอริทึมนั้นไม่สามารถทำงานได้เลย
-
กำหนดการทำงานเป็นขั้นเป็นตอนอย่างชัดเจน การกำหนดอัลกอริทึมที่ดีควรมีขั้นตอนที่ชัดเจนไม่คลุมเครือ เสร็จจากขั้นตอนหนึ่ง ไปยังขั้นตอนที่สองมีเงื่อนไขการทำงานอย่างไร ควรกำหนดให้ชัดเจน
-
การทำงานแต่ละขั้นตอนควรสั้นกระชับ เพราะการกำหนดขั้นตอนการทำงานให้สั้นกระชับนอกจากจะทำให้โปรแกรมทำงานได้รวดเร็วแล้ว ยังเป็นประโยชน์ต่อผู้อื่นที่มาพัฒนาโปรแกรมต่อด้วยเพราะสามารถศึกษาอัลกอริทึมจากโปรแกรมที่เขียนไว้ได้ง่าย
-
ผลลัพธ์ในแต่ละขั้นตอนควรต่อเนื่องกัน การออกแบบขั้นตอนที่ดีนั้นผลลัพธ์จากขั้นตอนแรกควรเป็นข้อมูลสำหรับนำเข้า ให้กับข้อมูลในขั้นต่อไป ต่อเนื่องกันไปจนกระทั่งได้ผลลัพธ์ตามที่ต้องการ
-
การออกแบบอัลกอริทึมที่ดี ควรออกแบบให้ครอบคลุมการทำงานในหลายรูปแบบ เช่น การออกแบบโดยคิดไว้ล่วงหน้าว่าหากผู้ใช้โปรแกรมป้อนข้อมูลเข้าผิดประเภท โปรแกรมจะมีการเตือนว่าผู้ใช้งานมีการใส่ข้อมูลที่ผิดประเภทโดยโปรแกรมจะไม่รับข้อมูลนั้น เพื่อให้ใส่ข้อมูลใหม่อีกครั้ง เพื่อป้องกันการเกิดจุดบกพร่องของโปรแกรมได้
ประโยชน์ของอัลกอริทึม
ประโยชน์ของอัลกอริทึม (Algorithm) คือ ทำให้ไม่สับสนกับวิธีดำเนินงาน เพราะทุกอย่างจะถูกจัดเรียงเป็นขั้นตอนมีวิธีการและทางเลือกไว้ให้ เมื่อนำมาใช้จะทำให้การทำงานสำเร็จอย่างรวดเร็ว ทำให้ปัญหาลดลงหรือสามารถค้นหาต้นเหตุของปัญหาได้อย่างรวดเร็ว เนื่องจากกระบวนการถูกแยกแยะกิจกรรม ขั้นตอน และความสัมพันธ์ ออกมาให้เห็นอย่างชัดเจน
รูปแบบการเขียนอัลกอริทึม
การเขียนอัลกอริทึมมีหลายรูปแบบ โดยผู้เขียนสามารถใช้อัลกอริทึมหลายรูปแบบประกอบกันในการออกแบบอัลกอริทึมนั้นเพื่อใช้ในการแก้ปัญหาการเขียนโปรแกรมได้
1.แบบลำดับ (Sequential) มีลักษณะการทำงานจะเป็นไปตามขั้นตอน ก่อน-หลัง ต่อเนื่องกันไปเป็นลำดับ โดยการทำงานแต่ละขั้นตอนต้องทำให้เสร็จก่อน แล้วจึงไปทำขั้นตอนต่อไป
ตัวอย่างเช่น อัลกอริทึมแบบลำดับ การทอดไข่เจียว
-
เริ่มต้น
-
หยิบไข่ไก่
-
ตอกไข่ไก่ใส่ภาชนะ
-
ปรุงรส ด้วยเครื่องปรุง
-
ตีไข่ด้วยช้อนส้อม
-
ตั้งกระทะบนเตา
-
เปิดแก๊ส และติดไฟ
-
ใส่น้ำมันพืช
-
นำไข่ที่ปรุงรสแล้วใส่ลงในกระทะที่ร้อน
-
ทอดจนสุก
-
ตักขั้นใส่จานที่เตรียมไว้
-
จบการทำงาน
2.แบบทางเลือก (Decision) อัลกอริทึมรูปแบบนี้ มีเงื่อนไขเป็นตัวกำหนดเส้นทางการทำงานของกระบวนการแก้ปัญหา โดยตัวเลือกนั้นอาจจะมีตั้งแต่ 2 ตัวขึ้นไป เช่น สอบข้อเขียน คะแนนเต็ม 50 ได้คะแนน 30 สอบผ่าน ถ้าต่ำกว่า 30 สอบไม่ผ่าน
ตัวอย่างการเขียนอัลกอริทึมแบบทางเลือก อัลกอริทึมตัดเกรดวิชาคอมพิวเตอร์
-
เริ่มต้น
-
คะแนนสอบของนักเรียน
-
ตรวจสอบคะแนน (คะแนนที่สอบผ่าน 50 คะแนน)
-
ถ้ามากกว่า 50 คะแนน สอบผ่าน
-
ถ้าน้อยกว่า 50 คะแนน สอบตก
-
ประกาศผล
-
จบการทำงาน
3.แบบทำซ้ำ (Repetition) อัลกอริทึมแบบนี้คล้ายกับแบบทางเลือก คือ มีการตรวจสอบเงื่อนไข แต่แตกต่างกันตรงที่เมื่อการทำงานตรงตามเงื่อนไขที่กำหนด โปรแกรมจะกลับไปทำงานอีกครั้งวนการทำงานแบบนี้เรื่อย ๆ จนกระทั่งไม่ตรงกับเงื่อนไขที่กำหนดไว้จึงหยุดการทำงานหรือทำงานในขั้นต่อไป
ตัวอย่างการเขียนอัลกอริทึมแบบทำซ้ำ อัลกอริทึมการซื้อมังคุด 1 กิโลกรัม
-
เริ่มต้น
-
หยิบถุงพลาสติก
-
หยิบมังคุดมาเลือก โดยกดที่เปลือกที่นิ่มๆ
-
ตรวจสอบเงื่อนไข (น้อยกว่า 1 กิโลกรัม)
-
ถ้าจริง เลือกมังคุดต่อ
-
ถ้าเท็จ หยุดเลือก
-
จ่ายเงินให้กับผู้ที่ขาย
-
จบการทำงาน
คุณลักษณะการเขียนอัลกอริทึม
ในการแก้ปัญหาแต่ละปัญหามหลายวิธี ดังนั้นการเขียนอัลกอริทึมเพื่อแก้ปัญหาแต่ละปัญหาก็มีหลายวิธีด้วย แต่ละวิธีมีทั้งข้อเด่นข้อด้อย ดังนั้นต้องเลือกให้เหมาะสมกับงานและสภาพแวดบ้อมในขณะนั้น โดยทั่วไปอัลกอริทึมที่ดี ต้องคุณลักษณะดังต่อไปนี้
-
มีความถูกต้อง ความถูกต้องเป็นคุณสมบัติข้อแรกที่จะต้องพิจารณา นั่นคือเมื่อทำงานตามอัลกอริทึม แล้วจะต้องได้ผลลัพธ์ที่ถูกต้อง ซึ่งถ้าผลลัพธ์ที่ได้จากอัลกอริทึมไม่ถูกต้อง จะถือว่าไม่ใช่อัลกอริทึมที่ดี โดยที่ไม่จำเป็นต้องพิจารณาคุณสมบัติข้ออื่น ๆ
-
ใช้เวลาในการปฏิบัติงานน้อยที่สุด
-
สั้น กระชับ มีเฉพาะขั้นตอนที่จำเป็นเท่านั้น
-
ใช้เนื้อที่ในหน่วยความจำน้อยที่สุด เนื้อที่ในหน่วยความจำจะถูกใช้สำหรับเก็บค่าของตัวแปร และเก็บคำสั่งที่ใช้ในการทำงาน ดังนั้น ถ้าอัลกอริทึมยาวเกินความจำเป็น จะทำให้ใช้เนื้อที่มาก และ ถ้ามีตัวแปรมากเกินความจำเป็น ก็จะทำให้เสียเนื้อที่ในหน่วยความจำไปด้วย
-
มีความยืดหยุ่นในการใช้งาน
-
ใช้เวลาในการพัฒนาน้อยที่สุด เมื่อนำอัลกอริทึมไปแปลงเป็นโปรแกรมภาษาคอมพิวเตอร์แล้วจะต้องใช้เวลาน้อยที่สุด
-
ง่ายต่อการทำความเข้าใจ
การวิเคราะห์อัลกอรึทึม
การวิเคราะห์ขั้นตอนวิธีการ ต้องทำการแยกแยะระบบว่าเป็นข้อมูลเข้า หรือออกดังนี้
อะไรเป็นข้อมูลเข้า (Input)
วิธีการประมวลผลที่จะนามาซึ่งคาตอบ (Process)
อะไรเป็นข้อมูลออก (Output)
ตัวอย่างที่ 1 ต้องการหาค่าเฉลี่ยของคะแนนวิชา Fundamental of Computer ของนักศึกษาจานวน 50 คน
วิเคราะห์อัลกอริทึม
ข้อมูลเข้า : คะแนนของนักศึกษาแต่ละคน (Score)
ประมวลผล : ผลรวมของคะแนนนักศึกษาทุกคน ¸ 50 (Average)
ข้อมูลออก : พิมพ์ผลลัพธ์
ตัวอย่างที่ 2 จงคำนวณหาพื้นที่สามเหลี่ยม โดยให้ผู้ใช้สามารถ Input ข้อมูลความสูงและความยาวฐานได้
วิเคราะห์อัลกอริทึม
ข้อมูลเข้า : ความสูง (H) , ความยาวฐาน (B)
ประมวลผล : คำนวณ Area = ½ * B*H
ข้อมูลออก : แสดงค่าพื้นที่สามเหลี่ยมที่หน้าจอ
เครื่องมือช่วยในการเขียนอัลกอริทึม
การเขียนอัลกอริทึม เป็นการวางแผนเกี่ยวกับการแก้ปัญหา โดยจะอธิบายการทำงานที่ชัดเจนเพื่อเป็นแนวทางในการเขียนโปรแกรม ช่วยให้การเขียนโปรแกรมทำได้ง่ายขึ้น ช่วยให้โปรแกรมมีข้อผิดพลาดน้อยลง นอกจากนี้ยังช่วยตรวจสอบการทำงานของโปรแกรม ทำให้ทราบขั้นตอนการทำงานของโปรแกรมได้อย่างรวดเร็ว โดยไม่ต้องดูจากโปรแกรมจริง
ในการเขียนอัลกอริทึม มีเครื่องมือช่วยในการเขียนที่นิยมใช้ 3 แบบ คือ
1. บรรยาย (narrative description)
2. ผังงาน (flowchart)
3. รหัสลำลอง (pseudo code)
1. การเขียนอัลกอริทึมแบบบรรยาย เป็นการแสดงขั้นตอนการทำงานในลักษณะการบรรยายเป็นข้อความด้วยภาษาพูดใด ๆ เช่น ภาษาไทย ภาษาอังกฤษ ภาษาเกาหลี ภาษาญี่ปุ่น หรือ ภาษาจีน เป็นต้น ขึ้นอยู่กับความถนัดของผู้เขียนอัลกอริทึม มักเขียนบรรยายขั้นตอนการทำงานเป็นข้อๆ เช่น
ตัวอย่าง การปลูกต้นไม้ แสดงขั้นตอนการทำงานด้วยอัลกอริทึมแบบบรรยายได้ดังนี้
-
เริ่มต้น
-
ขุดหลุม
-
ใส่ปุ๋ย
-
นำต้นไม้ลงหลุม
-
กลบดิน
-
ปักหลักยึดต้นไม้
-
รดน้ำ
-
จบการทำงาน
ข้อดีของการเขียนอัลกอริทึมแบบบรรยาย
การเขียนอัลกอริทึมแบบบรรยาย มีข้อดี คือ ง่านในการเขียนบรรยาย เนื่องจากใช้ภาษาพูดที่ผู้เขียนอัลกอริทึมคุ้นเคยอยู่แล้ว ดังนั้นจึงง่ายในการเขียนบรรยาย
ข้อเสียของการเขียนอัลกอริทึมแบบบรรยาย เนื่องจากการเขียนมีลักษณะบรรยาย มีรายละเอียดดังนี้
-
ขอบเขตของการบรรยายกว้างเกินไปยืดเยื้อเกินไป
-
ยากต่อความเข้าใจ
-
ยากในตรวจสอบความถูกต้อง
-
ยากในการแปลงเป็นโปรแกรม
2. การเขียนอัลกอริทึมแบบผังงาน การเขียนอัลกอริทึมแบบผังงานจะแสดงขั้นตอนการทำงานในลักษณะของรูปภาพหรือสัญลักษณ์ ซึ่งเป็นสัญลักษณ์ที่เป็นมาตรฐาน ไม่อ้างอิงภาษาใดภาษาหนึ่ง ทำให้เห็นลำดับการทำงานก่อนหลังได้ชัดเจน เช่น
ตัวอย่าง การปลูกต้นไม้ แสดงขั้นตอนการปลูกต้นไม้ด้วยผังงาน ดังภาพต่อไปนี้
ภาพที่ 2 ผังงานแสดงขั้นตอนการปลูกต้นไม้
ที่มา : http://algorithm-elearning.esy.es/
ข้อดีของการเขียนอัลกอรทึมแบบผังงาน
1. ทำความเข้าใจได้ง่าย
2. ตรวจสอบความถูกต้องได้ง่าย
3. พัฒนาโปรแกรมได้ง่าย
4. ง่ายต่อการบำรุงรักษาโปรแกรม
วิธีการเขียนผังงานที่ดี
1. ใช้สัญลักษณ์ตามที่กำหนดไว้ ขนาดแตกต่างกันได้
2. ใช้ลูกศรแสดงทิศทางการไหลของข้อมูลจากล่างขึ้นบนหรือซ้ายไปขวา
3. คำอธิบายในภาพควรสั้นกระทัดรัด และเข้าใจได้ง่าย
4. มีความเป็นระเบียบเรียบร้อย สะอาด
5. ทุกแผนภาพต้องมีลูกศรแสดงทิศทางเข้า – ออก
6. ผังงานควรสมดุลระหว่างซ้ายและขวา
7. ไม่ควรโยงเส้นเชื่อมผังงานี่อยู่ไกลมาก ๆ ควรใช้สัญลักษณ์จุดเชื่อมต่อแทน
8. ผังงานควรทดสอบความถูกต้องของการทำงานก่อนนำไปเขียนโปรแกรม
3. การเขียนอัลกอริทึมโดยใช้รหัสลำลอง เป็นการเขียนขั้นตอนการทำงานในลักษณะของคำอธิบายที่มีรูปแบบโครงสร้างชัดเจน ไม่ขึ้นกับภาษาใดภาษาหนึ่ง แต่สามารถเปลี่ยนเป็นภาษาคอมพิวเตอร์ได้ง่าย ดังนั้นโครงสร้างส่วนใหญ่จึงนิยมใช้คำสั่งเฉพาะที่มีอยู่ในคอมพิวเตอร์เพื่อแทนการทำงานต่าง ๆ เช่น Read if Case หรือ While/Do เป็นต้น การเขียนอัลกอริทึมมีลักษณะดังต่อไปนี้
1. รูปแบบเป็นภาษพูดง่าย ๆ ภาษอังกฤษ หรือภาษาไทยก็ได้
2. ไม่มีกฎที่แน่นอนตายตัว แต่ลักษณะคล้ายกับภาษาคอมพิวเตอร์
3. ไม่เจาะจงภาษาคอมพิวเตอร์ใดภาษาหนึ่ง
4. ใช้คำเฉพาะ (Keyword)
5. เริ่มต้น คือคำสั่งที่อยู่บรรทัดแรก และ สิ้นสุด คือ คำสั่งที่อยู่บรรทัดสุดท้าย
6. ใช่ย่อหน้าในการเขียนการทำงานย่อยที่อยู่ภายใน
7. ไม่ระบุอุปกรณ์ในการรับข้อมูลหรือแสดงผลข้อมูล
8. ข้อมูลต่าง ๆที่ใช้ควรจะอยู่ในรูปของตัวแปร
ลักษณะที่ดีของรหัสเทียม การเขียนรหัสเทียมที่ดี จะต้องมีลักษณะดังนี้
1. ชัดเจน
2. สั้น กระชับและได้ใจความ
3. รูปแบบแน่นอนกะทัดรัด และมองคล้ายภาษาคอมพิวเตอร์ระดับสูง
4. แปลเป็นภาษาคอมพิวเตอร์ได้เร็ว
รูปแบบ Algorithm แบบรหัสเทียม
<ชื่อของอัลกอริทึม>
START
1……………………………….
2……………………………….
3…………………………………
END
ตัวอย่างโจทย์
จงเขียนโปรแกรมคำนวณหาพื้นที่ สามเหลี่ยมทั่วไป โดยให้โปรแกรมมีการรับค่า ฐาน และ สูงจากทาง Keyboard จากนั้นแสดงผลลัพธ์ของพื้นที่ออกทางจอภาพ
วิเคราะห์โจทย์
แบ่งออกเป็นสองส่วนคือ ส่วนในการรับค่า คือรับค่า ฐาน และ สูงจากผู้ใช้มาเก็บไว้ในตัวแปร และส่วนในการคำนวณ สูตรในการหาพื้นที่สามเหลี่ยมคือ (1/2) * ฐาน * สูง
ตัวอย่าง การเขียนอัลกอริทึม คำนวณหาพื้นที่สามเหลี่ยมอัลกอริทึม (Algorithm) การหาพื้นที่สามเหลี่ยม
เริ่มต้น
รับค่าความยาวของฐานมาเก็บในตัวแปร BASE
รับค่าความยาวของสูงมาเก็บในตัวแปร HEIGHT
คำนวณหาพื้นที่ AREA = 0.5 * BASE*HEIGHT
แสดงผลพื้นที่
จบ
ซูโดโค้ด (Pseudo codes) Algorithm Triangle
START
READ BASE
READ HEIGHT
AREA = 0.5 * BASE * HEIGHT
PRINT AREA
END
จากที่กล่าวมาทั้งหมดสรุปได้ว่า อันกอริทึม (Algorithm) เป็นวิธีการในการทำงานอย่างใดอย่างหนึ่ง ที่มีลำดับการทำงานเป็นขั้นตอนชัดเจน และปฏิบัติตามขั้นตอนแล้วได้ผลลัพธ์ที่ถูกต้อง อัลกอริทึมที่ดีจะต้องมีความถูกต้อง ทำงานได้เร็ว สั้น กระชับ ใช้เนื้อที่ในหน่วยความจะน้อย มีความยืดหยุ่นเขียนโปรแกรมได้เร็ว และง่ายต่อการทำความเข้าใจ การเขียนอัลกอริทึมเป็นการวางแผนเกี่ยวกับการแก้ปัญหา โดยจะอธิบายการทำงานที่ชัดเจนเพื่อเป็นแนวทางในการเขียนโปรแกรม ช่วยให้การเขียนโปรแกรมทำได้ง่ายขึ้น ลดข้อผิดพลาดของโปรแกรม และช่วยตรวจสอบการทำงานของโปแกรม การเขียนอัลกอริทึมมีเครื่องมือช่วยในการเขียน คือ การบรรยาย ผังงาน และ ซูโดโค๊ด การเขียนแบบบรรยายจะเขียนบรรยายด้วยภาษาพูดใด ๆ ทำให้แปลงเป็นโปแกรมได้ยาก การเขียนแบบผังงานจะเขียนเป็นรูปภาพโดยใช้สัญลักษณ์แทนความหมายต่าง ๆ ทำให้มองเห็นลพดับการทำงานของอัลกอริทึมได้ชัดเจน แปลงเป็นโปรแกรมก็ทำได้ง่ายและเร็ว การเขียนแบบรหัสเทียมจะกึ่งบรรยายร่วมกับคำเฉพาะซึ่งจะใกล้เคียงกับภาษาคอมพิวเตอร์ทำให้แปลงเป็นโปรแกรมภาษา คอมพิวเตอร์ก็ทำได้ง่ายและเร็วกว่าการเขียนแบบผังงาน
แหล่งที่มา
จุฬาลักษณ์ ถาไชยลา.หลักการเขียนโปรแกรม.สืบค้นเมื่อ 8 สิงหาคม 2561. จาก http://www.bankhai.ac.th/dev_c/algorithm_02.pdf.
วิกิพีเดีย. ขั้นตอนวิธีหรืออัลกอริทึม.สืบค้นเมื่อ 8 สิงหาคม 2561. จาก http://th.wikipedia.org/wiki
วีรศักดิ์ จันทร์สุข. การเขียนโปรแกรมเบื้องต้น (Basic Programming). สืบค้นเมื่อ 8 สิงหาคม 2561.จาก http://www.krurock.com/Programming/lession02/lession02_2.php
วีระยุทธ คุณรัตนสิริ.การอธิบายขั้นตอนวิธีการโดยใช้ผังงาน (Flow Chart).สืบค้นเมื่อ 8 สิงหาคม 2561.จาก http://weerayuth.in.th/docFiles/04-411-101/02-FlowChart.pdf
วรายุภัสร์ ปานอำพันธ์. การแก้ปัญหาด้วย Algorithm. สืบค้นเมื่อ 8 สิงหาคม 2561. จาก http://jsbg.joseph.ac.th.
วุฒิชัย เกษพานิช. (2546). หลักการเขียนโปรแกรม. พิมพ์ครั้งที่ 2. กรุงเทพฯ : เอ็ดดูเท็กซ์จำกัด.
สุรศักดิ์ มังสิงห์. (2561). การวิเคราะห์และออกแบบขั้นตอนวิธี (Analysis and Design of Algorithms). กรุงเทพฯ : มหาวิทยาลัยศรีปทุม.
สมชาย ประสิทธิ์จูตระกูล. (2543). การออกแบบและวิเคราะห์อัลกอริทึม (Design and Analysis of Algorithm). กรุงเทพฯ : ภาควิชาวิศวกรรมวิชาคอมพิวเตอร์ จุฬาลงกรณ์มหาวิทยาลัย.
ปติพันธ์ เพ็งเปา.ความรู้เบื้องต้นเกี่ยวกับ อัลกอริทึม (Algorithm). สืบค้นเมื่อ 8 สิงหาคม 2561. จาก https://medium.com.
เอกชัย เจริญนิตย์. (2547). หลักการออกแบบและพัฒนาโปรแกรม. กรุงเทพฯ : พัฒนาวิชาการ.
เอกพันธุ์ คาปัญญโญ. (2549). หลักการออกแบบและพัฒนาโปรแกรม. กรุงเทพฯ : บริษัท ซัคเซส มีเดีย
กลับไปที่เนื้อหา
การเขียนผังงาน (Flowchart)
การเขียนผังงาน (Flowchart) เป็นเทคนิคหรือวิธีการอย่างหนึ่งที่ใช้ในการอธิบายลำดับการทำงาน การเขียนจะต้องอาศัยสัญลักษณ์ต่าง ๆ เพื่อช่วยลำดับแนวความคิดและขั้นตอนการทำงาน รวมทั้งทิศทางการไหลของข้อมูลตั้งแต่เริ่มต้นจนจบการทำงาน เพื่อให้ได้ผลลัพธ์ตามที่ต้องการ การเขียนผังงานจะช่วยให้เราสามารถออกแบบ ปรับปรุง แก้ไข และหาข้อผิดพลาดของการทำงานได้ง่ายยิ่งขึ้น คำว่า Flowchart มักนำไปใช้ในทางโปรแกรม กล่าวคือสำหรับคนที่ศึกษาเกี่ยวกับการเขียนโปรแกรม ก่อนอื่นจะต้องเข้าใจ Flowchart กันเสียก่อน
ความหมายของผังงาน (Flowchart)
ผังงาน (Flowchart) คือ รูปภาพ (Image) หรือสัญลักษณ์(Symbol) ที่ใช้เขียนแทนขั้นตอน คำอธิบาย ข้อความ หรือคำพูด ที่ใช้ในอัลกอริทึม (Algorithm) เพราะการนำเสนอขั้นตอนของงานให้เข้าใจตรงกัน ระหว่างผู้เกี่ยวข้อง ด้วยคำพูด หรือข้อความทำได้ยากกว่า
ผังงาน (Flowchart) คือ แผนภาพที่มีการใช้สัญลักษณ์รูปภาพและลูกศรที่แสดงถึงขั้นตอนการทำงานของโปรแกรมหรือระบบทีละขั้นตอน รวมไปถึงทิศทางการไหลของข้อมูลตั้งแต่แรกจนได้ผลลัพธ์ตามที่ต้องการ
Flowchart คือ ผังงานที่ใช้รูปภาพมาแสดงขั้นตอนการทำงานของโปรแกรม โดยจะใช้สัญลักษณ์ต่าง ๆ เพื่อใช้แทนรูปแบบหรือการทำงานของคำสั่งโปรแกรม สัญลักษณ์ของผังงาน มีหน้าที่การทำงานแตกต่างกัน ซึ่งเราต้องทำความเข้าใจข้อมูลการใช้ของแต่ละอันด้วย
ผังงาน (Flow Chart) คือ การเขียนแผนผังการทำงานโดยการใช้กล่องกิจกรรมหรือสัญลักษณ์ แทนข้อความ เพื่อเป็นการสื่อความหมายเดียวกัน และเป็นลำดับขั้นตอน โดยสัญลักษณ์ที่ใช้จะต้องเป็นไปตามมาตรฐาน ซึ่งหน่วยงานที่เป็นผู้กำหนดมาตรฐาน คือ American National Standard Institute (ANSI) และ International Standard Organization (ISO)
สรุปได้ว่า ผังงาน (Flowchart) คือ รูปภาพ (Image) หรือ สัญลักษณ์ (Symbol) ที่ใช้เขียนแทนขั้น ตอนคำอธิบายข้อความ หรือคำพูด ที่ใช้ในกิจกรรมปฏิบัติงาน เพราะการนำเสนอขั้นตอนของการปฏิบัติงานด้วยรูปภาพหรือสัญลักษณ์สามารถสื่อสารได้ง่ายกว่าคำพูดหรือข้อความ นอกจากนี้การเขียนผังงานสามารถออกแบบได้ง่าย ผู้อื่นสามารถเข้าใจผังงานได้ง่ายเพราะเป็นมาตรฐานสากล และเมื่อนำผังงานไปเขียนโปรแกรมก็จะทำได้สะดวกรวดเร็ว
ประโยชน์ของการเขียนผังงาน (flowchart)
1. สะดวกต่อการพิจารณาถึงลำดับขั้นตอนในการทำงาน
2. ตรวจสอบความถูกต้องของลำดับขั้นตอนได้ง่าย
3. ทำให้มองเห็นรูปแบบของงานได้ทั้งหมด โดยใช้เวลาไม่มาก
4. การเขียนผังงานเป็นสากลสามารถนำไปเขียนโปรแกรมได้ทุกภาษา
5. หากมีการพัฒนาระบบงานในลำดับต่อไป สามารถทำได้อย่างรวดเร็ว โดยศึกษาจากผังงาน จะสามารถศึกษาได้อย่างรวดเร็ว และเข้าใจง่ายกว่าการศึกษาจากโปรแกรม
การเขียนผังงาน (Flowchart) ที่ดี
1. ทุกผังงานต้องมีจุดเริ่มต้นและจุดสิ้นสุดอย่างละ 1 จุดเท่านั้น
2. ลำดับขั้นตอนการทำงานควรจะเริ่มจากบนลงล่าง หรือจากซ้ายไปขวา
3. ในสัญลักษณ์ใด ๆ มีจุดสิ้นสุดเพียงทางเดียว ยกเว้นสัญลักษณ์แสดงการตัดสินใจ หรือ ทางเลือกสามารถมีทางออกได้อย่างน้อยสองทาง
4. เส้นทางเดินในผังงานควรชัดเจน เป็นระเบียบ เส้นลูกศรที่ใช้บอกทิศทางของลำดับขั้นตอนวิธีการทำงาน ไม่ควรเขียนตัดกัน
5. ข้อความหรือคำสั่งใด ๆ ที่อยู่ในสัญลักษณ์ควรสั้น กระชับ ได้ใจความ และสามารถเข้าใจได้ง่าย
6. ใช้สัญลักษณ์ที่มีขนาดเหมาะสมกับคำสั่งและใช้คำอธิบายที่กะทัดรัดและเข้าใจง่าย
7. ไม่ควรเขียนเส้นลูกศร เพื่อทำการโยงลำดับขั้นตอนที่อยู่ห่างกัน ให้ใช้เครื่องหมายในการเชื่อมต่อแทน การเขียนผังงานหากกระบวนการยังไม่จบภายในหน้ากระดาษเดียวกันจะต้องมีการใช้สัญลักษณ์เชื่อมต่อระหว่างหน้ากระดาษ
8. ในกระบวนการทำงานที่ต้องการเพิ่มคำอธิบายเข้าไปเพื่อให้เกิดความเข้าใจ ก็สามารถทำได้โดยการใช้สัญลักษณ์หมายเหตุประกอบ
9. ผังงานต้องครอบคลุม การทำงานทุกขั้นตอน หรือเงื่อนไขของการปฏิบัติงานทั้งหมด ตั้งแต่เริ่มต้นจนถึงจบการทำงาน
ประเภทของผังงาน (Flowchart)
ผังงานทางมี 2 ประเภทคือ ผังงานระบบ (System Flowchart) และผังงานโปรแกรม (Program Flowchart)
ผังงานระบบ(System Flowchart) เป็นการแสดงให้เราเห็นว่า ในระบบหนึ่ง ๆ นั้นมีขั้นตอนในการทำงานอย่างไร ซึ่งจะมองเห็นในลักษณะภาพกว้าง ๆ ของระบบ แต่จะไม่เจาะลึกลงไปว่าในระบบว่าในแต่ละงานนั้นมีการทำงานอย่างไร คือ จะให้เห็นว่าจุดเริ่มต้นของงานเริ่มจากส่วนใด เป็นข้อมูลแบบใด มีการประมวลผลอย่างไร และจะได้ผลลัพธ์เป็นอย่างไรและเก็บอยู่ที่ใด
ผังงานโปรแกรม(Program Flowchart) คือ ผังงานที่แสดงถึงขั้นตอนในการทำงาน ของโปรแกรม ตั้งแต่รับ ข้อมูล คำนวณ จนถึงแสดงผลลัพธ์
ภาพที่ 3 การเขียนผังงานโปรแกรม(Program Flowchart)
ที่มา : https://www.slideshare.net/ajanqqzaa/flow-chart-36424565
การเขียนผังงานมี 3 แบบคือ แบบเรียงลำดับ (Sequential) แบบมีการกำหนดเงื่อนไข (Condition) และแบบมีการทำงานวนรอบ (Looping) มีรายละเอียดดังนี้
1. ผังงานแบบเรียงลำดับ (Sequential) เป็นการเขียนที่ง่ายที่สุด กล่าวคือเขียนขั้นตอนการทำงานจากบนลงล่าง เขียนคำสั่งเป็นบรรทัดและทำที่ละบรรทัด เขียนจากบนสุดลงไปจนถึงบรรทัดล่างสุด และไม่มีทางแยกไปทิศทางใด ดังรูป
ภาพที่ 4 ผังงานแบบเรียงลำดับ
ที่มา : http://www1.si.mahidol.ac.th
2. ผังงานแบบมีการกำหนดเงื่อนไข (Condition) เป็นการเลือกกระทำตามเงื่อนไขการตัดสินใจ หรือเลือกเงื่อนไข คือเขียนขั้นตอนเพื่อนำค่าไปเลือกโดยปกติจะมีเหตุการณ์ให้ทำ 2 กระบวนการคือเงื่อนไขใช่ (yes) และไม่ใช่ (No) ดังรูป
ภาพที่ 5 ผังงานแบบมีการกำหนดเงื่อนไข
ที่มา : http://www1.si.mahidol.ac.th
3. แบบมีการทำงานวนรอบ (Looping) เป็นการทำซ้ำ (Interaction) การทำกระบวนการหนึ่งหลายครั้งโดยมีเงื่อนไขในการควบคุม ดังรูป
ภาพที่ 6 ผังงานแบบมีการทำงานวนรอบ
ที่มา : http://www1.si.mahidol.ac.th
สัญลักษณ์เบื้องต้นของผังงาน
การเขียนผังงานจะประกอบไปด้วยการใช้สัญลักษณ์มาตรฐานต่าง ๆ ที่เรียกว่า สัญลักษณ์ ANSI (American National Standards Institute) ในการสร้างผังงาน ดังตัวอย่างที่แสดงในรูปต่อไปนี้
ตัวอย่างการเขียนผังงาน
1. ผังงานการเดินทางไปทำงาน
ภาพที่ 7 ผังงานการเดินทางไปทำงาน
ที่มา : https://www.tsupaman.com/2013/08/basic-how-to-flowchart
2. ผังงานการส่งจดหมาย
ภาพที่ 8 ผังงานการส่งจดหมาย
ที่มา : https://teacherairnita.files.wordpress.com
แหล่งที่มา
เจตวัตร สวัสดิ์พาณิชย์. หลักการเขียนโปรแกรม. สืบค้นเมื่อวันที่ 12 สิงหาคม 2561. จาก http://www.rw.ac.th/jetavat/.
ชลชัย นิงสานนท์ และคณะ. การเขียนขั้นตอนการทำงาน. สืบค้นเมื่อวันที่ 12 สิงหาคม 2561. จาก http://www1.si.mahidol.ac.th
นพดล ผู้มีจรรยา. (2557). เอกสารประกอบการเรียน วิชาหลักการเขียนโปรแกรมคอมพิวเตอร์. โปรแกรมวิชาเทคโนโลยีคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี มหาวิทยาลัยราชภัฏนครปฐม.
ฝ่ายตำราวิชาการคอมพิวเตอร์. (2555). หลักการออกแบบและเขียนโปรแกรมเบื้องต้น. กรุงเทพฯ :ซีเอ็ดยูเคชั่น.
สุดฤดี ประทุมชาติ. หลักการเขียนโปรแกรม. สืบค้นเมื่อวันที่ 12 สิงหาคม 2561. จาก http://sudruadee.blogspot.com/2007/06/blog-post.html.
อำภา กุลธรรมโยธิน. (2550). หลักการเขียนโปรแกรม. กรุงเทพฯ : ศูนย์ส่งเสริมวิชาการ.
โอภาส เอี่ยมสิริวงศ์. (2547). วิทยาการคอมพิวเตอร์และเทคโนโลยีสารสนเทศ (ฉบับปรับปรุงเพิ่มเติม). กรุงเทพฯ : ซีเอ็ดยูเคชั่น.
กลับไปที่เนื้อหา
-
8809 อัลกอริทึมและผังงานเบื้องต้น /lesson-technology/item/8809-2018-09-21-02-51-34เพิ่มในรายการโปรด