วันอังคารที่ 23 กันยายน พ.ศ. 2551

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

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


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


เกมทายใจคือเกมให้ผู้เล่นทายตัวเลข 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) การใช้เครื่องมือช่วยออกแบบดังกล่าวนอกจากแสดงกระบวนการที่ชัดเจนแล้ว ยังช่วยให้ผู้แก้ปัญหาสามารถหาข้อผิพลาดของวิธีการที่ใช้ได้ง่ายและแก้ไขได้อย่างรวด

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

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

4. การตรวจสอบและปรับปรุง (Refinement)


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


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





6.2 การจำลองความคิด

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

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

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

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



6.2.2 สัญลักษณ์ 






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




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

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


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



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


6.3.1 โครงสร้างแบบลำดับ 

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

6.3.2 โครงสร้างแบบมีทางเลือก 
คือ โครงสร้างที่มีเงื่อนไข ขั้นตอนการทำงานบางขั้นตอนต้องมีการตัดสินใจ เพื่อเลือกวิธีการประมวลผลขั้นต่อไป และจะมีบางขั้นตอนที่ไม่ได้รับการประมวลผล การตัดสินใจอาจมาทางเลือก 2 ทางหรือมากกว่าก็ได้ โครงสร้างที่มีทางเลือกเพียง 2 ทางเราเรียกชื่อว่า โครงสร้างแบบ if…then…else และโครงสร้างที่มีทางเลือกมากกว่า 2 ทาง เราเรียกชื่อว่า โครงสร้างแบบ case ซึ่งสามารถแสดงการทำงานของโครงสร้างนี้โดยใช้ผังงานได้ดังรูป


6.3.3 โครงสร้างแบบทำซ้ำ 


แสดงการทำงานของโครงสร้างควบคุม do while 
แสดงการทำงานของโครงสร้างควบคุม do until

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



6.4 การแก้ปัญหากับภาษาปาสคาล 

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

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

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



6.4.1 โครงสร้างภาษาปาสคาล 

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

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


จากตัวอย่างในรูปด้านล่างจะเห็นว่า ภาษาปาสคาลแบ่งโปรแกรมออกเป็น 2 ส่วน ส่วนแรก คือบริเวณที่มีการแรเงาในรูป ส่วนนี้เรียกว่า ส่วนประกาศ เป็นส่วนที่มีการประกาศชื่อโปรแกรม ตัวแปรและข้อมูลต่างๆ ที่ใช้งานในโปรแกรมนี้

สำหรับส่วนที่สองเรียกว่า ส่วนคำสั่ง ได้แก่ คำสั่งที่อยู่ภายในคำสั่ง begin และ end นอกจากนี้ในการเขียนโปรแกรมภาษาปาสคาล เมื่อผู้เขียนต้องการจบโปรแกรมต้องเติมเครื่องหมาย "." เพื่อจบการทำงานของโปรแกรมเสมอ


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


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


ในตัวอย่าง มีการใช้คำสั่งกำหนดค่า เพื่อกำหนดค่าเริ่มต้นให้แก่ตัวแปรชื่อ sum และ N นอกจากนั้นยังมีการกำหนดให้มีการคำนวณค่าของตัวแปร average ด้วย

จากตัวอย่าง บริเวณที่เป็นตัวอักษรหนา คือส่วนที่ใช้โครงสร้างควบคุมแบบทำซ้ำที่มีการตรวจสอบเงื่อนไขก่อนกระทำการแต่ละครั้ง ภายในโครงสร้างแบบทำซ้ำที่เห็นมีคำสั่ง 4 คำสั่ง จึงต้องมีการกำหนดขอบเขตของการทำซ้ำโดยคำสั่ง begin และ end; เป็นคำสั่งที่กำหนดขอบเขตดังกล่าว โปรแกรมจะทำงานซ้ำในขอบเขตนี้จนกว่าเงื่อนไขในการทำซ้ำจะเป็นเท็จ นั่นคือตัวแปร N ได้รับการเพิ่มค่าจนมีค่ามากกว่า 5 ซึ่งหมายความว่าขณะนั้นผู้ใช้ได้กรอกจำนวนเต็มที่ต้องการหาค่าเฉลี่ยผ่านทางแผงแป้นอักขระด้วยคำสั่งนำข้อมูลเข้าครบ 5 จำนวนแล้วนั่นเอง 

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



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

นอกจากการเขียนโปรแกรมในรูปแบบที่ได้กล่าวมาข้างต้นแล้ว ในปัจจุบันมีรูปแบบการเขียนโปรแกรมอีกรูปแบบหนึ่ง ที่กำลังได้รับความนิยม และมีแนวโน้มที่จะได้รับความนิยมจากผู้เขียนโปรแกรมมากขึ้นเรื่อยๆ ทั้งนี้เนื่องจากความยืดหยุ่นของการเขียนโปรแกรมดังกล่าว การเขียนโปรแกรมนี้คือ การเขียนโปรแกรมแบบเชิงวัตถุ ( OOP : Object Oriented Programming)


6.5 การโปรแกรมแบบเชิงวัตถุ 

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



6.5.1 แนวคิดการเขียนโปรแกรมแบบเชิงวัตถุ 
หากพิจารณาจากความหมายของคำว่า "object" คือวัตถุ ในที่นี้หมายถึงสิ่งที่เป็นรูปธรรมที่จับต้องได้ และเป็นนามธรรมที่จับต้องไม่ได้ และคำว่า "oriented" นั้นมาจากคำว่า "orient" ที่หมายถึงการนำทาง ดังนั้นการโปรแกรมเชิงวัตถุ จึงหมายถึงการเขียนโปรแกรมที่มองสิ่งที่เห็นและเกิดขึ้นทุกอย่างเป็นวัตถุที่ประกอบด้วยคุณลักษณะ (attribute) ที่บอกลักษณะของวัตถุนั้นและ การกระทำ(behavior)


หากลองพิจารณาจากชีวิตประจำวัน รถยนต์เป็นวัตถุชิ้นหนึ่ง ซึ่งมีส่วนประกอบดังนี้

คุณลักษณะ ได้แก่ ยี่ห้อ สี เกียร์ ล้อ
การกระทำ ได้แก่ การเบรก การขับเคลื่อน การกระตุก


หากเรามองคนเป็นวัตถุก็จะประกอบด้วย

คุณลักษณะ ได้แก่ ยี่ห้อ สี เกียร์ ล้อ
การกระทำ ได้แก่ การเบรก การขับเคลื่อน การกระตุก



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


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


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

นักเรียนลองพิจารณาตัวอย่างโปรแกรมที่สร้างภาษาจาวาที่ทำหน้าที่เดียวกับโปรแกรมในรูปหน้า 27 ซึ่งเขียนด้วยภาษาปาสคาลในตัวอย่างรูปที่ 6.10


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


การกระทำ main เป็นการกระทำหลักในการกระทำการ (run) โปรแกรม มีลักษณะเหมือนกับโปรแกรมหลักในการเขียนโปรแกรมภาษาปาสคาล โดยในการสร้างโปรแกรมภาษาจาวาจะใช้เครื่องหมาย "{" แทนข้อความ "begin" และเครื่องหมาย "}" แทนข้อความ end. 

6.6 การโปรแกรมแบบจินตภาพ 

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

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

6.6.1 แนวคิดการเขียนโปรแกรมแบบจินตภาพ 

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

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


6.6.1 ภาษาเดลฟาย 

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

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


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

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

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


แท็บคุณสมบัติ (properties)

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





แท็บเหตุการณ์ (events)

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


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

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

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

ขั้นตอนการสร้างโปรแกรมดังกล่าว เกี่ยวข้องกับหน้าต่างทั้ง 3 ของภาษาเดลฟายดังนี้

การทำงานกับหน้าต่างฟอร์ม
การทำงานกับหน้าต่างเอดิเตอร์
การทำงานกับหน้าต่างคุณสมบัติของวัตถุ





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


การทำงานกับหน้าต่างฟอร์ม 
ตัวอย่างฟอร์มที่สร้างส่วนติดต่อผู้ใช้ของโปรแกรมที่แสดงข้อความ Hello Delphi 



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



การทำงานกับหน้าต่างคุณสมบัติของวัตถุ 
ตัวอย่างการปรับแต่งข้อความ Hello Delphi บนฟอร์มโดยไม่ต้องเขียนรหัสคำสั่งเอง

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