วันพุธที่ 3 กันยายน พ.ศ. 2551

หลักการแก้ปัญหากับภาษาคอมพิวเตอร์

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

  เกมทายใจคือเกมให้ผู้เล่นทายตัวเลข 3 ตัว ในการเล่นเกมต้องใช้ผู้เล่น 2 คน คนที่หนึ่งคือ ผู้กำหนด เป็นคนกำหนดเลข 3 ตัวที่ไม่ซ้ำกันโดยเลือกจากกลุ่มตัวเลข 1-9 และอีกคนหนึ่งคือผู้ทาย เป็นผู้ทายตัวเลข 3 ตัวที่ไม่ซ้ำกันที่ผู้กำหนดให้กำหนดไว้แล้ว หลังจากที่ผู้ทายทายเลขแต่ละครั้ง ผู้กำหนดต้องให้รายละเอียดว่าตัวเลขที่ทายมานั้นถูกต้องกี่ตัว และในกรณีที่ตัวเลขที่ทายมาถูกตำแหน่งด้วยก็ต้องบอกว่าถูกตำแหน่งกี่ตัว เช่น ถ้าตัวเลขที่กำหนดไว้เป็น 815 และผู้ทายทายว่า 123 ผู้กำหนดต้องแจ้งว่าตัวเลขที่ทายนั้นถูก 1 ตัว และไม่มีตัวใดถูกตำแหน่ง
จะเห็นว่าการแก้ปัญหาดังกล่าวข้างต้น นอกจากจะใช้วิธีลองผิดลองถูกในการทายครั้งแรกๆ แล้วยังมีการใช้เหตุผลประกอบการแก้ปัญหาซึ่งเราเรียกวิธีการดังกล่าวว่า "วิธีขจัด" (method of elimination) กล่าวคือ จะแยกข้อมูลออกเป็นกรณีที่เป็นไปไม่ได้ทิ้ง จนเหลือกรณีที่เป็นไปได้ วิธีการดังกล่าวสามารถอธิบายได้ว่าทำไมจึงคิดหรือทำเช่นนั้น รูปแบบของการใช้เหตุผลประกอบการแก้ปัญหาอาจแตกต่างกัน ขึ้นอยู่กับเงื่อนไข ในปัญหาบางปัญหา อาจจะขจัดให้เหลือกรณีเดียวไม่ได้ ก็อาจจะทำให้เหลือกรณีน้อยที่สุด นอกจากเกมทายใจเรายังมีเกมลับสมองที่น่าสนใจและท้าทายความสามารถในการแก้ปัญหาอยู่อีกมากมายที่หาเล่นได้ตามเว็บไซต์ ตัวอย่างเช่น
  นอกจากวิธีการแก้ปัญหาที่ยกตัวอย่างมาซึ่งได้แก่ วิธีการลองผิดลองถูก การใช้เหตุผล การใช้วิธีขจัด ยังมีวิธีการแก้ปัญหาอีกมากมายที่ผู้แก้ปัญหาสามารถเลือกใช้ให้เขากับตัวปัญหาและประสบการณ์ของผู้แก้ปัญหา แต่อย่างไรก็ตาม หากพิจารณากันอย่างดี วิธีการเหล่านั้นล้วนมีขั้นตอนที่คล้ายคลึงกัน และจากการศึกษาพฤติกรรมในการเรียนรู้และแก้ปัญหาของมนุษย์ พบว่าโดยปกติ มนุษย์มีกระบวนการในการแก้ปัญหาที่มีลำดับขั้นตอนทั้งสิ้น 4 ขั้นตอน ซึ่ง เป็นเสมือนขั้นบันได (stair) ที่ทำให้มนุษย์สามารถประสบความสำเร็จในการแก้ปัญหาต่างๆ ได้ กระบวนการทั้ง 4 ขั้นตอนนั้นได้แก่ 
 
  
 

  
 

1. 
การวิเคราะห์และกำหนดรายละเอียดของปัญหา (State the problem)

2. 
การเลือกเครื่องมือและออกแบบขั้นตอนวิธี (Tools and Algorithm development)

3. 
การดำเนินการแก้ปัญหา (Implementation)

4. 



การตรวจสอบและปรับปรุง (Refinement)
  การวิเคราะห์และกำหนดรายละเอียดของปัญหา (State the problem)
  ขั้นตอนนี้เป็นขั้นตอนแรกสุดก่อนที่จะลงมือแก้ปัญหา แต่ผู้แก้ปัญหามักจะมองข้ามความสำคัญของขั้นตอนนี้อยู่เสมอ จุดประสงค์ของขั้นตอนนี้ คือ การทำความเข้าใจกับปัญหาเพื่อแยกให้ออกว่าข้อมูลที่กำหนดมาในปัญหาหรือเงื่อนไขของปัญหาคืออะไร และสิ่งที่ต้องการคืออะไร อีกทั้งวิธีการที่ใช้ประมวลผล ในการวิเคราะห์ปัญหาใด กล่าวโดยสรุปแล้วองค์ประกอบในการวิเคราะห์มีอยู่ 3 องค์ประกอบ

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



ตัวอย่างที่ 1 แสดงการวิเคราะห์และกำหนดรายละเอียดของการหาค่าเฉลี่ยของจำนวนเต็ม 5 จำนวน ได้แก่ 0 3 4 8 และ 12
  (1) การระบข้อมูลเข้า
  ในที่นี้โจทย์กำหนดให้หาค่าเฉลี่ยของจำนวนเต็ม 5 จำนวน ดังนั้น ข้อมูลเข้าได้แก่จำนวน 0 3 4 8 และ 12 
(2) การระบุข้อมูลออก
  จากโจทย์สิ่งที่เป็นคำตอบของปัญหา คือค่าเฉลี่ย (x) ของจำนวนทั้งห้า 
(3) การกำหนดวิธีการประมวลผล
  จากสิ่งที่โจทย์ต้องการ "ค่าเฉลี่ย" หมายถึง ผลรวมของจำนวนทั้ง 5 หารด้วย 5 ดังนั้น ขั้นตอนของการประมวลผลประกอบด้วย
  3.1 รับค่าจำนวนทั้ง 5 จำนวน
3.2 นำจำนวนเต็มทั้ง 5 มาบวกเข้าด้วยกัน
3.3 นำผลลัพธ์จากข้อ 3.2 มาหารด้วย 5 


ตัวอย่างที่ 2 แสดงการวิเคราะห์และกำหนดรายละเอียดของการหาค่า x เมื่อ x คือจำนวนเต็มจำนวนหนึ่งในกลุ่มจำนวนเต็ม 5 จำนวนที่มีค่าเฉลี่ยเป็น 10 และจำนวนอีก 4 จำนวนได้แก่ 3 4 8 และ 12 
  (1) การระบข้อมูลเข้า
  จากโจทย์ข้อมูลเข้า ได้แก่ 2.1 จำนวนอีก 4 จำนวน คือ 3 4 8 12
2.2 ค่าเฉลี่ยของจำนวนทั้ง 5 จำนวน คือ 10 

(2) การระบุข้อมูลออก
  จากโจทย์สิ่งที่เป็นผลลัพธ์ คือ ค่า x 
(3) การกำหนดวิธีการประมวลผล
  จากโจทย์และความหมายของ "ค่าเฉลี่ย" เราสามารถสรุปขั้นตอนของการประมวลผลได้ดังนี้ 3.1 หาค่าผลรวมของจำนวนเต็มทั้ง 5 โดยนำค่าเฉลี่ยคูณด้วยจำนวนของเลขจำนวนเต็ม นั่นคือ 10 ? 5 = 50
3.2 จากความหมายของ "ผลรวม" จะได้ 3+4+8+12+x = 50
3.3 แก้สมการ 27 + x = 50 (จะได้ x = 23 ซึ่งคือผลลัพธ์)


การเลือกเครื่องมือและออกแบบขั้นตอนวิธีการพัฒนา
(Tools and Algorithm development)



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


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

แต่พอสรุปได้เป็น 2 ลักษณะ ได้แก่
  6.2.1 ข้อความหรือคำบรรยาย
  6.2.2 สัญลักษณ์


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

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


 การแก้ปัญหากับภาษาปาสคาล  
   
Blaise Pascal นักเรียนคงเคยได้ยินคำว่า ภาษาคอมพิวเตอร์ มาบ้างแล้ว ในที่นี้จะได้กล่าวถึง ความหมายของคำว่า ภาษาคอมพิวเตอร์ให้ชัดเจนอีกครั้ง ภาษาคอมพิวเตอร์ หมายถึงสื่อที่ผู้เขียนโปรแกรมสามารถใช้ติดต่อกับเครื่องคอมพิวเตอร์ เพื่อให้เกิดการทำงานตามวัตถุประสงค์ที่ต้องการ ตามความหมายของ การเขียนโปรแกรม ที่ศึกษาในหัวข้อที่แล้ว ภาษาคอมพิวเตอร์คือสื่อที่ใช้สร้างโปรแกรม ซึ่งหมายถึง ชุดคำสั่งที่ใช้สำหรับสั่งให้คอมพิวเตอร์ทำงาน เพื่อให้ได้ผลลัพธ์ที่ต้องการ โดยอาศัยข้อมูลที่กำหนดให้ ซึ่งในที่นี้ผลลัพธ์ก็เปรียบได้กับคำตอบหรือข้อมูลออกของปัญหา ในขณะที่ข้อมูลที่กำหนดก็คือเงื่อนไข หรือข้อมูลของปัญหาซึ่งผู้แก้ปัญหาได้วิเคราะห์ไว้
  นักเรียนได้ทราบมาแล้วจากการศึกษาในบทที่ 5 ว่า ภาษาคอมพิวเตอร์ แบ่งเป็นภาษาระดับต่ำและภาษาระดับสูง การเขียนโปรแกรม ด้วย ภาษาระดับต่ำ นั้น ต้องอาศัยความรู้เกี่ยวกับฮาร์ดแวร์และระบบเลขฐานสอง ซึ่งเป็นเรื่องที่ทำความเข้าใจได้ยาก ถึงแม้จะมีการกำหนดรหัสหรือสัญลักษณ์ที่ทำให้เข้าใจหรือจำได้ง่ายขึ้น แต่ก็ยังคงมีความยุ่งยากในการจดจำ จึงได้มีความพยายามออกแบบ ภาษาระดับสูง สำหรับคอมพิวเตอร์ซึ่งผู้ใช้งานสามารถจดจำได้ง่ายและเขียนโปรแกรมได้สะดวก
  เนื่องจากในการใช้งานภาษาระดับสูงผู้เรียนไม่จำเป็นต้องเรียนรู้การทำงานภายใน หน่วยประมวลผลกลาง และไม่จำเป็นต้องรู้เรื่องระบบเลขฐานสอง ภาษาปาสคาลเป็นภาษาระดับสูงภาษาหนึ่งที่ใช้หลักการของ การโปรแกรมแบบโครงสร้าง ในการเขียนโปรแกรม และเป็นภาษาที่เป็นระบบซึ่งง่ายต่อการตรวจสอบความผิดพลาดและความเข้าใจการทำงาน จึงเหมาะแก่การเรียนรู้วิธีการเขียนโปรแกรมในระดับเริ่มต้น  
   
  ภาษาปาสคาล จัดเป็นภาษาในกลุ่มโปรแกรมแบบโครงสร้าง (structured programming) ซึ่งมุ่งเน้นให้มีการแบ่งโปรแกรมออกเป็นส่วนย่อยๆ ชัดเจน จากนั้นจึงค่อยเชื่อมโยงทำให้สามารถจัดการได้โดยง่าย ภาษาปาสคาลจึงเป็น ภาษาคอมพิวเตอร์ ที่เหมาะสำหรับสร้างพื้นฐานความคิดในการเขียนโปรแกรมโครงสร้างให้แก่นักเรียน เพื่อให้เป็นผู้พัฒนาโปรแกรมที่มีทักษะในการเขียนโปรแกรมอย่างมีหลักเกณฑ์และถูกต้อง สามารถอ่าน และทำความเข้าใจได้โดยง่าย อีกทั้งภาษาปาสคาลเป็นภาษาที่มีโครงสร้างโปรแกรมชัดเจน ซึ่งง่ายต่อการเรียนรู้
 โครงสร้างภาษาปาสคาล  
   
  โครงสร้างของโปรแกรมภาษาปาสคาลแบ่งเป็น 2 ส่วน ได้แก่ ส่วนประกาศ และ ส่วนคำสั่ง (statement part) เพื่อแสดงโครงสร้างโปรแกรมภาษาปาสคาลให้เห็นได้ชัดเจน ให้พิจารณาตัวอย่างโปรแกรมในรูป ซึ่งเป็นการนำขั้นตอนวิธีการหาค่าเฉลี่ยของจำนวนเต็ม 5 จำนวน ที่จำลองเป็นผังงานในตัวอย่างด้านล่าง มาเขียนเป็นโปรแกรมภาษาปาสคาล เพื่อให้คอมพิวเตอร์ช่วยคำนวณค่าเฉลี่ย และรูปแสดงผลลัพธ์ในการสั่งกระทำการโปรแกรม

  ผังงานและโปรแกรมภาษาปาสคาลที่ออกแบบเพื่อหาผลบวก 1, 2, 3, 4, 5,… จนถึง 20 (นั่นคือจะหาค่า 1 + 2 + 3 + 4 + … + 20) 
  
   
   
  
  
 

  
PROGRAM Average_5;

Var sum , N, data : integer;

  average : real;

  
BEGIN

Write(‘The program will calculate the average of ’);

Writeln(‘ five integers you enter through the keyboard …’);

Writeln;

sum := 0;

N := 1;

  
WHILE N <= 5 DO

  Begin

  Write(‘Please enter the number : ’);

  Readln(data);

  sum := sum + data;

  N := N+1;

  End;

  
Average := sum / 5;

Write(‘The average of five numbers is ’, Average:6:2);

END.


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




 การโปรแกรมแบบเชิงวัตถุ  
   
 
  การโปรแกรมแบบเชิงวัตถุ เป็นเทคนิคการเขียนโปรแกรมที่ได้รับการพัฒนาขึ้นในช่วงปี 1900 แนวคิดและหลักการในการเขียนโปรแกรมแบบนี้แตกต่างจากหลักการเขียนโปรแกรมในอดีต คือ จะเน้นความคิดเชิงวัตถุ (object) ที่สร้างขึ้นใช้งานในโปรแกรม โดยคำว่า "วัตถุ" ในที่นี้คือ ส่วนย่อยๆ ของโปรแกรมที่ผู้พัฒนาโปรแกรมสร้างขึ้นเพื่อทำงานเฉพาะอย่าง แล้วจึงนำวัตถุย่อยๆ เหล่านั้นมาประกอบกันเป็นโปรแกรมใหญ่ อีกทั้งวัตถุที่สร้างขึ้นมาแล้วสามารถนำกลับไปใช้กับโปรแกรมอื่นได้อีก โดยบางครั้งผู้เขียนโปรแกรมไม่จำเป็นต้องสร้างวัตถุเองทุกชิ้น สามารถนำวัตถุที่ผู้อื่นสร้างไว้มาใช้ใหม่ได้ เพียงแค่รู้ว่าวัตถุนั้นทำหน้าที่และเรียกใช้งานอย่างไร ทำให้
  โปรแกรมเมอร์ที่เขียนโปรแกรมประเภทนี้สามารถปรับปรุงเปลี่ยนแปลงโปรแกรมได้สะดวก การเขียนโปรแกรมแบบนี้จึงเข้ามาแทนที่การเขียนโปรแกรมแบบโครงสร้างอย่างรวดเร็ว โดยเฉพาะอย่างยิ่งกับงานที่เกี่ยวข้องกับอินเทอร์เน็ต นอกจากนี้ การโปรแกรมแบบเชิงวัตถุยังสามารถทำงานกับข้อมูลได้หลายรูปแบบ ทั้งที่เป็นรูปภาพ (image) วีดิทัศน์ (video) หรือเสียง (sound) ตัวอย่าง ภาษาคอมพิวเตอร์ที่ใช้เทคนิคการโปรแกรมเชิงวัตถุ เช่น ภาษาจาวา ภาษาซีชาร์ป เป็นต้น
แนวคิดการเขียนโปรแกรมแบบเชิงวัตถุ  
  หากพิจารณาจากความหมายของคำว่า "object" คือวัตถุ ในที่นี้หมายถึงสิ่งที่เป็นรูปธรรมที่จับต้องได้ และเป็นนามธรรมที่จับต้องไม่ได้ และคำว่า "oriented" นั้นมาจากคำว่า "orient" ที่หมายถึงการนำทาง ดังนั้นการโปรแกรมเชิงวัตถุ จึงหมายถึงการเขียนโปรแกรมที่มองสิ่งที่เห็นและเกิดขึ้นทุกอย่างเป็นวัตถุที่ประกอบด้วยคุณลักษณะ (attribute) ที่บอกลักษณะของวัตถุนั้นและ การกระทำ(behavior)


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

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

  มีอุปกรณ์ที่ช่วยอำนวยความสะดวกให้แก่ผู้พัฒนาซอฟต์แวร์มากขึ้น โดยที่ผู้พัฒนาโปรแกรมไม่ต้องใช้ความรู้ที่ลึกซึ้งในการสร้างงาน อีกทั้งสามารถเห็นผลงานของตนได้ตั้งแต่ขณะที่กำลังสร้าง หลักการเขียนโปรแกรมที่ว่านี้ คือการเขียนโปรแกรมแบบจินตภาพ (visual programming) 
  
   
 แนวคิดการเขียนโปรแกรมแบบจินตภาพ  
   
  การเขียนโปรแกรมแบบจินตภาพ คือการพัฒนาโปรแกรมที่ผู้เขียนโปรแกรมสามารถมองเห็นผลลัพธ์ของงาน เมื่อมีการกระทำการโปรแกรมได้ตั้งแต่ขณะพัฒนาโปรแกรม โดยไม่จำเป็นต้องรอให้การพัฒนาเสร็จสมบูรณ์ โดยตัวแปลภาษาได้เตรียมสิ่งแวดล้อมในการทำงาน (development environment) และเครื่องมือ หรือชิ้นส่วนที่ผู้พัฒนาต้องใช้ในการสร้างงานไว้ให้สามารถเรียกใช้งานได้ โดยที่ไม่ต้องลงมือสร้างเอง เครื่องมือหรือชิ้นส่วนที่ระบบเตรียมไว้ให้นี้เรียกว่า คอมโพเนนต์ (component) ซึ่งอาจเป็นปุ่ม (button) ข้อความ (label) ช่องสำหรับกรอกข้อความ (edit box) รูปภาพ (image) ผู้พัฒนาเพียงกำหนดคุณลักษณะเฉพาะและการกระทำของวัตถุแต่ละชิ้น เพื่อนำมาสร้างเป็นซอฟต์แวร์ประยุกต์ที่สามารถทำงานตามที่เราต้องการ โดยการประกอบชิ้นส่วนเหล่านั้นทำได้โดยการนำชิ้นส่วนมาวางบนฟอร์มที่มีลักษณะคล้ายหน้าต่าง หรือวินโดวส์ (windows) ที่เดลฟายเตรียมไว้ให้ผู้พัฒนาโปรแกรม สามารถกำหนดคุณสมบัติเพิ่มเติมให้กับคอมโพเนนต์ได้ เช่น การกำหนดขนาด กำหนดตำแหน่ง กำหนดชื่อคอมโพเนนต์นั้นผ่านระบบติดต่อที่ตัวภาษาเตรียมไว้ให้โดยไม่ต้องเขียนรหัสคำสั่งเอง ผู้ใช้จะเกี่ยวข้องภาษาเพียงการกำหนดตัวแปรที่ใช้งานเพิ่มเติม และการเขียนคำสั่งภายในการกระทำหรือโปรแกรมย่อยของคอมโพเนนต์เท่านั้น


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

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


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

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

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


 3. หน้าต่างเอดิเตอร์  
  เป็นหน้าต่างสำหรับเขียนรหัสคำสั่ง เพื่อกำหนดขั้นตอนการทำงานของซอฟต์แวร์ที่ต้องการสร้าง เมื่อเปิดโปรแกรมเดลฟายขึ้นมาจะมีการสร้างรหัสคำสั่งเริ่มต้นของโปรแกรม ให้สำหรับควบคุมการทำงานบนฟอร์มที่ชื่อ Form1 ที่เดลฟายสร้างให้ แต่โปรแกรม 1 โปรแกรมที่ใช้ในเดลฟาย เราเรียกว่า ยูนิต (unit) ซึ่งโดยปกติฟอร์ม 1 ฟอร์ม จะต้องยูนิตที่บรรจุคำสั่งควบคุมการทำงานของฟอร์มอยู่ 1 ยูนิต

ไม่มีความคิดเห็น: