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

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

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

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


ประเภทของโครงงานคอมพิวเตอร์
โครงงานคอมพิวเตอร์ประกอบด้วย 5 ประเภท  คือ
 
  1.โครงงานพัฒนาสื่อเพื่อการศึกษา
  2.โครงงานพัฒนาเครื่องมือ
  3.โครงงานทดลองทฤษฎี  (จำลองทฤษฎี)
  4.โครงงานประยุกต์ใช้งาน
  5.โครงงานพัฒนาโปรแกรมประยุกต์ (หรือพัฒนาเกม)
  

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

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

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

  4.โครงงานการประยุกต์ใช้งาน
    โครงงานประยุกต์ใช้งาน  เป็นโครงงานที่พัฒนาซอฟต์แวร์  เพื่อนำมาประยุกต์ใช้งานจริงในชีวิตประจำวัน  ซึ่งจะพบว่าปัจจุบันได้พัฒนาซอฟต์แวร์สำหรับการประยุกต์ใช้งานด้านต่างๆ  มากมาย  เช่น  ซอฟต์แวร์สำหรับการออกแบบและตกแต่งภายใน  ในร้านขายวัสดุก่อสร้าง  ได้นำซอฟต์แวร์ประเภทนี้มาช่วยในการตัดสินใจให้แก่ลูกค้า  โดยจะสร้างเป็นการจำลองตามความต้องการของลูกค้าและลูกค้าก็จะเห็นภาพเสมือน จริงนั้น  ซึ่งสามารถปรับเปลี่ยนแก้ไขได้ในทันที  โครงงานประยุกต์ใช้งานจะเป็นการประดิษฐ์นวัตกรรมใหม่ๆ  หรือเป็นการพัฒนาปรับเปลี่ยนของเดิมให้มีประสิทธิภาพมากขึ้น
    ซอฟต์แวร์หรือฮาร์ดแวร์ประเภทโครงงานประยุกต์ใช้งานอย่างมากมายในปัจจุบันเพราะมนุษย์ต้องการความสะดวกและรวดเร็ว  นอกจากซอฟต์แวร์ที่พัฒนาขึ้นมาจะใช้กับเครื่องคอมพิวเตอร์แล้ว  ยังสามารถนำไปใช้กับอุปกรณ์อื่นๆ ได้อีก  เช่น  โทรศัพท์มือถือ เครื่องคอมพิวเตอร์แบบพกพา หรือพีดีเอ  ( PDA  :  Personal  Digital  Assistants )  ปาล์มคอมพิวเตอร์            ( Palm  Computer)   เป็นต้น
    โครงงานประยุกต์ใช้งานในชีวิตประจำวัน  เช่น  ซอฟต์แวร์การตรวจสอบสัญญาณโทรศัพท์มือถือ  ซอฟต์แวร์การออกแบบผลิตภัณฑ์  ซอฟต์แวร์การตรวจสอบบุคคล  เป็นต้น

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

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

องค์ประกอบเค้าโครงของโครงงาน

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

องค์ประกอบเค้าโครงของโครงงาน

8. วิธีดำเนินงาน  โดยระบุ
  8.1 วัสดุอุปกรณ์ที่ใช้
  8.2 คุณลักษณะของผลงาน
  8.3 เทคนิคที่ใช้ในการพัฒนา
  8.4 กระบวนการในการแก้ปัญหา
  8.5 วิธีการเก็บข้อมูล
  8.6 วิธีการพัฒนา
  8.7 การทดสอบ
  8.8 การนำเสนอผลงาน
  8.9 งบประมาณในการดำเนินโครงงาน
  9. แผนปฏิบัติงาน  ให้ระบุการปฏิบัติงานเป็นขั้นตอนตามลำดับ  และแต่ละขั้นตอนใช้เวลาเท่าไร
  10. ผลที่คาดว่าจะได้รับจากการจัดทำโครงงานนี้
  11. เอกสารอ้างอิงที่ใช้ในการศึกษาค้นคว้า  เพื่อนำมาจัดทำเป็นโครงงานนี้
โปรแกรมภาษาซี    การพัฒนาโปรแกรมคอมพิวเตอร์ บางคนก็ว่ายาก บางคนก็ว่าเป็นเรื่องสนุก หลายคนบอกว่า ขอเป็นแค่ผู้ใช้สนุกที่สุด แต่จะมีซักกี่คนที่จะมีใจรักที่จะก้าวไปบนถนนแห่งการพัฒนาฝีมือและฝึกฝนการ เขียนโปรแกรมด้วยตัวเอง เพื่อให้มีผู้ที่สนใจนำไปใช้งาน และเพิ่มประสิทธิ์ภาพในการทำงาน และ ความสะดวกสบายๆ ต่างๆมากขึ้น ว่าไปแล้วนักโปรแกรมเมอร์เหล่านี้ ก็ไม่แตกต่างจากผู้ที่ปิดทองหลังพระมากนัก เพราะหลายๆ โปรแกรมที่มีให้ใช้งานกันในปัจจุบัน จะมีใครทราบบ้างไหมว่า ผู้เขียนโปรแกรมเหล่านั้นมีใครกันบ้าง ดังนั้น ผู้ที่คิดจะก้าวมาเป็นนักพัฒนาโปรแกรมมืออาชีพ คงต้องอาศัยใจรักที่จะอยากจะพัฒนา และฝึกฝนฝืมือในการเป็นโปรแกมเมอร์มืออาชีพมาเป็นอันดับหนึ่ง สำหรับบทความนี้จะเริ่มต้นด้วยการสอนให้เข้าใจในหลักการพื้นฐานของการการ พัฒนาโปรแกรมในภาษาความรู้และความเข้าใจที่จำเป็นต่อการเป็นโปรแกรมเมอร์มืออาชีพในอนาคต เราลองเริ่มมาเรียนรู้กันอย่างคร่าวๆ กันเลยล่ะกัน โดยผู้เขียนจะอธิบายเป็นตอนๆ ทั้งหมด 8 ตอนด้วยกันได้แก่1. พื้นฐานโปรแกรมภาษา C (Introduction to C Programming)
2. การเขียนโปรแกรมทางเลือก (Selection Structures)
3. การเขียนโปรแกรมแบบ วนซ้ำ (Repetition & Loop)
4. ฟังก์ชัน และการเขียนโปรแกรมแยกเป็นโมดูล (Functions & Modular Programming)
5. ตารางอาเรย์ (Arrays)
6. ตัวแปรพอยเตอร์ (Pointers)
7. ตัวแปรสตริง (String)
8. โครงสร้างสตักเจอร์ (Structure)
1. พื้นฐานโปรแกรมภาษา C (Introduction to C Programming)
ก่อนอื่นของแนะนำพื้นฐานเกี่ยวกับคอมพิวเตอร์กันซักนิด ก่อนที่จะเริ่มเรียนรู้ภาษา กัน หน่วยสำคัญที่สุดของคอมพิวเตอร์ก็คือ หน่วยประมวลผลหรือที่เรียกกันว่า CPU โดยปกติ CPU จะมีภาษาของตัวเองที่เรียกว่า ภาษาเครื่อง (Machine Language) ซึ่งจะเป็นภาษาที่ประกอบไปด้วยเลขฐานสองมากมาย ดังนั้นการที่จะเขียนโปรแกรมควบคุมการทำงานของคอมพิวเตอร์ โดยใช้ภาษาเครื่องโดยตรงนั้นจึงทำได้ยาก จึงได้มีการพัฒนาตัวแปรภาษาเครื่องที่เรียกว่า โปรแกรมภาษาระดับสูงขึ้นมา หรือที่เรียกว่า High Level Languagesโดยภาษาในระดับสูงเหล่านี้ จะมีลักษณะรูปแบบการเขียน (Syntax) ที่ทำให้เข้าใจได้ง่ายต่อการสื่อสารกับผู้พัฒนา และถูกออกแบบมาให้ง่ายต่อการใช้งาน และจะเปลี่ยนคำสั่งจากผู้ใช้งาน ไปเป็นเป็นภาษาเครื่อง เพื่อที่จะควบคุมการทำงานของคอมพิวเตอร์ต่อไป ตัวอย่างของโปรแกรมภาษาระดับสูง ได้แก่ COBOL ใช้กันมากสำหรับโปรแกรมทางด้านธุรกิจ, Fortran ใช้กันมากสำหรับการพัฒนาโปรแกรมด้านวิทยาศาสตร์และวิศวกรรมศาสตร์ เพราะง่ายต่อการคำนวณ, Pascal มีใช้กันทั่วไป แต่เน้นสำหรับการพัฒนาเครื่องมือสำหรับการเรียนการสอน, C & C++ ใช้ทั่วไป ปัจจุบันมีผู้เลือกที่จะใช้กันอย่างแพร่หลาย, PROLOG เน้นหนักไปทางด้านงานประเภท AI และ JAVA ใช้ได้ทั่วไป ปัจจุบันเริ่มมีผู้หันมาสนใจกันมากและเพิ่มขึ้นอย่างรวดเร็วคราวนี้เราลองมาเตรียมตัวกันซักนิก ก่อนที่จะลงมือพัฒนาโปรแกรมคอมพิวเตอร์ ขั้นแรก เราต้องศึกษารูปแบบความต้องการของโปรแกรมที่จะพัฒนา จากนั้นก็วิเคราะห์ถึงปัญหาตลอดจนวิธีการแก้ปัญหา จากนั้นจึงนำเอาความคิดในการแก้ปัญหาอย่างเป็นขั้นตอน ไปเขียนในรูปแบบของโปรแกรมภาษาในระดับสูง ซึ่งจะอยู่ในรูปแบบของ Source Program หรือ Source Codeจากนั้นเราก็จะใช้ Complier ของภาษาที่เราเลือก มาทำการ Compile Source code หรือกล่าวง่ายๆ คือแปลงSource code ของเราให้เป็นภาษาเครื่องนั่นเอง ซึ่งในขั้นตอนนี้ ผลที่ได้ เราจะเรียกว่า Object code จากนั้นComplier ก็จะทำการ Link หรือเชื่อม Object code เข้ากับฟังก์ชันการทำงานใน Libraries ต่างๆ ที่จำเป็นต่อการใช้งาน แล้วนำไปไว้ในหน่วยความจำ แล้วเราก็จะสามารถ Run เพื่อดูผลของการทำงานโปรแกรมได้ หากโปรแกรมมีข้อผิดพลาด เราก็จะทำการแก้ หรือที่เรียกกันในภาษาคอมพิวเตอร์ว่า การ Debug นั่นเองภาษา เป็นโปรแกรมภาษาระดับสูง ถูกพัฒนาขึ้นในปี 1972 ที่ AT&T Bell Lab เราสามารถใช้ภาษา มาเขียนเป็นคำสั่งต่างๆ ที่คอมพิวเตอร์สามารถเข้าใจได้ และกลุ่มของคำสั่งเหล่านี้ เราก็เรียกกันว่า อัลกอริธึม ได้มีผู้ให้คำจำกัดความของคำว่า อัลกอริธึม ว่าเป็น “A precise description of a step-by-step process that is guaranteed to terminate after a finite number of steps with a correct answer for every particular instance of an algorithmic problem that may occur.” สำหรับCompiler ภาษา ที่มีในปัจจุบัน มี 2 ค่ายใหญ่ๆ ที่มีผู้คนสนใจใช้กันมากได้แก่ Microsoft และ Borlandการใช้งาน Compiler ทั้งสองตัวนี้ สามารถเรียนรู้ได้ไม่ยากนัก เราจึงจะมาเริ่มต้นที่การเขียนโปรแกรมในภาษากันเลย เราลองมาเริ่มจากตัวอย่างการเขียน ภาษา Cแบบ ง่ายๆ กันก่อนกับโปรแกรม Hello World
#include
main()
{
printf("Hello World  !! ");
}
บรรทัดแรก #include เป็นการบอกว่าให้ทำการรวมHeader file ที่ชื่อว่า stdio.h (.h = header) ซึ่งเป็น headerที่เกี่ยวข้องกับการรับและให้ข้อมูล (Standard Input Output) นอกจาก stdio.h แล้ว ก็ยังมี Header อื่นๆ ที่ผู้พัฒนาสามารถที่จะเรียกใช้งาน Function ที่จำเป็นจากHeader นั้นๆ ได้ อาทิเช่น5519รู้จัก Header File กันไปล่ะ คราวนี้ เราลองมาดูบรรทัดถัดไปกัน ก็คือ ฟังก์ชัน main() จะเป็นจุดเริ่มต้นของโปรแกรม และโปรแกรมทุกโปรแกรมในภาษา จะต้องมี Function main() นี้ โดยส่วนมาก เราจะใช้Function main() ในการกำหนดค่าเริ่มต้นต่างๆ ของโปรแกรม จากนั้นจึงเข้าสู่ Function ต่างๆ ที่ผู้พัฒนา ได้กำหนดขึ้นไว้บรรทัดถัดมาจะเป็นเครื่องหมาย ซึ่งเป็นเครื่องหมายบ่งบอกขอบเขตของ Function โดยขอบเขตของฟังก์ชัน จะเปิดและปิดโดยใช้เครื่องหมายเปิด และเครื่องหมายปิด ตามลำดับ ภายใน Function main()จะมีคำสั่ง (Statement) printf("Hello World !! "); ซึ่งprintf เป็น Function ในภาษา ทำหน้าที่ให้โปรแกรม ทำการแสดงผลออกทางหน้าจอว่า Hello World  !! และทุกครั้ง ผู้พัฒนาจะต้องทำการจบคำสั่งหรือ Statementด้วยเครื่องหมาย semi-colon ;
ดังนั้นรูปแบบของการเขียนโปรแกรม จึงเขียนออกมาในรูปแบบดังนี้// ข้อความที่อยู่ข้างหลังเครื่องหมาย // จะเป็นคำอธิบายโปรแกรม#include
void main()
{
constant declarations; // การกำหนดค่าคงที่ต่างๆvariable declarations; // การกำหนดตัวแปรต่างๆexecutable statements; // คำสั่งการทำงานของโปรแกรม}
การอ่านข้อมูลและการแสดงผล (Input & Output)
รูปแบบการใช้งานฟังก์ชัน printf จะทำการพิมพ์ในรูปแบบที่ เริ่มต้นด้วย Format ที่ต้องการจะพิมพ์ และตามด้วยตัวแปรที่ต้องการพิมพ์ ดังนี้printf( const char *format [, argument]... );
สำหรับการนำข้อมูลเข้าก็เช่นกัน จะใช้ฟังก์ชัน scanfซึ่งจะเป็นฟังก์ชันสำหรับอ่านข้อมูลจากคีย์บอร์ด และจะนำข้อมูลที่ User ทำการพิมพ์ไปเก็บไว้ใน argumentโดยแต่ละ argument จะต้องเป็นตัวแปรที่เรียกว่าpointer (รายละเอียดจะได้กล่าวต่อไป) และมีชนิดที่ตัวแปรที่สัมพันธ์กับที่ได้กำหนดไว้ใน Format รูปแบบการใช้งานของฟังก์ชัน scanf สามารถเขียนได้ดังนี้scanf( const char *format [,argument]... );
  7.2  การพัฒนาโปรแกรม     โปรแกรม หมายถึงชุดของคำสั่งที่ใช้สำหรับสั่งให้เครื่องคอมพิวเตอร์ทำงาน เพื่อให้ได้ผลลัพธ์ตามที่ต้องการ โดยอาศัยข้อมูลที่กำหนดให้

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

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

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


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

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


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

ปัญหา 

การออกแบบวิธีในการแก้ปัญหาเป็นกระบวนการที่ต้องอาศัยประสบการณ์ ความรู้ความเข้าใจในปัญหา และความคิดอย่างมรเหตุผลและเป็นขั้นตอนแล้ว ยังต้องอาศัยเครื่องมือที่จะช่วยถ่ายทอดความคิดออกมาเป็นลายลักษณ์อักษร หรือเป็นแผนภาพซึ้งจะช่วยให้สามารถแก้ปัญหาได้ดีโดยเพาะปัญหาที่ยุ่งยากซับซ้อนอีกทั้งยังเป็นแนวทางให้ผู้ที่เกี่ยวข้องหรือผู้ดำเนินการปรับปรุงในอนาคตเข้าในวิธีแก้ปัญหาที่เราพัฒนาขึ้นได้ง่าย เครื่องมือที่ใช้ในการอกแบบวิธีแก้ปัญหามี 2 ลักษณะคือ
6.2.1 รหัสลำลอง
รหัสลำลองเป็นการใช้คำบรรยายเพื่ออธิบายขั้นตองวิธีในการแก็ปัญหา การเขียนรหังลำลองไม่มีรูปแบบที่แน่นอน ขึ้นอยู่กับประสบการณ์และความถนัดของผู้เขียน ซึ่งอาจจะเขียนอย่างละเอียดหรือย่อ และในบางครั้งที่อาจอธิบายในลักษณะคล้ายคำพูด หรืออาจจะเขียนในรูปแบบคล้ายภาโปรแกรมก็ได้เช่นกัน การใช้รหัสลำลองในการออกแบบวิธีแก้ปัญหามีข้อดีคือ เขียนง่ายผู้เขียนคำนึงถึงเพียงแต่วิธีแก้ปัญหา โดยไม่ต้องกังวลว่าจะเขียนผิดรูปแบบหรือไม่และถ้าผู้เขียนมีความชำนาญแล้ว การเขียนรหัสลำลองในรูปแบบคล้ายกับภาษาโปรแกรมจะทำให้สามารดัดแปลงไปเป็นโปรแกรมคอมพิวเตอร์ได้โดยง่าย แสดงถึงการใช้รหังลำลองในการถ่ายทอดความคิดเพื่อแก้ปัญหาทั่งไป และปัญหาทางคณิตศาสตร์
6.2.2 ผังงาน
ผังงานเป็นการอธิบายขั้นตอนวิธีการแก้ปัญหาโดยใช้รูปสัญลักษณ์มาเรียงต่อกันสัญลักษณ์แต่ละแบบจะมีถึงความหมายถึงกระบวนการที่แตกต่างกัน โดยจะมีคำอธิบายสั้นๆเพิ่มเติมในสัญลักษณ์ ความหมายของสัญลักษณ์ต่างๆ ที่ใช้ในผังงานที่ถูกกำหนดโดยสถาบันมาตรฐานแห่งชาติอเมริกา (The American National Standard Institute : ANSI)เพื่อให้สามารถสื่อความหมายได้ตรงกัน ซึ่งมีรายละเอียดของสัญลักษณ์และความหมายที่ควรทราบ
สัญลักษณ์และความหมายของผังงาน
ในการเขียนผังงานมีหลักการ คือ ให้เลือกสัยลักษณ์แทนกนะบวนการที่ถูกต้อง และเขียนข้อความสั้นๆ แทนสิ่งที่ต้องกระทำลงในรูปสัญลักษณ์ แล้วนำมาเรียงต่อกัน เชื่อมแต่ละสัญลักษณ์ด้วยลูกศร โดยทั่วไปแล้ว จะเรียงลำดับของสัญลักษณ์ไว้จากบนลงล่าง ตามลำดับชองการทำงาน หรือ อาจจะใช้หัวลูกศรระบุลำดับก่อนหลังของการทำงานก็ได้
การเชื่อมต่อสัญลักษณ์ต่างๆ ของผังงาน อาจทำให้มีการตัดกันของเส้นลุกศรจนอาจเกิดความสับสนได้ ผู้เขียนจึงควรเลือกใช้สัญลักษณ์จุดเชื่อมต่อในหน้าเดีวกัน โดยระบุตัวอักษรเดียวกันเพื่อหมายถึงการเชื่อมสองจุดของผังงานเข้าด้วยกัน แต่ถ้าผังงานใหญ่เกินหน้ากระดาษ ให้เลือกใช้สัญลักษณ์จุดเชื่อมต่อหน้ากระดาษ เพื่อเชื่อมระหว่างสองจุดของผังงานที่ข้ามไปอยู่คนละหน้ากัน

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

สิ่งที่ควรระวังในการใช้งานขั้นตอนวิธีแบบมีการวนซ้ำคือ ต้องตรวจสอบว่าได้กำหนดเงื่อนไขอย่างรัดกุมและถูกต้อง มิเช่นนั้นแล้วอาจเกิดกรณีแบบวนซ้ำไม่รู้จบ (infinte loop) หรือกรณีที่วนซ้ำไม่ไ้ด้ตามจำนวนรอบที่ต้องการ