วันอาทิตย์ที่ 11 สิงหาคม พ.ศ. 2556

บทที่ 8 การพัฒนาโครงงานคอมพิวเตอร์ http://priew406.blogspot.com/

 

 

 

โครงงานคอมพิวเตอร์ ตัวอย่างโครงงาน

 


    

 

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

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

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

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


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


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

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


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


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

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

     การ จัดทำโครงงานคอมพิวเตอร์นั้น นักเรียนควรมีความรู้พื้นฐานเกี่ยวกับการทำงานของเครื่องคอมพิวเตอร์ เหตุผลที่ใช้ในการแก้ปัญหา กระบวนการแก้ปัญหา หลักการเขียนโปรแกรมเบื้องต้น และการแทนข้อมูลในคอมพิวเตอร์ ก่อนที่จะเริ่มทำโครงงาน และใช้ความรู้ดังกล่าวเป็นพื้นฐานในการสร้างความรู้ใหม่ในโครงงาน คอมพิวเตอร์ โดยในการทำโครงงานนักเรียนอาจจะมีโอกาสได้ทำความรู้จักกับความรู้ใหม่เพิ่ม เติมอีกด้วย เช่น ปัญญาประดิษฐ์ (Artificial Intelligence) ฐานข้อมูล (Database) และการสืบค้นข้อมูล (Information Retrieval) เป็นต้น ซึ่งจะขึ้นอยู่กับหัวข้อที่นักเรียนเลือกทำโครงงาน

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

          1. โครงงานพัฒนาสื่อเพื่อการศึกษา(Educational Media)
                เป็น โครงงานทีใช้คอมพิวเตอร์ในการผลิตสื่อเพื่อการศึกษา โดยการสร้างโปรแกรมบทเรียน หรือหน่วยการเรียน ซึ่งอาจจะต้องมีภาคแบบฝึกหัด บททบทวนและคำถามคำตอบไว้พร้อม ผู้เรียนสามารถเรียนแบบรายบุคคลหรือรายกลุ่ม การสอนโดยใช้คอมพิวเตอร์ช่วยนี้ ถือว่าเครื่องคอมพิวเตอร์เป็นอุปกรณ์การสอน ไม่ใช่เป็นครูผู้สอน ซึ่งอาจเป็นการพัฒนาบทเรียนแบบ Online ให้นักเรียนเข้ามาศึกษาด้วยตนเองก็ได้
        โครงงานประเภทนี้สามารถพัฒนาขึ้นเพื่อใช้ประกอบการ สอนในวิชาต่าง ๆ ไม่ว่าจะเป็นสาขาคอมพิวเตอร์ วิชาคณิตศาสตร์ วิชาวิทยาศาสตร์ วิชาสังคม วิชาชีพอื่น ๆ ฯลฯ โดยนักเรียนอาจคัดเลือกหัวข้อที่นักเรียนทั่วไปที่ทำความเข้าใจยาก มาเป็นหัวข้อในการพัฒนาโปรแกรมบทเรียน ตัวอย่าง เช่น โปรแกรมสอนวิธีการใช้งาน ระบบสุริยะจักรวาล โปรแกรมแบบทดสอบวิชาต่าง ๆ
          2. โครงงานพัฒนาเครื่องมือ(Tools Development)
          เป็น โครงงานเพื่อพัฒนาเรื่องมือมาใช้ช่วยสร้างงานประยุกต์ต่าง ๆ ซึ่งโดยส่วนใหญ่จะเป็นในรูปซอฟต์แวร์ ตัวอย่างของเครื่องมือช่วยงาน เช่น ซอฟต์แวร์วาดรูป ซอฟต์แวร์พิมพ์งาน ซอฟต์แวร์ช่วยการมองวัตถุในมุมต่าง ๆ เป็นต้น สำหรับซอฟต์แวร์เพื่อการพิมพ์งานนั้นสร้างขึ้นเป็นโปรแกรมประมวลผลภาษา ซึ่งจะเป็นเครื่องมือให้เราใช้งานในงานพิมพ์ต่าง ๆ บนเครื่องคอมพิวเตอร์เป็นไปได้โดยง่าย ซึ่งรูปที่ได้สามารถนำไปใช้งานต่าง ๆ ได้มากมาย สำหรับซอฟต์แวร์ช่วยในการมองวัตถุในมุมต่าง ๆ ใช้สำหรับช่วยในการออกแบบสิ่งของต่าง ๆ เช่น โปรแกรมประเภท 3D
          3. โครงงานประเภทการทดลองทฤษฎี (Theory Experiment)

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

          4. โครงงานประเภทการประยุกต์ใช้งาน(Application)

          เป็น โครงงานที่ใช้คอมพิวเตอร์ในการสร้างผลงานเพื่อประยุกต์ใช้งานจริงในชีวิต ประจำวัน เช่น ซอฟต์แวร์สำหรับการออกแบบและตกแต่งอาคาร ซอฟต์แวร์สำหรับการผสมสี ซอฟต์แวร์สำหรับการระบุคนร้าย เป็นต้น โครงงานงานประเภทนี้จะมีการประดิษฐ์ฮาร์ดแวร์ ซอฟต์แวร์ หรืออุปกรณ์ใช้สอยต่าง ๆ ซึ่งอาจจะสร้างใหม่หรือปรับปรุงดัดแปลงของเดิมที่มีอยู่แล้วให้มี ประสิทธิภาพสูงขึ้นก็ได้ โครงงานลักษณะนี้จะต้องศึกษาและวิเคราะห์ความต้องการของผู้ใช้ก่อนแล้วนำ ข้อมูลที่ได้มาใช้ในการออกแบบ และพัฒนาสิ่งของนั้น ๆ ต่อจากนั้นต้องมีการทดสอบการทำงานหรือทดสอบคุณภาพของสิ่งประดิษฐ์แล้วปรับ ปรุงแก้ไขให้มีความสมบูรณ์ โครงงานประเภทนี้นักเรียนต้องใช้ความรู้เกี่ยวกับเครื่องคอมพิวเตอร์ ภาษาโปรแกรม และเครื่องมือต่าง ๆ ที่เกี่ยวข้อง รวมทั้งอาจใช้วิธีทางวิศวกรรมฮาร์ดแวร์และซอฟต์แวร์ในการพัฒนาด้วย
          5. โครงงานพัฒนาเกม(Game Development)
          เป็น โครงงานพัฒนาซอฟต์แวร์เกมเพื่อความรู้ และ/หรือ ความเพลิดเพลิน เช่น เกมหมากรุก เกมหมากฮอส เกมการคำนวณเลข ซึ่งเกมที่พัฒนาขึ้นนี้น่าจะเน้นให้เป็นเกมที่ไม่รุนแรง เน้นการใช้สมองเพื่อฝึกคิดอย่างมีหลักการ โครงงานประเภทนี้จะมีการออกแบบลักษณะและกฎเกณฑ์การเล่น เพื่อให้น่าสนใจเก่ผู้เล่น พร้อมทั้งให้ความรู้สอดแทรกไปด้วย ผู้พัฒนาควรจะได้ทำการสำรวจและรวบรวมข้อมูลเกี่ยวกับเกมต่าง ๆ ที่มีอยู่ทั่วไปและนำมาปรับปรุงหรือพัฒนาขึ้นใหม่เพื่อให้ป็นเกมที่แปลกใหม่ และน่าสนใจแก่ผู้เล่นกล่มต่าง ๆ
วิธีดำเนินการทำโครงงานคอมพิวเตอร์

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

                โดย ทั่วไปเรื่องที่จะนำมาพัฒนาเป็นโครงงานคอมพิวเตอร์ มักจะได้มาจากปัญหา คำถาม หรือความสนใจในเรื่องต่าง ๆ จากการสังเกตสิ่งต่าง ๆ รอบตัว นักเรียนสามารถจะศึกษาการได้มาของเรื่องที่จะทำโครงงาน การอ่านค้นคว้า การไปเยี่ยมชมสถานที่ต่าง ๆ การฟังบรรยาย รายการวิทยุโทรทัศน์ สนทนาอภิปราย กิจกรรมการเรียนการสอน งานอดิเรก การเข้าชมงานนิทรรศการหรืองานประกวดโครงงานคอมพิวเตอร์ ในการตัดสินใจเลือกหัวข้อที่จะนำมาพัฒนาโครงงานคอมพิวเตอร์ ควรพิจารณาองค์ประกอบสำคัญดังนี้
                                - จะต้องมีความรู้และทักษะพื้นฐานอย่างเพียงพอในหัวข้อเรื่องที่จะศึกษา
                   - สามารถจัดหาเครื่องคอมพิวเตอร์และซอฟต์แวร์ที่เกี่ยวข้องได้
                   - มีแหล่งความรู้เพียงพอที่จะค้นคว้าหรือขอคำปรึกษา
                   - มีเวลาเพียงพอ
                   - มีงบประมาณเพียงพอ
                   - มีความปลอดภัย
          2. ศึกษาค้นคว้าจากเอกสารและแหล่งข้อมูล
                รวมถึง การขอคำปรึกษาจากผู้ทรงคุณวุฒิช่วยจะช่วยให้นักเรียนได้แนวคิดที่ใช้ในการ กำหนดของเขตของเรื่องที่จะศึกษาได้เฉพาะเจาะจงมากยิ่งขึ้น รวมทั้งความรู้เพิ่มเติมในเรื่งที่จะศึกษาจนสามารถใช้ออกแบบและวางแผนดำเนิน การทำโครงงานนั้นได้อย่างเหมาะสมในการศึกษาค้นคว้าดังกล่าว นักเรียนจะต้องบันทึกสรุปสาระสำคัญไว้ด้วย
                จะต้องพิจารณาดังนี้ มูลเหตุจูงใจและเป้าหมายในการทำ วัสดุอุปกรณ์ ความต้องการของผู้ใช้งานและคุณลักษณะของผลงาน (Requirement and Specification) วิธีการประเมินผล วิธีการพัฒนา ข้อสรุปของโครงงาน ความแปลกใหม่ ความคิดสร้างสรรค์ แนวทางในการปรับปรุงหรือขยายการทดลองจากงานเดิม
          3. การจัดทำเค้าโครงของโครงงานที่จะทำจำเป็นต้องกำหนดกรอบแนวคิดและวงแผนการพัฒนาล่วงหน้าเพื่อคาดการณ์ความเป็นไป ได้ของโครงงาน ขั้นตอนที่สำคัญคือ ศึกษาค้นคว้าเอกสาร วิเคราะห์ข้อมูล ออกแบบการพัฒนา เสนอเค้าโครงของโครงงานต่ออาจารย์ที่ปรึกษา เพื่อขอคำแนะนำและปรับปรุงแก้ไข
          4. การลงมือทำโครงงานเมื่อเค้าโครงได้รับความเห็นชอบจากอาจารย์ที่ปรึกษาแล้ว ขั้นตอนต่อไปจะเป็นการพัฒนาตามขั้นตอนที่ได้วางแผนไว้ดังนี้ เตรียมการ ลงมือพัฒนา ตรวจสอบผลงานและแกไข อภิปรายผลและข้อเสนอแนะ แนวทางในการพัฒนาโครงงานในอนาคต
          5. การเขียนรายงานเป็นสื่อความหมายเพื่อให้ผู้อื่นได้เข้าใจแนวความคิด วิธีดำเนินการศึกษาค้นคว้า ข้อมูลที่ได้ ตลอดจนข้อสรุปและข้อเสนอแนะต่าง ๆ เกี่ยวกับโครงงานนั้น ในการเขียนควรใช้ภาษาที่อ่านเข้าใจได้ง่าย ชัดเจน กระชับ และตรงไปตรงมาให้ครอบคลุมหัวข้อต่าง ๆ
          6. การนำเสนอและการแสดงผลงานของโครงงานเป็นการนำเสนอเพื่อแสดงออกถึงผลิตผลของความคิด ความพยายามในการทำงานที่ผู้ทำโครงงานได้ทุ่มเท และเป็นวิธีที่ให้ผู้อื่นได้รับรู้และเข้าใจในโครงงานนั้น ในการเสนออาจทำได้หลายรูปแบบ เช่น ติดโปสเตอร์ การรายงานตัวในที่ประชุม การแสดงผลงานด้วยสื่อต่าง การจัดนิทรรศการ การอธิบายด้วยคำพูด
UploadImage
ที่มา.http://kruoong.blogspot.com/2011/05/blog-post.html

 

 

 

 

 

 

 

 

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


บทที่7 การพัฒนาโปรแกรม

7.1 ขั้นตอนการพัฒนาโปรแกรม

ขั้นตอนการพัฒนาโปรแกรม 

7.1 ขั้นตอนการพัฒนาโปรแกรม

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

7.1.1 การวิเคราะห์และออกแบบโปรแกรม

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

7.1.2 การเขียนโปรแกรมจากรหัสลำลองหรือผังงาน

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

รูปที่ 7.1 ผลลัพธ์จากโปรแกรมที่ตัวหาร (ก) ไม่เป็นศูนย์ และ (ข) เป็นศูนย์ 

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

7.1.3 การเตรียมข้อมูลสำหรับทดสอบโปรแกรม

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

7.1.4 การทดสอบโปรแกรม

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

7.1.5 การจัดทำเอกสารประกอบโปรแกรม

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

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

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

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

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

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)


รูปที่ 7.9 ผังงานสำหรับโปรแกรมภาษาซีในรูปที่ 7.10

รูปที่ 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 แสดงความหมายและตัวอย่างการใช้งานตัวดำเนินการในภาษาซี
ตารางที่ 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.11

รูปที่ 7.11 ผลจากการรันโปรแกรมภาษาซีในรูปที่ 7.10

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

บทที่ 6 ( 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 ( 6.2 เครื่องมือที่ใช้ในการออกแบบและขั้นตอนวิธีในการแก้ปัญหา )

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

บทที่ 6 ( 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) หรือกรณีที่วนซ้ำไม่ไ้ด้ตามจำนวนรอบที่ต้องการ

วันศุกร์ที่ 26 กรกฎาคม พ.ศ. 2556

ผลกระทบการใช้งานอินเทอร์เน็ต


ผลกระทบการใช้งานอินเทอร์เน็ต 

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

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

    1.ปัญหาสุขภาพและความสัมพันธ์ทางครอบครัว 

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

    2.ปัญหาอาชญากรรมทางอิเล็กทรอนิกส์ มีผู้ใช้อินเทอร์เน็ตเป็นช่องทางในการก่ออาชญากรรมหลายรูปแบบ เช่น 

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

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

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

เกร็ดน่ารู้

    โปรแกรม phishing filtering จะช่วยคัดกรองหน้าเว็บที่ต้องสงสัยต่างๆ ให้กับผู้ใช้ ผู้ใช้สามารถเลือกใช้ตัวป้องกันการแสดงหน้าต่าง ป๊อปอัพในโปรแกรมเว็บเบราว์เซอร์ หรือผู้ใช้เพิ่มความระมัดระวังในการให้ข้อมูลส่วนตัวต่างๆ โดยการตรวจสอบแหล่งทีมาของอีเมลก่อนให้ข้อมูล

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

    3. ปัญหาการล่อลวงในสังคม

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

ข้อควรปฏิบัติเพื่อความปลอดภัยในการใช้งานในระบบเครือข่าย

    1. ตั้งรหัสผ่านที่ยากแก่การเดา เช่น หลีกเลี่ยงในการใช้ชื่อเล่น วันเดือน ปี เบอร์โทรศัพท์

    2. เปลี่ยนรหัสผ่านสม่ำเสมอ

    3. ติดตั้ง ใช้งาน และปรับปรุงโปรแกรมป้องกันมัลแวร์สม่ำเสมอ

    4. ศึกษาความรู้เกี่ยวกับความปลอดภัยในการรับไฟล์ ดาวน์โหลดจากอินเทอร์เน็ต เช่น อีเมล หรือหน้าเว็บต่างๆ

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

มุมนักคิด ในสังคมปัจจุบันมีผู้ใช้อินเทอร์เน็ตไม่เหมาะสมในลักษณะใดอีกบ้าง และ มีวิธีใดบ้างที่จะช่วยรณรงค์ให้ใช้อินเทอร์เน็ตในทางสร้างสรรค์

บัญญัติ 10 ประการในการใช้งานคอมพิวเตอร์ 

    1. ต้องไม่ใช้คอมพิวเตอร์ทำร้ายผู้อื่น เช่น ไม่ควรโพสต์ข้อความกล่าวหาบุคคลอื่นในเว็บบอร์ดให้ผู้อื่นได้รับความเสียหาย ไม่ควรโพสต์รูปอนาจาร

    2. ต้องไม่ใช้คอมพิวเตอร์รบกวนผู้อื่น เช่น เปิดฟังเพลงด้วยคอมพิวเตอร์ หรือ เล่นเกมรบกวนผู้อื่นที่อยู่ในบริเวณใกล้เคียง

    3. ต้องไม่เปิดดูไฟล์ของผู้อื่นก่อนได้รับอนุญาต เช่น แอบเปิดอ่านอีเมลของเพื่อน

    4. ต้องไม่ใช้คอมพิวเตอร์ในการโจรกรรมข้อมูล ข่าวสาร เช่น การแอบเจาะระบบเพื่อขโมยข้อมูลการค้าของบริษัท ขโมยรหัสผ่านบัตรเครดิต

    5. ต้องไม่ใช้คอมพิวเตอร์สร้างหลักฐานเท็จ เช่น การแอบเจาะระบบเพื่อเปลี่ยนแปลงคะแนน

    6. ต้องไม่ใช้คอมพิวเตอร์ในการคัดลอก หรือ ใช้โปรแกรมที่มีลิขสิทธิ์โดยไม่ได้รับอนุญาต เช่น ดาวน์โหลดโปรแกรมที่มีลิขสิทธิ์มาใช้ โดยมีโปรแกรมแก้ไขเพื่อให้ใช้งานได้

    7. ต้องไม่ใช้คอมพิวเตอร์ในการ ละเมิดการใช้ทรัพยากรคอมพิวเตอร์โดยที่ตนเองไม่มีสิทธิ์ เช่น ไม่ใช้คอมพิวเตอร์ หรือ ไม่ใช้อุปกรณ์คอมพิวเตอร์ที่ไม่ได้รับสิทธิ์ในการเข้าใช้

    8. ต้องไม่ใช้คอมพิวเตอร์เพื่อนำเอาผลงานของผู้อื่นมาเป็นของตนเอง

    9. ต้องคำนึงถึงผลกระทบที่เกิดจากโปรแกรมที่ตัวเองพัฒนาขึ้น

    10. ต้องใช้คอมพิวเตอร์ โดยเคารพกฎ ระเบียบ กติกา และมารยาทของสังคมนั้น

วันอาทิตย์ที่ 30 มิถุนายน พ.ศ. 2556

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

         ประเภทของไวรัส

บูตเซกเตอร์ไวรัส 
Boot Sector Viruses หรือ Boot Infector Viruses คือไวรัสที่เก็บตัวเองอยู่ในบูตเซกเตอร์ ของดิสก์ การใช้งานของบูตเซกเตอร์คือ เมื่อเครื่องคอมพิวเตอร์เริ่มทำงานขึ้นมาตอนแรก เครื่อง จะเข้าไปอ่านบูตเซกเตอร์ โดยในบูตเซกเตอร์จะมีโปรแกรมเล็ก ๆ ไว้ใช้ในการเรียกระบบ ปฎิบัติการขึ้นมาทำงานอีกทีหนึ่ง บูตเซกเตอร์ไวรัสจะเข้าไปแทนที่โปรแกรมดังกล่าว และไวรัส ประเภทนี้ถ้าไปติดอยู่ในฮาร์ดดิสก์ โดยทั่วไป จะเข้าไปอยู่บริเวณที่เรียกว่า Master Boot Sector หรือ Parition Table ของฮาร์ดดิสก์นั้น
ถ้าบูตเซกเตอร์ของดิสก์ใดมีไวรัสประเภทนี้ติดอยู่ ทุก ๆ ครั้งที่บูตเครื่องขึ้นมาโดย พยายามเรียก ดอสจากดิสก์นี้ ตัวโปรแกรมไวรัสจะทำงานก่อนและจะเข้าไปฝังตัวอยู่ใน หน่วยความจำเพื่อเตรียมพร้อมที่ จะทำงานตามที่ได้ถูกโปรแกรมมา แล้วตัวไวรัสจึงค่อยไป เรียกดอสให้ขึ้นมาทำงานต่อไป ทำให้เหมือนไม่มีอะไรเกิดขึ้น

โปรแกรมไวรัส
Program Viruses หรือ File Intector Viruses เป็นไวรัสอีกประเภทหนึ่งที่จะติดอยู่กับโปรแกรม ซึ่งปกติก็คือ ไฟล์ที่มีนามสกุลเป็น COM หรือ EXE และบางไวรัสสามารถเข้า ไปติดอยู่ในโปรแกรมที่มีนามสกุลเป็น sys และโปรแกรมประเภทOverlay Programsได้ด้วย โปรแกรมโอเวอร์เลย์ปกติจะเป็นไฟล์ที่มีนามสกุลที่ขึ้นต้นด้วย OV วิธีการที่ไวรัสใช้เพื่อที่จะ เข้าไปติดโปรแกรมมีอยู่สองวิธี คือ การแทรกตัวเองเข้าไปอยู่ในโปรแกรมผลก็คือหลังจากท ี่ โปรแกรมนั้นติดไวรัสไปแล้ว ขนาดของโปรแกรมจะใหญ่ขึ้น หรืออาจมีการสำเนาตัวเองเข้าไปทับส่วนของโปรแกรมที่มีอยู่เดิมดังนั้นขนาดของโปรแกรมจะไม่เปลี่ยนและยากที่ จะซ่อมให้กลับเป็นดังเดิม
การทำงานของไวรัส โดยทั่วไป คือ เมื่อมีการเรียกโปรแกรมที่ติดไวรัส ส่วนของไวรัสจะทำงานก่อนและจะถือโอกาสนี้ฝังตัวเข้าไปอยู่ในหน่วยความจำทันทีแล้วจึงค่อยให้ โปรแกรมนั้นทำงานตามปกติต่อไป เมื่อไวรัสเข้าไปฝังตัวอยู่ในหน่วยความจำแล้ว หลัง จากนี้ไปถ้ามีการเรียกโปรแกรมอื่น ๆ ขึ้นมาทำงานต่อ ตัวไวรัสก็จะสำเนาตัวเองเข้าไป ในโปรแกรมเหล่านี้ทันที เป็นการแพร่ระบาดต่อไป
วิธีการแพร่ระบาดของโปรแกรม ไวรัสอีกแบบหนึ่งคือ เมื่อมีการเรียกโปรแกรมที่มีไวรัสติดอยู่ ตัวไวรัสจะเข้าไปหาโปรแกรมอื่น ๆ ที่อยู่ในดิสก์เพื่อทำสำเนาตัวเองลงไปทันทีแล้วจึงค่อยให้โปรแกรมที่ถูกเรียก นั้นทำงานตามปกติต่อไป
โพลีมอร์ฟิกไวรัส
Polymorphic Viruses เป็นชื่อที่ใช้ในการเรียกไวรัสที่มีความสามารถในการแปรเปลี่ยนตัวเอง ได้เมื่อมีสร้างสำเนาตัวเองเกิดขึ้น ซึ่งอาจได้หถึงหลายร้อยรูปแบบ ผลก็คือ ทำให้ไวรัสเหล่านี้ยากต่อการถูกตรวจจับ โดยโปรแกรมตรวจหาไวรัสที่ใช้วิธีการสแกนอย่างเดียว ไวรัสใหม่ ๆ ในปัจจุบันที่มีความสามารถนี้เริ่มมีจำนวนเพิ่มมากขึ้นเรื่อย ๆ
สทีลต์ไวรัส
Stealth Viruses เป็นชื่อเรียกไวรัสที่มีความสามารถในการพรางตัวต่อการตรวจจับได้ เช่น ไฟล์อินเฟกเตอร์ ไวรัสประเภทที่ไปติดโปรแกรมใดแล้วจะทำให้ขนาดของ โปรแกรมนั้นใหญ่ขึ้น ถ้าโปรแกรมไวรัสนั้นเป็นแบบสทีลต์ไวรัส จะไม่สามารถตรวจดูขนาดที่แท้จริง ของโปรแกรมที่เพิ่มขึ้นได้ เนื่องจากตัว ไวรัสจะเข้าไปควบคุมดอส เมื่อมีการใช้คำสั่ง DIR หรือโปรแกรมใดก็ตามเพื่อตรวจดูขนาดของโปรแกรม ดอสก็จะแสดงขนาดเหมือนเดิม ทุกอย่างราวกับว่าไม่มีอะไรเกิดขึ้น

2.เวริ์ม (worm) หรือหนอนคอมพิวเตอร์
Malware
เวิร์ม (Worm) มีลักษณะและพฤติกรรมคัดลอกตัวเองและสามารถส่งตัวเองไปยังคอมพิวเตอร์เครื่องอื่นๆได้อย่างอิสระ โดยอาศัยอีเมล์หรือช่องโหว่ของระบบปฏิบัติการ มักจะไม่แพร่เชื้อไปติดไฟล์อื่น สิ่งที่มันทำคือมักจะสร้างความเสียหายให้กับระบบเครือข่าย และเหมือนจะสร้างความเสียหายให้กับระบบเศรษฐกิจมากที่สุด เวิร์มยังแบ่งออกเป็นชนิดต่างๆได้ดังต่อไปนี้
Email worm เป็นเวิร์มที่อาศัยอีเมล์เป็นพาหะเช่น Mass-mailing worm เป็นเวิร์มที่สามารถค้นหารายชื่ออีเมล์ในเครื่องที่ตกเป็นเหยื่อแล้วก็ส่งตัวเองไปยังที่อยู่อีเมล์เหล่านั้น
File-Sharing Networks Worm เป็นเวิร์มที่คัดลอกตัวเองไปไว้ในโฟลเดอร์ที่ขึ้นต้นหรือประกอบด้วยคำว่า sha และแชร์โฟลเดอร์ของโปรแกรมประเภท Peer to Peer (P2P)เช่นเวิร์มที่มีชื่อว่า KaZaa Worm เป็นต้น
Internet Worm หรือ Network Worm เป็นเวิร์มที่โจมตีช่องโหว่ของโปรแกรมและระบบปฎิบัติการต่างๆเช่น Blaster worm และ Sasser worm ที่ได้เป็นที่รู้จักกันดี
IRC Worm เป็นเวิร์มที่ส่งตัวเองจากเครื่องที่ตกเป็นเหยื่อไปหาคนที่อยู่ในห้องสนทนา (Chat room) เดียวกัน
Instant Messaging Worm เป็นเวิร์มที่ส่งตัวเองจากเครื่องที่ตกเป็นเหยื่อไปหาคนที่อยู่ใน Contact list ผ่านทางโปรแกรม Instant Messaging หรือ IM เช่นโปรแกรม MSN และICQ เป็นต้น


3. ม้าโทรจัน (Trojan Horse)


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

ม้าโทรจันTrojan.Peacomm เป็นม้าโทรจันที่ถูกปล่อยโดยหนอนอินเทอร์เน็ตชื่อWORM_NUWAR.CQ [Trend Micro]
ซึ่งอาจถูกดาวน์โหลดจากเว็บไซต์ที่ประสงค์ร้ายโดยไม่ได้ตั้งใจหรือด้วยความเข้าใจผิด
นอกจากนี้ม้าโทรจันยังถูกแนบมาพร้อมกับอีเมลสแปมได้ด้วย
               
 ไฟล์ของม้าโทรจันนั้นมีความสามารถของรูทคิท (Rootkit) กล่าวคือม้าโทรจันนั้นสามารถซ่อนไฟล์และฝังโพรเซสของตัวเอง
ไว้ในโพรเซสของ
 services.exe ส่งผลให้ตรวจจับได้ยากมากขึ้น และม้าโทรจันเองจะหลอกล่อให้ผู้ใช้ทำการติดตั้งด้วยวิธีเดียวกันกับการติดตั้งไดร์เวอร์อุปกรณ์ใหม่ภายในเครื่อง
               
 ความสามารถด้านระบบเครือข่ายของม้าโทรจันนี้คือสามารถดาวน์โหลดม้าโทรจันชนิดอื่นจากเว็บไซต์ต่างๆรวมทั้งการส่งแพ็กเก็ตแบบ UDP ไปยังเครื่องที่ถูกม้าโทรจันนี้คุกคาม เพื่อใช้ประโยชน์ในการแพร่กระจายตัวโทรจันเอง
                  

วิธีการแพร่กระจาย
                
ม้าโทรจันชนิดนี้สามารถแพร่กระจายโดยหนอนอินเทอร์เน็ตปล่อยออกมา หรือผ่านอีเมลสแปมที่ม้าโทรจันส่งออกมา
ผลกระทบที่เกิดขึ้น
                ส่งอีเมลออกมาเป็นจำนวนมาก : ม้าโทรจันจะส่งอีเมลสแปมที่มีไฟล์โทรจันแนบออกไป 
เครื่องอาจทำงานผิดพลาด : เนื่องจากม้าโทรจันจะแก้ไขไฟล์และรีจิสทรี ทำให้เครื่องทำงานผิดพลาดได้
 
               
 เปิดการเชื่อมต่อที่ผิดปกติ : ม้าโทรจันชนิดนี้เปิดการเชื่อมต่อไปยังพอร์ต 4000/UDP และ 7871/UDP 
วิธีกำจัดหนอนชนิดนี้ 
                การกำจัดหนอนแบบอัตโนมัติ (หมายเหตุ เนื่องจากม้าโทรจันชนิดนี้เป็นรูทคิทด้วย ดังนั้นจึงต้องทำการลบรูทคิทออกก่อน)

4.สปายแวร์ (spyware)

Spyware คือ โปรแกรมที่แฝงเข้ามาในคอมพิวเตอร์ขณะที่คุณท่องอินเตอร์เน็ต ถูกเขียนขึ้นมาสอดส่อง การใช้งานเครื่องคอมพิวเตอร์ของคุณ และจะทำการเก็บพฤติกรรมการใช้งานอินเตอร์เน็ตของเรา รวมถึงข้อมูลส่วนตัวหลาย ๆ อย่างได้แก่ ชื่อ - นามสกุล ที่อยู่  E-Mail --mlinkarticle--} Address และอื่น ๆ ซึ่งอาจจะรวมถึงสิ่งสำคัญต่าง ๆ เช่น Password หรือ หมายเลข บัตรเครดิตของเราด้วย นอกจากนี้อาจจะมีการสำรวจโปรแกรม และไฟล์ต่าง ๆ ในเครื่องเราด้วย  และ Spyware นี้จะทำการส่งข้อมูลดังกล่าวไปในเครื่องปลายทางที่โปรแกรมได้ระบุเอาไว้ ดังนั้นข้อมูลต่าง ๆ ในเครื่องของคุณอาจไม่เป็นความลับอีกต่อไปspyware อาจเข้ามาเพื่อโฆษณาสินค้าต่าง ๆ บางตัวก็สร้างความรำคาญเพราะจะเปิดหน้าต่างโฆษณาบ่อย ๆ แต่บางตัวร้ายกว่านั้น คือ ทำให้คุณใช้อินเตอร์เน็ทไม่ได้เลย 

วิธีการป้องกันเพื่อไม่ให้ถูกโจมตีจากสปายแวร์
1.ติดตั้งโปรแกรม Anti-Spyware ไว้ในเครื่องคอมพิวเตอร์เพื่อให้ Anti-Spyware ตรวจหาSpyware ในเครื่องคอมพิวเตอร์ เเละเตือนให้เราทำการลบ
2.ไม่ดาว์นโหลดไฟล์ข้อมูลหรือโปรแกรมจากเว็บไซต์ที่ไม่น่าเชื่อถือ
3.ตรวจ สอบ Update โปรแกรม Antivirus เนื่องจากปัจจุบันมีการสร้าง โปรแกรมประเภทVirus หรือ สปายแวร์ออกมาเผยแพร่ภายในเครือข่ายอินเทอร์เน็ตอยู่ตลอดเวลาทำให้บางครั้ง หากการ Update หรือปรับปรุง {--mlinkarticle=2011--} หรือ Anti-Spyware อย่างไม่สม่ำเสมอหรือนานๆครั้ง ก็อาจถูกโจมตีจาก Virus หรือ Spyware ได้เช่นกัน

5. แอดแวร์ (adware)

แอดแวร์ (Adware) เป็นโปรแกรมแอบซ่อนอีกตัวหนึ่ง คล้ายๆ สปายแวร์ คือมาพร้อมกับอีเมล์ขยะและ/หรือเว็บไซต์ทางการค้าที่คุณเปิดเข้าไปดู แม้แต่พวกการ์ตูนหรือเกมน่ารักๆ ที่ให้คุณดาวน์โหลดมาไว้ดู/เล่นฟรีบนเครื่องคอมพิวเตอร์ ก็มักถูกติดแอดแวร์และสปายแวร์เอาไว้ เจ้าแอดแวร์ที่ว่านี้จะทำงานอัตโนมัติ เวลาที่คุณใช้อินเทอร์เน็ตมันจะเด้งหรือPop-Up หน้าจอของมันขึ้นมา หลอกล่อด้วยข้อความต่างๆ เพื่อให้คุณกดคลิกเข้าไป ดึงคุณไปยังเว็บไซต์การค้าของเขา ซึ่งส่วนมากจะเป็นเว็บไซต์สำหรับผู้ใหญ่ เช่นขายภาพ หรือวีดีโอคลิปโป๊ ขายยาไวอากร้า เซ็กซ์ทอย หรือพวกธุรกิจขายตรงต่างๆ อันที่จริงแล้วแอดแวร์กับสปายแวร์มีลักษณะใกล้ เคียงกัน ดังนั้นโปรแกรมดักจับและลบแอดแวร์ก็จะลบสปายแวร์ด้วยเช่นกัน
6. สแปม (spam)


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

เมื่อคุณได้รับ อีเมลที่มีหัวข้อเช่น "Make Money from Home" หรือ ?XXX Hot SEXXXY Girls" ถ้าอีเมลเหล่านี้ส่งมาจากคนที่คุณไม่รู้จัก แน่นอนว่าคุณไม่ต้องการรับอีเมลเหล่านี้แน่ ๆ เพราะมันจะทำให้คุณเสียเวลา ค่าใช้จ่าย แบนด์วิดธ์ และพื้นที่ในฮาร์ดดิสก์ในการดาวน์โหลดอีเมลเหล่านี้มาอ่าน ถึงแม้จะไม่มีวิธีที่จะกำจัดอีเมลเหล่านี้ได้ถึงร้อยเปอร์เซ็นต์ แต่คุณก็สามารถทำบางอย่างเพื่อปัองกันจดหมายขยะที่น่ารำคาญเหล่านี้ได้

ไซต์ ในอินเทอร์เน็ตหลาย ๆ ไซต์ที่ได้เงินจากการขายรายชื่อที่อยู่อีเมลให้กับผู้ส่งจดหมายขยะ (spammer) มีเว็ปไซต์หนึ่งที่ขายที่อยู่อีเมล ล้านรายชื่อเพื่อเงินเพียง 59.95 ดอลลาร์ ส่วนอีกเว็ปไซต์หนึ่งขายซีดีที่มีรายชื่ออีเมล 15 ล้านชื่อเพื่อเงิน 120 ดอลลาร์

ทำไมจดหมายขยะถึงเพิ่มขึ้นทุกวัน ?

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

spammer รู้ที่อยู่อีเมลของพวกเราได้อย่างไร

1. spammer ใช้โปรแกรมที่เก็บรวมรวมที่อยู่อีเมลโดยอัตโนมัติที่เรียกว่า Bot หรือ robot ที่สามารถ สแกนอินเทอร์เน็ตเพื่อหาที่อยู่อีเมล วิธีการหนึ่งที่ใช้เพื่อป้องกันวิธีนี้คือการใช้ที่อยู่อีเมลแจกฟรีแบบ web based email (อย่าง Hotmail.com หรือ yahoo.com เป็นต้น) แล้วจึงเก็บ POP mail ไว้สำหรับคนรู้จักและครอบครัวเท่านั้น วิธีนี้ไม่สามารถป้องกันสแปมได้ทั้งหมด แต่ก็สามารถป้องกัน bot ไม่ให้รู้ที่อยู่อีเมลหลักของคุณได้

ถ้าคุณมีเว็ปไซต์ของคุณเอง อย่าทำ hyperlink ให้กับ email address เพราะ spammer สามารถ ใช้เครื่องมือที่เรียกว่า spiders เพื่อรวบรวมเว็ปที่มี email address อยู่ โดย spiders สามารถไปตามลิงค์ต่าง ๆ และรวบรวมลิงค์ mailto คุณควรทำที่อยู่อีเมลของคุณให้เป็น text แทน เพื่อไม่ให้ spiders สามารถทำงานได้ ถ้าผู้ที่ต้องการส่งอีเมลถึงคุณ เขาจะไม่รังเกียจที่จะพิมพ์ที่อยู่อีเมลลงไปในโปรแกรมส่งอีเมลด้วยตัวเขาเอง

นอกจากนี้การส่งข้อความเข้าไปใน newsgroup โดยบอกที่อยู่อีเมลของคุณไปด้วย ทำให้bots สามารถค้นหาที่อยู่อีเมลใน newsgroupได้ จดหมาย Spam ที่คุณได้รับบางครั้งก็ขึ้นอยู่กับว่าคุณส่งข้อความของคุณไปที่ newsgroup ใด เช่น ถ้าคุณส่งข้อความเข้าไปที่ Alt.DVDคุณอาจได้รับอีเมลที่ให้ข้อเสนอที่เกี่ยวกับ DVD

ด้วยเหตุนี้ผู้คน ส่วนใหญ่จึงไม่ได้ใช้ที่อยู่อีเมลจริง ๆ หรือคุณอาจใช้วิธีเพิ่มตัวอักษรเข้าไปในท้ายที่อยู่เพื่อหลอก bot เช่น ถ้าคุณมีที่อยู่อีเมลคือ user@XYZ.net คุณสามารถบอกที่อยู่อีเมลเป็น user@XYZ.REMOVE.net แล้วจึงบอกในข้อความนั้นให้ผู้อ่านรู้ว่าให้นำคำว่า "REMOVE" ออกไปเพื่อแก้ไขให้ถูกต้อง (วิธีอื่น ๆ ที่คุณสามารถใช้เพื่อหลีกเลี่ยง bot เมื่อคุณจำเป็นต้องใส่ที่อยู่อีเมลในอินเทอร์เน็ต เช่น การเพิ่มช่องว่างเข้าไป เช่น ?user @ hotmail.com? หรือการเปลี่ยน เป็น at เช่น ?user at hotmail.com? เป็นต้น)

ก่อนที่คุณจะโพสต์ที่อยู่ อีเมลของคุณใน newsgroup หรือเว็ปไซต์ใด ๆ หรือการสำรวจข้อมูลใด ๆ ก็ตาม คุณควรสมัคร free email account อีกแห่งหนึ่ง ที่ไม่ใช่อีเมลหลักของคุณ ใช้อีเมลหลักของคุณสำหรับ คนที่คุณสามารถเชื่อถือได้เท่านั้น

ที่เว็ปไซต์ http://www.u.arizona.edu/~trw/spam/ มีสคริปท์แจกฟรีที่คุณสามารถใช้เพื่อเข้ารหัสที่อยู่อีเมลของคุณเพื่อไม่ให้ bot สามารถหาที่อยู่อีเมลของคุณได้


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

เมื่อคุณได้รับอี เมลลูกโซ่มาจากแหล่งที่ไม่รู้จัก บอกว่า "โปรดตอบจดหมายนี้ โดยมีหัวข้อตอบกลับว่า Remove เพื่อยกเลิกรับการเป็นสมาชิกแจ้งข่าวสารทางอีเมล" คุณไม่ควรตอบอีเมลนี้ เพราะการส่งอีเมลนี้ใช้เพื่อพิสูจน์ว่าที่อยู่อีเมลนี้มีจริง ซึ่งจะเป็นประโยชน์แก่ผู้ส่งอีเมลขยะเอง

3.เมื่อคุณป้อนที่อยู่อี เมลในฟอร์มของเว็ปไซต์เพื่อสมัครบริการของเว็ปนั้น ถึงแม้ว่าเว็ปไซต์นั้นสัญญาว่าจะเก็บที่อยู่อีเมลไว้เป็นความลับ แต่ดูเหมือนคำสัญญาไม่ได้ป้องกันให้บริษัทเหล่านั้นเปิดเผยข้อมูลให้บุคคล ที่สามได้เลย มีคนหนึ่งที่เคยสมัครกับเว็ปไซต์ประเภท joke of the day โดยบอกที่อยู่อีเมลแบบ web based ไป เป็นครั้งเดียวที่เขาได้สมัครเพื่อขอใช้บริการเว็ปในอินเทอร์เน็ต ภายในหนึ่งสัปดาห์ต่อมาเขาได้รับจดหมายขยะ มีตั้งแต่เรื่อง "Make A Million $$$" ไปจนถึง How To Keep Women Happy

4.การใช้คำทั่ว ๆ ไป (เช่นเป็นคำใน dictionary) เป็นชื่อแอกเคาท์ช่วยให้ผู้ส่งจดหมายขยะสามารถเดาชื่อเหล่านี้และส่งไปได้ วิธีการแก้ไขคือการใช้ชื่อแอคเคาท์ที่สะกดผิด จะช่วยให้ผู้ส่งจดหมายขยะยากที่จะคาดเดาชื่อแอคเคาท์และส่งอีเมลมาแบบไม่ เลือกได้

5.ไซต์ที่มีบริการที่ให้คุณสามารถส่ง greeting cards ไปยังคนอื่น ๆ บางแห่งจะเก็บรวบรวมที่อยู่อีเมลไว้ แล้วเก็บไว้หรือขายให้กับผู้ส่งจดหมายขยะ

6.การขโมยข้อมูล โดยการสร้างเว็ปไซต์ที่จริง ๆ แล้วไม่ได้ใช้ http protocol แต่ใช้anonymous ftp แทน มีเว็ปบราวเซอร์หลาย ๆ ตัวจะส่งที่อยู่อีเมลแทนรหัสผ่าน เพื่อเข้าไปในanonymous ftp