วันศุกร์ที่ 9 สิงหาคม พ.ศ. 2556

การพัฒนาโครงสร้างคอมพิวเตอร์


8. การพัฒนาโครงสร้างคอมพิวเตอร์


ขั้นตอนการทำโครงงานคอมพิวเตอร์

ขั้นตอนการทำโครงงานคอมพิวเตอร์
โครงงานคอมพิวเตอร์เป็นกิจกรรมที่ต้อง ทำอย่างต่อเนื่องหลายขั้นตอน และแต่ละขั้นตอนจะมีความสำคัญต่อโครงงานนั้น ๆ การแบ่งขั้นตอนของการทำโครงงานอาจแตกต่างกัน ทั้งนี้ขึ้นอยู่กับลักษณะของโครงงานและการวางแผนการทำโครงงาน ในที่นี้จะแบ่งการทำโครงงานออกเป็น 6 ขั้นตอนดังนี้
1. คัดเลือกหัวข้อโครงงานที่สนใจ โดยทั่วไปเรื่องที่จะนำมาพัฒนาเป็น โครงงานคอมพิวเตอร์ มักจะได้มาจากปัญหา คำถาม หรือความสนใจในเรื่องต่างๆ จากการสังเกตสิ่งต่างๆ ที่เกี่ยวเนื่องกับระบบคอมพิวเตอร์ หรือสิ่งต่างๆ รอบตัว ผู้เรียนสามารถจะศึกษาการได้มาของเรื่องที่จะทำโครงงาน จากตัวอย่างต่อไปนี้ 
สุดา ช่วยงานคุณพ่อซึ่งเป็นคุณหมอที่คลีนิครักษาโรคทั่วไป สังเกตเห็นว่าเมื่อคนไข้เก่ามาจะต้องมีการค้นหาประวัติคนไข้ ซึ่งเก็บไว้ในตู้เอกสารซึ่งมีปริมาณมาก ทำให้เสียเวลาค่อนข้างมาก กว่าจะหาพบ และตู้เอกสารยังใช้เนื้อที่ในร้านค่อนข้างมาก อีกด้วย ดังนั้นสุดาจึงเสนอทำโครงงาน “ระบบจัดการข้อมูลของคลีนิครักษาโรคทั่วไป” เพื่อพัฒนาระบบคอมพิวเตอร์ ในการจัดเก็บข้อมูลคนไข้ทั้งหมดไว้ในเครื่องคอมพิวเตอร์ เพื่อเป็นการประหยัดเนื้อที่ที่ใช้ในการจัดเก็บข้อมูล และประหยัดเวลาในการค้นหาข้อมูลคนไข้
สมานเป็นผู้เรียนที่ชอบวิชาฟิสิกส์เป็นอย่างมาก มักจะได้รับการขอร้องจากเพื่อนๆ ให้ทบทวนเนื้อหาต่างๆ ให้เพื่อนๆ ฟังอยู่เสมอ ซึ่งเมื่อสมานได้เรียนวิชาการเขียนโปรแกรมแล้ว เกิดความคิดขึ้นว่าถ้าเขาสร้างโปรแกรม ช่วยสอนสำหรับวิชาฟิสิกส์ขึ้นมา ให้เพื่อนๆ ได้ใช้ คงจะเป็นเครื่องมือเป็นอย่างดีในการทำให้เพื่อนๆ เข้าใจเนื้อหาได้ชัดเจนขึ้น ดังนั้นสมานจึงเสนอโครงงานเรื่อง “โปรแกรมช่วยสอนเรื่องการเคลื่อนที่แบบโปรเจ็กไตล์” 

สังเกตได้ว่าเรื่องหรือปัญหาที่จะนำมาพัฒนาโครงงานคอมพิวเตอร์ได้จากแหล่งต่างๆ กันดังนี้
ก. การอ่านค้นคว้าจากหนังสือ เอกสาร หนังสือพิมพ์ หรือวารสารต่างๆ
ข. การไปเยี่ยมชมสถานที่ต่างๆ
ค. การฟังบรรยายทางวิชาการ รายการวิทยุและโทรทัศน์ รวมทั้งการสนทนาอภิปรายแลกเปลี่ยนความคิดเห็น
ระหว่างเพื่อนผู้เรียนหรือกับบุคคลอื่นๆ
ง. กิจกรรมการเรียนการสอนในโรงเรียน
จ. งานอดิเรกของผู้เรียน
ฉ. การเข้าชมงานนิทรรศการหรืองานประกวดโครงงานคอมพิวเตอร์
ในการตัดสินใจเลือกหัวข้อที่จะนำมาพัฒนาโครงงานคอมพิวเตอร์ ควรพิจารณาองค์ประกอบสำคัญๆ ดังนี้ 
ก. ต้องมีความรู้และทักษะพื้นฐานอย่างเพียงพอในหัวข้อเรื่องที่จะศึกษา
ข. สามารถจัดหาเครื่องคอมพิวเตอร์และซอฟต์แวร์ที่เกี่ยวข้องได้
ค. มีแหล่งความรู้เพียงพอที่จะค้นคว้าหรือขอคำปรึกษา
ง. มีเวลาเพียงพอ
จ. มีงบประมาณเพียงพอ
ฉ. มีความปลอดภัย
2. ศึกษาค้นคว้าจากเอกสารและแหล่งข้อมูล 
ซึ่งรวมถึงการขอคำปรึกษาจากผู้ทรง คุณวุฒิจะช่วยให้ผู้เรียนได้แนวคิดที่ใช้ในการกำหนดขอบเขตของเรื่องที่จะ ศึกษาได้เฉพาะเจาะจงมากยิ่งขึ้น รวมทั้งได้ความรู้เพิ่มเติมในเรื่องที่จะศึกษาจนสามารถใช้ออกแบบและวางแผน ดำเนินการทำโครงงานนั้นได้อย่างเหมาะสม ในการศึกษาค้นคว้าดังกล่าว ผู้เรียนจะต้องบันทึกสรุปสาระสำคัญไว้ด้วย แหล่งข้อมูลที่สำคัญอีกแหล่งหนึ่งคือ การศึกษาผลงานของโครงงานคอมพิวเตอร์จากงานแสดงนิทรรศการ หรือจากเอกสารรายงานโครงงานคอมพิวเตอร์ ซึ่งอาจค้นหาได้จากเว็บไซต์ต่าง ๆ ทั่วโลก จะช่วยเพิ่มพูนประสบการณ์ให้กับผู้เรียนในด้านความรู้ เทคนิคและวิธีการพัฒนา นอกจากนี้ยังทำให้เกิดแนวคิดที่จะดัดแปลงผลงานดังกล่าว มาจัดทำโครงงานคอมพิวเตอร์ในหัวข้อที่ตนสนใจด้วย ในการศึกษาและวิเคราะห์โครงงานคอมพิวเตอร์หรือปัญหาพิเศษต่างๆ มีประเด็นที่ต้องพิจารณา ดังนี้
ก. มูลเหตุจูงใจ และเป้าหมายในการทำโครงงาน
ข. การดำเนินการพัฒนา
* วัสดุอุปกรณ์ต่างๆ ซึ่งรวมถึง เครื่องคอมพิวเตอร์ ซอฟต์แวร์ที่ต้องใช้ในการดำเนินการ และ ตัวแปลภาษาโปรแกรมที่ต้องใช้
* ความต้องการของผู้ใช้และคุณลักษณะของผลงาน (Requirement and Specification)
* กลุ่มผู้ทดลองใช้โครงงานและวิธีการประเมินผล
* วิธีการพัฒนา
* ข้อสรุปของโครงงาน
* ความแปลกใหม่ ความคิดสร้างสรรค์ของผู้ทำโครงงาน
* แนวทางในการปรับปรุงหรือขยายการทดลองจากงานเดิม
ผลที่ได้จากการดำเนินงานขั้นตอนนี้ จะช่วยให้ได้แนวคิดในการกำหนดขอบข่าย หรือเค้าโครงของเรื่องที่จะศึกษาชัดเจนว่า
* จะทำอะไร
* ทำไมต้องทำ
* ต้องการให้เกิดอะไร
* ทำอย่างไร
* ใช้ทรัพยากรอะไร
* ทำกับใคร
* เสนอผลอย่างไร
ฯลฯ 
3. จัดทำเค้าโครงของโครงงาน

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

เมื่อเค้าโครงของโครงงานได้รับความ เห็นชอบจากอาจารย์ที่ปรึกษาแล้ว ก็เสมือนว่าการจัดทำโครงงานได้ผ่านพ้นไปแล้วมากกว่าครึ่ง ขั้นตอนต่อไปจะเป็นการลงมือพัฒนาตามขั้นตอนที่วางแผนไว้ ดังนี้
4.1 การเตรียมการ
การเตรียมการ ต้องเตรียมเครื่องคอมพิวเตอร์ ซอฟต์แวร์ และวัสดุอื่นๆ ที่จะใช้ในการพัฒนาให้พร้อมด้วย และควรเตรียมสมุดบันทึกหรือบันทึกเป็นแฟ้มข้อความไว้ในระบบคอมพิวเตอร์ สำหรับบันทึกการทำกิจกรรมต่างๆ ระหว่างทำโครงงาน ได้แก่ ได้ปฏิบัติอย่างไร ได้ผลอย่างไร มีปัญหาและแก้ไขได้หรือไม่อย่างไร รวมทั้งข้อสังเกตต่างๆ ที่พบ
4.2 การลงมือพัฒนา
1. ปฏิบัติตามแผนงานที่วางไว้ในเค้าโครง แต่อาจเปลี่ยนแปลงหรือเพิ่มเติมได้ถ้าพบว่าจะช่วยทำให้ผลงานดีขึ้น
2. จัดระบบการทำงานโดยทำส่วนที่เป็นหลักสำคัญๆ ให้แล้วเสร็จก่อน จึงต่อยทำส่วนที่เป็น ส่วนประกอบหรือส่วนเสริมเพื่อให้โครงงานมีความสมบูรณ์มากขึ้น และถ้ามีการแบ่งงานกันทำให้ตกลงรายละเอียดในการต่อเชื่อมชิ้นงานที่ชัดเจน ด้วย
3. พัฒนาระบบงานด้วยความละเอียดรอบคอบ และบันทึกข้อมูลไว้อย่างเป็นระบบและครบถ้วน
4.3 การทดสอบผลงานและแก้ไข
การตรวจสอบความถูกต้องของผลงานเป็นความจำเป็นเพื่อให้แน่ใจว่าผลงานที่พัฒนา ขึ้นทำงานได้ถูกต้องตรงกับความต้องการที่ระบุไว้ในเป้าหมาย และทำด้วยประสิทธิภาพสูงด้วย
4.4 การอภิปรายและข้อเสนอแนะ
เมื่อพัฒนาผลงานเรียบร้อยแล้ว ให้จัดทำสรุปด้วยข้อความที่สั้นกะทัดรัดอย่างครอบคลุมเพื่อช่วยให้ผู้อ่าน ได้เข้าใจถึงสิ่งที่ค้นพบจากการทำโครงงาน และทำการอภิปรายผลด้วยเพื่อพิจารณาข้อมูลและผลที่ได้ พร้อมกับนำไปหาความสัมพันธ์กับหลักการ ทฤษฎี หรือผลงานที่ผู้อื่นได้ศึกษาไว้แล้ว ทั้งนี้ยังรวมถึงการนำหลักการ ทฤษฎี หรือผลงานของผู้อื่นมาใช้ประกอบการอภิปรายผลที่ได้ด้วย
4.5 แนวทางการพัฒนาโครงงานในอนาคตและข้อเสนอแนะ
เมื่อทำโครงงานเสร็จสิ้นลงแล้ว นักเรียนอาจพบข้อสังเกต ประเด็นที่สำคัญหรือปัญหา ซึ่งสามารถเขียนเป็นข้อเสนอแนะและสิ่งที่ควรจะศึกษาและหรือใช้ประโยชน์ต่อไป ได้
5. การเขียนรายงาน 

การเขียนรายงานเป็นวิธีการสื่อความ หมายเพื่อให้ผู้อื่นได้เข้าใจแนวคิด วิธีดำเนินการศึกษาค้นคว้า ข้อมูลที่ได้ ตลอดจนข้อสรุปและข้อเสนอแนะต่าง ๆ เกี่ยวกับโครงงานนั้น ในการเขียนรายงาน นักเรียนควรใช้ภาษาที่อ่านง่าย ชัดเจน กระชับ และตรงไปตรงมา ให้ครอบคลุมหัวข้อต่าง ๆ เหล่านี้
5.1 ส่วนหน้า
เป็นการให้ข้อมูลเกี่ยวกับโครงงานนั้นซึ่งประกอบด้วย
1. ชื่อโครงงาน
2. ชื่อผู้ทำโครงงาน
3. ชื่ออาจารย์ที่ปรึกษา
4. คำขอบคุณ เป็นคำกล่าวขอบคุณบุคคลหรือหน่วยงาน ที่มีส่วนช่วยทำให้โครงงานนี้ประสบความสำเร็จ
5. บทคัดย่อ อธิบายถึงที่มา ความสำคัญ วัตถุประสงค์ วิธีดำเนินการ และผลที่ได้ โดยย่อ (ประมาณ 150-250 คำ)
5.2 บทนำ
เป็นส่วนรายละเอียดของเนื้อหาของโครงงานซึ่งประกอบด้วย
1. ที่มาและความสำคัญของโครงงาน
2. เป้าหมายของการศึกษาค้นคว้า
3. ขอบเขตของโครงงาน
5.3 หลักการและทฤษฎี
เป็นส่วนสรุปข้อมูลที่ได้จากการศึกษาหาข้อมูลหรือหลักการ ทฤษฎี หรือวิธีการที่จะนำมาใช้ในการพัฒนาโครงงาน ซึ่งรวมถึงการระบุผลงานของผู้อื่นที่นักเรียนนำมาเปรียบเทียบหรือพัฒนาเพิ่ม เติมด้วย
5.4 วิธีดำเนินการ
อธิบายขั้นตอนการดำเนินงานโดยละเอียด พร้อมทั้งระบุปัญหาหรืออุปสรรคที่พบพร้อมทั้งวิธีการที่ใช้แก้ไข พร้อมทั้งระบุวัสดุอุปกรณ์ที่ต้องใช้ในการทำงาน
5.5 ผลการศึกษา
นำเสนอข้อมูลหรือระบบที่พัฒนาได้ โดยอาจแสดงเป็นตาราง หรือ กราฟ หรือ ข้อความ ทั้งนี้ให้คำนึงถึงความเข้าใจของผู้อ่านเป็นหลัก
5.6 สรุปผลและข้อเสนอแนะ
อธิบายผลสรุปที่ได้จากการทำงาน ถ้ามีการตั้งสมมติฐานควรระบุด้วยว่าข้อมูลที่ได้สนับสนุนหรือคัดค้าน สมมติฐานที่ตั้งไว้หรือยังสรุปไม่ได้ นอกจากนั้นยังควรกล่าวถึงการนำผลการทดลองหรือพัฒนาไปใช้ประโยชน์ อุปสรรคของการทำโครงงาน หรือข้อสังเกตที่สำคัญหรือข้อผิดพลาดบางประการที่เกิดขึ้นจากการทำโครงงาน นี้ รวมทั้งข้อเสนอแนะเพื่อการปรับปรุงแก้ไขหากจะมีผู้ศึกษาค้นคว้าในเรื่อง ทำนองนี้ต่อไปในอนาคตด้วย
5.7 ประโยชน์ที่ได้รับจากโครงงาน
ระบุประโยชน์ที่นักเรียนได้รับจากการพัฒนาโครงงานนั้น และประโยชน์ที่ผู้ใช้จะได้รับจากการนำผลงานของโครงงานได้ใช้ด้วย
5.8 บรรณานุกรม
รวบรวมรายชื่อหนังสือ วารสาร เอกสาร หรือเว็บไซด์ต่างๆ ที่ผู้ทำโครงงานใช้ค้นคว้า หรืออ่านเพื่อศึกษาข้อมูลและรายละเอียดต่างๆ ที่นำมาใช้ประโยชน์ในการทำโครงงานนี้ การเขียนเอกสารบรรณานุกรมต้องให้ถูกต้องตามหลักการเขียนด้วย

5.9 การจัดทำคู่มือการใช้งาน
หากโครงงานที่นักเรียนจัดทำเป็นการพัฒนาระบบใหม่ขึ้นมา ให้นักเรียนจัดทำคู่มืออธิบายวิธีการใช้ผลงานนั้นโดยละเอียด ซึ่งประกอบด้วย
1.ชื่อผลงาน
2.ความต้องการของระบบคอมพิวเตอร์ ระบุรายละเอียดของคอมพิวเตอร์ที่ต้องมีเพื่อจะใช้ผลงานนั้นได้
3.ความต้องการของซอฟต์แวร์ ระบุรายชื่อซอฟต์แวร์ที่ต้องมีอยู่ในเครื่องคอมพิวเตอร์ เพื่อจะให้ผลงานนั้นทำงานได้อย่างสมบูรณ์
4.คุณลักษณะของผลงาน อธิบายว่าผลงานนั้นทำหน้าที่อะไรบ้าง รับอะไรเป็นข้อมูลขาเข้า และส่วนอะไรออกมาเป็นข้อมูลขาออก
5.วิธีการใช้งานของแต่ละฟังก์ชัน อธิบายว่าจะต้องกดคำสั่งใด หรือกดปุ่มใด เพื่อให้ผลงานทำงานในฟังก์ชันหนึ่งๆ
6. การนำเสนอและแสดงโครงงาน 

เป็นขั้นตอนที่สำคัญอีกขั้นตอนหนึ่ง ของการทำโครงงาน เพื่อแสดงออกถึงผลิตผลความคิด ความพยายามในการทำงานที่ผู้ทำโครงงานได้ทุ่มเท และเป็นวิธีทำให้ผู้อื่นได้รับรู้และเข้าใจถึงผลงานนั้น การเสนอผลงานอาจทำได้ในหลายรูปแบบต่างๆ กัน เช่น การแสดงผลงานโดยไม่มีการอธิบายประกอบ การรายงานด้วยคำพูดในที่ประชุม การจัดนิทรรศการโดยโปสเตอร์และอธิบายด้วยคำพูด เป็นต้น โดยผลงานที่นำมาเสนอหรือจัดแสดงควรประกอบด้วยสิ่งต่อไปนี้
1. ชื่อโครงงาน
2. ชื่อผู้จัดทำโครงงาน
3. ชื่ออาจารย์ที่ปรึกษา
4. คำอธิบายถึงที่มาและความสำคัญของโครงงาน
5. วิธีการดำเนินการที่สำคัญ
6. การสาธิตผลงาน
7. ผลการสังเกตและข้อสรุปสำคัญที่ได้จากการทำโครงงาน
ถ้าเป็นการรายงานด้วยคำพูดต่อที่ประชุม ควรมีการเตรียมการในประเด็นต่อไปนี้
1. จัดลำดับความคิดในการนำเสนออย่างเป็นระบบ และนำเสนออย่างตรงไปตรงมาด้วยภาษาที่ชัดเจนและเข้าใจง่าย
2. ทำความเข้าใจกับเรื่องที่จะอธิบายให้ดี รวมถึงเตรียมข้อมูลที่อาจต้องใช้ในการตอบคำถาม
3. หลีกเลี่ยงการอ่านรายงาน
4. ควรมองไปยังผู้ฟังขณะรายงาน
5. ตอบคำถามอย่างตรงไปตรงมา
6. รายงานให้เสร็จภายในระยะเวลาที่กำหนด
7. ควรใช้สื่อ เช่น สไลด์ แผ่นใส ประกอบการรายงานด้วย
8. ความเหมาะสมของเนื้อหาต่อผู้ฟัง
9. ถ้าเป็นโครงงานพัฒนาผลงาน ผลงานนั้นควรจะอยู่ในสภาพที่ทำงานได้เป็นอย่างดี
การทำโครงงานคอมพิวเตอร์ นอกจากจะเป็นกิจกรรมที่ส่งเสริมให้ผู้เรียนได้นำความรู้ทางคอมพิวเตอร์มาใช้ แก้ปัญหา พัฒนาคิดค้นผลิตภัณฑ์ต่างๆ แล้ว ยังเป็นกิจกรรมที่ส่งเสริมให้ผู้เรียนมีความสนใจที่จะทำงานวิจัย และประกอบอาชีพทางคอมพิวเตอร์มากยิ่งขึ้นด้วย ซึ่งในปัจจุบันนี้หลายๆ ประเทศ ทั่วโลกขาดแคลนบุคลากร ทางด้านเทคโนโลยีสารสนเทศเป็นอย่างมาก ดังนั้นจึงน่าที่จะจัดให้การทำโครงงานคอมพิวเตอร์เป็นกิจกรรมในทุกระดับชั้น เพื่อนำไปสู่การพัฒนาประเทศต่อไปในอนาคต

การพัฒนาโปรแกรม

7. การพัฒนาโปรแกรม


7.1 ขั้นตอนการพัฒนาโปรแกรม
หลังจากที่ได้ออกแบบวิธีในการแก้ปัญหาซึ่งอยู่ในรูปแบบของรหัสลำลองหรือผัง งานแล้ว ขั้นตอนต่อไป คือ การพัฒนาโปรแกรมตามผังงานดังกล่าว ซึ่งถ้านัก เรียนเขียนโปรแกรมมีความรู้ความชำนาญในการเขียนโปรแกรมภาษาหนึ่งภาษาใดอยู่ แล้ว จะสามารถทำได้โดยง่าย อย่างไรก็ตามนักเขียนโปรแกรมก็ยังต้องทำการตรวจ สอบว่าโปรแกรมที่ได้พัฒนาขึ้น ทำงานได้ถูกต้อง และให้ผลลัพธ์ที่ไม่ผิดพลาด สำหรับทุกกรณี จึงจะสามารถนำโปรแกรมดังกล่าวไปใช้งานได้ นอกจากนี้นักเขียน โปรแกรมยังควรที่จะจัดทำเอกสาร ประกอบการพัฒนาโปรแกรม ซึ่งจะเป็นเครื่องมือ ให้ผู้ที่จะมาพัฒนาโปรแกรมต่อไปในอนาคต ทำความเข้าใจกับโปรแกรมที่จัดทำขึ้น ได้สะดวกรวดเร็ว รวมถึงให้ผู้ใช้โปรแกรมเข้าใจวิธีการใช้งานโปรแกรมอย่างรวด เร็ว
7.1.1 การวิเคราะห์และออกแบบโปรแกรม
ในการพัฒนาโปรแกรมคอมพิวเตอร์ให้กับระบบงานขนาดใหญ่ที่มีการแบ่งงาน วิเคราะห์ระบบและงานเขียนโปรแกรมออกจากกันนั้น โดยทั่วไปการมอบหมายงานให้ นักเขียนโปรแกรม จะเป็นการกำหนดความต้องการของโปรแกรมในภาพรวม แต่ไม่ได้ ระบุรายละเอียดขั้นเป็นรหัสลำลองหรือผังงานที่ละเอียด นักเขียนโปรแกรมจึง ต้องศึกษาถึงความต้องการของงานที่ได้รับมอบหมาย ข้อมูลนำเข้า ข้อมูลส่ง ออก และกระบวนการในการแก้ปัญหาอย่างละเอียดเพื่อพัฒนาขึ้นเป็นขั้นตอนวิธีใน การแก้ปัญหาซึ่งอยู่ในรูปแบบของผังงานอย่างละเอียด ซึ่งขั้นตอนดังกล่าว นี้ คือ การออกแบบผังงานดังได้กล่าวแล้วในบทที่ 6
7.1.2 การเขียนโปรแกรมจากรหัสลำลองหรือผังงาน
โดยทั่วไปการเขียนโปรแกรมจากรหัสลำลองหรือผังงานที่ได้ออกแบบไว้อย่างดี แล้ว นักเขียนโปรแกรมสามารถทำได้โดยง่ายและรวดเร็ว ซึ่งจะเป็นการแปลงจากแต่ ละสัญลักษณ์ของผังงาน ไปเป็นคำสั่งที่สอดคล้องกันในภาษาโปรแกรมที่เลือก ใช้ โดยโปรแกรมที่ดีจะต้องมีการตรวจสอบและแจ้งข้อผิดพลาดให้แก่ผู้ใช้งาน โปรแกรมทราบ โดยที่การทำงานของโปรแกรมไม่สะดุดลง ตัวอย่างเช่น ในการพัฒนา โปรแกรมเพื่อหาค่าของผลหารถ้าหากว่ามีการรับข้อมูลนำเข้าเป็นตัวหาร แต่ผู้ ใช้ป้อนข้อมูลตัวหารเป็นศูนย์ โปรแกรมจะเกิดข้อผิดพลาดในการทำงานเป็น ชิ้น ดังนั้นโปรแกรมควรต้องทำการตรวจสอบว่า ถ้าตัวหารเป็นศูนย์ต้องแจ้งข้อ ความผิดพลาดให้ผู้ใช้ทราบ
 แสดงผลที่ได้จากโปรแกรมเมื่อตัวหารไม่เป็นศูนย์ และเมื่อตัวหาร เป็นศูนย์จะเห็นว่าเมื่อตัวหารไม่เป็นศูนย์ โปรแกรมสามารถทำงานให้คำตอบได้ อย่างถูกต้อง แต่ถ้าตัวหารเป็นศูนย์ และในโปรแกรมไม่ได้มีการตรวจสอบ ไว้ โปรแกรมจะทำงานผิดพลาด และหยุดการทำงานลงพร้อมกับแสดงข้อความบอกข้อผิด พลาดที่เกิดขึ้นออกมา ดังที่แสดงในรูปเป็นตัวอักษรเอียง
7.1.3 การเตรียมข้อมูลสำหรับทดสอบโปรแกรม
ในระหว่างขั้นตอนการออกแบบวิธีการแก้ปัญหาให้อยู่ในรูปของรหัสลำลองหรือผัง งานนั้นนักเขียนโปรแกรมควรพิจารณาถึงข้อมูลที่จะนำมาใช้ในการทดสอบโปรแกรม ที่จะเขียนขึ้นด้วยความสมบูรณ์ของข้อมูลที่ใช้ในการทดสอบโปรแกรมมีความสำคัญ มาก เนื่องจากจะเป็นสิ่งบ่งบอกถึงความถูกต้องของโปรแกรมที่พัฒนาขึ้น ว่ามี ความถูกต้องครอบคลุมข้อมูลนำเข้าทุกรูปแบบ โดยตรวจสอบว่ามีข้อมูลนำเข้ารูป แบบใดที่โปรแกรมไม่สามารถรองรับได้ เช่น ข้อมูลไม่อยู่ในช่วงที่ถูกต้อง และ ข้อมูลที่รับเข้าเป็นตัวเลขแต่ผู้ใช้ป้อนค่าเป็นตัวอักษร
7.1.4 การทดสอบโปรแกรม
หลังจากได้เขียนโปรแกรมและเตรียมข้อมูลสำหรับทดสอบอย่างครบถ้วนแล้ว ขั้นตอน ทดสอบโปรแกรมก็จะสามารถดำเนินการได้ ถ้าหากว่าโปรแกรมที่พัฒนาขึ้นมีความซับ ซ้อนไม่มากนัก นักเขียนโปรแกรมสามารถทำการทดสอบโดยรับโปรแกรม ป้อนข้อมูลที ละชุด และตรวจสอบความถูกต้องของผลลัพธ์ที่ได้ ซึ่งเป็นวิธีที่ง่านและเหมาะ สำหรับผู้เริ่มต้นฝึกหัดการเขียนโปรแกรม เนื่องจากสามารถทดสอบโปรแกรมได้ อย่างรวดเร็ว ในบางครั้งนักเขียนโปรแกรมอาจต้องใช้โปรแกรมเฉพาะเพื่อทำการ รันโปรแกรมที่พัฒนาขึ้น และทดสอบกับชุดข้อมูลทดสอบอย่างอัตโนมัติ
7.1.5 การจัดทำเอกสารประกอบโปรแกรม
ขั้นตอนสุดท้ายหลังจากที่ได้ทดสอบจนแน่ใจว่าโปรแกรมทำงานได้ถูกต้องกับชุด ข้อมูลทดสอบทั้งหมดแล้ว คือการจัดทำเอกสารประกอบ ในขั้นตอนนี้นักเขียน โปรแกรมจะต้องรวบรวมรายละเอียดทั้งหมดในระหว่างการพัฒนาโปรแกรม เช่น ราย ละเอียดของปัญหาที่ได้ทำการวิเคราะห์ไว้ ข้อมูลออกที่ต้องการ ข้อมูลเข้าที่ เป็นไปได้ทั้งหมด วิธีการประมวลผลเพื่อแก้ปัญหารหัสลำลองหรือผังงานที่ได้ รับการปรับปรุงแล้ว และสอดคล้องกับโปรแกรมที่ได้พัฒนาขึ้น ภาษาที่ใช้ คุณลักษณะของเครื่องคอมพิวเตอร์ และรุ่นของระบบปฏิบัติการที่โปรแกรมทำงาน ด้วย ชุดข้อมูลทดสอบ และผลการทดสอบโปรแกรม โดยนำรายละเอียดทั้งหมดนี้ มาจัด ทำเป็นรายงานหรือเอกสาร เพื่อจัดเก็บควบคู่กับตัวโปรแกรมต้นฉบับที่พัฒนา ขึ้น สำหรับใช้อ้างอิงในอนาคตเมื่อต้องการแก้ไข หรือพัฒนาโปรแกรมต่อไป นอก จากนี้ควรมีการจัดทำคู่มือสำหรับผู้ใช้ ซึ่งอธิบายขั้นตอนในการใช้งาน โปรแกรม เพื่อให้ผู้ใช้เข้าใจวิธีใช้งานอย่างถูกต้องและรวดเร็ว
ในบทนี้จะได้อธิบายถึงรายละเอียดในขั้นตอนการเขียนโปรแกรม จากรหัสลำลองหรือผังงาน และภาษาโปรแกรมคอมพิวเตอร์ต่างๆต่อไป
Posted in: บทที่7 การพัฒนาโปรแกรม

7.2 ภาษาโปรแกรมคอมพิวเตอร์

Published กรกฎาคม 17, 2012 by anttawiporn
ภาษาโปรแกรมคอมพิวเตอร์
การแก้ปัญหาด้วยคอมพิวเตอร์นั้น หลังจากที่ได้วิเคราะห์ปัญหาจนได้ขั้นตอนวิธีในการแก้ปัญหา ซึ่งอาจจะอยู่ในรูปแบบรหัสลำลอง หรือผังงาน ขั้นตอนต่อไปคือการเขียนโปรแกรมคอมพิวเตอร์ขึ้นเพื่อแก้ปัญหาตามขั้นตอนที่ ได้วางแผนไว้ แต่เนื่องจากคอมพิวเตอร์จะรับรู้คำสั่งที่เป็นภาษาเครื่องเท่านั้นและมนุษย์ ไม่สามารถเขียนโปรแกรมภาษาเครื่องได้โดยตรง เนื่องจากไม่สะดวก ยากต่อการทำความเข้า จึงได้มีการสร้างภาษาคอมพิวเตอร์ระดับสูงขึ้นมาเพื่อให้ง่ายต่อการเขียน โปรแกรม ผู้เขียนโปรแกรมไม่จำเป็นต้องเรียนรู้การทำงาน และโครงสร้างภายในของเครื่องคอมพิวเตอร์ ก็สามารถเขียนโปรแกรมได้โดยต้องผ่านการแปลให้เป็นภาษาเครื่องก่อนที่จะใช้ สั่งงานคอมพิวเตอร์ได้
7.2.1 ภาษาเชิงกระบวนความ(procedural languages)
โปรแกรมคอมพิวเตอร์ที่เขียนด้วยภาษาเชิงกระบวนความมีลักษณะการทำงานตามลำดับ ของคำสั่ง จากคำสั่งแรกจนถึงคำสั่งสุดท้าย และบางคำสั่งอาจจะถูกทำซ้ำ หรือบางคำสั่งอาจจะไม่ถูกกระทำเลยขึ้นอยู่กับเงื่อนไขในโปรแกรม ภาษาในกลุ่มนี้เหมาะสำหรับการเริ่มต้นทำความเข้าใจกับการเขียนโปรแกรม คอมพิวเตอร์ เนื่องจากช่วยให้ผู้เรียนรู้จักการคิดอย่างเป็นระบบ อันเป็นพื้นฐานสำคัญในการเขียนโปรแกรมภาษาอื่น นอกจากนี้ในภาษาโปรแกรมประเภทอื่นก็จะยังมีรูปแบบการทำงานเชิงกระบวนความแฝง อยู่ภายในด้วยเสมอ การใช้งานภาษาในกลุ่มนี้ เช่น งานคำนวณทางวิทยาศาสตร์อาจเลือกใช้ภาษาฟอร์แทรน(FORTRAN) งานประมวลผลข้อมูลทางธุรกิจการเงินหรือธนาคารอาจเลือกใช้ภาษาโคบอล (COBOL)หรือภาษาอาร์พีจี (RPG) การเขียนโปรแกรมควบคุมการทำงานของระบบคอมพิวเตอร์มักเลือกใช้ภาษาซีเนื่อง จากภาษาเครื่องที่ได้จะทำงานได้รวดเร็ว หรือการเรียนการสอนการโปรแกรมเชิงกระบวนความอาจเลือกใช้ภาษาปาสคาล (Pascal) หรือภาษาซี เป็นต้น

       7.2.2 ภาษาเชิงวัตถุ(Object-Oriented Languages)
ภาษาเชิงวัตถุจะอำนวยความสะดวกให้กับผู้เขียนโปรแกรมในการพัฒนาโปรแกรมที่ ใหญ่และซับซ้อนได้เป็นอย่างดี อีกทั้งยังสามารถใช้เขียนโปรแกรมในลักษณะเดียวกับภาษาเชิงกระบวนความได้เช่น กัน ภาษาในกลุมนี้ เช่น ภาษาจาวา (Java) ภาษาซีชาร์ป (C#) และภาษาซีพลัสพลัส (C++)รูปที่ 7.5 แสดงตัวอย่างโปรแกรมภาษาซีพลัสพลัสที่ให้ผู้เล่นทายตัวเลขที่โปรแกรมสุ่ม ขึ้นมาหนึ่งตัว

7.2.3ภาษาอื่นๆ1) โฟร์ทจีแอล (fourth-generation languages: 4GLs) เป็นกลุ่มของภาษาที่แตกต่างจากภาษาเชิงกระบวนความ ที่เน้นให้ผู้ใช้สามารถเข้าถึงข้อมูลในฐานข้อมูลได้โดยง่าย ภาษาจะมีความคล้ายคลึงกับภาษาอังกฤษที่ใช้กันอยู่ ตัวอย่างของภาษา 4GL เช่น ภาษาเอสคิวแอล (SQL)
2) เอชทีเอ็มแอล (Hypertext Markup Language: HTML ) เป็นภาษาที่ใช้จัดรูปแบบการแสดงผลของข้อความและรูปภาพ รวมถึงสื่อประสมบนหน้าเว็บ ดังนั้นเอชทีเอ็มแอลจึงไม่ได้ถูกจัดเป็นภาษาที่ใช้ในการเขียนโปรแกรมอย่าง แท้จริง แต่เป็นการกำหนดวิธีการในการแสดงผล เอชทีเอ็มแอลจะใช้แท็ก (tags) เป็นตัวกำหนดว่าส่วนใดในเอกสารจะให้แสดงผลอย่างไร รูปที่ 7.7 (ก) แสดงตัวอย่างของภาษาเอชทีเอ็มแอลที่ใช้ในการสร้างเว็บเพจในรูปที่ 7.7 (ข)


7.3 การโปรแกรมด้วยภาษาซี




7.3 การโปรแกรมด้วยภาษาซี
ในบทนี้จะได้แนะนำให้รู้จักกับภาษาซี ซึ่งเป็นภาษาที่เขียนเป็นแบบโครง สร้าง และเป็นภาษาที่ใช้เป็นพื้นฐานในการเรียนรู้การเขียนโปรแกรมเชิงกระบวน ความได้เป็นอย่างดี
7.3.1 โครงสร้างของภาษาซี
โครงสร้างพื้นฐานของโปรแกรมภาษาซีจะต้องประกอบด้วยฟังก์ชันอย่างน้อย 1 ฟังก์ชัน คือ ฟังก์ชัน main( ) ซึ่งมีรูปแบบดังรูปที่ 7.8

รูปที่ 7.8 โครงสร้างพื้นฐานของโปรแกรมภาษาซี
ฟังก์ชัน main( ) ประกอบด้วย 3 ส่วนหลัก คือ
1) ส่วนหัวของฟังก์ชัน ในบรรทัดที่ 1 ประกอบด้วย ชนิด ข้อมูล ชื่อฟังก์ชัน main ตามด้วยเครื่องหมาย ( และเครื่องหมาย ) ตาม ลำดับ สำหรับชนิดข้อมูล เป็นการระบุว่าฟังก์ชันนี้จะส่งค่ากลับไปให้กับ ฟังก์ชันผู้เรียกเป็นข้อมูลชนิดใด โดยทั่วไปแล้วสำหรับฟังก์ชัน main ( ) จะส่งค่ากลับเป็นชนิดข้อมูลจำนวนเต็มหรือ int
2) ส่วนการประกาศตัวแปร ในบรรทัดที่ 2 ใช้สำหรับประกาศตัวแปรชนิดต่างๆ เพื่อเก็บข้อมูลระหว่างการประมวลผล
3) ส่วนคำสั่ง ในบรรทัดที่ 3 ประกอบด้วยคำสั่งต่างๆ ซึ่งอาจรวมถึงการเรียกใช้ฟังก์ชันอื่นได้ด้วย
ส่วนประกอบตัวแปรและส่วนคำสั่งจะต้องเขียนอยู่ระหว่างเครื่องหมาย { และเครื่องหมา } เสมอทั้งสองส่วนนี้ใช้สำหรับนิยามการทำงานของฟังก์ชัน main ( ) และคำสั่งทุกคำสั่งในภาษาซีจะต้องปิดท้ายเครื่องหมาย ; (semicolon) เสมอ
7.3.2 องค์ประกอบของภาษาซี
ในที่นี้จะได้อธิบายองค์ประกอบพื้นฐานของภาษาซีจากตัวอย่างของโปรแกรมในรูป ที่ 7.10 ซึ่งเป็นโปรแกรมที่พัฒนามาจากผังงานในตัวอย่างที่ 6.9 โดยเพิ่มการ นับจำนวนครั้งของการทายทั้งหมดด้วย (รูปที่ 7.9) แสดงผังงานที่สอดคล้องกับ โปรแกรมในรูปที่ 7.10)

- การประกาศรวมแฟ้มส่วนหัว (header file)

การประกาศรวมแฟ้มส่วนหัวดีงแสดงในบรรทัดที่ 1 และ 2 เป็นการรวมเอาฟังก์ชัน มาตรฐานของภาษาซีเข้ามาร่วมใช้งานกับโปรแกรมที่เขียนขึ้น ทำให้นักเขียน โปรแกรมสามารถเรียกใช้ฟังก์ชันมาตรฐานที่ภาษาซีเตรียมไว้ให้ ได้ เช่น ฟังก์ชัน printf ( ) และ scanf ( ) เป็นต้น
- การประกาศตัวแปร (variable declaration)

ในบรรทัดที่ 6 ถึง 8 เป็นการประกาศตัวแปร ซึ่งเป็นข้อกำหนดของภาษาซีที่ต้องมีการประกาศตัวแปร ไว้ที่ตอนต้นของฟังก์ชัน ก่อนที่จะสามารถใช้งานตัวแปรเหล่านั้นได้ ในที่นี้ มีการประกาศตัวแปร target, number และ no_of_guesses เป็นชนิดจำนวน เต็ม (int) สังเกตว่ารูปแบบของการประกาศตัว แปร คือ data_type identification_name;
ซึ่ง data_type เป็นชนิดของข้อมูล และ identification_name เป็นชื่อตัวแปรที่ กำหนดขึ้นให้มีชนิดตามที่ระบุ นอกจากนี้ยังสามารถกำหนดค่าเริ่มต้นให้กับตัว แปรที่เพิ่งจะประกาศขึ้นได้เลย ดังเช่นที่กำหนดค่า 1 .ให้กับตัว แปร no_of_guesses ในบรรทัดที่ 8
- การรับข้อมูลเข้า

ในบรรทัดที่ 10,12 และ 20 เป็นการเรียกใช้ฟังก์ชัน scanf ( ) ในการรับข้อมูลเข้า โดยต้องมีการระบุ พารามิเตอร์ คือ ตัวแรกเป็นสาย อักขระของการกำหนดรูปแบบของข้อมูลเข้าที่ต้องการรับ ในที่นี้คือ “%d” หมาย ถึงว่าต้องการรับข้อมูลเข้าที่อยู่ในรูปแบบจำนวนเต็ม และตัวที่สองเป็น ตำแหน่งในหน่วยความจำของตัวแปรที่ต้องการใช้เก็บค่าที่รับเข้ามา สังเกตว่า ภาษาซีใช้เครื่องหมาย & นำหน้าชื่อตัวแปร เป็นการอ้างถึงตำแหน่งในหน่วยความจำของตัวแปรนั้น
พารามิเตอร์ 
พารามิเตอร์ (parameter) หมายถึง ชื่อที่ถูกอ้างถึงในส่วนหัวของฟังก์ชัน หรือโปรแกรม ย่อย ซึ่งจะถูกแทนที่ด้วยค่าที่ฟังก์ชันผู้เรียกส่งผ่านมาให้ในขณะที่ทีการ เรียกใช้ฟังก์ชันหรือโปรแกรมย่อยนั้นๆ
- การพิมพ์ผลลัพธ์

ในบรรทัดที่ 11,16,18 และ 19 เป็นการเรียกฟังก์ชัน printf ( ) เพื่อพิมพ์ข้อความออกทางจอภาพซึ่งเราสามารถกำหนดข้อความอยู่ภายในเครื่อง หมายอัญประกาศให้เป็นพารามิเตอร์ของฟังก์ชัน printf ( ) ได้เลย

สำหรับในบรรทัดที่ 23 จะมีการพิมพ์ค่าของตัวแปรชนิดจำนวน เต็ม no_of_quesses ด้วย โดยจะต้องระบุรูปแบบข้อมูลของตัวแปรที่ต้องการให้ พิมพ์ภายในข้อความที่เป็นพารามิเตอร์ตัวแรกด้วย ในที่นี้ตัว แปร no_of_quesses เป็นชนิด int ซึ่งจะใช้รูปแบบกำหนดการพิมพ์คือ “%d” ใน ลักษณะเดียวกันกับฟังก์ชัน scanf ( ) นั่นเอง
- คำสั่งควบคุมการทำงานแบบวนซ้ำ

คำสั่ง while เป็นคำสั่งเพื่อควบคุมว่าชุดคำสั่งภายใต้คำ สั่ง while (คือ ตั้งแต่บรรทัดที่ 14 ถึง 22) จะถูกวนทำซ้ำอีกหรือไม่ โดย เมื่อโปรแกรมทำงานมาถึงบรรทัดที่ 13 จะตรวจสอบก่อนว่าเงื่อนไขเป็นจริงหรือ ไม่ ในที่นี้คือตรวจสอบว่าค่าของตัวแปร number ไม่เท่ากันกับค่าของตัว แปร target หรือไม่ ถ้าเป็นจริง ก็จะไปทำงานตามคำสั่งภายในบรรทัดดังกล่าว หนึ่งรอบ ก่อนที่จะย้อนกลับไปตรวจสอบเงื่อนไขอีกครั้ง ถ้าเงื่อนไขเป็น เท็จ ก็จะไปทำงานในบรรทัดที่ 23 ต่อไป
- คำสั่งกำหนดค่าให้กับตัวแปร

ในบรรทัดที่ 21 เป็นการกำหนดค่าใหม่ให้กับตัวแปร no_of_quesses โดยใช้เครื่องหมายกำหนดค่า ( = ) ซึ่งเป็นการกำหนดให้ตัวแปรที่อยู่ทางซ้ายของเครื่องหมายกำหนดค่า มีค่า เท่ากับค่าของนิพจน์ทางขวาของเครื่องหมายกำหนดค่า ซึ่งในที่นี้เป็นการเพิ่ม ค่าของตัวแปร no_of_quesses ขึ้นอีก 1 นั่นเอง
ภาษาซีที่ใช้นิพจน์ทางคณิตศาสตร์เพื่อคำนวณและเปรียบเทียบ นิพจน์ประกอบ ด้วยตัวถูกดำเนินการ (operand) และตัวดำเนินการ (operator) ที่สามารถถูกลด รูปหรือถูกประเมินให้เป็นค่าทางคณิตศาสตร์เพียงค่าเดียวได้ เช่น 2*5 เป็น นิพจน์ เนื่องจากสามารถหาค่าได้เป็น 10 ตัวดำเนินการในภาษาซีมีหลายประเภท ดังตารางที่ 7.1 แสดงความหมายและตัวอย่าง การใช้งานตัวดำเนินการในภาษาซี
คำสั่ง if-else ในบรรทัดที่ 15 ถึง 18 เป็นการเลือกว่าจะทำงานตามคำสั่งภายใต้ if หรือภายใต้ else แล้วแต่เงื่อนไขที่อยู่หลัง if ในบรรทัดที่ 15 โดยถ้าเงื่อนไขเป็น จริง จะทำงานภายใต้ if นั่นคือคำสั่งในบรรทัดที่ 16 เท่านั้น แล้วจะข้ามไป ทำงานในบรรทัดที่ 19 เลย แต่ถ้าเงื่อนไขในบรรทัดที่ 15 เป็นเท็จ ก็จะข้ามคำ สั่งภายใต้ if ไปทำงานที่คำสั่งภายใต้ else ในบรรทัดที่ 18 เท่านั้น ก่อน ที่จะทำงานในบรรทัดที่ 19 ต่อไป
- คำสั่ง return

ในบรรทัดที่ 25 คำสั่ง return เป็นการจบการทำงานของฟังก์ชัน แล้วส่งค่าที่ ระบุ (คือค่า 0 ) กลับไปให้กับฟังก์ชันที่เรียกมา สำหรับโปรแกรมภาษาซีที่ถูกเรียกให้ทำงาน จากระบบปฏิบัติการนั้น เนื่องจากระบบปฏิบัติการเป็นผู้เรียกให้ ฟังก์ชัน main ( ) ในโปรแกรมทำงาน ดังนั้นเมื่อโปรแกรมทำงานเสร็จสิ้นลง ฟังก์ชัน main ( ) จึงส่งค่า 0 ไปให้กับระบบปฏิบัติการ

7.4 การพัฒนาโครงงานคอมพิวเตอร์


โครงงานคอมพิวเตอร์เป็นการนำเอาความรู้ในด้านการเขียนโปรแกรม มาใช้ร่วมกับอุปกรณ์คอมพิวเตอร์
รวมถึงอุปกรณ์อื่นที่เกี่ยวข้อง เพื่อผลิตผลงานสำหรับแก้ปัญหา หรือนำผลงานมาประยุกต์ในงานจริง
นักเรียนจะต้องใช้ความรู้และประสบการณ์ เพื่อวางแผนการพัฒนา โครงงาน โดยอาจขอคำปรึกษาจากอาจารย์
ผู้สอน หรือผู้ทรงคุณวุฒิอื่น เป้าหมายสูงสุดของการจัดทำโครงงานคือ การที่โครงงานได้ถูกนำไปใช้งานจริง
และก่อให้เกิดประโยชน์ในชีวิตจริงของผู้นำไปใช้
ในการเลือกหัวข้อโครงงานนั้นผู้พัฒนาอาจเริ่มจากการใช้ความคิดสร้างสรรค์ ร่วมกับประสบการณ์
ในการคิดค้นถึงสิ่งที่เป็นปัญหา และความเป็นไปได้ในการนำเอาระบบคอมพิวเตอร์มาช่วยงาน โดยทั่วไปแล้ว
โครงงานคอมพิวเตอร์สามารถแบ่งออกได้เป็น 5 ประเภท คือ
1. โครงงานพัฒนาสื่อเพื่อการศึกษา
เป็นการสร้างบทเรียนที่อาจมีแบบฝึกหัดหรือคำถามเพื่อทดสอบด้วย
2.โครงงานพัฒนาเครื่องมือเป็นการพัฒนาโปรแกรมช่วยงานในด้านต่างๆ
3. โครงงานจำลองทฤษฎีเป็นการพัฒนาโปรแกรมเพื่อจำลองการทดลองในด้านต่างๆที่ไม่สามารถทดลองด้วยสถานการณ์จริงได้
4.โครงงานประยุกต์เป็นการนำเอาคอมพิวเตอร์มาประยุกต์ร่วมกับอุปกรณ์อื่นในการประดิษฐ์สิ่งของหรือปรับปรุง
เครื่องมือที่มีอยู่เดิมให้มีประสิทธิภาพสูงขึ้น
5.โครงงานพัฒนาเกมเป็นการสร้างเกมเพื่อการศึกษาหรือความบันเทิง

หลักการแก้ไขปัญหาด้วยคอมพิวเตอร์


บทที่ เรื่องหลักการแก้ปัญหาด้วยคอมพิวเตอร์

1.อธิบายหลักการแก้ปัญหาด้วยคอมพิวเตอร์
2.วิเคราะห์และกำหนดรายละเอียดของปัญหา
3.ใช้ภาษาโปรแกรมคอมพิวเตอร์และเครื่องมือต่างๆในการแก้ปัญหา
4.ประยุกต์หลักการไปใช้แก้ปัญหาในรูปแบบที่แตกต่างกัน

  6.1 หลักการแก้ปัญหา

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

ตัวอย่างที่ 6.1 เกมทายใจ

เกมทายใจคือเกมที่จะให้ผู้เล่นทายตัวเลข 3 ตัวโดยต้องทายถูกตัวเลขและตำแหน่งซึ่งต้องใช้ผู้เล่น 2 คน ผู้เล่นคนที่หนึ่งกำหนดตัวเลข 3 ตัวที่ไม่ซ้ำกันโดยเลือกจาตัวเลข 1-9 และผู้เล่นคนที่หนึ่งต้องแจ้งผลการทายว่าตัวเลขที่ทายมานั้นถูกต้องกี่ตัว และถูกต้องกี่ตำแหน่ง ตัวอย่างเช่น ถ้าตัวเลขที่กำหนดไว้เป็น 8 1 5 และผู้เล่นคนที่สองทายว่า 1 2 3 ผู้เล่นคนที่หนึ่งต้องแจ้งว่าตัวเลขที่ทายนั้นถูกเพียงตัวเดียวและไม่มามีตัวใดถูกตำแหน่ง
ตัวอย่างการเล่นเกมทายใจ

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



การแก้ปัญหาโดยใช้รูปแบบของการใช้เหตุผลประกอบกับการแยกคำตอบที่ไม่ต้องการ จะขึ้นอยู่กับเงื่อนไขของปัญหา ในบางปัญหาวิธีการนี้อาจไม่สามารถหาคำตอบสุดท้ายได้ แต่อาจช่วยจำกัดจำนวนคำตอบที่เป็นไปได้ให้น้อยลง นอกจากวิธีการแก้ปัญหาที่ยกตัวอย่างมาซึ่งได้แก่ การลองผิดลองถูก การใช้เหตุผลและการใช้วิธีแยกคำตอบที่ไม่ต้องการ ยังมีวิธีการแก้ปัญหาอีกมากมายที่สามารถเลือกใช้ให้เหมาะสมกับตัวปัญหาและประสบการณ์ของผู้แก้ปัญหาเอง อย่างไรก็ตาม เมื่อพิจารณาในภาพรวมจะพบว่า วิธีการเหล่านี้ล้วนมีขั้นตอนหลักที่คล้ายคลึงกัน ซึ่งประกอบด้วย 4 ขั้นตอน ขั้นตอนแรกของการแก้ปัญหาใดๆ ก็ตาม จะต้องเริ่มต้นด้วยการทำความเข้าใจกับปัญหาให้ถ่องแท้ เพื่อวิเคราะห์เงื่อนไขของปัญหาให้ชัดเจน รวมไปถึงข้อมูลที่จำเป็นในการแก้ปัญหาและรูปแบบหรือลักษณะของผลลัพธ์หรือคำตอบที่ต้องการโดยเหล่านี้จะเป็นประโยชน์ในการเลือกวิธีการแก้ปัญหาต่อไปกล่าวโดยสรุป การวิเคราะห์และกำหนดรายละเอียดของปัญหามีองค์ประกอบดังนี้
1.1 การระบุข้อมูลออก
1.2 การระบุข้อมูลเข้า
1.3 ราบละเอียดของปัญหา
1.1 การระบุข้อมูลออก
ข้อมูลออกหรือคำตอบ คือสิ่งที่โจทย์ต้องการในการแก้ปัญหาด้วยคอมพิวเตอร์จำเป็นต้องระบุให้ชัดเจนว่าสิ่งที่ต้องการให้เป็นผลลัพธ์ของปัญหาคืออะไร และต้องการให้แสดงออกในรูปแบบใด เช่น การประมวลผลข้อมูลการเบิกถอนเงินจากเครื่องเอทีเอ็ม ต้อมีการแสดงข้อมูลออกเป็นจำนวนเงินที่ถอนไป และจำนวนเงินคงเหลือในบัญชี อีกทั้งยังต้องออกแบบการจัดวางข้อมูลเหล่านี้เพื่อพิมพ์ลงในใบบันทึกรายการด้วย
1.2 การระบุข้อมูลเข้า
ข้อมูลเข้าคือ ข้อมูลเริ่มต้นหรือเงื่อนไขที่โจทย์กำหนดมาให้ตั้งแต่แรก ในการแก้ปัญหา ผู้แก้ปัญหาจะต้องใช้ข้อมูลเหล่านี้ในการประมวลผู้เพื่อให้ได้ผลลัพธ์ตามที่ต้องการ ตัวอย่างเช่น การเบิกถอนเงินด้วยบัตรเอทีเอ็มข้างต้น ผู้ถอนเงินต้องมีข้อมูลระบุตัวตนว่าเป็นเจ้าของบัญชีตัวจริง ได้แก่ บัตรเอทีเอ็ม และรหัสประจะตัว 4 หลักและยังต้องระบุข้อมูลให้ครบถ้วนว่าต้องการเบิกถอนจากบัญชีใดเป็นจำนวนเงินเท่าใด เป็นต้น ดังรูปที่ 6.3
 1.3 รายละเอียดของปัญหา
รายละเอียดของปัญหา คือ การพิจารณาความต้องการของปัญหา ตัวอย่างที่ 6.2 และ 6.3 ต่อไปนี้ แสดงรายละเอียดแต่ละขั้นตอนของตัวอย่างปัญหา
ตัวอย่างที่ 6.2 ให้แสดงการวิเคราะห์และกำหนดรายละเอียดของการหาค่าเฉลี่ยนของจำนวนเต็ม 5 จำนวนองค์ประกอบของขั้นตอนการวิเคราะห์และกำหนดรายละเอียดของปัญหาสามารถแสดงได้ดังนี้
ตัวอย่างที่ 6.3 ให้แสดงการวิเคราะห์และกำหนดรายละเอียดของโจทย์ต่อไปนี้ กำหนดตัวเลข 3 4 8 12 และ x ให้หาค่า x เมื่อค่าเฉลี่ยของจำนวนเต็มทั้ง 5 จำนวน มีค่าเป็น 10


องค์ประกอบของขั้นตอนการวิเคราะห์และกำหนดรายละเอียดของปัญหาสามารถแสดงได้ดังนี้

6.2 เครื่องมือที่ใช้ในการออกแบบและขั้นตอนวิธีในการแก้ปัญหา


เมื่อได้รายละเอียดเบื้องหลังของปัญหา รามทั้งวิธีการประมวลผลแล้ว ขั้นตอนต่อไปเป็นการตัดสินใจว่าจะใช้เครื่องมือใดในการแก้ปัญหา ถ้าหากเป็นปัญหาทั่งไปในชีวิตประจะวันหรือปัญหาทางคณิตศาสตร์ง่ายๆ ในตัวอย่าง 6.2 และ 6.3 อาจไม่ต้องใช้เครื่องมือพิเศษในการแก้ปัญหา แต่ใช้เพียงการคำนวนด้วยกระดาษทด หรือเครื่องคิดเลขก็สามารหาคำตอบได้แล้ว ตัวอย่างเครื่องมือในการแก้ปัญหา ดังรูปที่ 6.4

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

         การดำเนินการแก้ปัญหา  เป็นขั้นตอนการใช้โปรแกรมประยุกต์หรือเขียนโปรแกรมขึ้นเองโดยใช้ภาษาคอมพิวเตอร์ ซึ่งต้องอาศัยความเชี่ยวชาญเฉพาะในการใช้โปรแกรมหรือภาคอมพิวเตอร์นั้นๆ ข้นตอนนี้จะเสร็จได้เร็วหรืช้าขึ้นอยู่กับหลายปัจจัย เช่น ความชัดเจนและถูกต้องของวิธีแก้ปัญหาที่ได้ออกแบบไว้ และสามารถในการเขียนหรือใช้งานโปรแกรมหรือภาษาคอมพิวเตอร์ที่เลือก ในขั้นตอนนี้ผู้พัฒนาควรคำนึงถึงความยืดหยุ่นของแกรมที่ได้ออกแบบขึ้นด้วย เพื่อให้สามารถรองรับการเปลี่ยนแปลงที่อาจเกิดขึ้นในอนาคต เช่น การเปลี่ยนแปลงข้อมูลเข้า การเปลี่ยนรูปแบบของข้อมูลออกหรือวิธีการประมวลผลที่เปลี่ยนไป นอกจากนี้โปรแกรมควรต้องรองรับการขยายตัวในอนาคตได้อีกด้วยตัวอย่างการดำเนินการแก้ปัญหาโดยการเขียนโปรแกรม ในขั้นตอนเป็นการตรวจสอบเพื่อให้แน่นใจว่าวิธีการแก้ปัญหารวมโปรแกรมที่พัฒนาขึ้นให้ผลลัพธ์ถูกต้อง โดยต้องตรวจสอบว่าขั้นตอนวิธีที่สร้างขึ้นสอดคล้องกับรายละเอียดของปัญหาวิ่งได้แก่ข้อมูลเข้า และข้อมูลออกที่ได้ระบุไว้ อีกทั้งยังสามารถรองรับข้อมูลเข้าอื่นๆ ที่มีลักษณะเดียวกันได้หลังจากที่คบรอกรมทำงานได้ผลตามที่ต้องการแล้วอาจต้องมีการปรับปรุงให้วิธีการในการแก้ปัญหามีประสิทธิภาพที่สุด โดยยังคงความถูกต้องของผลลัพธ์เช่นเดิม ในขั้นตอนการปรับปรุงนี้ ควรจะมีทั้งการปรับปรุงขั้นตอนการทำงานของวิธีแก้ปัญหาให้ดีขึ้น และปรับโปรแกรมที่เขียนขึ้นให้มีเทคนิคการประมวลผลที่มีประสิทธิภาพขึ้น
 6.3 โครงสร้างการโปรแกรม
 ก่อนการเขียนโปรแกรม ผู้พัฒนาโปรแกรมจะต้องเลือกภาษาคอมพิวเตอร์ ที่จะนำมาใช้ช่วยงานโดยพิจารณาจากปัจจัยต่างๆ ในการทำงาน เช่น ลักษณะของปัญหา ความถนัดของนักเขียนโปรแกรม สภาพแวดล้อมในการทำงานของระบบคอมพิวเตอร์ เป็นต้น เนื่องจากในปัจจุบันมีภาษาคอมพิวเตอร์ให้เลือกได้หลายภาษา เช่น ภาษาปาสคาล ภาษาซี ภาษาจาวา และภาษาเดรนฟาย ถึงแม้แต่ละภาษาจะมีรูปแบบและหลักการในการสร้างงานที่แตกต่างกันแต่ทุกภาษาจะต้องมีโครงสร้างควบคุมหลักทั้ง 3 แบบ ได้แก่ โครงสร้างแบบลำดับ (sequential structure) โครงสร้างแบบทางเลือก (selection structure) และโครงสร้างแบบวนซ้ำ(repetition structure(sequential structure)โปรแกรมที่ทำงานเป็นขั้นตอนเพื่อแก้ปัญหาจะทำงานตามคำสั่งที่เขียนไว้ตามลำดับ ตั้งแต่คำสั่งแรกไปจนถึงคำสั่งสุดท้าย โดยที่คำสั่งในที่นี้อาจเป็นคำสั่งเดี่ยวๆ หรือเป็นคำสั่งเชิงซ้อนทีมีหลายคำสั่งย่อยประกอบกันในลักษณะเป็นโครงสร้างแบบทางเลือกหรือแบบวนซ้ำก็ได้โครงสร้างแบบเรียงลำดับเมื่อเขียนเป็นผังงาน จะมีลักษณะดังเช่นรูปที่ 6.9 และมีกระบวนการทำงานพื้นฐานอยู่ 3 ชนิด 
-การคำนวณ เป็นกระบวนการที่คอมพิวเตอร์ทำการคำนวณ ประมวลผล ซึ่งจะรวมไปถึงการกำหนดค่าให้กับตัวแปร เพื่อให้สามารถนำค่าของตัวแปรนั้นมาใช้ในภายหลังได้
- การรับข้อมูลเข้า เป็นกระบวนการรับข้อมูลจากอุปกรณ์ของหน่วยรับเข้า เช่น คีย์บอร์ด เพื่อนำค่าไปกำหนดให้กับตัวแปร และเก็บไว้ในหน่วยความจำ
- การส่งข้อมูลออก เป็นกระบวนการนำค่าของข้อมูลไปแสดงผลยังอุปกรณ์ของหน่วยส่งออก เช่น จอภาพหรือเครื่องพิมพ์ ข้อมูลที่จะส่งออกโดยทั่งไปจะเป็นค่าคงที่ หรือค่าของตัวแปร
ในการดำเนินการเพื่อแก้ปัญหาด้วยคอมพิวเตอร์ กระบวนการเหล่านี้ต้องถูกแปลงให้อยู่รูปของคำสั่งหลายคำสั่งประกอบกันเพื่อให้ทำงานตามขั้นตอนที่ได้ออกแบบไว้ เช่น กรบวนการการคำนวณในการเพิ่มค่าของตัวแปร counter ขึ้นอีกหนึ่ง จะใช้คำสั่ง ” counter < counter + 1  ” กระบวนการรับข้อมูลเข้าเพื่อเก็บไว้ในตัวแปร x จะใช้คำสั่ง  ” input x” และกระบวนการส่งข้อมูลออกไปยังจอภาพเพื่อแสดงผลของตัวแปร average จะใช้คำสั่ง “print avereage” เป็นต้น
 ปัญหาบางอย่างต้องการการตัดสินใจ เพื่อเลือกว่าจะใช้วิธีการใด โดยต้องมีการตรวจสอบว่าเงื่อนไขที่ใช้ในการตัดสินใจว่าเป็นจริงหรือเท็จ ถ้าเป็นจริงจะไปเลือกทำคำสั่งชุดหนึ่ง แต่ถ้าเป็นเท็จจะไปเลือกทำคำสั่งอีกชุดหนึ่ง ซึ่งชุดคำสั่งเหล่านี้จะประกอบด้วยโดตรงสร้างแบบลำดับนั่นเอง รูปที่ 6.11 แสดงผังงานของโครงสร้างแบบทางเลือก และรูปที่ 6.12 แสดงตัวอย่างของขั้นตอนวิธีที่ต้องมีการเลือกตัดสินใจในการเลือกพิมพ์ความมากกว่าออกมา
    โครงสร้างการทำงานแบบทางเลือกที่กล่าวมาแล้ว อาจเรียกว่ามีโครงสร้างของการทำงานแบบ if…then…else…  ซึ่งเป็นการเลือกทำแบบทางใดทางหนึ่ง เนื่องจากต้องมีการเลือกทำชุดคำสั่งใดชุดคำสั่งหนึ่งตามผลของเงื่อนไข แต่ในการเขียนโปรแกรมหรือผังงานเพื่อแก้ปัญหา นักเขียนโปรแกรมอาจไม่ต้องการทำงานใดๆ เมื่อผลของเงื่อนไขเป็นเท็จก็ได้ โดยผังงานจะมีลักษณะดังรูปที่ 6.13 ซึ่งเรียกว่ามีโครงสร้างของ
การทำงานแบบเลือกทำเพียงทางเดียว หรือ แบบ if..then…ในการแก้ปัญหาบางอย่างอาจต้องมีการทำงานในบางคำสั่งหรือชุดของคำสั่งซ้ำกันมากกว่าหนึ่งรอบขึ้นไป โครงสร้างแบบมีการวนซ้ำนี้ต้องมีการตัดสินใจร่วมอยู่ด้วยเสมอ เพื่อเป็นเงื่อนไขที่ตัดสินใจว่าเมื่อใดจะวนซ้ำ หรือเมื่อไรจะถึงเวลาหยุดวนซ้ำโดยทั่วไปผังงานของการวนว้ำจะมีลักษณะดังรูปที่ 6.14 หรือรูปที่ 6.15 โดยมีความแตกต่างกันคือ ในรูปที่  6.14 เป็นการวนซ้ำแบบที่ต้องตรวจสอบเงื่อนไขที่จะใช้วนซ้ำก่อนที่จะทำงานในชุดคำสั่งในโครงสร้างแบบวนซ้ำ เรียกว่า การวนซ้ำแบบ while ซึ่งจะสังเกตได้ว่าถ้าเงื่อนไขไม่เป็นจริงตั้งแต่แรก คำสั่งแบบโครงสร้างในการวนซ้ำจะไม่ถูกเรียกให้ทำงานเลยแต่สำหรับ 6.15 เป็นการวนซ้ำแบบมีการตรวจสอบเงื่อนไขที่จะให้วนซ้ำหลังจากที่ได้ทำงานตามชุดคำสั่ง ในโครงสร้างแบบวนซ้ำไปรอบหนึ่งแล้วเรียกว่า การวนว้ำแบบ until สำหรับตัวอย่างของการวนซ้ำ เช่น การรับค่าตัวเลขเข้ามาหลายค่า ในโครงสร้างเพื่อคำนวนหาผลรวม  ถือเป็นการวนซ้ำแบบ until สิ่งที่ควรระวังในการใช้งานขั้นตอนวิธีแบบมีการวนซ้ำคือ ต้องตรวจสอบว่าได้กำหนดเงื่อนไขอย่างรัดกุมและถูกต้อง มิเช่นนั้นแล้วอาจเกิดกรณีแบบวนซ้ำไม่รู้จบ