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

22 ก.ค.

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

415
2
2
425
1
1
416
1
1
715
2
2
815
3
3
จะเห็นว่าการแก้ปัญหาดังกล่าวข้างต้น นอกจากจะใช้วิธีการลองผิดลองถูกในการทายครั้งแรก ๆ แล้ว ยังมีการใช้เหตุผลประกอบการแก้ปัญหา ซึ่งเราเรียกวิธีการดังกล่าวว่า “วิธีขจัด” (Method Of Elimination) กล่าวคือ จะแยกข้อมูลออกเป็นกรณีที่เป็นไปไม่ได้ทิ้ง จนเหลือกรณีที่เป็นไปได้ วิธีการดังกล่าวสามารถอธิบายได้ว่าทำไมจึงคิดหรือทำเช่นนั้น รูปแบบของการใช้เหตุผลประกอบการแก้ปัญหาอาจแตกต่างกันขึ้นอยู่กับเงื่อนไข ในปัญหาบางปัญหาอาจจะขจัดให้เหลือกรณีเดียวไม่ได้ แต่อาจจะทำให้เหลือกรณีน้อยที่สุด
นอกจากวิธีการแก้ปัญหาที่ยกตัวอย่างมา ซึ่งได้แก่ วิธีการลองผิดลองถูก การใช้เหตุผล การใช้วิธีขจัด ยังมีวิธีการแก้ปัญหาอีกมากมายที่ผู้แก้ปัญหาสามารถเลือกใช้ให้เข้ากับตัวปัญหาและประสบการณ์ของผู้แก้ปัญหาเอง แต่อย่างไรก็ตาม วิธีการเหล่านั้นล้วนมีขั้นตอนที่คล้ายคลึงกัน และจากการศึกษาพฤติกรรมในการเรียนรู้และแก้ปัญหาของมนุษย์พบว่า โดยปกติมนุษย์มีกระบวนการในการแก้ปัญหา ซึ่งประกอบด้วย 4 ขั้นตอน ดังนี้
1) การวิเคราะห์และกำหนดรายละเอียดของปัญหา
การวิเคราะห์และกำหนดรายละเอียดของปัญหา (State the Problem) ขั้นตอนนี้เป็นขั้นตอนแรกสุดก่อนที่จะลงมือแก้ปัญหา แต่ผู้แก้ปัญหามักจะมองข้ามความสำคัญของขั้นตอนนี้อยู่เสมอ จุดประสงค์ของขั้นตอนนี้ คือ การทำความเข้าใจกับปัญหาเพื่อแยกให้ออกว่าข้อมูลที่กำหนดมาในปัญหาหรือเงื่อนไขของปัญหาคืออะไร และสิ่งที่ต้องการคืออะไร อีกทั้งวิธีการที่ใช้ประมวลผล ในการวิเคราะห์ปัญหาใด กล่าวโดยสรุปมีองค์ประกอบในการวิเคราะห์ดังนี้
1.1 การระบุข้อมูลเข้า ได้แก่ การพิจารณาข้อมูลและเงื่อนไขที่กำหนดมาในปัญหา
1.2 การระบุข้อมูลออก ได้แก่ การพิจารณาเป้าหมายหรือสิ่งที่ต้องหาคำตอบ
1.3 การกำหนดวิธีประมวลผล ได้แก่ การพิจารณาขั้นตอนวิธีการได้มาซึ่งคำตอบหรือข้อมูลออก
ตัวอย่างที่ 6.2 แสดงการวิเคราะห์และกำหนดรายละเอียดของการหาค่าเฉลี่ยของจำนวนเต็ม 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 นำผลลัพธ์จากข้อ 1.3.2 มาหารด้วย 5
ตัวอย่างที่ 6.3 แสดงการวิเคราะห์และกำหนดรายละเอียดของการหาค่า x เมื่อ x คือ จำนวนเต็มจำนวนหนึ่งในกลุ่มจำนวนเต็ม 5 จำนวน ที่มีค่าเฉลี่ยเป็น 10 และจำนวนอีก 4 จำนวน ได้แก่ 3, 4, 8 และ 12
จากองค์ประกอบในการวิเคราะห์และกำหนดรายละเอียดของปัญหา
(1) การระบุข้อมูลเข้า
จากโจทย์ข้อมูลเข้าได้แก่
1.1 จำนวนอีก 4 จำนวน คือ 3, 4, 8 และ 12
1.2 ค่าเฉลี่ยของจำนวนทั้ง 5 จำนวน คือ 10
(2) การระบุข้อมูลออก
จากโจทย์สิ่งที่เป็นผลลัพธ์ คือ ค่า x
(3) การกำหนดวิธีการประมวลผล
จากโจทย์ และความหมายของ “ค่าเฉลี่ย” เราสามารถสรุปขั้นตอนของการประมวลผลได้ดังนี้
3.1 หาค่าผลรวมของจำนวนเต็มทั้ง 5 โดยนำค่าเฉลี่ยคูณด้วยจำนวนของเลขจำนวนเต็มนั่นคือ 10 x 5 = 50
3.2 จากความหมายของ “ผลรวม” จะได้ 3 + 4 + 8 +12 + x = 50
3.3 แก้สมการ 27 + x = 50 (จะได้ x = 23 ซึ่งคือผลลัพธ์)
2) การเลือกเครื่องมือและออกแบบขั้นตอนวิธี
การเลือกเครื่องมือและออกแบบขั้นตอนวิธี (Tools and Algorithm Development) ขั้นตอนนี้เป็นขั้นตอนของการวางแผนในการแก้ปัญหาอย่างละเอียดถี่ถ้วน หลังจากที่เราทำความเข้าใจกับปัญหา พิจารณาเงื่อนไขและข้อมูลที่มีอยู่ และสิ่งที่ต้องการหาในขั้นตอนที่ 1 แล้ว เราสามารถคาดคะเนวิธีการที่จะใช้ในการแก้ปัญหา ขั้นตอนนี้จำเป็นต้องอาศัยประสบการณ์ของผู้แก้ปัญหาเป็นหลัก หากผู้แก้ปัญหาเคยพบกับปัญหาทำนองนี้มาแล้วก็สามารถดำเนินการตามแนวทางที่เคยปฏิบัติมา
ขั้นตอนนี้จะเริ่มจากการเลือกเครื่องมือที่ใช้ในการแก้ปัญหา โดยพิจารณาความเหมาะสมระหว่างเครื่องมือกับเงื่อนไขต่าง ๆ ของปัญหา ซึ่ง หมายรวมถึงความสามารถของเครื่องมือในการแก้ปัญหาดังกล่าว และสิ่งที่สำคัญที่สุดคือความคุ้นเคยในการใช้งานเครื่องมือนั้น ๆ ของผู้แก้ปัญหา
อีกสิ่งหนึ่งที่สำคัญในการแก้ปัญหา คือ ยุทธวิธีที่ใช้ในการแก้ปัญหา หรือที่เราเรียกว่า “ขั้นตอนวิธี” (Algorithm) ในการแก้ปัญหา หลังจากที่เราได้เครื่องมือช่วยแก้ปัญหาแล้ว ผู้แก้ปัญหาต้องวางแผนว่าจะใช้เครื่องมือดังกล่าวเพื่อให้ได้ผลลัพธ์ที่ถูกต้องและดีที่สุด การออกแบบขั้นตอนวิธีในการแก้ปัญหา ผู้แก้ปัญหาควรใช้แผนภาพหรือเครื่องมือในการแสดงขั้นตอนการทำงาน เพื่อให้ง่ายต่อความเข้าใจ เช่น ผังงาน (Flowchart) ที่จำลองขั้นตอนวิธีการแก้ปัญหาในรูปของสัญลักษณ์ รหัสจำลอง (Pseudo Code) ซึ่งเป็นการจำลองขั้นตอนวิธีการแก้ปัญหาในรูปของคำบรรยาย การใช้เครื่องมือช่วยออกแบบดังกล่าว นอกจากแสดงกระบวนการที่ชัดเจนแล้วยังช่วยให้ผู้แก้ปัญหาสามารถหาข้อผิดพลาดของวิธีการที่ใช้ได้ง่ายและแก้ไขได้อย่างรวดเร็ว
3) การดำเนินการแก้ปัญหา
การดำเนินการแก้ปัญหา (Implementation) หลังจากที่ได้ออกแบบขั้นตอนวิธีเรียบร้อยแล้ว ขั้นตอนนี้เป็นขั้นตอนที่ต้องลงมือแก้ปัญหาโดยใช้เครื่องมือที่ได้เลือกไว้ หากการแก้ปัญหาดังกล่าวใช้คอมพิวเตอร์เข้ามาช่วยงาน ขั้นตอนนี้ก็เป็นการใช้โปรแกรมสำเร็จหรือใช้ภาษาคอมพิวเตอร์เขียนโปรแกรมแก้ปัญหา ขั้นตอนนี้ต้องอาศัยความรู้เกี่ยวกับเครื่องมือที่เลือกใช้ ซึ่งผู้แก้ปัญหาต้องศึกษาให้เข้าใจและเชี่ยวชาญ ในขณะที่ดำเนินการ หากพบแนวทางที่ดีกว่าที่ออกแบบไว้ ก็สามารถปรับเปลี่ยนได้
4) การตรวจสอบและปรับปรุง
การตรวจสอบและปรับปรุง (Refinement) หลังจากที่ลงมือแก้ปัญหาแล้ว ต้องตรวจสอบให้แน่ใจว่าวิธีการนี้ให้ผลลัพธ์ที่ถูกต้อง โดยผู้แก้ปัญหาต้องตรวจสอบว่าขั้นตอนวิธีที่สร้างขึ้นสอดคล้องกับรายละเอียดของปัญหา ซึ่งได้แก่ ข้อมูลเข้า และข้อมูลออก เพื่อให้มั่นใจว่าสามารถรองรับข้อมูลเข้าได้ในทุกกรณีอย่างถูกต้องและสมบูรณ์ ในขณะเดียวกันก็ต้องปรับปรุงวิธีการเพื่อให้การแก้ปัญหานี้ได้ผลลัพธ์ที่ดีที่สุด
ขั้นตอนทั้ง 4 ขั้นตอนดังกล่าวข้างต้น เป็นเสมือนขั้นบันได (Stair) ที่ทำให้มนุษย์สามารถประสบความสำเร็จในการแก้ปัญหาต่าง ๆ ได้ รวมทั้งการเขียนหรือพัฒนาโปรแกรมคอมพิวเตอร์เพื่อแก้ปัญหา ก็ต้องใช้กระบวนการตามขั้นตอนทั้ง 4 นี้เช่นกัน
2. การจำลองความคิด
ขั้นตอนที่สำคัญในการแก้ปัญหาคือการวางแผน การวางแผนที่ดีจะช่วยให้การแก้ปัญหาเป็นไปได้โดยง่าย ผู้ที่สามารถวางแผนในการแก้ปัญหาได้ดี นอกจากจะต้องใช้ประสบการณ์ ความรู้ และความมีเหตุผลแล้ว ยังควรรู้จักวางแผนให้เป็นขั้นตอนอย่างเป็นระเบียบด้วย การจำลองความคิดเป็นส่วนหนึ่งในขั้นตอนที่สองของการแก้ปัญหา การจำลองความคิดออกมาในลักษณะเป็นข้อความหรือเป็นแผนภาพจะช่วยให้สามารถแก้ปัญหาได้ดี โดยเฉพาะปัญหาที่ยุ่งยากซับซ้อน การวางแผนจะเป็นแนวทางในการดำเนินการแก้ปัญหาต่อไป อีกทั้งเป็นการแสดงแบบเพื่อให้ผู้ที่เกี่ยวข้องได้เข้าใจและสามารถปฏิบัติตามในแนวทางเดียวกัน ทั้งนี้ก็ด้วยวัตถุประสงค์อย่างเดียวกับกลุ่มกิจการก่อสร้าง ซึ่งจำเป็นต้องมีแบบแปลนเป็นเครื่องมือติดต่อสื่อสารระหว่างผู้ออกแบบและผู้ก่อสร้าง แบบแปลนเหล่านั้นจะอยู่ในรูปลักษณะของการวาดภาพหรือแสดงเครื่องหมายซึ่งเป็นที่เข้าใจกันระหว่างผู้เกี่ยวข้อง แบบแปลนจะต้องจัดทำให้เสร็จก่อนที่จะลงมือก่อสร้าง โดยผ่านการตรวจสอบ ทบทวน และพิจารณาจากผู้เกี่ยวข้องหลายฝ่าย เมื่อเห็นว่าเป็นที่ถูกต้องและพอใจของทุกฝ่ายแล้ว จึงก่อสร้างตามแบบนั้น แต่ถ้ายังไม่เป็นที่พอใจ ก็จะพิจารณาแก้ไขแบบแปลนส่วนนั้น ๆ เสียก่อน จะได้ไม่ต้องรื้อถอนหรือทุบทิ้งภายหลัง และเมื่อต้องการซ่อมแซมหรือต่อเติมก็นำเอาแบบแปลนเดิมมาตรวจสอบและเพิ่มแบบแปลนในส่วนนั้นได้โดยง่าย การใช้แบบแปลนจึงเป็นสิ่งที่จำเป็นระหว่างช่างก่อสร้าง ผู้ออกแบบ และผู้เกี่ยวข้องอื่น ๆ เป็นอย่างมาก เพราะประหยัดเวลา ค่าใช้จ่าย และเข้าใจง่าย เมื่อสรุปรวมแล้วแบบแปลนเหล่านั้นก็คือข้อตกลงให้สร้างอาคารของผู้จ้างกับผู้รับจ้างที่อยู่ในรูปแบบกะทัดรัด แทนที่จะเขียนเป็นข้อความที่เป็นลายลักษณ์อักษรอย่างยืดยาว และยังเป็นเครื่องมือให้ช่างใช้ในการก่อสร้างอีกด้วย
เครื่องมือที่ใช้ในการจำลองความคิดมักจะประกอบขึ้นด้วยเครื่องหมายที่แตกต่างกันหลายอย่าง แต่พอสรุปได้เป็น 2 ลักษณะคือ
6.2.1 ข้อความหรือคำบรรยาย
เป็นการเขียนเค้าโครงด้วยการบรรยายเป็นภาษาที่มนุษย์ใช้สื่อสารกัน เพื่อให้ทราบถึงขั้นตอนการทำงานของการแก้ปัญหาแต่ละตอน ในบางครั้งอาจใช้คำสั่งของภาษาที่ใช้เขียนโปรแกรมก็ได้
ตัวอย่างที่ 6.4 คำบรรยายแสดงขั้นตอนการเปลี่ยนยางรถเมื่อยางแตกขณะขับรถ
1) จอดรถหลบข้างทาง
2) คลายสกรูยึดล้อ
3) นำแม่แรงออกยกรถ
4) ถอดล้อออก นำยางอะไหล่มาเปลี่ยน
5) ขันสกรูเข้า เก็บยางที่ชำรุดเพื่อไปซ่อม
6) คลายแม่แรง เก็บแม่แรง
6.2.2 สัญลักษณ์
เครื่องหมายรูปแบบต่าง ๆ ซึ่งใช้สำหรับสื่อสารความหมายให้เข้าใจตรงกัน สถาบันมาตรฐานแห่งชาติอเมริกา (The American National Standard Institute : ANSI) ได้กำหนดสัญลักษณ์ไว้เป็นมาตรฐานแล้ว สามารถนำไปใช้ได้ตามความเหมาะสมต่อไป ซึ่งมีรายละเอียด รูปแบบ และความหมายที่ควรทราบตามตารางต่อไปนี้
รูปที่ 6.1 ตราแสดงความหมายของสัญลักษณ์
รูปที่ 6.2 ตราแสดงความหมายของสัญลักษณ์
ตัวอย่างที่ 6.5 การวางแผนการไปโรงเรียน
การจำลองความคิดเป็นข้อความ
เริ่มต้น
ตื่นนอน
อาบน้ำแต่งตัว
ไปโรงเรียน
จบ
รูปที่ 6.3 การจำลองความคิดเป็นแผนภาพ
ตัวอย่างที่ 6.6 การจำลองความคิดในการหาผลบวก 1, 2, 3, 4, 5 … จนถึง 20 (นั่นคือจะหาค่า 1 + 2 + 3 + 4 + … + 20) เป็นข้อความหรือแผนภาพ
การจำลองความคิดเป็นข้อความ
เริ่มต้น
กำหนดให้ N มีค่าเริ่มต้นเป็น 0
กำหนดให้ K มีค่าเริ่มต้นเป็น 1
นำค่า K มารวมกับค่า N เดิม ได้ผลลัพธ์เท่าไรไปเก็บไว้ที่ N
นำค่า 1 มารวมกับค่า K เดิม ได้ผลลัพธ์เท่าไรไปเก็บไว้ที่ K
เปรียบเทียบค่า K กับ 20
ถ้า K น้อยกว่าหรือเท่ากับ 20 ให้วนกลับไปทำในขั้น 3 และทำคำสั่งถัดลงมาตามลำดับ
แต่ถ้า K มากกว่า 20 ให้แสดงได้คำตอบ
3. การเขียนโปรแกรม
จากการศึกษาหลักการขั้นตอนการแก้ปัญหาในหัวข้อ 6.1 และ 6.2 ที่ผ่านมา หลังจากที่เราสามารถวิเคราะห์ปัญหาและสร้างแบบจำลองความคิด เพื่อแสดงขั้นตอนในการแก้ปัญหาแล้ว ขั้นตอนต่อไปคือการลงมือแก้ปัญหาตามขั้นตอนที่ออกแบบไว้ โดยใช้เครื่องมือช่วยในการแก้ปัญหา ในที่นี้หากเครื่องมือที่นักเรียนเลือกคือภาษาคอมพิวเตอร์ ขั้นตอนในการลงมือแก้ปัญหาก็คือขั้นตอนของการเขียนโปรแกรมคอมพิวเตอร์ ซึ่งถือได้ว่าเป็นขั้นตอนหนึ่งที่สำคัญในการแก้ปัญหาด้วยคอมพิวเตอร์
การเขียนโปรแกรม (Programming) หมายถึง กระบวนการใช้ภาษาคอมพิวเตอร์เพื่อกำหนดโครงสร้างของข้อมูล และกำหนดขั้นตอนวิธีเพื่อใช้แก้ปัญหาตามที่ได้ออกแบบไว้ โดยอาศัยหลักเกณฑ์การเขียนโปรแกรมคอมพิวเตอร์ของแต่ละภาษา
ก่อนการเขียนโปรแกรม ผู้พัฒนาโปรแกรมจะต้องเลือกภาษาคอมพิวเตอร์ที่จะนำมาใช้ช่วยงานโดยพิจารณาจากปัจจัยต่าง ๆ ในการทำงาน เช่น ลักษณะของปัญหา ความถนัดของผู้เขียนโปรแกรม สภาพแวดล้อมในการทำงานของระบบคอมพิวเตอร์ เป็นต้น เนื่องจากในปัจจุบันมีภาษาคอมพิวเตอร์ให้เลือกใช้ได้หลายภาษา เช่น ภาษาปาสคาล ภาษาซี ภาษาจาวา ภาษาเดลฟาย เป็นต้น ถึงแม้แต่ละภาษาจะมีรูปแบบและหลักการในการสร้างงานที่แตกต่างกัน แต่ทุกภาษาจะต้องมีโครงสร้างควบคุมหลักทั้ง 3 แบบ ได้แก่ โครงสร้างแบบลำดับ (Sequential Structure) โครงสร้างแบบมีทางเลือก (Selection Structure) และโครงสร้างแบบทำซ้ำ (Repetition Structure)
6.3.1 โครงสร้างแบบลำดับ (Sequential Structure)
คือ โครงสร้างแสดงขั้นตอนการทำงานที่เป็นไปตามลำดับก่อนหลัง และแต่ละขั้นตอนจะถูกประมวลผลเพียงครั้งเดียวเท่านั้น สามารถแสดงการทำงานของโครงสร้างนี้ โดยใช้ผังงานได้ดังรูปที่ 6.2
รูปที่ 6.4 แสดงการทำงานของโครงสร้างแบบลำดับ
6.3.2 โครงสร้างแบบมีทางเลือก (Selection Structure)
คือ โครงสร้างที่มีเงื่อนไข ขั้นตอนการทำงานบางขั้นตอนต้องมีการตัดสินใจเพื่อเลือกวิธีการประมวลผลขั้นต่อไป และจะมีบางขั้นตอนที่ไม่ได้รับการประมวลผล การตัดสินใจอาจมีทางเลือก 2 ทาง หรือมากกว่าก็ได้ โครงสร้างที่มีทางเลือกเพียง 2 ทาง เราเรียกชื่อว่าโครงสร้างแบบ if … then … else และโครงสร้างที่มีทางเลือกมากกว่า 2 ทาง เราเรียกชื่อว่าโครงสร้างแบบ case สามารถแสดงการทำงานของโครงสร้างนี้ โดยใช้ผังงานดังรูปที่ 6.3 และ 6.4
รูปที่ 6.5 แสดงการทำงานของโครงสร้าง if…then…else
รูปที่ 6.6 แสดงการทำงานของโครงสร้าง case
6.3.3 โครงสร้างแบบทำซ้ำ (Repetition Structure)
คือ โครงสร้างที่ขั้นตอนการทำงานบางขั้นตอนได้รับการประมวลผลมากกว่า 1 ครั้ง ทั้งนี้ขึ้นอยู่กับเงื่อนไขบางประการ โครงสร้างแบบทำซ้ำนี้ต้องมีการตัดสินใจในการทำงานซ้ำ และลักษณะการทำงานของโครงสร้างแบบนี้มี 2 ลักษณะ ได้แก่ แบบที่มีการตรวจสอบเงื่อนไขในการทำซ้ำทุกครั้งก่อนการดำเนินการกิจกรรมใด ๆ ถ้าเงื่อนไขเป็นจริงจะทำงานซ้ำไปเรื่อย ๆ และหยุดเมื่อเงื่อนไขเป็นเท็จ เรียกการทำงานลักษณะนี้ว่า การทำซ้ำแบบ do while และแบบที่ทำกิจกรรมซ้ำเรื่อย ๆ จนกระทั่งเงื่อนไขที่กำหนดเป็นจริงแล้วจึงหยุดการทำงาน โดยแต่ละครั้งที่เสร็จสิ้นการดำเนินการแต่ละรอบ จะต้องมีการตรวจสอบเงื่อนไข เรียกการทำซ้ำลักษณะนี้ว่า do until ผังงานแสดงขั้นตอนการทำงานของโครงสร้างแบบทำซ้ำทั้ง 2 แบบ แสดงดังรูปที่ 6.5 และ 6.6
รูปที่ 6.7 แสดงการทำงานของการทำซ้ำแบบ do while
รูปที่ 6.8 แสดงการทำงานของการทำซ้ำแบบ do until
โครงสร้างควบคุมทั้ง 3 แบบ ที่กล่าวมาข้างต้น ก็คือ ขั้นตอนที่เราใช้ในการแก้ปัญหานั่นเอง พิจารณาตัวอย่างที่ 6.7 เป็นขั้นตอนการเลือกเครื่องมือและออกแบบขั้นตอนวิธี คือขั้นตอนที่ 2 ในกระบวนการแก้ปัญหาในหัวข้อ 6.1 เราเลือกการสร้างผังงานมาจำลองขั้นตอนวิธีในการหาค่าเฉลี่ยของจำนวน 5 จำนวน จากตัวอย่างที่ 6.2 และในตัวอย่างที่ 6.7 มีการแสดงโครงสร้างควบคุมแบบลำดับและแบบทำซ้ำที่ใช้ในการแก้ปัญหาด้วย
ตัวอย่างที่ 6.7 แสดงผังงานที่จำลองขั้นตอนวิธีการหาค่าเฉลี่ยของจำนวนเต็ม 5 จำนวน ให้อยู่ในรูปของสัญลักษณ์
4. การแก้ปัญหากับภาษาปาสคาล
นักเรียนคงเคยได้ยินคำว่าภาษาคอมพิวเตอร์มาบ้างแล้ว ในที่นี้จะได้กล่าวถึงความหมายของคำว่า “ภาษาคอมพิวเตอร์” ให้ชัดเจนอีกครั้ง ภาษาคอมพิวเตอร์ หมายถึง สื่อที่ผู้เขียนโปรแกรมสามารถใช้ติดต่อกับเครื่องคอมพิวเตอร์ เพื่อให้เกิดการทำงานตามวัตถุประสงค์ที่ต้องการ ตามความหมายของการเขียนโปรแกรมที่ศึกษาในหัวข้อที่แล้ว ภาษาคอมพิวเตอร์คือสื่อที่ใช้สร้างโปรแกรม ซึ่งหมายถึง ชุดคำสั่งที่ใช้สำหรับสั่งให้คอมพิวเตอร์ทำงานเพื่อให้ได้ผลลัพธ์ที่ต้องการ โดยอาศัยข้อมูลที่กำหนดให้ ซึ่งในที่นี้ผลลัพธ์ก็เปรียบได้กับคำตอบหรือข้อมูลออกของปัญหา ในขณะที่ข้อมูลที่กำหนดก็คือเงื่อนไขหรือข้อมูลของปัญหาซึ่งผู้แก้ปัญหาได้วิเคราะห์ไว้
นักเรียนได้ทราบมาแล้วจากการศึกษาในบทที่ 5 ว่าภาษาคอมพิวเตอร์แบ่งเป็นระดับต่ำและภาษาระดับสูง การเขียนโปรแกรมด้วยภาษาระดับต่ำนั้นต้องอาศัยความรู้เกี่ยวกับฮาร์ดแวร์และระบบเลขฐานสอง ซึ่งเป็นเรื่องที่ทำความเข้าใจได้ยาก ถึงแม้จะมีการกำหนดรหัสหรือสัญลักษณ์ที่ทำให้เข้าใจหรือจำได้ง่ายขึ้น แต่ก็ยังคงมีความยุ่งยากในการจดจำ จึงได้มีความพยายามออกแบบภาษาระดับสูงสำหรับคอมพิวเตอร์ ซึ่งผู้ใช้สามารถจดจำได้ง่ายและเขียนโปรแกรมได้สะดวก เนื่องจากในการใช้งานภาษาระดับสูงผู้เรียนไม่จำเป็นต้องเรียนรู้การทำงานภายในหน่วยประมวลผลกลางของเครื่องและไม่จำเป็นต้องรู้เรื่องระบบเลขฐานสอง ภาษาปาสคาลเป็นภาษาระดับสูงภาษาหนึ่งที่ใช้หลักการของการโปรแกรมแบบโครงสร้างในการเขียนโปรแกรม และเป็นภาษาที่เป็นระบบ ซึ่งง่ายต่อการตรวจสอบความผิดพลาดและความเข้าใจการทำงาน จึงเหมาะแก่การเรียนรู้วิธีการเขียนโปรแกรมในระดับเริ่มต้น
ภาษาปาสคาลจัดเป็นภาษาในกลุ่มโปรแกรมแบบโครงสร้าง (Structured Programming) ซึ่งมุ่งเน้นให้มีการแบ่งโปรแกรมออกเป็นส่วนย่อย ๆ ชัดเจน จากนั้นจึงค่อยเชื่อมโยง ทำให้สามารถจัดการได้โดยง่าย ภาษาปาสคาลจึงเป็นภาษาคอมพิวเตอร์ที่เหมาะสำหรับสร้างพื้นฐานความคิดในการเขียนโปรแกรมโครงสร้างให้แก่นักเรียน เพื่อให้เป็นผู้พัฒนาโปรแกรมที่มีทักษะในการเขียนโปรแกรมอย่างมีหลักเกณฑ์และถูกต้อง สามารถอ่านและทำความเข้าใจได้โดยง่าย อีกทั้งภาษาปาสคาลเป็นภาษาที่มีโครงสร้างโปรแกรมชัดเจน ซึ่งง่ายต่อการเรียนรู้
6.4.1 โครงสร้างภาษาปาสคาล
โครงสร้างของโปรแกรมภาษาปาสคาล แบ่งเป็น 2 ส่วน ได้แก่ ส่วนประกาศ (Declaration Part) และส่วนคำสั่ง (Statement Part) เพื่อแสดงโครงสร้างโปรแกรมภาษาปาสคาลให้เห็นได้ชัดเจน ให้พิจารณาตัวอย่างโปรแกรมในรูปที่ 6.9 ซึ่งเป็นการนำขั้นตอนวิธีการหาค่าเฉลี่ยของจำนวนเต็ม 5 จำนวน ที่จำลองเป็นผังงานในตัวอย่างที่ 6.7 มาเขียนเป็นโปรแกรมภาษาปาสคาล เพื่อให้คอมพิวเตอร์ช่วยคำนวณค่าเฉลี่ย และรูปที่ 6.10 แสดงผลลัพธ์ในการสั่งกระทำการโปรแกรม
รูปที่ 6.9 ตัวอย่างโปรแกรมภาษาปาสคาลที่สั่งให้คอมพิวเตอร์หาค่าเฉลี่ยของจำนวนเต็ม 5 จำนวน
รูปที่ 6.10 ตัวอย่างการทำงานของโปรแกรมที่สั่งให้คอมพิวเตอร์หาค่าเฉลี่ยของจำนวนเต็ม 5 จำนวน
จากรูปที่ 6.9 จะเห็นว่าภาษาปาสคาลแบ่งโปรแกรมออกเป็น 2 ส่วน ส่วนแรก คือ บริเวณที่มีการแรเงา ส่วนนี้เรียกว่า ส่วนประกาศ เป็นส่วนที่มีการประกาศชื่อโปรแกรม ตัวแปร และข้อมูลต่าง ๆ ที่ใช้งานในโปรแกรมนี้
สำหรับส่วนที่สอง เรียกว่า ส่วนโปรแกรม ได้แก่ คำสั่งที่อยู่ภายในคำสั่ง BEGIN และ END. นอกจากนี้ในการเขียนโปรแกรมภาษาปาสคาล เมื่อเขียนต้องการจบโปรแกรม ต้องเติมเครื่องหมาย “.” เพื่อจบการทำงานของโปรแกรมเสมอ
6.4.2 คำสั่งในภาษาปาสคาล
คำสั่ง คือส่วนของข้อความที่อยู่ในส่วนโปรแกรม แต่ละคำสั่งจะควบคุมให้เครื่องคอมพิวเตอร์กระทำการ 1 อย่าง เมื่อคำสั่งหลาย ๆ คำสั่งรวมกัน จะเป็นชุดคำสั่งที่ควบคุมให้เครื่องคอมพิวเตอร์ทำงานหรือแก้ปัญหาได้ตามที่เราต้องการ โครงสร้างของภาษาปาสคาลแบ่งประเภทของคำสั่งในส่วนคำสั่งตามลักษณะการทำงานเป็น 4 ประเภท ได้แก่
1) คำสั่งกำหนดค่า (Assignment Statement)
เป็นคำสั่งที่ใช้ในการกำหนดค่าให้กับตัวแปร ซึ่งได้ประกาศไว้ในส่วนประกาศ ดังตัวอย่างในรูปที่ 6.9
2) คำสั่งนำข้อมูลออก (Output Statement)
เป็นคำสั่งให้แสดงผลลัพธ์หรือข้อความที่ต้องการออกทางอุปกรณ์ส่งออก เช่น จอภาพ เครื่องพิมพ์ ฯลฯดังตัวอย่างในรูปที่ 6.10
3) คำสั่งนำข้อมูลเข้า (Input Statement)
เป็นคำสั่งที่สั่งให้นำข้อมูลจากอุปกรณ์รับเข้า ซึ่งอาจเป็นแผงแป้นอักขระเข้าสู่หน่วยความจำของคอมพิวเตอร์ โดยข้อมูลเหล่านี้จะถูกนำไปเก็บในตัวแปรที่มีการประกาศในส่วนประกาศ ดังตัวอย่างในรูปที่ 6.9
4) คำสั่งควบคุมลำดับการทำงานของโปรแกรม (Control Statement)
เป็นการควบคุมเกี่ยวกับการทำงานตามเงื่อนไขและการทำงานแบบทำซ้ำตามที่ได้ออกแบบไว้ โดยคำสั่งดังกล่าวจะสอดคล้องกับการทำงานของโครงสร้างควบคุมที่กล่าวไว้ในหัวข้อ 6.3
ในตัวอย่างที่ 6.7 มีการใช้คำสั่งกำหนดค่า เพื่อกำหนดค่าเริ่มต้นให้กับตัวแปรชื่อ sum และ N นอกจากนั้นยังมีการกำหนดให้มีการคำนวณค่าของตัวแปร average ด้วย
จากตัวอย่างในรูปที่ 6.9 บริเวณที่เป็นตัวอักษรหนา คือส่วนที่ใช้โครงสร้างควบคุมแบบทำซ้ำที่มีการตรวจสอบเงื่อนไขก่อนกระทำการแต่ละครั้ง ภายในโครงสร้างแบบทำซ้ำที่เห็น มีคำสั่ง 4 คำสั่ง จึงต้องมีการกำหนดขอบเขตของการทำซ้ำ โดยคำสั่ง Begin และ End; เป็นคำสั่งที่กำหนดขอบเขตดังกล่าว โปรแกรมจะทำงานซ้ำในขอบเขตนี้จนกว่าเงื่อนไขในการทำซ้ำจะเป็นเท็จ นั่นคือตัวแปร N ได้รับการเพิ่มค่าจนมีค่ามากกว่า 5 ซึ่งหมายความว่าขณะนั้นผู้ใช้ได้กรอกจำนวนเต็มที่ต้องการหาค่าเฉลี่ยผ่านทางแผงแป้นอักขระด้วยคำสั่งนำข้อมูลเข้าครบ 5 จำนวนแล้วนั่นเอง
หลังจากโปรแกรมทำงานในโครงสร้างแบบทำซ้ำแล้ว จะนำค่า sum ซึ่งคือผลรวมของจำนวนทั้ง 5 จำนวน มาหารด้วยจำนวนของข้อมูลเข้า ซึ่งก็คือ 5 แล้วนำค่าผลลัพธ์ที่เก็บในตัวแปรชื่อ average แสดงผลทางจอภาพด้วยคำสั่งนำข้อมูลออก
6.4.3 ส่วนอธิบายโปรแกรม
นอกจากการเขียนโปรแกรมในรูปแบบที่ได้กล่าวมาข้างต้นแล้ว ในปัจจุบันมีรูปแบบการเขียนโปรแกรมอีกรูปแบบหนึ่งที่กำลังได้รับความนิยม และมีแนวโน้มที่จะได้รับความนิยมจากผู้เขียนโปรแกรมมากขึ้นเรื่อย ๆ ทั้งนี้เนื่องจากความยืดหยุ่นของการเขียนโปรแกรมดังกล่าว การเขียนโปรแกรมนี้คือการเขียนโปรแกรมแบบเชิงวัตถุ (Object Oriented Programming : OOP)
5.การโปรแกรมแบบเชิงวัตถุ
การโปรแกรมแบบเชิงวัตถุเป็นเทคนิคการเขียนโปรแกรมที่ได้รับการพัฒนาขึ้นในช่วงปี 1900 แนวคิดและหลักการในการเขียนโปรแกรมแบบนี้แตกต่างจากหลักการเขียนโปรแกรมในอดีต คือจะเน้นความคิดเชิงวัตถุ (Object) ที่สร้างขึ้นใช้งานในโปรแกรม โดยคำว่า “วัตถุ” ในที่นี้คือ ส่วนย่อย ๆ ของโปรแกรมที่ผู้พัฒนาโปรแกรมสร้างขึ้นเพื่อทำงานเฉพาะอย่าง แล้วจึงนำวัตถุย่อย ๆ เหล่านั้นมาประกอบกันเป็นโปรแกรมใหญ่ อีกทั้งวัตถุที่สร้างขึ้นมาแล้ว สามารถนำกลับไปใช้กับโปรแกรมอื่นได้อีก โดยบางครั้งผู้เขียนโปรแกรมไม่จำเป็นต้องสร้างวัตถุเองทุกชิ้น สามารถนำวัตถุที่ผู้อื่นสร้างไว้มาใช้ใหม่ได้ เพียงแค่รู้ว่าวัตถุนั้นทำหน้าที่และเรียกใช้งานอย่างไร ทำให้โปรแกรมเมอร์ที่เขียนโปรแกรมประเภทนี้สามารถปรับปรุงเปลี่ยนแปลงโปรแกรมได้สะดวก การเขียนโปรแกรมแบบนี้จึงเข้ามาแทนที่การเขียนโปรแกรมแบบโครงสร้างอย่างรวดเร็ว โดยเฉพาะอย่างยิ่งกับงานที่เกี่ยวข้องกับอินเตอร์เน็ต นอกจากนี้การโปรแกรมแบบเชิงวัตถุ ยังสามารถทำงานกับข้อมูลได้หลายรูปแบบ ทั้งที่เป็นรูปภาพ (Image) วีดิทัศน์ (Video) หรือเสียง (Sound) ตัวอย่างภาษาคอมพิวเตอร์ที่ใช้เทคนิคการโปรแกรมเชิงวัตถุ เช่น ภาษาจาวา ภาษาซี++ เป็นต้น
6.5.1 แนวคิดการเขียนโปรแกรมเชิงวัตถุ
หากพิจารณาจากความหมายของคำว่า “Object” คือ วัตถุ ในที่นี้หมายถึงสิ่งที่เป็นรูปธรรมที่จับต้องได้ และเป็นนามธรรมที่จับต้องไม่ได้ และคำว่า “Oriented” นั้นมาจากคำว่า “Orient” ที่หมายถึงการนำทาง ดังนั้นการโปรแกรมเชิงวัตถุจึงหมายถึงการเขียนโปรแกรมที่มองสิ่งที่เห็นและเกิดขึ้นทุกอย่างเป็นวัตถุที่ประกอบด้วยคุณลักษณะ (Attribute) ที่บอกลักษณะของวัตถุนั้นและการกระทำ (Behavior)
หากลองพิจารณาจากชีวิตประจำวัน รถยนต์ที่เราเห็นถือได้ว่าเป็นวัตถุชิ้นหนึ่ง ซึ่งมีส่วนประกอบดังนี้
– คุณลักษณะ ได้แก่ ยี่ห้อ สี เกียร์ ล้อ
– การกระทำ ได้แก่ การเบรก การขับเคลื่อน การกระตุก
และหากเรามองคนเป็นวัตถุ ก็จะประกอบด้วย
– คุณลักษณะ ได้แก่ ชื่อ-สกุล อายุ สีผิว สีผม ความสูง
– การกระทำ เช่น การเดิน การรับประทาน การนอน
รูปที่ 6.11 แสดงส่วนประกอบของวัตถุรถยนต์
ดังที่ได้เคยกล่าวมาแล้วว่า การเขียนโปรแกรมเชิงวัตถุเป็นการสร้างส่วนย่อย ๆ ของโปรแกรม ซึ่งก็คือการสร้างวัตถุย่อย ๆ แล้วนำมาประกอบกันเป็นโปรแกรมใหญ่ที่เราต้องการ ซึ่งเปรียบเทียบได้กับการประกอบรถยนต์ จะสร้างขึ้นจากส่วนประกอบย่อย ๆ หลายชิ้นที่มีคุณลักษณะเฉพาะตัวและหน้าที่การทำงาน เมื่อวัตถุเหล่านั้นเริ่มทำงานตามหน้าที่รถยนต์ก็สามารถเคลื่อนที่ไปได้ โดยวัตถุเหล่านั้นสามารถติดต่อกันผ่านหน้าที่การทำงานของแต่ละชิ้น ในทำนองเดียวกันกับการทำงานของโปรแกรมที่เขียนขึ้นแบบเชิงวัตถุที่แต่ละส่วนของโปรแกรมมีหน้าที่การทำงานที่ต่างกัน การกระทำของส่วนหนึ่งที่เกิดขึ้นจะส่งผลให้เกิดการเปลี่ยนแปลงในอีกวัตถุหนึ่งได้ จึงอาจกล่าวได้ว่าวัตถุแต่ละส่วนในโปรแกรมสามารถติดต่อกันผ่านทางการกระทำ โดยการกระทำของวัตถุชิ้นหนึ่งเป็นการส่งสัญญาณให้เกิดการกระทำในวัตถุอีกชิ้นหนึ่ง
6.5.2 ภาษาโปรแกรมเชิงวัตถุ
ภาษาโปรแกรมเชิงวัตถุที่กำลังได้รับความนิยมสูงในขณะนี้ภาษาหนึ่งคือ ภาษาจาวา ซึ่งนักเรียนได้เคยศึกษามาบ้างแล้วในบทที่ 5 ในบทนี้เรากล่าวถึงการสร้างซอฟต์แวร์ประยุกต์ด้วยภาษาจาวา เนื่องจากความยืดหยุ่นของซอฟต์แวร์ที่เขียนขึ้นจากภาษาจาวา คือ สามารถทำงานได้บนระบบปฏิบัติการทุกระบบ อีกทั้งสามารถสร้างงานประยุกต์บนอินเตอร์เน็ตโดยสามารถทำงานบนซอฟต์แวร์ค้นผ่านเว็บได้ การเติบโตของภาษานี้จึงควบคู่ไปกับการเติบโตของระบบอินเตอร์เน็ต ปัจจุบันผู้พัฒนาโปรแกรมหันมาให้ความสนใจและเลือกใช้ภาษานี้ในการพัฒนาซอฟต์แวร์มากขึ้น การสร้างซอฟต์แวร์จากภาษาจาวามีหลักการและโครงสร้างเดียวกับการเขียนโปรแกรมด้วยภาษาซี มีการสร้างงานแบบเชิงวัตถุ เราอาจสรุปข้อดีที่ทำให้ภาษาจาวามีจุดเด่นกว่าภาษาอื่น ๆ ได้ดังนี้
1) ภาษาจาวาสามารถเรียนรู้ได้ง่าย เนื่องจากภาษาจาวาได้รับการออกแบบมาให้ง่ายต่อการเรียนรู้ ไม่มีความซับซ้อนมากเท่ากับภาษาซี แต่ประสิทธิภาพใกล้เคียงกัน
2) ภาษาจาวาสามารถสร้างซอฟต์แวร์ประยุกต์บนระบบปฏิบัติการทุกระบบ ซึ่งต่างจากภาษาคอมพิวเตอร์หลายภาษาที่สามารถสร้างงานที่ทำงานได้บนระบบปฏิบัติการระบบใดระบบหนึ่งเท่านั้น
3) ภาษาจาวาสามารถสร้างงานที่ประยุกต์บนอินเตอร์เน็ตได้ ทั้งนี้นอกจากจะสามารถสร้างซอฟต์แวร์ประยุกต์ที่สามารถทำงานได้ด้วยตัวเองแล้ว ภาษาจาวายังสามารถสร้างงานที่เรียกว่า “แอปเพล็ต” (Applet) ซึ่งเป็นชิ้นงานที่สามารถทำงานบนซอฟต์แวร์ค้นผ่านเว็บ โดยทำงานร่วมกับภาษา HTML
4) ภาษาจาวาเป็นภาษาที่มีการเขียนโปรแกรมแบบเชิงวัตถุ ซึ่งได้กล่าวมาแล้วว่าสามารถนำส่วนย่อย ๆ ของโปรแกรมที่สร้างไว้แล้วกลับมาใช้งานใหม่ได้ โดยไม่ต้องเริ่มสร้างใหม่แต่ต้น
นักเรียนลองพิจารณาตัวอย่างโปรแกรมที่สร้างจากภาษาจาวาที่ทำหน้าที่เดียวกับโปรแกรมในรูปที่ 6.11 ซึ่งเขียนด้วยภาษาปาสคาลในตัวอย่างรูปที่ 6.12
รูปที่ 6.12 ตัวอย่างโปรแกรมภาษาจาวาที่สั่งให้คอมพิวเตอร์หาค่าเฉลี่ยของจำนวนเต็ม 5 จำนวน
รูปที่ 6.12 แสดงการสร้างซอฟต์แวร์ประยุกต์ด้วยภาษาจาวา ดังที่ได้กล่าวมาแล้วว่า ภาษาจาวาเป็นภาษาที่สร้างงานโดยมองทุกอย่างเป็นวัตถุ ดังนั้นโปรแกรมทั้งโปรแกรมก็เทียบได้กับวัตถุขนาดใหญ่ชิ้นหนึ่ง และภายในวัตถุนั้นจะต้องมีการกระทำที่ชื่อว่า main ดังรูปที่ 6.12 ส่วนที่มีการแรเงาคือส่วนประกอบของการกระทำ main ในคลาสหรือวัตถุที่ชื่อว่า average-number
การกระทำ main เป็นการกระทำหลักในการกระทำการ (run) โปรแกรม มีลักษณะเหมือนกับโปรแกรมหลักในการเขียนโปรแกรมภาษาปาสคาล โดยในการสร้างโปรแกรมภาษาจาวา จะใช้เครื่องหมาย ” { ” แทนข้อความ BEGIN และเครื่องหมาย ” } ” แทนข้อความ END.
6. การโปรแกรมแบบจินตภาพ
ถึงแม้ว่าหลักการเขียนโปรแกรมเชิงวัตถุ ซึ่งกำลังได้รับความนิยมจากผู้เขียนโปรแกรมในการพัฒนาซอฟต์แวร์ที่ทำงานบนวินโดวส์จะมีหลักการที่เข้าใจได้ไม่ยาก และสามารถพัฒนาโปรแกรมได้สะดวก แต่ก็ยังเป็นการพัฒนาโปรแกรมที่ผู้เขียนโปรแกรมต้องลงมือสร้างส่วนของโปรแกรมเองหลายส่วน ต้องมีความรู้ความชำนาญในการสร้างซอฟต์แวร์สูง อีกทั้งต้องใช้เวลาค่อนข้างมากในการพัฒนาโปรแกรม แก้ไขโปรแกรมให้มีความถูกต้อง ซึ่งอาจทำให้ผู้ที่เพิ่งเริ่มต้นเรียนรู้การพัฒนาโปรแกรมคอมพิวเตอร์เกิดความท้อแท้ในการเขียนโปรแกรมได้ จึงได้มีการพัฒนาหลักการเขียนโปรแกรมแบบใหม่ที่นำหลักการของการเขียนโปรแกรมแบบเชิงวัตถุมาใช้ และทำให้การเขียนโปรแกรมง่ายขึ้น มีอุปกรณ์ที่ช่วยอำนวยความสะดวกให้แก่ผู้พัฒนาซอฟต์แวร์มากขึ้น โดยที่ผู้พัฒนาโปรแกรมไม่ต้องใช้ความรู้ที่ลึกซึ้งในการสร้างงาน อีกทั้งสามารถเห็นผลงานของตนได้ตั้งแต่ขณะที่กำลังสร้าง หลักการเขียนโปรแกรมที่ว่านี้ คือ การเขียนโปรแกรมแบบจินตภาพ (Visual Programming)
6.6.1 แนวคิดการเขียนโปรแกรมแบบจินตภาพ
การเขียนโปรแกรมแบบจินตภาพ คือ การพัฒนาโปรแกรมที่ผู้เขียนโปรแกรมสามารถมองเห็นผลลัพธ์ของงานเมื่อมีการกระทำการโปรแกรมได้ตั้งแต่ขณะพัฒนาโปรแกรมโดยไม่จำเป็นต้องรอให้การพัฒนาเสร็จสมบูรณ์ โดยตัวแปลภาษาได้เตรียมสิ่งแวดล้อมในการทำงาน (Development Environment) และเครื่องมือหรือชิ้นส่วนที่ผู้พัฒนาต้องใช้ในการสร้างงานไว้ให้สามารถเรียกใช้งานได้โดยที่ไม่ต้องลงมือสร้างเอง เครื่องมือหรือชิ้นส่วนที่ระบบเตรียมให้ไว้นี้เรียกว่า “คอมโพเนนต์” (Component) ซึ่งอาจเป็นปุ่ม(Button) ข้อความ (Label) ช่องสำหรับกรอกข้อความ (Edit Box) รูปภาพ (Image) ผู้พัฒนาเพียงกำหนดคุณลักษณะเฉพาะและการกระทำของวัตถุแต่ละชิ้นเพื่อนำมาสร้างเป็นซอฟต์แวร์ประยุกต์ที่สามารถทำงานตามที่เราต้องการ โดยการประกอบชิ้นส่วนเหล่านั้นทำได้โดยการนำชิ้นส่วนมาวางบนฟอร์มที่มีลักษณะคล้ายหน้าต่างหรือวินโดวส์ (Windows) ที่เดลฟายเตรียมไว้ให้ ผู้พัฒนาโปรแกรมสามารถกำหนดคุณสมบัติเพิ่มเติมให้กับคอมโพเนนต์ได้ เช่น การกำหนดขนาด กำหนดตำแหน่ง กำหนดชื่อคอมโพเนนต์นั้น ผ่านระบบติดต่อที่ตัวภาษาเตรียมไว้ให้ โดยไม่ต้องเขียนรหัสคำสั่งเอง ผู้ใช้จะเกี่ยวข้องกับภาษาเพียงการกำหนดตัวแปรที่ใช้งานเพิ่มเติม และการเขียนคำสั่งภายในการกระทำหรือโปรแกรมย่อยของคอมโพเนนต์เท่านั้น
ปัจจุบันมีการพัฒนาภาษาคอมพิวเตอร์ที่ใช้หลักการเขียนโปรแกรมแบบจินตภาพขึ้นหลายภาษา เช่น ภาษาวิชวลเบสิก ซึ่งใช้ไวยากรณ์ของภาษาเบสิกในการเขียนคำสั่งเพื่อสั่งงานคอมพิวเตอร์ และอีกภาษาหนึ่งที่ได้รับความนิยมอย่างมากทั้งยังเหมาะสำหรับใช้เรียนรู้การเขียนโปรแกรมแบบจินตภาพ คือ ภาษาเดลฟาย ซึ่งใช้ไวยากรณ์ของภาษาปาสคาลในการสั่งงาน
6.6.2 ภาษาเดลฟาย
ดังที่เราได้เคยกล่าวถึงภาษาเดลฟายกันมาบ้างแล้วในหน่วยที่ 5 ในบทนี้เราจะกล่าวถึงและยกตัวอย่างการสร้างซอฟต์แวร์ประยุกต์จากภาษาเดลฟาย เพื่อให้นักเรียนได้เห็นความสะดวกในการเขียนโปรแกรมแบบจินตภาพ และประสิทธิภาพที่สูงกว่าการเขียนโปรแกรมแบบเดิมและแบบเชิงวัตถุ
เมื่อกล่าวถึงภาษาเดลฟาย เรากล่าวได้ว่าเป็นตัวแปลภาษาที่มีการเตรียมสิ่งอำนวยความสะดวกให้แก่ผู้ใช้งานได้ครบถ้วน มีการเตรียมเครื่องมือหรือคอมโพเนนต์ทุกชนิดที่จำเป็นต้องใช้ในการสร้างซอฟต์แวร์ประยุกต์บนวินโดวส์ให้ผู้ใช้เลือกใช้งานได้ตามความต้องการ ไม่ว่าจะเป็นส่วนติดต่อผู้ใช้แบบกราฟิก การติดต่อผู้ใช้งานบนฐานข้อมูล และการสร้างซอฟต์แวร์ใช้งานบนอินเตอร์เน็ต
รูปที่ 6.13 แสดงส่วนประกอบของหน้าต่างหลักของภาษาเดลฟาย
ก่อนที่นักเรียนจะเขียนโปรแกรมภาษาเดลฟาย นักเรียนต้องบรรจุซอฟต์แวร์ตัวแปลภาษาเดลฟายลงในเครื่องคอมพิวเตอร์แล้วจึงสั่งให้โปรแกรมนั้นทำงาน เมื่อสั่งกระทำการ โปรแกรมเดลฟายจะปรากฏหน้าต่างที่คล้ายกับหน้าต่างของซอฟต์แวร์ที่ทำงานบนระบบปฏิบัติวินโดวส์อื่น ๆ ที่มีการติดต่อผู้ใช้ที่เรียกว่า “จียูไอ” ภายในหน้าต่างของเดลฟายจะประกอบด้วยหน้าต่าง 3 หน้าต่างที่เกี่ยวข้องกับการสร้างโปรแกรมประยุกต์ ได้แก่
1) หน้าต่างฟอร์ม
คือ ส่วนที่ใช้ในการออกแบบส่วนติดต่อผู้ใช้ของซอฟต์แวร์ที่จะสร้างขึ้น ผู้พัฒนาระบบจะต้องนำคอมโพเนนต์ต่าง ๆ ที่ต้องการวางไว้บนพื้นที่ของฟอร์มนี้โดยสามารถกำหนดตำแหน่งและขนาดของคอมโพเนนต์เหล่านั้นได้ตามต้องการ ในการสร้างซอฟต์แวร์ประยุกต์จะต้องมีฟอร์มอย่างน้อย 1 ฟอร์มเสมอ โดยเดลฟายจะสร้างหน้าต่างฟอร์มให้ 1 หน้าต่างเสมอเมื่อมีการเปิดโปรแกรมเดลฟายขึ้นใช้งานและจะตั้งชื่อให้เป็น Form 1 เสมอ
2) หน้าต่างคุณสมบัติของวัตถุ
เมื่อมีการเลือกวัตถุมาวางบนฟอร์ม หน้าต่างคุณสมบัติของวัตถุจะแสดงคุณสมบัติเฉพาะต่าง ๆ ของคอมโพเนนต์ที่ผู้พัฒนาซอฟต์แวร์เลือกอยู่และกำลังทำงานด้วย สามารถทำการปรับแต่งคุณสมบัติต่าง ๆ ของคอมโพเนนต์ที่ปรากฏอยู่ในหน้าต่างคุณสมบัติได้ตามต้องการ ภายในหน้าต่างคุณสมบัตินี้ประกอบด้วยแท็บ 2 ชนิด ได้แก่
ก) แท็บคุณสมบัติ (Properties)
ใช้แสดงคุณสมบัติและสามารถกำหนดค่าของคุณสมบัติของคอมโพเนนต์ได้ ภายในแท็บนี้ประกอบด้วย 2 สดมภ์ โดยสดมภ์ทางซ้ายแสดงชื่อคุณสมบัติ และทางขวาสำหรับให้ผู้พัฒนาโปรแกรมสามารถกำหนดค่าของคุณสมบัตินั้น ๆ
ข) แท็บเหตุการณ์ (Events)
ใช้ในการกำหนดการกระทำหรือโปรแกรมย่อยที่ตอบสนองเหตุการณ์ที่เกิดขึ้นกับคอมโพเนนต์ ภายในแท็บนี้ประกอบด้วย 2 สดมภ์เช่นกัน โดยทางซ้ายแสดงชื่อเหตุการณ์และทางขวาแสดงชื่อของโปรแกรมย่อยที่ต้องกระทำการเมื่อเกิดเหตุการณ์นั้น ๆ ขึ้น และสำหรับการเขียนรหัสคำสั่งภายในโปรแกรมย่อยเหล่านั้นจะต้องเขียนบนหน้าต่างเอดิเตอร์ซึ่งเป็นหน้าต่างที่ 3 บนหน้าต่างของเดลฟาย
3) หน้าต่างเอดิเตอร์
เป็นหน้าต่างสำหรับเขียนรหัสคำสั่งเพื่อกำหนดขั้นตอนการทำงานของซอฟต์แวร์ที่ต้องการสร้าง เมื่อเปิดโปรแกรมเดลฟายขึ้นมาจะมีการสร้างรหัสคำสั่งเริ่มต้นของโปรแกรมให้สำหรับควบคุมการทำงานบนฟอร์มที่เดลฟายสร้างให้ แต่โปรแกรม 1 โปรแกรมที่ใช้ในเดลฟายเราเรียกว่า “ยูนิต” (Unit) ซึ่งโดยปกติฟอร์ม 1 ฟอร์ม จะต้องมียูนิตที่บรรจุคำสั่งควบคุมการทำงานของฟอร์มอยู่ 1 ยูนิต
เครื่องมือช่วยในการลงมือแก้ปัญหา นักเรียนต้องสามารถแบ่งปัญหาออกเป็นส่วน ๆ และเป็นขั้นตอนที่ชัดเจน หลังจากนั้นสามารถเลือกเครื่องมือในการจำลองความคิดและขั้นตอนวิธีที่ออกแบบไว้ก่อนที่จะลงมือพัฒนา โดยเลือกใช้ซอฟต์แวร์ที่เหมาะสมกับงาน ซอฟต์แวร์นั้นอาจเป็นภาษาคอมพิวเตอร์ซึ่งนักเรียนจะต้องศึกษาหลักการและไวยากรณ์ของภาษาที่เลือกให้เชี่ยวชาญ ในบทเรียนนี้ได้นำเสนอหลักการเบื้องต้นของภาษาคอมพิวเตอร์ให้นักเรียนได้ศึกษาสามรูปแบบ ซึ่งหากนักเรียนสนใจก็สามารถหาความรู้ได้เพิ่มเติมเพื่อฝึกฝนให้ชำนาญและสามารถยึดเป็นอาชีพได้ต่อไป

ใส่ความเห็น