Algorithm
คืออะไร
|
ขั้นตอนวิธี หรือ algorithm (ภาษาไทย
: อัลกอริทึม) หมายถึงกระบวนการแก้ปัญหาที่สามารถเข้าใจได้
มีลำดับหรือวิธีการในการแก้ไขปัญหาใดปัญหาหนึ่งอย่างเป็นขั้นเป็นตอนและชัดเจน
เมื่อนำเข้าอะไร แล้วจะต้องได้ผลลัพธ์เช่นไร ซึ่งแตกต่างจากการแก้ปัญหาแบบสามัญสำนึก
หรือฮิวริสติก (heuristic)
โดยทั่วไป ขั้นตอนวิธี
จะประกอบด้วย วิธีการเป็นขั้นๆ และมีส่วนที่ต้องทำแบบวนซ้ำ (iterate) หรือ
เวียนเกิด (recursive) โดยใช้ตรรกะ (logic) และ/หรือ ในการเปรียบเทียบ (comparison) ในขั้นตอนต่างๆ
จนกระทั่งเสร็จสิ้นการทำงาน
ในการทำงานอย่างเดียวกัน
เราอาจจะเลือกขั้นตอนวิธีที่ต่างกันเพื่อแก้ปัญหาได้
โดยที่ผลลัพธ์ที่ได้ในขั้นสุดท้ายจะออกมาเหมือนกันหรือไม่ก็ได้
และจะมีความแตกต่าง ที่จำนวนและชุดคำสั่งที่ใช้ต่างกันซึ่งส่งผลให้ เวลา (time) , และขนาดหน่วยความจำ
(space) ที่ต้องการต่างกัน
หรือเรียกได้อีกอย่างว่ามีความซับซ้อน (complexity) ต่างกัน
การนำขั้นตอนวิธีไปใช้
ไม่จำกัดเฉพาะการเขียนโปรแกรมคอมพิวเตอร์ แต่สามารถใช้กับปัญหาอื่น ๆ ได้เช่น
การออกแบบวงจรไฟฟ้า, การทำงานเครื่องจักรกล, หรือแม้กระทั่งปัญหาในธรรมชาติ เช่น วิธีของป็นส่วนหนึ่งในขั้นตอนการพัฒนาโปรแกรมคอมพิวเตอร์ เกิดจากแนวคิดอย่างเป็นระบบเพื่อนำไปสู่ผลลัพธ์ที่ต้องการ และเพื่อให้คอมพิวเตอร์ทำงานตามความต้องการหรือแก้ปัญหาใด
ๆ ประกอบด้วยชุดของการทำงานที่ชัดเจน ดังนั้นหากออกแบบอัลกอริทึมได้ดี เมื่อนำไปเขียนโปรแกรมภาษาคอมพิวเตอร์ใด
ๆ ก็จะได้ผลลัพธ์ตามความต้องการ
โดยทั่วไปแล้วในชีวิตประจำวันของมนุษย์ ทั้งในการทำงานและการแก้ปัญหาต่าง
ๆ ที่เกี่ยวข้องกับคอมพิวเตอร์หรือไม่ก็ตามมักจะเกี่ยวข้องกับอัลกอริทึมอยู่แล้ว ยกตัวอย่างเช่น วิธีการปฐมพยาบาล ตำราประกอบอาหาร เป็นต้น ซึ่งอธิบายขั้นตอนต่าง
ๆ ด้วยภาษาที่อ่านแล้วเข้าใจง่าย แต่ในด้านคอมพิวเตอร์นั้นจำเป็นที่จะต้องเรียนรู้คำสั่งต่างๆ
เพิ่มเติมเพื่อให้คอมพิวเตอร์ สามารถเข้าใจได้
|
โครงสร้างข้อมูลและอัลกอริทึม
ความรู้เบื้องต้นเกี่ยวกับโครงสร้างข้อมูลและอัลกอริทึม
ความหมายของโครงสร้างข้อมูล
โครงสร้างข้อมูล (Data Structure) คือ ความสัมพันธ์ระหว่างข้อมูลที่อยู่ในโครงสร้างนั้น ๆ รวมทั้งกระบวนการในการจัดการข้อมูลในโครงสร้าง หรือ การจัดเตรียมรูปแบบการเก็บข้อมูลในหน่วยความจำอย่างมีระเบียบแบบแผน การแทนข้อมูลให้อยู่ในรูปแบบที่ถูกต้อง ตลอดจนกรรมวิธีการเข้าถึงข้อมูลในโครงสร้างให้เป็นไปอย่างมีประสิทธิภาพ
โครงสร้างข้อมูล (Data Structure) คือ ความสัมพันธ์ระหว่างข้อมูลที่อยู่ในโครงสร้างนั้น ๆ รวมทั้งกระบวนการในการจัดการข้อมูลในโครงสร้าง หรือ การจัดเตรียมรูปแบบการเก็บข้อมูลในหน่วยความจำอย่างมีระเบียบแบบแผน การแทนข้อมูลให้อยู่ในรูปแบบที่ถูกต้อง ตลอดจนกรรมวิธีการเข้าถึงข้อมูลในโครงสร้างให้เป็นไปอย่างมีประสิทธิภาพ
ประเภทของโครงสร้างข้อมูล
ประเภทของโครงสร้างข้อมูล แบ่งออกเป็น 2 ประเภท คือ
1) โครงสร้างข้อมูลทางกายภาพ (Physical Data Structure)
เป็นโครงสร้างข้อมูลที่ใช้โดยทั่วไปในภาษาคอมพิวเตอร์ แบ่งเป็น 2 ประเภท ตามลักษณะข้อมูล คือ
1.1) ข้อมูลเบื้องต้น (Primitive Data Types) ได้แก่
- จำนวนเต็ม (Integer)
- จำนวนทศนิยม (Floatting)
- ข้อมูลบูลีน (Boolean)
- จำนวนจริง (Real)
- ข้อมูลอักขระ (Character)
1.2) ข้อมูลโครงสร้าง (Structured Data Types) ได้แก่
- แถวลำดับ (Array)
- ระเบียนข้อมูล (Record)
- แฟ้มข้อมูล(File)
2) โครงสร้างข้อมูลทางตรรกะ (Logical Data Structure)
เป็นโครงสร้างข้อมูลที่เกิดจากการจินตนาการของผู้ใช้ แบ่งเป็น 2 ประเภท คือ
2.1) โครงสร้างข้อมูลแบบเชิงเส้น (Linear Data Structures) ความสัมพันธ์ของข้อมูลจะเรียงต่อเนื่องกัน เช่น
- ลิสต์ (List)
- สแตก (Stack)
- คิว (Queue)
- สตริง (String)
2.2) โครงสร้างข้อมูลแบบไม่เชิงเส้น (Non-Linear Data Structures) ข้อมูลแต่ละตัวสามารถมีความสัมพันธ์กับข้อมูลอื่นได้หลายตัว ได้แก่
- ทรี (Tree)
- กราฟ (Graph)
ประเภทของโครงสร้างข้อมูล แบ่งออกเป็น 2 ประเภท คือ
1) โครงสร้างข้อมูลทางกายภาพ (Physical Data Structure)
เป็นโครงสร้างข้อมูลที่ใช้โดยทั่วไปในภาษาคอมพิวเตอร์ แบ่งเป็น 2 ประเภท ตามลักษณะข้อมูล คือ
1.1) ข้อมูลเบื้องต้น (Primitive Data Types) ได้แก่
- จำนวนเต็ม (Integer)
- จำนวนทศนิยม (Floatting)
- ข้อมูลบูลีน (Boolean)
- จำนวนจริง (Real)
- ข้อมูลอักขระ (Character)
1.2) ข้อมูลโครงสร้าง (Structured Data Types) ได้แก่
- แถวลำดับ (Array)
- ระเบียนข้อมูล (Record)
- แฟ้มข้อมูล(File)
2) โครงสร้างข้อมูลทางตรรกะ (Logical Data Structure)
เป็นโครงสร้างข้อมูลที่เกิดจากการจินตนาการของผู้ใช้ แบ่งเป็น 2 ประเภท คือ
2.1) โครงสร้างข้อมูลแบบเชิงเส้น (Linear Data Structures) ความสัมพันธ์ของข้อมูลจะเรียงต่อเนื่องกัน เช่น
- ลิสต์ (List)
- สแตก (Stack)
- คิว (Queue)
- สตริง (String)
2.2) โครงสร้างข้อมูลแบบไม่เชิงเส้น (Non-Linear Data Structures) ข้อมูลแต่ละตัวสามารถมีความสัมพันธ์กับข้อมูลอื่นได้หลายตัว ได้แก่
- ทรี (Tree)
- กราฟ (Graph)
การดำเนินการกับโรงสร้างข้อมูล (Data Structure
Operation)
วิธีการดำเนินการกับข้อมูลที่นิยมใช้กันมาก มี 4 แบบ
1) การเข้าถึงเรคคอร์ด ( Traversing)
2) การค้นหา (Searching)
3) การเพิ่ม (Inserting)
4) การลบ (Deleting)
ยังมีการจัดการกับข้อมูลอีก 2 อย่าง คือ
1) การเรียงข้อมูล (Sorting)
2) การรวมข้อมูล (Merging)
วิธีการดำเนินการกับข้อมูลที่นิยมใช้กันมาก มี 4 แบบ
1) การเข้าถึงเรคคอร์ด ( Traversing)
2) การค้นหา (Searching)
3) การเพิ่ม (Inserting)
4) การลบ (Deleting)
ยังมีการจัดการกับข้อมูลอีก 2 อย่าง คือ
1) การเรียงข้อมูล (Sorting)
2) การรวมข้อมูล (Merging)
การแทนที่ข้อมูลในหน่วยความจำ
การแทนที่ข้อมูลในหน่วยความจำหลัก ในการเขียนโปรแกรมคอมพิวเตอร์มี 2 วิธี คือ
1) การแทนที่ข้อมูลแบบสแตติก (Static Memory Representation) เป็นการจองเนื้อที่แบบคงที่แน่นอน
2) การแทนที่ข้อมูลแบบ (Dynamic Memory Representation) เป็นการแทนที่ข้อมูล แบบไม่ต้องจองเนื้อที่ ขนาดของเนื้อที่ยืดหยุ่นได้ สามารถส่งคืนเพื่อนำกลับมาใช้ได้อีก
การแทนที่ข้อมูลในหน่วยความจำหลัก ในการเขียนโปรแกรมคอมพิวเตอร์มี 2 วิธี คือ
1) การแทนที่ข้อมูลแบบสแตติก (Static Memory Representation) เป็นการจองเนื้อที่แบบคงที่แน่นอน
2) การแทนที่ข้อมูลแบบ (Dynamic Memory Representation) เป็นการแทนที่ข้อมูล แบบไม่ต้องจองเนื้อที่ ขนาดของเนื้อที่ยืดหยุ่นได้ สามารถส่งคืนเพื่อนำกลับมาใช้ได้อีก
ลักษณะของโปรแกรมแบบมีโครงสร้างที่ดี
โครงสร้างสำหรับการเขียนโปรแกรมมีดังนี้
1) โครงสร้างแบบคำสั่งตามลำดับ จะทำงานตั้งแต่ต้นจนกระทั่งจบโปรแกรมโดยไม่มีการข้ามขั้นตอนการทำงานใด ๆ
2) โครงสร้างโปรแกรมแบบมีการตัดสินใจ (Decision) มีการตรวจสอบเงื่อนไข เพื่อทำการตัดสินใจว่าจะมีการประมวลผลส่วนใด ซึ่งค่าความเป็นไปได้จะมี จริง และ เท็จ
3) โครงสร้างโปรแกรมแบบวงจรปิด (Loop) มีลักษณะการทำงานซ้ำ ๆ อยู่ในส่วนหนึ่งส่วนใดของโปรแกรม แบบเป็นวงกลม จนกว่าจะเสร็จขั้นตอน มี 2 ลักษณะ คือ ตรวจสอบเงื่อนไขก่อนทำ และทำก่อนตรวจสอบเงื่อนไข
โครงสร้างสำหรับการเขียนโปรแกรมมีดังนี้
1) โครงสร้างแบบคำสั่งตามลำดับ จะทำงานตั้งแต่ต้นจนกระทั่งจบโปรแกรมโดยไม่มีการข้ามขั้นตอนการทำงานใด ๆ
2) โครงสร้างโปรแกรมแบบมีการตัดสินใจ (Decision) มีการตรวจสอบเงื่อนไข เพื่อทำการตัดสินใจว่าจะมีการประมวลผลส่วนใด ซึ่งค่าความเป็นไปได้จะมี จริง และ เท็จ
3) โครงสร้างโปรแกรมแบบวงจรปิด (Loop) มีลักษณะการทำงานซ้ำ ๆ อยู่ในส่วนหนึ่งส่วนใดของโปรแกรม แบบเป็นวงกลม จนกว่าจะเสร็จขั้นตอน มี 2 ลักษณะ คือ ตรวจสอบเงื่อนไขก่อนทำ และทำก่อนตรวจสอบเงื่อนไข
อัลกอริทึม (Algorithm)
อัลกอริทึม คือ วิธี หรือ ขั้นตอนการแก้ปัญหาอย่างเป็นขั้นตอน มีระบบ ช่วยให้การแก้ปัญหานั้น ๆ มีประสิทธิภาพ ซึ่งอัลกอริทึมที่นิยมใช้กันมาก ได้แก่
1) อัลกอริทึมแบบแตกย่อย (Divide-and-conquer) จะนำปัญหาหลักมาทำการแตกย่อยแล้วนำคำตอบที่ได้จากการแตกย่อยมารวมเข้าด้วยกัน
2) อัลกอริทึมแบบเคลื่อนที่ (Dynamic Programming) เป็นการหลีกเลี่ยงการคำนวณเพื่อหาคำตอบซ้ำ ๆ ซาก ๆ ซึ่งหากมีการคำนวณซ้ำอีก ก็นำคำตอบที่เก็บไว้มาใช้ได้
3) อัลกอริทึมแบบทางเลือก (Greedy Algorithm) จะหาคำตอบโดยเลือกทางเลือกที่ดีที่สุดที่พบได้ในขณะนั้น
ขั้นตอนที่ดีควรมีคุณสมบัติดังนี้
1) มีความถูกต้อง
2) ใช้เวลาในการปฏิบัติงานน้อยที่สุด
3) สั้น กระชับ
4) ใช้หน่วยความจำน้อยที่สุด
5) มีความยืดหยุ่นในการใช้งาน
6) ใช้เวลาในการพัฒนาน้อยที่สุด
7) ง่ายต่อการทำความเข้าใจ
อัลกอริทึม คือ วิธี หรือ ขั้นตอนการแก้ปัญหาอย่างเป็นขั้นตอน มีระบบ ช่วยให้การแก้ปัญหานั้น ๆ มีประสิทธิภาพ ซึ่งอัลกอริทึมที่นิยมใช้กันมาก ได้แก่
1) อัลกอริทึมแบบแตกย่อย (Divide-and-conquer) จะนำปัญหาหลักมาทำการแตกย่อยแล้วนำคำตอบที่ได้จากการแตกย่อยมารวมเข้าด้วยกัน
2) อัลกอริทึมแบบเคลื่อนที่ (Dynamic Programming) เป็นการหลีกเลี่ยงการคำนวณเพื่อหาคำตอบซ้ำ ๆ ซาก ๆ ซึ่งหากมีการคำนวณซ้ำอีก ก็นำคำตอบที่เก็บไว้มาใช้ได้
3) อัลกอริทึมแบบทางเลือก (Greedy Algorithm) จะหาคำตอบโดยเลือกทางเลือกที่ดีที่สุดที่พบได้ในขณะนั้น
ขั้นตอนที่ดีควรมีคุณสมบัติดังนี้
1) มีความถูกต้อง
2) ใช้เวลาในการปฏิบัติงานน้อยที่สุด
3) สั้น กระชับ
4) ใช้หน่วยความจำน้อยที่สุด
5) มีความยืดหยุ่นในการใช้งาน
6) ใช้เวลาในการพัฒนาน้อยที่สุด
7) ง่ายต่อการทำความเข้าใจ
องค์ประกอบของการจัดทำอัลกอริทึม
1) การวิเคราะห์ (Analysis)
- พิจารณาสิ่งที่โจทย์ต้องการ
- พิจารณารูปแบบของผลลัพธ์ที่โจทย์ต้องการ
- พิจารณาข้อมูลนำเข้า
- พิจารษหาวิธีการ หรือสูตรในการแก้ปัญหาที่ต้องการ
- เลือกโปรแกรมภาษาที่จะใช้เขียนโปรแกรม
- กำหนดตัวแปรต่าง ๆ ที่ใช้แทนข้อมูลในโปรแกรม
- จัดลำดับขั้นตอนการดำเนินการเขียนโปรแกรมเพื่อแก้ปัญหาของโจทย์
2) การออกแบบ (Design)
- ผังงาน (Flowchart) เป็นการอธิบายขั้นตอนการทำงานโดยการใช้สัญลักษณ์รูปภาพแสดงความหมาย หรือกำหนดลำดับการทำงาน ดูเป็นระเบียบชัดเจน เข้าใจง่าย แต่อาจใช้เนือที่มาก และยุ่งยาก
- รหัสเทียม (Pseudo Code) เป็นการอธิบายขั้นตอนการประมวลผลโดยใช้วลีภาษาอังกฤษ ใช้คำสั้น ๆ กระทัดรัด ใช้เนื้อที่อธิบายทำงานน้อย แต่อาจเข้าใจยากสำหรับผู้เริ่มเขียนโปรแกรม
3) การเขียนโปรแกรม (Coding/Programming)
พัฒนาการของภาษาโปรแกรม
- ภาษาเครื่อง เป็นเลขฐานสอง 0 และ 1
- ภาษาแอสเซมบลี เป็นเลขฐานสิบหก
- ภาษาระดับสูง ใช้ภาษาอังกฤษในการเขียน เช่น ปาสคาล เป็นต้น
- ภาษายุคที่ 4 หรือ 4GL เช่น JAVA หรือพวก .net เป็นต้น
ภาษาสำหรับการเขียนโปรแกรม มีรูปแบบที่สั้น กระชับ รัดกุม และมีข้อกำหนดดังต่อไปนี้
1. ตัวแปรต้องเขียนด้วยตัวอักษร หรือตัวอักษรปนตัวเลข
2. การกำหนดค่าตัวแปร ใช้เครื่องหมาย
3. นิพจน์ที่เป็นการคำนวณจะมีลำดับขั้นตอนของการคำนวณตามลำดับ คือ วงเล็บ ยกกำลัง คูณหรือหาร บวกหรือลบ ถ้าเครื่องหมายระดับความสำคัญเท่ากัน จะคำนวณจากซ้ายไปขวา
4. ข้อความไปยังขั้นตอน ใช้รูปแบบคือ goto เลขที่ขั้นตอน
5. การเลือกทำตามเงื่อนไข จะต้องทำการตรวจสอบเงื่อนไขก่อนทำ จะมีแบบทางเลือกเดียว คือ ใช้คำสั่ง if และสองทางเลือก คือ ใช้คำสั่ง if...else
6. การทำงานแบบซ้ำ แบบทดสอบเงื่อนไขก่อนทำ ใช้คำสั่ง while แบบทำก่อนทดสอบเงื่อนไข ใช้คำสั่ง do...while และแบบรู้จำนวนการวนรอบ จะใช้คำสั่ง for
7. คำอธิบาย เป็นข้อความที่อธิบายรายละเอียดของขั้นตอนการทำงาน หรือ หมายเหตุ (Comment) จะเขียนอยู่ในเครื่องหมาย /และ/
4) การทดสอบและแก้ไขข้อผิดพลาดของโปรแกรม (Testing and Debugging)
เป็นขั้นตอนการตรวจสอบโปรแกรมที่เขียนว่าทำงานถูกต้องตามความต้องการหรือไม่
- ข้อผิดพลาดทางไวยากรณ์ (Syntax Error) เป็นข้อผิดพลาดที่เกิดจากการเขียนคำสั่งที่ผิดไวยกรณ์ของภาษาที่ใช้เขียนโปรแกรมนั้น ๆ
- ข้อผิดพลาดที่เกิดขึ้นขณะรันโปรแกรม (Run-Time Error) เป็นข้อผิดพลาดที่เกิดขึ้นขณะทำการรันโปรแกรม ส่วนใหญ่เกิดจากการคำนวณตัวเลข
5) การจัดทำเอกสารและบำรุงรักษา (Documentation and Maintenance)
การจัดทำเอกสาร
1. คำบรรยายลักษณะของโปรแกรม
2. คำอธิบายพร้อมผังงานหรือรหัสเทียม
3. รายการโปรแกรม (Program Listing)
4. ผลการทดสอบโปรแกรม
5. จัดทำเอกสารต่าง ๆ ที่เกี่ยวข้องกับระบบ/โปรแกรม ได้แก่
- เอกสารแสดงการวิเคราะห์ และออกแบบระบบ : System Manual สำหรับผู้พัฒนาระบบโปรแกรม
- เอกสารอธิบายวิธีการใช้ระบบ/โปรแกรม : User Manual สำหรับผู้ใช้ระบบ/โปรแกรม
6. สามารถทำควบคู่ไปกับการเขียนโปรแกรม
7. อาจทำเป็นคู่มือ เอกสารที่อยู่ในโปรแกรม (Online Manual)
การบำรุงรักษาโปรแกรม หมายถึง การแก้ไขข้อผิดพลาดที่พบระหว่างการทดสอบ หรือการใช้งาน ซึ่งอาจเป็นการเปลี่ยนข้อมูลที่ต้องการใช้ใหม่ การปรับปรุงข้อมูลให้ทันเหตุการณ์อยู่เสมอ การปรับเปลี่ยนโครงสร้างบนหน้าจอ เป็นต้น
1) การวิเคราะห์ (Analysis)
- พิจารณาสิ่งที่โจทย์ต้องการ
- พิจารณารูปแบบของผลลัพธ์ที่โจทย์ต้องการ
- พิจารณาข้อมูลนำเข้า
- พิจารษหาวิธีการ หรือสูตรในการแก้ปัญหาที่ต้องการ
- เลือกโปรแกรมภาษาที่จะใช้เขียนโปรแกรม
- กำหนดตัวแปรต่าง ๆ ที่ใช้แทนข้อมูลในโปรแกรม
- จัดลำดับขั้นตอนการดำเนินการเขียนโปรแกรมเพื่อแก้ปัญหาของโจทย์
2) การออกแบบ (Design)
- ผังงาน (Flowchart) เป็นการอธิบายขั้นตอนการทำงานโดยการใช้สัญลักษณ์รูปภาพแสดงความหมาย หรือกำหนดลำดับการทำงาน ดูเป็นระเบียบชัดเจน เข้าใจง่าย แต่อาจใช้เนือที่มาก และยุ่งยาก
- รหัสเทียม (Pseudo Code) เป็นการอธิบายขั้นตอนการประมวลผลโดยใช้วลีภาษาอังกฤษ ใช้คำสั้น ๆ กระทัดรัด ใช้เนื้อที่อธิบายทำงานน้อย แต่อาจเข้าใจยากสำหรับผู้เริ่มเขียนโปรแกรม
3) การเขียนโปรแกรม (Coding/Programming)
พัฒนาการของภาษาโปรแกรม
- ภาษาเครื่อง เป็นเลขฐานสอง 0 และ 1
- ภาษาแอสเซมบลี เป็นเลขฐานสิบหก
- ภาษาระดับสูง ใช้ภาษาอังกฤษในการเขียน เช่น ปาสคาล เป็นต้น
- ภาษายุคที่ 4 หรือ 4GL เช่น JAVA หรือพวก .net เป็นต้น
ภาษาสำหรับการเขียนโปรแกรม มีรูปแบบที่สั้น กระชับ รัดกุม และมีข้อกำหนดดังต่อไปนี้
1. ตัวแปรต้องเขียนด้วยตัวอักษร หรือตัวอักษรปนตัวเลข
2. การกำหนดค่าตัวแปร ใช้เครื่องหมาย
3. นิพจน์ที่เป็นการคำนวณจะมีลำดับขั้นตอนของการคำนวณตามลำดับ คือ วงเล็บ ยกกำลัง คูณหรือหาร บวกหรือลบ ถ้าเครื่องหมายระดับความสำคัญเท่ากัน จะคำนวณจากซ้ายไปขวา
4. ข้อความไปยังขั้นตอน ใช้รูปแบบคือ goto เลขที่ขั้นตอน
5. การเลือกทำตามเงื่อนไข จะต้องทำการตรวจสอบเงื่อนไขก่อนทำ จะมีแบบทางเลือกเดียว คือ ใช้คำสั่ง if และสองทางเลือก คือ ใช้คำสั่ง if...else
6. การทำงานแบบซ้ำ แบบทดสอบเงื่อนไขก่อนทำ ใช้คำสั่ง while แบบทำก่อนทดสอบเงื่อนไข ใช้คำสั่ง do...while และแบบรู้จำนวนการวนรอบ จะใช้คำสั่ง for
7. คำอธิบาย เป็นข้อความที่อธิบายรายละเอียดของขั้นตอนการทำงาน หรือ หมายเหตุ (Comment) จะเขียนอยู่ในเครื่องหมาย /และ/
4) การทดสอบและแก้ไขข้อผิดพลาดของโปรแกรม (Testing and Debugging)
เป็นขั้นตอนการตรวจสอบโปรแกรมที่เขียนว่าทำงานถูกต้องตามความต้องการหรือไม่
- ข้อผิดพลาดทางไวยากรณ์ (Syntax Error) เป็นข้อผิดพลาดที่เกิดจากการเขียนคำสั่งที่ผิดไวยกรณ์ของภาษาที่ใช้เขียนโปรแกรมนั้น ๆ
- ข้อผิดพลาดที่เกิดขึ้นขณะรันโปรแกรม (Run-Time Error) เป็นข้อผิดพลาดที่เกิดขึ้นขณะทำการรันโปรแกรม ส่วนใหญ่เกิดจากการคำนวณตัวเลข
5) การจัดทำเอกสารและบำรุงรักษา (Documentation and Maintenance)
การจัดทำเอกสาร
1. คำบรรยายลักษณะของโปรแกรม
2. คำอธิบายพร้อมผังงานหรือรหัสเทียม
3. รายการโปรแกรม (Program Listing)
4. ผลการทดสอบโปรแกรม
5. จัดทำเอกสารต่าง ๆ ที่เกี่ยวข้องกับระบบ/โปรแกรม ได้แก่
- เอกสารแสดงการวิเคราะห์ และออกแบบระบบ : System Manual สำหรับผู้พัฒนาระบบโปรแกรม
- เอกสารอธิบายวิธีการใช้ระบบ/โปรแกรม : User Manual สำหรับผู้ใช้ระบบ/โปรแกรม
6. สามารถทำควบคู่ไปกับการเขียนโปรแกรม
7. อาจทำเป็นคู่มือ เอกสารที่อยู่ในโปรแกรม (Online Manual)
การบำรุงรักษาโปรแกรม หมายถึง การแก้ไขข้อผิดพลาดที่พบระหว่างการทดสอบ หรือการใช้งาน ซึ่งอาจเป็นการเปลี่ยนข้อมูลที่ต้องการใช้ใหม่ การปรับปรุงข้อมูลให้ทันเหตุการณ์อยู่เสมอ การปรับเปลี่ยนโครงสร้างบนหน้าจอ เป็นต้น
การวัดประสิทธิภาพของอัลกอริทึม
สิ่งที่ต้องพิจารณา
1) โปรแกรมนั้นใช้เนื้อที่ความจำ (Memory) มากน้อยเพียงใด
2) โปรแกรมนั้นใช้อัลกอริทึม (Algorithm) ที่เร็วเพียงใด
ในทางทฤษฎี จะระบุความเร็วการทำงานของอัลกอริทึม โดยพิจารณา หรือประมวลผลจำนวนข้อมูลที่อัลกอริทึมนั้นกระทำก่อนที่จะได้ผลลัพธ์ว่ามีการทำงานกี่ครั้ง จำนวนครั้งแทนด้วย N ความเร็วในการทำงานเรียกว่า ฟังก์ชั่น บิ๊กโ-อ (big-oh) : Order of N หรือ O(N)
สิ่งที่ต้องพิจารณา
1) โปรแกรมนั้นใช้เนื้อที่ความจำ (Memory) มากน้อยเพียงใด
2) โปรแกรมนั้นใช้อัลกอริทึม (Algorithm) ที่เร็วเพียงใด
ในทางทฤษฎี จะระบุความเร็วการทำงานของอัลกอริทึม โดยพิจารณา หรือประมวลผลจำนวนข้อมูลที่อัลกอริทึมนั้นกระทำก่อนที่จะได้ผลลัพธ์ว่ามีการทำงานกี่ครั้ง จำนวนครั้งแทนด้วย N ความเร็วในการทำงานเรียกว่า ฟังก์ชั่น บิ๊กโ-อ (big-oh) : Order of N หรือ O(N)
ประเภทของข้อมูล
ข้อมูลมีหลายประเภท ดังนี้
1. ข้อมูลตัวอักษร คือ ข้อมูลที่ประกอบด้วยตัวอักษรและตัวเลขที่ไม่ใช้ในการคำนวณ ทั้งภาษาไทย
ภาษาอังกฤษ และภาษาต่างประเทศ เช่น ทะเบียนรถยนต์ ชื่อ นามสกุล หมายเลขโทรทัศน์
บ้านเลขที่ เป็นต้นข้อมูลมีหลายประเภท ดังนี้
2. ข้อมูลที่เป็นตัวเลข คือ ข้อมูลที่ประกอบด้วยตัวเลข 0 ถึง 9 ใช้ในการคำนวณได้ เช่น คะแนน จำนวนเงิน ราคาสินค้า เป็นต้น
คือข้อมูลที่เป็นภาพอาจเป็นภาพนิ่ง
เช่นภาพถ่าย ภาพวาด ภาพเคลื่อนไหว เช่น ภาพจากวิดีทัศน์ เป็นต้น
อาจเก็บไว้ในคอมพิวเตอร์ หรือแผ่นซีดี เป็นต้น
4. ข้อมูลเสียง คือ
ข้อมูลที่รับรู้ด้วยการได้ยิน จัดเก็บอยู่ในสื่อคอมพิวเตอร์สามารถแสดงผลข้อมูลเสียงด้วยลำโพง
ผังงาน (Flowchart) คือ รูปภาพ (Image) หรือสัญลักษณ์(Symbol) ที่ใช้เขียนแทนขั้นตอน
คำอธิบาย ข้อความ หรือคำพูด ที่ใช้ในอัลกอริทึม (Algorithm) เพราะการนำเสนอขั้นตอนของงานให้เข้าใจตรงกัน
ระหว่างผู้เกี่ยวข้อง ด้วยคำพูด หรือข้อความทำได้ยากกว่า
ผังงานแบ่งได้ 2 ประเภท
1. ผังงานระบบ (System Flowchart)
คือ ผังงานที่แสดงขั้นตอนการทำงานในระบบอย่างกว้าง ๆ แต่ไม่เจาะลงในระบบงานย่อย
2. ผังงานโปรแกรม (Program Flowchart)
คือ ผังงานที่แสดงถึงขั้นตอนในการทำงานของโปรแกรม ตั้งแต่รับข้อมูล คำนวณ จนถึงแสดงผลลัพธ์
1. ผังงานระบบ (System Flowchart)
คือ ผังงานที่แสดงขั้นตอนการทำงานในระบบอย่างกว้าง ๆ แต่ไม่เจาะลงในระบบงานย่อย
2. ผังงานโปรแกรม (Program Flowchart)
คือ ผังงานที่แสดงถึงขั้นตอนในการทำงานของโปรแกรม ตั้งแต่รับข้อมูล คำนวณ จนถึงแสดงผลลัพธ์
ประโยชน์ของผังงาน
1. ทำให้เข้าใจ และแยกแยะปัญหาได้ง่าย (Problem Define)
2. แสดงลำดับการทำงาน (Step Flowing)
3. หาข้อผิดพลาดได้ง่าย (Easy to Debug)
4. ทำความเข้าใจโปรแกรมได้ง่าย (Easy to Read)
5. ไม่ขึ้นกับภาษาใดภาษาหนึ่ง (Flexible Language)
1. ทำให้เข้าใจ และแยกแยะปัญหาได้ง่าย (Problem Define)
2. แสดงลำดับการทำงาน (Step Flowing)
3. หาข้อผิดพลาดได้ง่าย (Easy to Debug)
4. ทำความเข้าใจโปรแกรมได้ง่าย (Easy to Read)
5. ไม่ขึ้นกับภาษาใดภาษาหนึ่ง (Flexible Language)
วิธีการเขียนผังงานที่ดี
• ใช้สัญลักษณ์ตามที่กำหนดไว้
• ใช้ลูกศรแสดงทิศทางการไหลของข้อมูลจากบนลงล่าง
หรือจากซ้ายไปขวา
• คำอธิบายในภาพควรสั้นกระทัดรัด และเข้าใจง่าย
• ทุกแผนภาพต้องมีลูกศรแสดงทิศทางเข้า – ออก
• ไม่ควรโยงเส้นเชื่อมผังงานที่อยู่ไกลมาก ๆ
ควรใช้สัญลักษณ์จุดเชื่อมต่อแทน
• ผังงานควรมีการทดสอบความถูกต้องของการทำงานก่อนนำไปเขียนโปรแกรม
รูปแบบการเขียนผังงาน
การเขียนผังงานมี 3 รูปแบบ คือ
การเขียน Flowchart
อย่างแรกเลยที่เราต้องรู้จัก คือ Algorithm (และต้องเขียนให้เป็นเพราะต้องใช้ตลอด ข้อสอบ Final ของ Intro ก็ประมาณนี้นะมีเขียน Flowchart)
Algorithm คือ กระบวนการแก้ปัญหาที่สามารถเข้าใจได้ มีลำดับหรือวิธีการในการแก้ไขปัญหาใดปัญหาหนึ่งอย่างเป็นขั้นเป็นตอนและ ชัดเจน เมื่อนำเข้าอะไร แล้วจะต้องได้ผลลัพธ์เช่นไร เช่น เวลาเราจะเดินทางไปโรงเรียน(เปรียบเสมือนปัญหา คือต้องการไปโรงเรียน) ต้องทำอย่างไรบ้าง เพื่อจะไปถึงโรงเรียน(ผลลัพธ์ ที่ต้องการ) ยกตัวอย่าง
อย่างแรกเลยที่เราต้องรู้จัก คือ Algorithm (และต้องเขียนให้เป็นเพราะต้องใช้ตลอด ข้อสอบ Final ของ Intro ก็ประมาณนี้นะมีเขียน Flowchart)
Algorithm คือ กระบวนการแก้ปัญหาที่สามารถเข้าใจได้ มีลำดับหรือวิธีการในการแก้ไขปัญหาใดปัญหาหนึ่งอย่างเป็นขั้นเป็นตอนและ ชัดเจน เมื่อนำเข้าอะไร แล้วจะต้องได้ผลลัพธ์เช่นไร เช่น เวลาเราจะเดินทางไปโรงเรียน(เปรียบเสมือนปัญหา คือต้องการไปโรงเรียน) ต้องทำอย่างไรบ้าง เพื่อจะไปถึงโรงเรียน(ผลลัพธ์ ที่ต้องการ) ยกตัวอย่าง
วิธีที่ 1
1.นั่งรถวินมอเตอร์ไซค์ไปปากซอย
2.นั่งรถสองแถวไปเคหะบางพลี
3.ถึงโรงเรียน
วิธีที่ 2
1.เดินจากบ้านไปปากซอย
2.นั่งรถเมล์ไปโรงเรียน
3.ถึงโรงเรียน
วิธีที่ 3
1.นั่ง Taxi ไปโรงเรียน
2.ถึงโรงเรียน
จะสังเกตได้ว่า
ใน 1 ปัญหา
มีวิธีแก้ไขหลายวิธี แต่ละคนอาจจะคิดวิธีแก้ไขปัญหา(Algorithm) แตกต่างกันออกไป
(จากตัวอย่างบางคนอาจจะอาศัยรถคนอื่นไปก็ได้จริงมั้ยค่ะ) เมื่อเรารู้จัก Algorithm แล้ว เราก็เอา Algorithm ที่เราคิดได้ ไปเขียนเป็น Flowchart (ตามลำดับขั้นตอนของ Algorithm)
สัญลักษณ์ผังงาน
การเขียนผังงานจะประกอบไปด้วยการใช้สัญลักษณ์มาตรฐานต่าง ๆ ที่เรียกว่า สัญลักษณ์ ANSI ( American National Standards Institute ) ในการสร้างผังงาน ดังตัวอย่างที่แสดงในรูปต่อไปนี้
การเขียนผังงานจะประกอบไปด้วยการใช้สัญลักษณ์มาตรฐานต่าง ๆ ที่เรียกว่า สัญลักษณ์ ANSI ( American National Standards Institute ) ในการสร้างผังงาน ดังตัวอย่างที่แสดงในรูปต่อไปนี้
รูปที่4 แสดงโครงสร้างผังงานแบบมีการเลือก
โครงสร้างแบบ IF – THEN – ELSE เป็นโครงสร้างที่จะทำการเปรียบเทียบเงื่อนไขที่ใส่ไว้ในส่วนหลังคำว่า IF และเมื่อได้ผลลัพธ์จากการเปรียบเทียบก็จะเลือกว่าจะทำงานต่อในส่วนใด
กล่าวคือถ้าเงื่อนไขเป็นจริง ( TRUE
) ก็จะเลือกไปทำงานต่อที่ส่วนที่อยู่หลัง THEN แต่ถ้าเงื่อนไขเป็นเท็จ ( FALSE
) ก็จะไปทำงานต่อในส่วนที่อยู่หลังคำว่า ELSE
แต่ถ้าสำหรับโครงสร้างแบบ IF – THEN เป็นโครงสร้างที่ไม่มีการใช้ ELSE ดังนั้น
ถ้ามีการเปรียบเทียบเงื่อนไขที่อยู่หลัง IF มีค่าเป็นจริง
ก็จะไปทำส่วนที่อยู่หลังThen แต่ถ้าเงื่อนไขเป็นเท็จ ก็จะไปทำคำสั่งที่อยู่ถัดจาก IF – THEN แทน
ตัวอย่าง 3 การเขียนผังงานอ่านค่าข้อมูลเข้ามาเก็บไว้ในตัวแปร A และ B แล้วทำการเปรียบเทียบในตัวแปรทั้งสอง
โดยมีเงื่อนไขดังนี้
• ถ้า A มากกว่า B ให้คำนวณหาค่า A – B และเก็บผลลัพธ์ไว้ในตัวแปรชื่อ RESULT
• ถ้า A น้อยกว่าหรือเท่ากับ B ให้คำนวณหาค่า A + B และเก็บผลลัพธ์ไว้ในตัวแปรชื่อ RESULT
รูปที่ 3 แสดงการเขียนผังงานอ่านค่าข้อมูล
ตัวอย่าง 4 การเขียนผังงานเปรียบเทียบค่าข้อมูลที่เก็บอยู่ในตัวแปร X โดยมีเงื่อนไขดังนี้
• ถ้า X > 0 ให้พิมพ์คำว่า ” POSITIVE NUMBER “
• ถ้า X < 0 ให้พิมพ์คำว่า ” NEGATIVE NUMBER “
• ถ้า X = 0 ให้พิมพ์คำว่า ” ZERO NUMBER “
รูปที่ 4 แสดงการเขียนผังงานเปรียบเทียบค่าข้อมูล
โครงสร้างการทำงานแบบมีการทำงานซ้ำ
เป็นโครงสร้างที่มีการประมวลผลกลุ่มคำสั่งซ้ำหลายครั้ง
ตามลักษณะเงื่อนไขที่กำหนด อาจเรียก การทำงานซ้ำแบบนี้ได้อีกแบบว่า การวนลูป ( Looping ) โครงสร้างแบบการทำงานซ้ำนี้จะมีอยู่ 2 ประเภท คือ
• DO WHILE
• DO UNTIL
DO WHILE
เป็นโครงสร้างที่มีการทดสอบเงื่อนไขก่อน
ถ้าเงื่อนไขเป็นจริงก็จะเข้ามาทำงานในกลุ่มคำสั่งที่ต้องทำซ้ำ
ซึ่งเรียกว่าการเข้าลูป หลังจากนั้นก็จะย้อนกลับไปตรวจสอบเงื่อนไขใหม่อีก
ถ้าเงื่อนไขยังคงเป็นจริงอยู่ ก็ยังคงต้องทำกลุ่มคำสั่งซ้ำหรือเข้าลูปต่อไปอีก
จนกระทั่งเงื่อนไขเป็นเท็จ ก็จะออกจากลูปไปทำคำสั่งถัดไปที่อยู่ถัดจากDO WHILE หรืออาจเป็นการจบการทำงาน
แสดงโครงสร้างการทำงานซ้ำแบบ DO UNTIL
สรุปข้อแตกต่างระหว่าง DO WHILE และ DO UNTIL มีดังนี้
1. DO WHILE ในการทำงานครั้งแรกจะต้องมีการตรวจสอบเงื่อนไขก่อนทุกครั้ง ก่อนที่จะมีการเข้ลูปการทำงาน
2. DO UNTIL การทำงานครั้งแรกจะยังไม่มีการตรวจสอบเงื่อนไข แต่จะเข้าไปทำงานในลูปก่อนอย่างน้อย 1 ครั้งแล้วจึงจะไปตรวจสอบเงื่อนไข
3. DO WHILE จะมีการเข้าไปทำงานในลูปก็ต่อเมื่อตรวจสอบเงื่อนไขแล้วพบว่า เงื่อนไขเป็นจริง แต่เมื่อพบว่าเงื่อนไขเป็นเท็จ ก็จะออกจากลูปทันที
4. DO UNTIL จะมีการเข้าไปทำงานในลูปก็ต่อเมื่อตรวจสอบเงื่อนไขแล้วพบว่า เงื่อนไขเป็นเท็จ แต่เมื่อพบว่าเงื่อนไขเป็นจริง ก็จะออกจากลูปทันที
1. DO WHILE ในการทำงานครั้งแรกจะต้องมีการตรวจสอบเงื่อนไขก่อนทุกครั้ง ก่อนที่จะมีการเข้ลูปการทำงาน
2. DO UNTIL การทำงานครั้งแรกจะยังไม่มีการตรวจสอบเงื่อนไข แต่จะเข้าไปทำงานในลูปก่อนอย่างน้อย 1 ครั้งแล้วจึงจะไปตรวจสอบเงื่อนไข
3. DO WHILE จะมีการเข้าไปทำงานในลูปก็ต่อเมื่อตรวจสอบเงื่อนไขแล้วพบว่า เงื่อนไขเป็นจริง แต่เมื่อพบว่าเงื่อนไขเป็นเท็จ ก็จะออกจากลูปทันที
4. DO UNTIL จะมีการเข้าไปทำงานในลูปก็ต่อเมื่อตรวจสอบเงื่อนไขแล้วพบว่า เงื่อนไขเป็นเท็จ แต่เมื่อพบว่าเงื่อนไขเป็นจริง ก็จะออกจากลูปทันที
ตัวอย่าง 5 จงเขียนผังงานแสดงการเพิ่มของข้อมูลตัวเลขที่เก็บอย่ในหน่วยความจำที่แอดเดรส
1 โดยที่ค่าเริ่มต้นจาก 0 ให้ทำการเพิ่มค่าทีละ 1 เรื่อยไปจนกระทั่ง Jมีค่าข้อมูลมากกว่า 100
จึงหยุดการทำงาน
ตัวอย่างนี้ เป็นตัวอย่างการทำงานแบบทำซ้ำ ซึ่งจะสามารถแสดงการเขียนได้ทั้งแบบ DO WHILE และ DO UNTIL ดังนี้
ตัวอย่างนี้ เป็นตัวอย่างการทำงานแบบทำซ้ำ ซึ่งจะสามารถแสดงการเขียนได้ทั้งแบบ DO WHILE และ DO UNTIL ดังนี้
แสดงตัวอย่างการใช้ DO WHILE และ DO UNTIL
จุดเริ่มต้น / สิ้นสุดของโปรแกรม
ลูกศรแสดงทิศทางการทำงานของโปรแกรมและการไหลของข้อมูล
ช้แสดงคำสั่งในการประมวลผล
หรือการกำหนดค่าข้อมูลให้กับตัวแปร
แสดงการอ่านข้อมูลจากหน่วยเก็บข้อมูลสำรองเข้าสู่หน่วยความจำหลักภายใน
เครื่องหรือการแสดงผลลัพธ์จากการประมวลผลออกมา
การตรวจสอบเงื่อนไขเพื่อตัดสินใจ
โดยจะมีเส้นออกจารรูปเพื่อแสดงทิศทางการทำงานต่อไป เงื่อนไขเป็นจริงหรือเป็นเท็จ
แสดงผลหรือรายงานที่ถูกสร้างออกมา
แสดงจุดเชื่อมต่อของผังงานภายใน
หรือเป็นที่บรรจบของเส้นหลายเส้นที่มาจากหลายทิศทางเพื่อจะไปสู่
การทำงานอย่างใดอย่างหนึ่งที่เหมือนกัน
การขึ้นหน้าใหม่
ในกรณีที่ผังงานมีความยาวเกินกว่าที่จะแสดงพอในหนึ่งหน้า
ผังงานกับชีวิตประจำวัน
การทำงานหลายอย่างในชีวิตประจำวัน
จะมีลักษณะที่เป็นลำดับขั้นตอน
ซึ่งก่อนที่ท่านจะได้ศึกษาวิธีการเขียนผังงานโปรแกรม
จะแนะนำให้ท่านลองฝึกเขียนผังงานที่แสดงการทำงานในชีวิตประจำวันวันก่อนเพื่อเป็น
การสร้างความคุ้นเคยกับสัญลักษณ์รูปภาพต่าง ๆ ที่จะมีใช้ในผังงานโปรแกรมต่อไป ดัง
ตัวอย่าง 1 เขียนผังงานที่แสดงขั้นตอนการส่งจดหมาย
รูปที่ 2 แสดงการเขียนผังงานที่แสดงขั้นตอนการส่งจดหมาย
ตัวอย่างที่ 2 เขียนผังงานแสดงวิธีการรับประทานยา
ที่แบ่งขนาดรับประทานตามอายุของผู้ทานดังนี้
• อายุมากกว่า 10 ปี รับประทานครั้งละ 2 ช้อนชา
• อายุมากกว่า 3 ปี ถึง 10 ปี รับประทานครั้งละ 1 ช้อนชา
• อายุมากกว่า 1 ปี ถึง 3 ปี รับประทานครั้งละ 1/2 ช้อนชา
• แรกเกิดถึง 1 ปี ห้ามรับประทาน
รูปที่ 3 แสดงการเขียนผังงานแสดงวิธีการรับประทานยา
โครงสร้างการทำงานแบบมีการเลือก
( Selection )
เป็นโครงสร้างที่ใช้การตรวจสอบเงื่อนไขเพื่อการทำงานอย่างใดอย่างหนึ่ง
โดยโครงสร้างแบบนี้จะมีอยู่ด้วยกัน 2 รูปแบบ คือ IF – THEN – ELSE และ IF – THEN
2. การเลือกกระทำตามเงื่อนไข(Decision or Selection) : การตัดสินใจ หรือเลือกเงื่อนไขคือ
เขียนโปรแกรมเพื่อนำค่าไปเลือกกระทำ โดยปกติจะมีเหตุการณ์ให้ทำ 2 กระบวนการ
คือเงื่อนไขเป็นจริงจะกระทำกระบวนการหนึ่ง และเป็นเท็จจะกระทำอีกกระบวนการหนึ่ง
แต่ถ้าซับซ้อนมากขึ้น จะต้องใช้เงื่อนไขหลายชั้น เช่นการตัดเกรดนักศึกษา เป็นต้น
ตัวอย่างผังงานนี้ จะแสดงผลการเลือกอย่างง่าย
เพื่อกระทำกระบวนการเพียงกระบวนการเดียว
ไม่มีความคิดเห็น:
แสดงความคิดเห็น