วันจันทร์ที่ 13 สิงหาคม พ.ศ. 2555

อัลกอริทึม (Algorithm)


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


ชนิดของอัลกอริทึม (Algorithm)
1. อัลกอริทึมแบบแตกย่อย (Divide-and-conquer)
เป็นอัล กอริทึมที่จะมีการนำปัญหาหลักที่ได้มาทำการแยกออกเป็นปัญหาย่อยๆ แล้วนำคำตอบที่ได้จากปัญหาย่อยต่าง ๆ มารวมกันเข้าด้วยกันโดยอัลกอริทึมนี้สามารถหาคำตอบของปัญหาได้ง่ายขึ้นจาก การรวมคำตอบของปัญหาหลัก

2. อัลกอริทึมแบบเคลื่อนที่ (Dynamic Programming) ปัญหา ที่ได้รับมานั้นบางครั้งไม่สามารถแบ่งปัญหาออกเป็นปัญหาย่อย ๆ ได้ ซึ่งถ้าพยายามจะแบ่งปัญหานั้น ๆ ออกเป็นปัญหาย่อยที่เล็กที่สุด อัลกอริทึมก็อาจจะใช้เวลาทำงานเป็นแบบทวีคูณ (Exponential) ได้ แต่เวลาที่แก้ปัญหาต่าง ๆ นั้น มักจะพบว่าบางครั้งต้องแก้ปัญหาย่อย ๆ ที่เหมือนกันซ้ำไปซ้ำมา โดยการหลีกเลี่ยงการคำนวณเพื่อหาคำตอบซ้ำ ๆ ซาก ๆ นี้ จะใช้ Dynamic Programming แก้ ปัญหาย่อย ๆ เหล่านั้นเพียง ครั้งเดียวแล้วเก็บผลลัพธ์ไว้ ซึ่งถ้าหาก พบว่าต้องมีการแก้ปัญหาย่อยนั้นซ้ำอีกก็สามารถนำคำตอบมาจากคำตอบที่เคยคำนวณ เก็บไว้มาใช้ได้

3. อัลกอริทึมแบบทางเลือก (Greedy Algorithm)
เป็นอัลกอริทึมที่จะหาคำตอบโดยการเลือกทางออกที่ดีที่สุดที่พบได้ในขณะนั้น เพื่อให้ได้คำตอบที่ดีที่สุด แต่ในบางครั้ง Greedy Algorithms อาจจะไม่สามารถหาคำตอบของปัญหาที่ดีที่สุดได้เสมอไป
ขั้นตอนการเขียนโปรแกรมคอมพิวเตอร์
1. การวิเคราะห์ (Analysis)

- การระบุข้อมูลออก

กำหนดวัตถุประสงค์ของงาน

รูปแบบของผลลัพธ์
- การระบุข้อมูลเข้า
ข้อมูลที่นำเข้าสู่คอมพิวเตอร์ประกอบด้วยอะไรบ้าง
- การกำหนดวิธีการประมวลผล
ต้องทราบสูตรหรือวิธีการประมวลผล

2. การออกแบบ (Design)
เครื่องมือที่ช่วยในการออกแบบโปรแกรมเช่น ผังงาน, รหัสจำลอง,แผนภูมิ
โครงสร้าง, ฮิโปชาร์ต

ผังงาน (Flowchart) คือแผนภาพแสดงขั้นตอนการทำงานของโปรแกรมหรือระบบรวมทั้งการไหล

ของข้อมูลตั้งแต่แรกจนได้ผลลัพธ์ตามต้องการ

3. การเขียนโปรแกรม (Coding/Programming)

รูปแสดงสัญลักษณ์ของผังงานโปรแกรม



4. การทดสอบและแก้ไขข้อผิดพลาดของโปรแกรม (Testing and Debugging)
ประเภทของข้อผิดพลาด
- Syntax error
- Runtime error
- Logical error
5. การทดสอบความถูกต้องของโปรแกรม (Testing and Validating)
6. การจัดทำเอกสารและบำรุงรักษา (Documentation and Maintenance)
7. อาจทำเป็นคู่มือ เอกสารที่อยู่ในโปรแกรม (Online Manual)


รหัสเทียม หรือซูโดโค้ด (Pseudo Code)
คือ รหัสจำลองที่ใช้เป็นตัวแทนของอัลกอริทึมในการแสดงขั้นตอนวิธีการโดยใช้
ภาษาเขียนที่เข้าใจได้ง่าย อาจใช้ภาษาไทยหรือภาษาอังกฤษก็ได้ขึ้นอยู่กับความสะดวก
ของผู้เขียนและกิจกรรมที่จะนำเสนอ มักใช้รูปแบบคล้ายประโยคภาษาอังกฤษเพื่ออธิบาย


ผังงาน (Flowchart)





ความหมายของผังงาน


ผังงาน (Flowchart) คือ รูปภาพ (Image) หรือสัญลักษณ์(Symbol) ที่ใช้เขียนแทนขั้นตอน คำอธิบาย ข้อความ หรือคำพูด ที่ใช้ในอัลกอริทึม (Algorithm) เพราะการนำเสนอขั้นตอนของงานให้เข้าใจตรงกัน ระหว่างผู้เกี่ยวข้อง ด้วยคำพูด หรือข้อความทำได้ยากกว่า
ผังงานแบ่งได้ 2 ประเภท
1. ผังงานระบบ (System Flowchart)
คือ ผังงานที่แสดงขั้นตอนการทำงานในระบบอย่างกว้าง ๆ แต่ไม่เจาะลงในระบบงานย่อย
2. ผังงานโปรแกรม (Program Flowchart)
คือ ผังงานที่แสดงถึงขั้นตอนในการทำงานของโปรแกรม ตั้งแต่รับข้อมูล คำนวณ จนถึงแสดงผลลัพธ์
ประโยชน์ของผังงาน
1. ทำให้เข้าใจ และแยกแยะปัญหาได้ง่าย (Problem Define)
2. แสดงลำดับการทำงาน (Step Flowing)
3. หาข้อผิดพลาดได้ง่าย (Easy to Debug)
4. ทำความเข้าใจโปรแกรมได้ง่าย (Easy to Read)
5. ไม่ขึ้นกับภาษาใดภาษาหนึ่ง (Flexible Language)













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

ที่มา :
http://www.thaiall.com/datastructure/pseudocode.htm
http://krupeat.multiply.com/journal/item/6?&show_interstitial=1&u=%2Fjournal%2Fitem
http://www.thaiall.com/flowchart/

เขียนโดย WinwanwonZ ที่ 14:18

ไม่มีความคิดเห็น:

แสดงความคิดเห็น