Wednesday, March 16, 2016

การเขียนโปรแกรมคอมพิวเตอร์

 การเขียนโปรแกรมคอมพิวเตอร์ (Computer programming)
 
หรือเรียกให้สั้นลงว่า การเขียนโปรแกรม ( Programming) หรือ การเขียนโค้ด (Coding) เป็นขั้นตอนการเขียน ทดสอบ และดูแลซอร์สโค้ดของโปรแกรมคอมพิวเตอร์ ซึ่งซอร์สโค้ดนั้นจะเขียนด้วยภาษาโปรแกรม ขั้นตอนการเขียนโปรแกรมต้องการความรู้ในหลายด้านด้วยกัน เกี่ยวกับโปรแกรมที่ต้องการจะเขียน และอัลกอริทึมที่จะใช้ ซึ่งในวิศวกรรมซอฟต์แวร์นั้น การเขียนโปรแกรมถือเป็นเพียงขั้นหนึ่งในวงจรชีวิตของการพัฒนาซอฟแวร์
          การเขียนโปรแกรมจะได้มาซึ่งซอร์สโค้ดของโปรแกรมนั้นๆ โดยปกติแล้วจะอยู่ในรูปแบบของ plain text ซึ่งไม่สามารถนำไปใช้งานได้ จะต้องผ่านการคอมไพล์ตัวซอร์สโค้ดนั้นให้เป็นภาษาเครื่อง (Machine Language) เสียก่อนจึงจะได้เป็นโปรแกรมที่พร้อมใช้งานการเขียนโปรแกรมถือว่าเป็นการผสมผสานกันระหว่างศาสตร์ของคณิตศาสตร์ วิทยาศาสตร์ ศิลปะ และวิศวกรรม เข้าด้วยกัน
 (ที่มา: http://th.wikipedia.org)
นักเรียนดูตัวอย่างซอร์สโค้สหรือรหัสโปรแกรม ของโปรแกรมภาษา C# ต่อไปนี้
int width = 5, length = 20;
int RectangleArea = width * length;
Console.WriteLine("Rectangle Area={0}", RectangleArea);
Console.ReadKey();
            จะเห็นว่ารหัสโปรแกรมนั้นเต็มไปด้วยคำภาษาอังกฤษ เพราะผู้พัฒนาโปรแกรมภาษา C# คือบริษัทไมโครซอฟต์ คอร์เปอเรชั่น จำกัด จากประเทศอเมริกา อีกอย่างภาษาอังกฤษเป็นภาษาสากลที่ทั่วโลกสามารถดูแล้วเข้าใจได้ ภาษา C# นั้นเป็นภาษาระดับสูง รหัสโปรแกรมต่างๆ จึงมีความใกล้เคียงกับภาษาอังกฤษที่ใช้สื่อสารกัน
            การทำงานของโปรแกรมจะเริ่มทำงานจากบรรทัดบนสุดมายังบรรทัดล่างสุด ดังนั้นการวางลำดับของคำสั่งจึงมีความสำคัญ เราจึงต้องวางคำสั่งที่เกี่ยวกับการนำเข้าข้อมูล (Input) ก่อนเป็นลำดับแรก จากนั้นจึงวางคำสั่งเกี่ยวกับการประมวลผล (Process) และคำสั่งแสดงผลลัพธ์ (Output) ตามลำดับ นักเรียนพิจารณาขั้นตอนการหาพื้นที่สี่เหลี่ยมผืนผ้า ดังนี้
                   ขั้นตอนที่ 1.กำหนดขนาดด้านกว้าง
                   ขั้นตอนที่ 2.กำหนดขนาดด้านยาว
                   ขั้นตอนที่ 3.คำนวณหาพื้นที่โดยใช้สูตร ขนาดพื้นที่ = ด้านกว้าง x ด้านยาว
                   ขั้นตอนที่ 4.แสดงขนาดพื้นที่ที่คำนวณได้
            ขั้นที่ 1-2 ก็คือการนำเข้าข้อมูล ขั้นที่ 3 คือการประมวลผล และขั้นที่ 4 คือการแสดงผลลัพธ์นั่นเอง
            นักเรียนคงทราบมาบ้างแล้วว่าตามหลักคณิตศาสตร์แล้วไม่นิยมเขียนสูตรสมการเป็นข้อความภาษาไทย เนื่องจากคณิตศาสตร์เป็นภาษาสากลที่ทุกคนทั่วโลกดูแล้วเข้าใจได้ตรงกัน จึงนิยมใช้ตัวอักษรภาษาอังกฤษ นักเรียนพิจารณาสูตรการคำนวณหาขนาดพื้นที่สี่เหลี่ยมผืนผ้า ดังนี้

ขนาดพื้นที่  = ด้านกว้าง x ด้านยาว

 
คำว่า “ขนาดพื้นที่” ตรงคำในภาษาอังกฤษว่า  “Area” 
คำว่า “ด้านกว้างหรือความกว้าง” ตรงกับคำในภาษาอังกฤษว่า “Width”  
คำว่า “ด้านยาวหรือความยาว” ตรงกับคำในภาษาอังกฤษว่า “Length
เมื่อนำตัวอักษรตัวแรกของแต่ละคำมาใช้แทนสูตรคำนวณ อาจเขียนได้ดังนี้
A = W x L    
สูตรสมการที่ใช้ในทางคณิตศาสตร์หรือสถิติ ส่วนใหญ่นิยมเขียนในลักษณะนี้ เช่น
                   สูตร การหาขนาดพื้นที่สีเหลี่ยมผืนผ้า
                                                 A = W x L    
                                     โดยที่      A           คือ          ขนาดพื้นที่
                                                  W           คือ          ด้านกว้าง
                                                   L           คือ          ด้านยาว
                                               
  ตัวอักษรภาษาอังกฤษที่เรานำมาใช้ เรียกว่า “ตัวแปร” ที่เรียกว่าตัวแปรเพราะว่า ค่าของมันสามารถแปรเปลี่ยนไปได้เรื่อยๆ นั่นเอง อยู่ที่ว่าเราจะเอาตัวเลขใดเข้าไปแทนตัวแปรเพื่อหาคำตอบ
 


ข้อควรรู้   การกำหนดตัวแปรในการเขียนโปรแกรมคอมพิวเตอร์ไม่นิยมใช้อักษรตัวแรกมาเป็นตัวแปร เพราะอาจสื่อความหมายผิดได้ ในทางคอมพิวเตอร์นิยมใช้คำเต็ม ได้แก่  Area = Width x Length ซึ่งสื่อความหมายดีกว่า  


 
      ตัวแปรที่เรากล่าวถึงมาในข้างต้นถือว่ามีความสำคัญมาก เพราะในรหัสโปรแกรมต่างๆ นั้นเต็มไปด้วยตัวแปรมากมาย นักเรียนลองพิจารณารหัสโปรแกรมในภาษา C# ต่อไปนี้
            // --------โปรแกรมหาค่าเฉลี่ย---------
double number, sum = 0;
int n = 0;
do
{
     Console.Write("Input number:");
     number = double.Parse(Console.ReadLine());
     if (number != 0)
     {
          sum = sum + number;
          n = n + 1;
     }
} while (number != 0);
Console.WriteLine("Average = {0:F2}", sum / n);
Console.ReadKey();
         นักเรียนแยกแยะออกหรือไม่ว่า จากโปรแกรมข้างต้น คำในภาษาอังกฤษคำใดบ้างที่เป็นตัวแปร คำตอบก็คือ number, sum และ n โดยที่ตัวแปร number คือตัวเลขที่ถูกป้อนเข้าไปหลายๆ ครั้งด้วยการวนซ้ำเพื่อนำไปหาค่าเฉลี่ย ตัวแปร sum เป็นตัวที่ใช้เก็บผลรวมของตัวเลขที่ถูกป้อนเข้าไปทั้งหมด เพื่อนำไปใช้เป็นตัวตั้งในการหาค่าเฉลี่ย ส่วนตัว n คือตัวแปรที่ใช้นับจำนวนครั้งที่ป้อนตัวเลขเข้าไป เพื่อนำไปใช้เป็นตัวหาร
         สำหรับคำอื่นๆ ที่ปรากฏอยู่ในโปรแกรม เป็นคำสั่งต่างๆ ซึ่งนักเรียนยังไม่ต้องกังวล เพราะเมื่อถึงเวลาที่นักเรียนได้ฝึกทักษะการเขียนโปรแกรมแล้วนักเรียนจะเข้าใจได้เอง
         สรุปว่าในโปรแกรมจะประกอบไปด้วย 3 ขั้นตอนหลักๆ ดังแผนภาพต่อไปนี้
 
 
 
 แผนภาพแสดงขั้นตอนของโปรแกรม
           หมายความว่า โปรแกรมนั้นจะเริ่มจากการป้อนข้อมูลหรือรับข้อมูลเข้าไปก่อน จากนั้นจึงนำข้อมูลที่ได้ไปประมวลผลหรือดำเนินการอย่างหนึ่งอย่างใดเพื่อให้ได้ผลลัพธ์ที่ต้องการ เมื่อได้ผลลัพธ์แล้วจึงนำผลลัพธ์ที่ได้ไปแสดงผลออกทางจอภาพหรือเครื่องพิมพ์นั่นเอง 
เราจะลองแยกรหัสโปรแกรมข้างต้นให้เป็น 3 ขั้นตอนดังแผนภาพ ดังนี้
1.การรับข้อมูลเข้า (Input) ก็คือการป้อนค่าตัวเลขเข้าไปในโปรแกรม ดังนี้
                  Console.Write("Input number:");                                          
                  number = double.Parse(Console.ReadLine()); 
2.การประมวลผล (Process)  ก็คือ การหาผลรวมของตัวเลขที่ป้อน การหาผลรวมของจำนวนครั้งที่ป้อนรวมทั้งการหาค่าเฉลี่ย  ดังนี้
     sum = sum + number;
n = n + 1; 
3.การแสดงผลลัพธ์ (Output) ก็คือการแสดงผลลัพธ์ค่าเฉลี่ยที่คำนวณได้ออกทางจอภาพนั่นเอง ดังนี้
Console.WriteLine("Average = {0:F2}", sum / n); 
 
 
(อ้างอิงจาก http://computer.bps.in.th/suteerat/analyze)

เริ่มต้นเขียนโปรแกรมด้วย C#

1.วิธีการเรียกใช้โปรแกรม Visual C#
            โปรแกรม Microsoft Visual C# 2010 Express เป็นชุดโปรแกรมที่บริษัทไมโครซอฟต์อนุญาตให้ดาวน์โหลดติดตั้งได้ฟรี เพราะเวอร์ชัน Express เป็นชุดที่ใช้ในการเรียนรู้การเขียนโปรแกรมเบื้องต้น จึงไม่ติดปัญหาด้านลิขสิทธิ์ นักเรียนสามารถดาวน์โหลดมาติดตั้ง และทดลองใช้เขียนโปรแกรมได้เองที่บ้าน  
            เมื่อเข้าสู่โปรแกรม C# นักเรียนจะพบหน้าต่าง Start Page ดังรูปต่อไปนี้
 
 
 
 
              การเขียนโปรแกรมจะต้องเริ่มต้นจากการสร้างโปรเจ็ค (Project) เสียก่อน โดยการคลิกที่ลิงค์  New Project ดังรูป หรือคลิกที่เมนู File แล้วเลือก New Project ก็ได้
            จากนั้นโปรแกรมจะเปิดหน้าต่าง New Project ขึ้นมาให้เลือกรูปแบบของโปรแกรมที่ต้องการ ให้นักเรียนเลือก Console Application แล้วคลิกตกลง ดังรูป
 
 
 
 
            จากนั้นนักเรียนจะได้  Project และไฟล์ที่ใช้ในการเขียนรหัสคำสั่งชื่อ Program.cs โดยไฟล์นี้โปรแกรม C# จะสร้างรหัสโปรแกรมมาให้ส่วนหนึ่ง ดังรูป เพื่อช่วยให้เราเขียนโปรแกรมได้เร็วขึ้น
 
 
 
 
           
 2.โครงสร้างคำสั่งโปรแกรมภาษา C#
 
                โปรแกรมภาษา C# มีรูปแบบโครงสร้างคำสั่งดังนี้
 
 
 
 
3.รูปแบบคำสั่ง
             โปรแกรมภาษา C# เป็นโปรแกรมภาษารุ่นล่าสุดของบริษัทไมโครซอฟต์ พัฒนามาจากภาษา C++ และ Java จุดประสงค์เพื่อให้สามารถเขียนโปรแกรมได้อย่างมีประสิทธิภาพ จึงทำให้ C# สามารถเขียนโปรแกรมได้หลายรูปแบบ มีคำสั่งต่างๆ มากมายที่ให้เราเรียกใช้ และมีคำศัพท์ที่เกี่ยวข้องมาก เช่น namespace, class, method, property, statement เป็นต้น บางครั้งจึงดูเหมือนยุ่งยากและซับซ้อนในการเขียนโปรแกรม ดังนั้นการเขียนโปรแกรมเบื้องต้นเราจะเรียนรู้เพียงบางส่วนเท่านั้น นักเรียนลองพิจารณารหัสโปรแกรม ต่อไปนี้ 
 
               string name = "Suteerat"; // สามารถทดลองเปลี่ยนชื่อก่อนรันได้             
               int size = name.Length;              
               if (size > 10)                              
                    Console.Write("Long name.");  
               else
                    Console.Write("Short name."); 
               Console.ReadKey();                    

           โปรแกรมตัวอย่างนี้จะมีคำสั่งทั้งหมด 6 คำสั่ง (คำสั่งที่มีเครื่องหมาย ; 5 คำสั่ง และคำสั่งตรวจสอบเงื่อนไข if...else อีก 1 คำสั่ง)  ขอกล่าวโดยสรุปเกี่ยวกับสีของคำสั่ง ดังนี้
            1.สีน้ำเงิน หมายถึงคำสั่งที่เป็นคำสงวนของโปรแกรม C# ได้แก่คำว่า string, int, if, else คำเหล่านี้เป็นคำสั่งสำเร็จของ C# ที่เรานำมาใช้เพื่อจุดประสงค์อย่างหนึ่งอย่างใด ซึ่งเราจะไม่สามารถตั้งชื่อตัวแปรซ้ำกับคำเหล่านี้ได้ string กับ int เราใช้สำหรับประกาศตัวแปรให้เป็นชนิดข้อความและตัวเลขจำนวนเต็มตามลำดับ ส่วนคำสั่ง if...else ใช้สำหรับการตรวจสอบเงื่อนไขในการเขียนโปรแกรมแบบทางเลือก ข้อสังเกตก็คือ คำสั่งเหล่านี้จะอยู่แบบเดี่ยวๆ ไม่ต้องมีจุดต่อท้ายเหมือนคำสั่งอื่นๆ และอักษรตัวแรกของคำสั่งจะเป็นตัวพิมพ์เล็กเสมอ
            2.สีฟ้า เป็นการบ่งบอกว่าคำเหล่านี้เป็นชื่อของคลาสที่เรานำมาใช้ในการเขียนโปรแกรม ซึ่งคลาสก็คือที่ที่เก็บเมธอดซึ่งเป็นคำสั่งเพื่อให้โปรแกรมทำงานอย่างหนึ่งอย่างใด การที่เราจะเรียกใช้เมธอดใดก็ตามเราจะต้องระบุชื่อของคลาสเสียก่อนแล้วตามด้วยเครื่องหมายจุดแล้วจึงระบุชื่อของเมธอดอีกที จากโปรแกรมเราจะเรียกใช้คลาส Console ข้อสังเกตก็คือคำสั่งที่เป็นคลาสเหล่านี้มักจะมีจุดต่อท้ายแล้วตามด้วยคำสั่งอื่นๆ อีกเสมอ และอักษรตัวแรกของคำสั่งจะเป็นตัวพิมพ์ใหญ่เสมอ
            3.สีดำ สีนี้จะนำมาใช้กับคำสั่งหลายๆ ชนิด เช่น ชื่อของตัวแปร ได้แก่ name และ size (ชื่อของตัวแปรเราจะเป็นผู้ตั้งชื่อเอง) ชื่อของเมธอด ได้แก่ Write และ ReadKey ชื่อของพร็อพเพอตี้ ได้แก่ Length เครื่องหมายต่างๆ ได้แก่ =  >   .  ( ) และ ; ใช้กับค่าคงที่ที่เป็นตัวเลขได้แก่ 10 ดังนั้นสีดำ จึงถูกนำมาใช้มากที่สุด แสดงว่าสีดำเป็นสีที่ไม่ต้องการเน้นเป็นพิเศษนั่นเอง ข้อสังเกตที่สำคัญก็คือ ถ้าเป็นชื่อของเมธอดจะพิมพ์ต่อเนื่องมาจากคลาสอีกทีโดยมีเครื่องหมายจุดเป็นตัวคั่นหรือแบ่งแยกระหว่างคลาสกับเมธอด นอกจากนั้นเมธอดจะมีวงเล็บต่อท้ายเสมอและอักษรตัวแรกจะขึ้นต้นด้วยอักษรพิมพ์ใหญ่เสมอ
            ส่วนพร็อพเพอตี้นั้นอักษรตัวแรกจะขึ้นต้นด้วยตัวพิมพ์ใหญ่เสมอเช่นกัน แต่จะไม่มีวงเล็บต่อท้ายเหมือนเมธอดและพร็อพเพอตี้อาจจะอยู่ต่อท้ายของตัวแปร หรือเมธอดก็ได้
            ไม่ว่าจะเป็นคลาส เมธอด หรือพร็อพเพอตี้จะเป็นคำสั่งสำเร็จรูปที่ C# เตรียมไว้ให้เรานำมาใช้ได้เลย ดังนั้นเราจะพิมพ์ชื่อผิดเพี้ยนไม่ได้ โปรแกรมจะแจ้งข้อผิดพลาดทันที เช่น คำสั่ง ReadKey เราจะพิมพ์เป็น readkey หรือ Readkey หรือ readKey ไม่ได้เด็ดขาด
            4.สีแดง เป็นสีที่นำมาใช้ค่าคงที่ที่เป็นข้อความ (string) หรือ ตัวอักขระ (char) ที่อยู่ภายใต้เครื่องหมาย "..." และ '...' เท่านั้น 
            5.สีเขียว ใช้กับคำอธิบายโปรแกรม ซึ่งจะไม่มีผลอะไรกับการทำงานของโปรแกรม
หมายเหตุ    นักเรียนจะเห็นว่าคำสั่งสำหรับทำงาน 1 คำสั่งจะมาจากคำสั่งย่อยๆ หลายๆ คำสั่ง สำหรับรายละเอียดในเรื่องของคำสั่งต่างๆ นักเรียนจะได้เรียนรู้ในภายหลัง
 4.องค์ประกอบพื้นฐานที่ควรรู้จัก
            มีองค์ประกอบพื้นฐานที่สำคัญบางอย่างตามรูปแบบของ C# ที่เราควรรู้จักมีดังนี้
 
4.1 บล็อก  { ... }
            รูปแบบของภาษา  ก็เช่นเดียวกับ c / c ++ คือจะใช้บล็อก { ... } ในการกำหนดจุดเริ่มต้นและจุดสิ้นสุดของการทำงานในแต่ละส่วน ซึ่งภายในบล็อกอาจมีบล็อกย่อยๆ ซ้อนลงไปได้อีก  ตามลักษณะของงาน เช่น
               if (……………..) 
                {
               for (……………..) 
                   {
                          ……….
                          ……….
                    }
                ……….
                ……...
               }
  
            ทั้งนี้เครื่องหมาย “ { ”  (open brace) กับ “ } ’’ (close brace) นั้นต้องครบคู่กันพอดี และโดยทั่วไปเรานิยมวาง  “ { ”  ไว้ให้ตรงกับคำสั่งเริ่มต้นบล็อก เช่น จากรหัสคำสั่งตัวอย่างที่เราวางไว้ตรงกับคำสั่ง if หรือ for เป็นต้น ทั้งนี้เพื่อให้พิจารณาขอบเขตของบล็อกได้ง่าย แต่ไม่ใช่กฎข้อบังคับแต่อย่างใด  เราอาจเลือกวางในแบบที่เราถนัดก็ได้
            4.2 เครื่องหมายสิ้นสุดคำสั่ง (  ; )
             ใน C#เราจะใช้เครื่องหมายเซมิโคลอน (semicolon) “ ; ’’ เป็นตัวแสดงจุดสิ้นสุดของแต่ละคำสั่ง  หากเราไม่ใส่เครื่องหมายนี้เพื่อคั่นระหว่างคำสั่ง โปรแกรมจะถือว่าเป็นคำสั่งเดียวกันไปตลอดแม้ว่าจะอยู่คนละบรรทัดก็ตาม  เช่น จากตัวอย่างมีคำสั่งทั้งหมด 3 คำสั่ง
x  =  10;
y  =  “xxx”;
z  =  x  +
                 10;
            เมื่อเครื่องหมาย  ;   เป็นตัวบ่งบอกจุดสิ้นสุดของคำสั่ง จึงสามารถมีคำสั่งอยู่ในบรรทัดเดียวกันมากกว่า 1 คำสั่งก็ได้ เช่น จากตัวอย่างมีคำสั่งทั้งหมด 3 คำสั่ง
x  =  10;  y  =  “xxx”;  z  =  x  +  10;
            แต่การเขียนรหัสคำสั่งในลักษณะนี้ ไม่ค่อยนิยมทำกัน เนื่องจากจะทำให้เราโปรแกรมได้ยาก รหัสโปรแกรมดูไม่เป็นระเบียบ แต่ก็อาจนำมาใช้ในบางกรณีได้เช่นกัน
            บางคำสั่งไม่สามารถทำให้จบภายในบรรทัดเดียวได้ เพราะบางคำสั่งจะมีคำสั่งย่อยๆ อยู่ในภายอีกก็ได้ ดังนั้นคำสั่งเหล่านี้จะมีบล็อกของตนเอง เช่น คำสั่ง if คำสั่ง for คำสั่ง while เป็นต้น เมื่อคำสั่งใดมีบล็อกอยู่แล้วก็ไม่จำเป็นต้องใส่เครื่องหมาย ; ต่อท้ายเครื่องหมายบล็อกอีก แต่คำสั่งภายในต้องมีเครื่องหมาย ; ตามปกติ เช่น
 
if (เงื่อนไข) 
{
              คำสั่ง A;
              คำสั่ง B;
}  
นักเรียนควรจดจำไว้ว่า จะไม่มี  ;   อยู่ทั้งก่อนหน้า “{”   และหลัง “}”
4.3 การเขียนคำอธิบายประกอบแทรกไว้ในรหัสโปรแกรม
            คำอธิบาย (Comment) หมายถึง การเขียนข้อความใดๆ ที่ไม่ใช่คำสั่งปะปนกันไปกับ คำสั่งอื่นๆ เพื่ออธิบายเรื่องใดเรื่องหนึ่งเอาไว้เพื่อความเข้าใจในรหัสโปรแกรมตรงส่วนนั้น ดังนั้นเพื่อให้โปรแกรมไม่สับสนว่าส่วนใดเป็นคำสั่ง ส่วนใดเป็นเพียงคำอธิบายไม่เกี่ยวข้องกับการทำงานของโปรแกรม จึงต้องใช้เครื่องหมายมาเป็นตัวช่วยในการแยกแยะ การแทรกคำอธิบายสามารถทำได้ 2 ลักษณะดังนี้คือ
1) รูปแบบ   // คำอธิบาย
            ใช้สำหรับคำอธิบายแบบบรรทัดเดียว (Single Line comment) โดยโปรแกรมจะถือว่าตั้งแต่สัญลักษณ์ // เป็นต้นไปจนถึงสิ้นสุดบรรทัดเป็นคำอธิบายทั้งหมด จะไม่นำมาพิจารณาในการประมวลผล เช่น
 
// สูตรคำนวณหาขนาดพื้นที่สี่เหลี่ยมผืนผ้า
RectangleArea=width*length;
            หรือ
RectangleArea=width*length;    // สูตรคำนวณหาขนาดพื้นที่สี่เหลี่ยมผืนผ้า
 
2) รูปแบบ  /* คำอธิบาย */
                 กรณีที่คำอธิบายของเราค่อนข้างยาวจำเป็นติองเขียนหลายๆ บรรทัด การใช้ // หลายๆครั้งอาจไม่สะดวกนัก เราก็สามารถใช้ /*...*/ ครอบคำอธิบายนั้นแทน โดยโปรแกรมจะถือว่าตั้งแต่สัญลักษณ์ /* เป็นต้นไปจะเป็นคำอธิบายทั้งหมดจนกว่าจะเจอสัญลักษณ์ */  จึงจะถือว่าเป็นการสิ้นสุดคำอธิบาย เช่น
/*  นี่คือส่วนของคำอธิบาย
                 ที่ไม่มีผลต่อการทำงานของโปรแกรม
                   มีไว้เพื่อช่วยให้ทำความเข้าใจรหัสคำสั่งได้ง่ายขึ้น   */90
 
(อ้างจาก http://computer.bps.in.th/suteerat/start )

การทำงานแบบวนซ้ำ

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


          จากแผนภาพ คำสั่งที่จะถูกทำซ้ำหลายๆ ครั้งคือคำสั่ง A ซึ่งเป็นคำสั่งที่อยู่ในลูป (Loop) คือในทุกๆ รอบที่ทำการตรวจสอบเงื่อนไข ถ้าเป็นจริงคำสั่ง A ก็จะถูกกระทำไปเรื่อยๆ แต่ถ้ารอบใดที่ตรวจสอบแล้วเงื่อนไขเป็นเท็จ ก็จะหลุดออกจากการทำซ้ำมาทำตามคำสั่ง B ที่อยู่นอกลูปของการวนซ้ำ
          อย่างที่กล่าวไว้แล้วตั้งแต่ตอนต้นว่าการทำซ้ำมี 2 ลักษณะคือ การทำซ้ำที่มีจำนวนรอบแน่นอน และที่มีจำนวนรอบไม่แน่นอน เพื่อให้เห็นภาพที่ชัดเจนขึ้น นักเรียนลองดูแผนภาพ ดังต่อไปนี้
           
 การทำซ้ำที่มีจำนวนรอบแน่นอน
 
 
      
     การทำซ้ำที่มีจำนวนรอบไม่แน่นอน   
 
 
 
 
   
            นอกจากนี้แล้ว ยังมีรูปแบบของการทำซ้ำอีก 2 รูปแบบที่นักเรียนควรทราบอีกก็คือ การทำซ้ำแบบตรวจสอบเงื่อนไขก่อนทำ และการทำซ้ำแบบทำซ้ำก่อน 1 รอบแล้วจึงตรวจสอบเงื่อนไข ดังแผนภาพต่อไปนี้
          
 
    การทำซ้ำที่ตรวจสอบเงื่อนไขก่อนทำ
 
 
            รูปแบบนี้ก่อนที่จะเข้าไปทำตามคำที่อยู่ในลูป (Loop) คือคำสั่ง A และ B (ต้องเข้าใจว่าคำสั่งที่อยู่ในลูปจะมีกี่คำสั่งก็ได้) โปรแกรมจะทำการตรวจสอบเงื่อนไขก่อน ถ้าผลลัพธ์เป็นจริง ก็จะเข้าไปทำคำสั่งในลูป แล้ววนขึ้นมาตรวจสอบเงื่อนไขใหม่ เป็นอย่างนี้ไปเรื่อยๆ ถ้ารอบใดที่พบว่าเงื่อนไขเป็นเท็จก็จะจบการทำซ้ำ มาทำตามคำสั่ง C
 
           
 
 การทำซ้ำที่ทำก่อน 1 รอบแล้วจึงตรวจสอบเงื่อนไข
 
 
 
 
 
            รูปแบบนี้โปรแกรมจะเข้าไปทำงานในลูปก่อน 1 ครั้ง แล้วจึงตรวจสอบเงื่อนไข ถ้าผลลัพธ์เป็นจริง ก็จะวนกลับขึ้นไปทำสั่งในลูปอีกครั้ง แล้วจึงตรวจสอบเงื่อนไขใหม่ เป็นอย่างนี้ไปเรื่อยๆ ถ้ารอบใดที่พบว่าเงื่อนไขเป็นเท็จก็จะจบการทำซ้ำ มาทำตามคำสั่ง C
            จริงๆ แล้วการเขียนโปรแกรมถ้าผู้เขียนโปรแกรมมีความเข้าใจเกี่ยวกับการทำซ้ำแล้วก็สามารถเลือกใช้รูปแบบใดรูปแบบหนึ่งไปใช้แก้ปัญหาได้อยู่แล้ว นักเรียนจึงไม่ต้องกังวลว่าจะต้องใช้ครบทุกรูปแบบของการทำซ้ำ
            ตัวอย่างผังงานต่อไปนี้ จะเป็นตัวอย่างเชิงโปรแกรมมากขึ้น ซึ่งจะเป็นการทำซ้ำโดยให้แสดงตัวเลขตั้งแต่ 1 ถึง 10 ออกทางจอภาพ ดังแผนภาพต่อไปนี้
 
 
 
 
(อ้างอิงจาก http://computer.bps.in.th/suteerat/loop)

ขั้นตอนการเขียนโปรแกรม

 
ขั้นตอนการเขียนโปรแกรมหรือพัฒนาโปรแกรม มีขั้นตอนโดยสังเขปดังนี้
    • การวิเคราะห์ปัญหาและความต้องการ (Problem Analysis and Requirement Analysis)
    • การกำหนดและคุณสมบัติของโปรแกรม (Specification)
    • การออกแบบ (Design)
    • การเขียนรหัสโปรแกรม (Coding)
    • การคอมไพล์ (Compilation)
    • การทดสอบการทำงานของโปรแกรม (Testing)
    • การจัดทำเอกสาร (Documentation)
    • การเชื่อมต่อ (Integration)
    • การบำรุงรักษา (Maintenance)
ข้อตกลง : ขั้นตอนทั้งหมดข้างต้นเป็นขั้นตอนสำหรับการพัฒนาโปรแกรมที่มีขนาดใหญ่ที่นำไปใช้จริง สำหรับการเรียนรู้การเขียนโปรแกรมเบื้องต้นของนักเรียน จะเรียนรู้เพียง 4 ขั้นตอนเท่านั้น ได้แก่ ขั้นวิเคราะห์ปัญหาและความต้องการ ขั้นการออกแบบ ขั้นการเขียนรหัสโปรแกรม และ ขั้นการทดสอบการทำงานของโปรแกรม
 
1.การวิเคราะห์ปัญหาและความต้องการ (Problem Analysis and Requirement Analysis)
            เป็นการแยกแยะรายละเอียดของปัญหาและความต้องการออกเป็นส่วนย่อยๆ ให้ครอบคลุมการทำงานของโปรแกรมที่ต้องการเขียนทั้งหมด เพื่อให้เห็นถึงองค์ประกอบ ความสัมพันธ์ ความต้องการ และแนวทางการแก้ปัญหาที่ถูกต้องอย่างครบถ้วน
2.การออกแบบ (Design)
            เป็นการออกแบบวิธีการแก้ปัญหา โดยการกำหนดขั้นตอน ทิศทาง รูปแบบการทำงานของโปรแกรม ผลลัพธ์ของโปรแกรม วิธีการประมวลผลและสูตรสมการต่างๆ การนำเข้าข้อมูล การกำหนดตัวแปรให้สอดคล้องกับข้อมูล การเลือกใช้โปรแกรมภาษา ทั้งนี้เพื่อให้การทำงานของโปรแกรมเป็นไปอย่างถูกต้อง และมีประสิทธิภาพมากที่สุด การออกแบบสามารถทำได้หลายวิธี แต่วิธีที่ได้รับความนิยมได้แก่ การเขียนขั้นตอนวิธี (Algorithms) การเขียนผังงาน (Flowcharts) และการเขียนรหัสลำลอง (Pseudo Code) 
3.การเขียนรหัสโปรแกรม (Coding)
            เป็นการเขียนรหัสโปรแกรมลงในโปรแกรมภาษาที่เลือกไว้ ตามวิธีการที่ได้ออกแบบไว้แล้ว โดยใช้คอมพิวเตอร์ที่ทำการติดตั้งโปรแกรมภาษาเอาไว้พร้อมที่จะทำการลงรหัสโปรแกรมและทดสอบความถูกต้องของโปรแกรม
4.การทดสอบการทำงานของโปรแกรม (Testing)
            เป็นการทดสอบผลการทำงานของโปรแกรมว่ามีความถูกต้องและมีประสิทธิภาพหรือไม่ การทดสอบทำได้โดยการป้อนค่าต่างๆ ตามที่โปรแกรมกำหนด แล้วสังเกตผลลัพธ์ที่ได้ หากพบว่าผลลัพธ์ไม่ถูกต้องก็ย้อนกลับไปแก้ไขรหัสโปรแกรม หากพบว่าไม่มีประสิทธิภาพ เช่น โปรแกรมทำงานช้า โปรแกรมไม่ครอบคลุมความต้องการก็อาจย้อนกลับไปแก้ไขรหัสโปรแกรมหรือออกแบบวิธีการแก้ปัญหาใหม่ สำหรับการทดสอบนั้นจะต้องป้อนทั้งข้อมูลด้านบวก (ข้อมูลที่โปรแกรมต้องการ) และข้อมูลด้านลบ (ข้อมูลที่โปรแกรมไม่ต้องการ)
 
ภาษาโปรแกรม
            ภาษาโปรแกรมแต่ละภาษาจะมีลักษณะหรือรูปแบบการเขียนที่คล้ายๆ กันและแตกต่างกัน การเลือกภาษาโปรแกรมหรือภาษาคอมพิวเตอร์เพื่อนำมาเขียนโปรแกรมนั้นขึ้นอยู่กับปัจจัยหลาย ๆ อย่าง เช่นนโยบายของบริษัท, ความเหมาะสมของโปรแกรมกับลักษณะงานที่จะถูกนำไปใช้, การเข้ากันได้กับโปรแกรมอื่น ๆ, หรืออาจเป็นความถนัดของแต่ละคน ภาษาโปรแกรมที่มีแนวโน้มในการนำมาเขียนมักเป็นภาษาที่มีคนที่สามารถเขียนได้ทันที หรือหากมีความจำเป็นที่จะต้องเลือกใช้ภาษาอื่น เช่นต้องการเน้นประสิทธิภาพในการทำงานของโปรแกรม ก็อาจจำเป็นต้องหานักเขียนโปรแกรมขึ้นมาจำนวนหนึ่งซึ่งมีความรู้ความเข้าใจในภาษาโปรแกรมที่ต้องการ และต้องมีคอมไพเลอร์ที่รองรับภาษาเหล่านั้นด้วย
            ตัวอย่างโปรแกรมภาษาที่ได้รับความนิยมในปัจจุบัน เช่น C++,Visual C#, Visual Basic, Delphi, Java, Java Script, PHP, ASP, Flash Action Script, HTML, XML เป็นต้น
 
 
(อ้างอิงจาก http://computer.bps.in.th/suteerat/step)
 

การออกแบบเขียนโปรแกรม

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

เน้นวัตถุประสงค์พื้นฐาน

 

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

สร้างอินเทอร์เฟสที่ง่ายต่อการเรียนรู้และใช้งาน

 

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

จัดเตรียมคุณสมบัติที่ช่วยเสริมประสิทธิภาพ

 

·         รวบรวมงาน คำสั่ง และหน้าที่ ที่เป็นกลุ่มคล้ายคลึงกันเข้าไว้ด้วยกัน
·         สร้างรายชื่อเมนูเรียงตามตัวอักษรหรือเรียงตามการใช้งานบ่อย 
·         จัดทำทางลัด (Shortcut)
·         การใช้ค่าโดยปริยาย (Default)
·         การใช้ค่าเดิม ในการให้ผู้ใช้ป้อนข้อมูลใหม่
·         เตรียมการค้นหาอย่างเร็ว (Fast-Find)
·         ใช้ภาษาแบบธรรมชาติ (Natural)

ทำให้ง่ายต่อการขอความช่วยเหลือหรือแก้ไขข้อผิดพลาด

 

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

ลดปัญหาของการนำข้อมูลเข้า

 

·         ทำการตรวจสอบข้อมูลที่สมเหตุผล (Data Validate Checks)
·         แสดงข้อความเพื่อแจ้งให้ทราบหรือเพื่อการเตือน
·         แสดงรายการข้อมูลที่กำหนดค่าที่ยอมรับได้ไว้แล้ว เพื่อป้องกันการใส่ข้อมูลที่ไม่ถูกต้อง
·         สร้างหลักเกณฑ์ที่บังคับให้เกิดบูรณภาพของข้อมูล
·         ใช้หน้ากากข้อมูลเข้า

จัดเตรียมการแจ้งผลแก่ผู้ใช้

 

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

ใช้ถ้อยคำและภาพที่คุ้นเคย

 

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