ขั้นตอนการแก้ไขปัญหา(Algorithm)
อัลกอริทึมหรือขั้นตอนวิธีการแก้ปญหา เป็นการจัดลำดับเป็นขั้นตอนต่างๆ เพื่อแก้ไขปัญหาในการเขียนโปรแกรมที่ได้ทำการวิเคาราะห์ไว้ การเขียนอัลกอริทึมจึงเป็นการแสดงลำดับการทำงานการประมวลผบของคอมพิวเตอร์ที่พร้อมจะนำไปแปลงเป็นคำสั่งให้คอมพิวเตอร์ทำงาน การเขียนโปรเเกรมคอมพิวเตอร์ด้วยภาษาที่เหมาะสมเพื่อสั่งให้คอมพิวเตอร์ทำงานตามอัลกอริทึมที่กำหนดไว้ และการเขียนอัลกอริทึมออกมาให้ตรวจสอบคสามถูกต้องไเ้ครบถ้วนขึ้น
ความหมายของอัลกอริทึม
อัลกอริทึม (Algorithm) หมายถึงวิธีการที่ได้แบ่งออกเป็นตอนย่อยๆ ที่มีการทำงานที่แน่นอน หรือการอธิบายลำดับการทำงานในลักษณะของข้อความตั้งเเต่ต้นจนจบว่ามีลำดับขั้นตอนการทำงานอย่างไรบ้าง ซึ่งเมื่อทราบขั้นตอนการทำงานที่เเน่นอนแล้วก็จะนำ Algorithm ที่ได้นั้นมาวาดเป็น Flowchart จากนั้นจึงแปลง Flowchart เป็นภาษาระดับสูที่คอมพิวเตอร์เข้าใจ
อัลกอริทึมหรือขั้นตอนวิธีการแก้ปัญหา เป็นการจัดลำดับความคิดเป็นขั้นตอนต่างๆ เพิ่อแก้ไขปัญหาในขั้นตอนการเขีบยนโปรรแกรมที่สอดคล้องกรรมวิธีแก้ปัญหาทีีกำหนดไว้ การเขียนอัลกอริทึมจึงเป็นการแสดงลำดับการทำงานตามการประมวลผลของคอมพิวเตอร์ ที่พร้อมจะนำไปแปลงเป็นลำดับคำสั่งให้คอมพิวเตอร์ทำงาน การเขียนโปรแกรมด้วยภาษาที่เหมาะสม เพื่อสั่งให้คอมพิวเตอร์ทำงานตามลำดับอัลกอริทึมที่กำหนดไว้ และการเขียนอัลกอริทึมที่ออกมาให้ตรวจสอบความถูกต้องได้ครบถ้วนขึ้น
รูปแบบการเขียนอัลกอริทึม
ลำดับขั้นตอนวิธีการแก้ไขปัญหา ( Algorithm Development )สามารถเขียนลำดับขั้นตอนการทำงานได้ 2 แบบ คือ การอธิบายขั้นตอนการทำงานอย่างคร่าวๆ และการอธิบายขั้นตอนการทำงานอย่างละเอียด
การอธิบายขั้นตอนการทำงานอย่างคร่าวๆ (Decomposition) คือ การเขียนขั้นตอนการทำงานทั้งหมดโดยไม่ต้องละเอียดมากนัก และเขียนขั้นตอนการทำงานเป็นข้อๆ เข้าใจง่าย โดยเริ่มตั้งเเต่ขั้นตอนเเรกจนถึงั้นตอนสุดท้ายที่จะส่งให้เครื่องคอมพิวเตอร์ทำการการเเก้ไข้ปัญหา เช่น การคำนวณหาผอัตราผ่อนชำระค่างดรถจักยานยนต์รายเดือน สามารถเรียบเรียงการทำงานเป็นข้อๆ ได้ดังนี้
1. เริ่มต้น
2. รับค่าของราคารถจักยานยนต์
3. รับค่าของอัตราดอกเบี้ยรายปี
4. รับค้ช่าของจำนวนเดือนที่ต้องการผ่อนชำระ
5. คำนวณหาค่าของจำนวนเงินที่ต้องชำระรายเดือน
6. แสดงค่าของจำนวนเงินที่ผ่อนชำระรายเดือน
7. จบการทำงาน
การเขียนอธิบายลำดับขั้นตอนการทำงานในลักษณะของข้อความจะเริ่มต้นข้อแรกด้วยคำว่า "เริ่มต้น" หรือ "เริ่มต้นการทำงาน" ถัดจากนั้นเป็นลำดับขั้นตอนการทำงานที่ใช้การแก้ไขปัญหา และ จบด้วยขั้นตอนสุดท้าย จะใช้ข้อความว่า "จบการทำงาน"
การอธิบายการทำงานอย่างละเอียด (Refinement) คือ การนำขั้นตอนการทำงานอย่างคร่าวๆ มาิพจารณาเพิ่มเติมข้อมูลบางอย่างที่ยังไม่เรียบร้อย แต่ละขั้นตอนที่อธฺบายในส่วนของการอธิบายขั้นตอนการทำงาานอย่างคร่าวๆ นั้น อาจมีต้องมีความละเอียดไม่เพียงพอที่จะนำไปสั่งงานให้เครื่องคอมพิวเตอร์ทำงาน อาจต้องเขียนขยายความให้มีความละเอียดยิ่งขึ้นและสมบูรณ์มากขึ้น หรือแบ่งการทำงานออกเป็นข้อย่อยเพิ่มเติม เช่น การคำนวณอัตราผ่อนชำระค่างดรถจักยานยนต์รายเดือนที่แสดงไว้เป็นแบบคร่าวๆ ดังนั้น จึงต้องทำการอธิบายเพิ่มเติมในส่วนของขั้นตอในการคำนวณหาค่าของจำนวนเงินที่ต้องชำระรายเดือน โดยวิธีการคำนวณนั้นได้ทำในส่วนของการทดลองแก้ไขปัญหาด้วยตนเอง (Hand Exampie) ดังนี้
1. เริ่นต้น
2. รับค่าราคาจกยาานยนต์
3. รับค่าของอัตราดอกเบี้ยรายปี
4. รับค่าของจำนวนเดือนที่ต้องชำระรายเดือน
5. คำนวณหาค่าของจำนวนเงินที่ต้องชำระรายเดือน
5.1 ชำระ 24 เดือน อัตราดอกเบี้ยคิดเป็น 3% ต่อปี
5.2 ชำระ 36 เดือน อัตราอดกเบี้ยคิดเป็น 3.5% ต่อปี
5.3 ชำระ 48 เดือน อัตราดอกเบี้ยคิดเป็น 5% ต่อปี
6. แสดงค่ของจำนวนเงินที่ผ่อนชำระรายเดือน
7. จบการทำงาน
หลังจากการทำการพัฒนาให้เป็นการอธฺบายขั้นตอนการทำงานอย่างละเอีบด (Refinement) เสร็จเรียบร้อย จะสามารถเห็นลำดับขั้นตอนการทำงานตั้งเเต่ขั้นตอนแรกจนถึงขั้นตอนสุดท้ายละเอียดมากยิ่งขึ้น จำนวนข้อมูลของลำดับขั้นตอนการทำงานไม่จำเป็นต้องเท่ากับส่วนของในส่วนของการอธิบายลำดับขั้นตอนการทำงานอย่าง
คร่าวๆ (Decomposition) อาจจะสามารถอิบายลำดับขั้นตอนการทำงานได้อย่างฃละเอียดพออยู่แล้ว ก็สามารถนำในส่วนของการอธิบายขั้นตอนการทำงานอย่างคร่าวๆ มาใช้เป็นส่วนเป็นส่วนของการอธิบายขั้นตอนการทำงานอย่างละเอียด
การพัฒนาลำดับขั้นตอนการทำงานจากผัง ในแบ่งขั้นตอนการทำงานทั้งหมดออกเป็นข้อๆ ตามลำดับ ตามจำนวนของขั้นตอนการทำงานทั้งหมด และเขียนต้องไม่ซับซ้อน เข้าใจง่ายต้องเขียนให้ถูกต้องเสมอ เพราะถ้าเขียนไม่ถูกต้องแล้วการพัฒนาไปเป็นคำสั่งเทียม (Pseudo Code) ก็จะผิดผลาด และการเขียนโปรเเกรมก็จะผิดตามด้วย
การอธิบายการทำงานอย่างละเอียด (Refinement) คือ การนำขั้นตอนการทำงานอย่างคร่าวๆ มาิพจารณาเพิ่มเติมข้อมูลบางอย่างที่ยังไม่เรียบร้อย แต่ละขั้นตอนที่อธฺบายในส่วนของการอธิบายขั้นตอนการทำงาานอย่างคร่าวๆ นั้น อาจมีต้องมีความละเอียดไม่เพียงพอที่จะนำไปสั่งงานให้เครื่องคอมพิวเตอร์ทำงาน อาจต้องเขียนขยายความให้มีความละเอียดยิ่งขึ้นและสมบูรณ์มากขึ้น หรือแบ่งการทำงานออกเป็นข้อย่อยเพิ่มเติม เช่น การคำนวณอัตราผ่อนชำระค่างดรถจักยานยนต์รายเดือนที่แสดงไว้เป็นแบบคร่าวๆ ดังนั้น จึงต้องทำการอธิบายเพิ่มเติมในส่วนของขั้นตอในการคำนวณหาค่าของจำนวนเงินที่ต้องชำระรายเดือน โดยวิธีการคำนวณนั้นได้ทำในส่วนของการทดลองแก้ไขปัญหาด้วยตนเอง (Hand Exampie) ดังนี้
1. เริ่นต้น
2. รับค่าราคาจกยาานยนต์
3. รับค่าของอัตราดอกเบี้ยรายปี
4. รับค่าของจำนวนเดือนที่ต้องชำระรายเดือน
5. คำนวณหาค่าของจำนวนเงินที่ต้องชำระรายเดือน
5.1 ชำระ 24 เดือน อัตราดอกเบี้ยคิดเป็น 3% ต่อปี
5.2 ชำระ 36 เดือน อัตราอดกเบี้ยคิดเป็น 3.5% ต่อปี
5.3 ชำระ 48 เดือน อัตราดอกเบี้ยคิดเป็น 5% ต่อปี
6. แสดงค่ของจำนวนเงินที่ผ่อนชำระรายเดือน
7. จบการทำงาน
หลังจากการทำการพัฒนาให้เป็นการอธฺบายขั้นตอนการทำงานอย่างละเอีบด (Refinement) เสร็จเรียบร้อย จะสามารถเห็นลำดับขั้นตอนการทำงานตั้งเเต่ขั้นตอนแรกจนถึงขั้นตอนสุดท้ายละเอียดมากยิ่งขึ้น จำนวนข้อมูลของลำดับขั้นตอนการทำงานไม่จำเป็นต้องเท่ากับส่วนของในส่วนของการอธิบายลำดับขั้นตอนการทำงานอย่าง
คร่าวๆ (Decomposition) อาจจะสามารถอิบายลำดับขั้นตอนการทำงานได้อย่างฃละเอียดพออยู่แล้ว ก็สามารถนำในส่วนของการอธิบายขั้นตอนการทำงานอย่างคร่าวๆ มาใช้เป็นส่วนเป็นส่วนของการอธิบายขั้นตอนการทำงานอย่างละเอียด
การพัฒนาลำดับขั้นตอนการทำงานจากผัง ในแบ่งขั้นตอนการทำงานทั้งหมดออกเป็นข้อๆ ตามลำดับ ตามจำนวนของขั้นตอนการทำงานทั้งหมด และเขียนต้องไม่ซับซ้อน เข้าใจง่ายต้องเขียนให้ถูกต้องเสมอ เพราะถ้าเขียนไม่ถูกต้องแล้วการพัฒนาไปเป็นคำสั่งเทียม (Pseudo Code) ก็จะผิดผลาด และการเขียนโปรเเกรมก็จะผิดตามด้วย
เทคนิคการเขียนอัลกอริทึม
อัลกอริทึม เป็ขั้นตอนการบรรยายลำดับขั้นตอนการแก้ปัญหาระบบงานเป็นรายข้อ เพื่อแสดงให้เห็นถึงขั้นตอนการทำงานที่ชัดเจน และเพื่อใช้งานของอัลกอริทึมด้วย ก่อนศึกษา วิธีการเขียนอัลกอริทึม ควรมีความเข้าใจและคำนึงถึงคุณสมบัติพื้นฐานของระบบคอมพิวเตอร์ก่อนเพื่อนำไปประยุกต์ใช้ในยั้นตอนการเขียนอัลกอริทึมได้อย่างถูกต้องต่อไป
คุณสมบัติงานระดับพื้นฐานของคอมพิวเตอร์ มีดังต่อไปนี้
1. คุณสมบัติด้านหน่วยความจำ
การเขียนโปรเเกรมคอมพิวเตอร์ต้องเกี่ยวข้องกับการใช้งานหน่วยความจำของระบบคอมพิวเตอร์ ในภาษาคอมพิวเตอร์ให้แททนลักษณ์กำหนดพื้นที่หน่วยความจำ ด้วยการกำหนดชื่อเป็นตัวแปรใช้งาน เพื่อใช้อ้างอิงถึงข้อมูลในหน่วยความจำ เช่น
i =1 หมายถึงกำหนด 1 เก็บไว้ในตัวแปร i
Sun = Score1 + Score2 หมายถึง เอาค่า Score1 + Score2 แล้วเก็บค่าผลผลัพธ์ที่ได้ไว้ที่ตัวแปร Sum
Total = Bonus + Salay หมายถึง เอาค่าตัวแปร Salay ไปบวกเข้ากับค่าในตัวแปร Bonus ผลผลัพธ์ที่ได้จะเก็บที่ตตัวแปร Total
2. คุณสมบัติด้านการคำนวณ
คุณสมบัติด้านการคำนวณในระบบคอมพิวเตอร์ระดับพื้นฐาน คือ สามารถดำเนินการ บวก ลบ คูณ หาร แต่ลักษณะการพิจารนาเลือกเลือกประมวลผลงานคำนวณของคอมพิวเตอร์นั้น มีความแตกต่างจากระบบการคำนวณทั่วๆไป คือ คอมพิวเตอร์คำนวณโดยพิจารนาลำดับความสำคัญของสัญญาลักษณ์เครื่องหมายการคำนวณที่ปรากฏในนิพจน์การคำนวณนั้นๆ เป็นสัญญาลักษณ์ที่ใช้ในการคำนวณและลำดับการทำงานของการคำนวณ
3. คุณสมบัติด้านการเปรียบเทียบเชิงตรรกะ
ความสามารถในการประมวลผลเชิงเปรียบเทียบ เป็นคุณสมบัติพื้นฐานอย่างหนึ่งของคอมพิวเตอร์โดยใช้หลักการทำงานของพีชคณิตพิจารณาเงื่อนไขที่ใช้นิพจน์แบบบูลีนประกอบการเขียนคำสั่ง เพื่อ กำหนดทางเลือกการทำงานสำหรับหาข้อสรุปของเงื่อนไขที่ผู้เขียนโปรแกรมกำหนดขึ้น เพื่อให้เครื่องคอมพิวเตอร์สามารถประมงลผล ตัดสินใจว่าหากเงื่อนไขเป็นจริงให้ดำเนินการคำสั่งใด และเงื่อนไขเป็นเท็จให้ดำเนินการคำสั่งใด การเขียนคำสั่งที่มีลักษณะของเงื่อนไข เพื่อให้เครื่องพิจารณาเลือกทิศทางการทำงานตามเงื่อนไขที่กำหนดนั้น มีสิ่งที่เกี่นวข้องกับผู้พัฒนาโปรแกรม คือ ต้องศึกษาวิธีใช้สัญญาลักษณ์ในการเขียนประโยคคำสั่งแบบเงื่อนไขของเเต่ละภาษาที่กำหนดให้เลือกใช้
4. คุณสมบัติด้านการแสดงผลค่าข้อมูล
การอ่านข้อมูลพื้นที่หน่วยความจำที่เขียนคำสั่งแล้วนำไปเก็บไว้ หรือจากการคำนวณที่ต้องมีการนำค่าเก้บไว้ เพื่อนำมาแสดงผลผลัพธ์ในรูปแบบและในตำแหน่งงานที่ต้องการ
คอมพิวเตอร์จะทำงานทีละคำสั่งตามลำดับจากบนลงล้าง หากเปรียบเทียบใน 1 บรรทัด คือ 1 คำสั่งแล้ว คอมพิวเตอร์จะทำงานตามคำสั่งที่อยู่บรรทัดบนสุดก่อน แล้วจึงจะทำงานตามคำสั่งที่อยู่ในลำดับต่อมา จนถึงคำสั่งบรรทัดสุดท้าย
รูปแบบการเขียนโปรเเกรมในภาษาจาวาพื้นฐานในลักษณะโครงสร้างภาษาจาวาทั่วไป
การเขียนโปรแกรมด้วยภาษาจาวาเป็นการเขียนโปรแกรมที่เรียกว่า การเขียนโปรแกรมเชิงวัตถุ (Object-Oriented Programming) ซึ่งรูปแบบการเขียยจะมีลักษณะแนวคิดที่ต่างจากการเขียนโปรแกรมแบบโครงสร้าง แต่ก็สามารถเรียกใช้คุุณสมบัติต่างๆ แบบดั้งเดิม (Primitive Type) ซึ่งจะได้จะได้กล่าวต่อไป องค์ประกอบที่ควรทราบเกี่ยวกับการเขียนโปรแกรมภาษาจาวา คือ
คลาส (Class)
คุณสมบัติ (Attribute หรือ Properties)
เมธอด (Method)
จากส่วนประกอบดังกล่าว หากเอามาเขียนเป็นสไดอะแกรมดังนี้ (ควรศึกษาการออกแบบเชิงวัตถุ หรือ UML (Unifed Modeling Language ) จะทำให้เข้าใจง่ายขึ้น สามารถดาวน์โหลดฏชโปรแกรม จาก http;//www.eclipse.org/downloads/donload.php.?file=technology/epp/downloads/erlease/juno/SR2/eclipse-modeling-juno-SR2-win32-x86_64.zip&mirror_id=1603 เพื่อการออกแบบและสร้างโปรแกรมได้อัตโนมัติ ในที่นี้จะไม่ขอเน้นเรื่องการออกแบบเชิงวัตถุเนื่องจากการเขียนโปรแกรมด้วยภาษาจาวาเบี้องต้นเท่านั้น เมื่อเขียนโปรแกรมแล้วเราจะพบองค์ประกอบต่างๆ จากอีคิปส์ที่สามารถสังเกตได้ขณะเขียนโปรแกรม และเห็นองค์ประกอบได้ชัดเจน โดยมองไปยังสส่วนโครงสร้างและเมธอดหรือเอาต์ไลน์เห็นสัญญาลักษณ์วงกลมสีเขียวมีตัวอักษร C ก็คือ คลาส ส่วนสีเขียวรูปทรงต่างๆ ในที่นี้คือ สี่เหลี่ยมสีเขียวจะแสดงชนิดข้อมูลแบบสตริงคือคุณสมบัติ และวงกลมเล็กสีเขียวคือ เมธอดนั้นเอง
การเขียนโปรแกรมภาษาจาวาเราควรคำนึงถึงทั้งสองอย่างคู่กันไป คือ
Syntax (รูปแบบการเขียน ลำดับขั้นตอน และองค์ประกอบ
Semantics (ความหมายของสิ่งที่สร้างหรือเขียนขึ้นมาตรฐานรูปแบบ(syntax) ภาษานั้นๆ)
การเขียนโปรแกรมด้วยภาษาเชิงวัตถุ โดยเฉพาะภาษาจาวานั้นมีความครบถ้วนสมบูรณ์ทั้งสองอย่าง เพราะการเขียนโปรแกรมค่อนข้างกระชับและมีความชัดเจนในการอธิบายรูปแบบการเขียน โดยส่นใหญ่โครงสร้างของโปรแกรมจะมีการพัฒนามาจากภาษาซี ให้เป็นแบบการโปรแกรมเชิงวัตถุมากขึ้น สามารถใช้ชนิดข้อมูลดั้งเดิมได้ (Primitive Data Type) โดยการกำหนดโครงสร้างเป็นคลาสเพื่อการระบุคคุณสมบัติใหม่จากโครงสร้างที่โปรแกรมเมอร์กำหนด
ไม่มีความคิดเห็น:
แสดงความคิดเห็น