การพัฒนาโปรแกรม

การพัฒนาโปรแกรม


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

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

รูปที่ 7.1 แสดงผลที่ได้จากโปรแกรมเมื่อตัวหารไม่เป็นศูนย์ และเมื่อตัวหารเป็นศูนย์จะเห็นว่าเมื่อตัวหารไม่เป็นศูนย์ โปรแกรมสามารถทำงานให้คำตอบได้อย่างถูกต้อง แต่ถ้าตัวหารเป็นศูนย์ และในโปรแกรมไม่ได้มีการตรวจสอบไว้ โปรแกรมจะทำงานผิดพลาด และหยุดการทำงานลงพร้อมกับแสดงข้อความบอกข้อผิดพลาดที่เกิดขึ้นออกมา ดังที่แสดงในรูปเป็นตัวอักษรเอียง
มุมนักคิด ความผิดพลาดที่เกิดในขณะรับโปรแกรม
ถ้าหากว่าในโปรแกรมมรการนำผลลัพธ์ที่ได้จากการคำนวณ ซึ่งเป็นศูนย์ไปเป็นตัวหารนักเขียนโปรแกรมจะสามารถป้องกันหรือแก้ไขอย่างไร เพื่อไม่ให้โปรแกรมทำงานผิดพลาดและหยุดการทำงานลง
1.3 การเตรียมข้อมูลสำหรับทดสอบโปรแกรม
ในระหว่างขั้นตอนการออกแบบวิธีการแก้ปัญหาให้อยู่ในรูปของรหัสลำลองหรือผังงานนั้นนักเขียนโปรแกรมควรพิจารณาถึงข้อมูลที่จะนำมาใช้ในการทดสอบโปรแกรมที่จะเขียนขึ้นด้วยความสมบูรณ์ของข้อมูลที่ใช้ในการทดสอบโปรแกรมมีความสำคัญมาก เนื่องจากจะเป็นสิ่งบ่งบอกถึงความถูกต้องของโปรแกรมที่พัฒนาขึ้น ว่ามีความถูกต้องครอบคลุมข้อมูลนำเข้าทุกรูปแบบ โดยตรวจสอบว่ามีข้อมูลนำเข้ารูปแบบใดที่โปรแกรมไม่สามารถรองรับได้ เช่น ข้อมูลไม่อยู่ในช่วงที่ถูกต้อง และข้อมูลที่รับเข้าเป็นตัวเลขแต่ผู้ใช้ป้อนค่าเป็นตัวอักษร
เกร็ดน่ารู้ การทดสอบค่าที่ชอบ (boundary test)
ในการเตรียมข้อมูลสำหรับทดสอบโปรแกรมนั้น วิธีหนึ่งที่ใช้กันมากคือ การค้นหาว่าช่วงของข้อมูลที่ถูกต้องคืออะไร แล้วเตรียมข้อมูลทดสอบที่มีค่าอยู่ตรงขอบของช่วงดังกล่าวพอดี เพื่อเป็นการตรวจสอบว่าโปรแกรมจัดการกับข้อมูลดังกล่าวได้อย่างถูกต้องหรือไม่ ตัวอย่างเช่น การรับคะแนนสอบของนักเรียน ถ้าหากว่าคะแนนสอบที่นักเรียนจะได้ อยู่ในช่วง 0-40 คะแนน โปรแกรมต้องทดสอบว่าถ้าผู้ใช้ป้อนคะแนนเป็น 0 หรือ 40 แล้วโปรแกรมทำงานได้ถูกต้องหรือไม่ และถ้าผู้ใช้ป้อนคะแนนเป็น -1 หรือ 41 แล้วโปรแกรมสามารถตรวจจับได้ว่าข้อมูลเข้าผิดพลาดหรือไม่นั่นเอง
1.4 การทดสอบโปรแกรม
หลังจากได้เขียนโปรแกรมและเตรียมข้อมูลสำหรับทดสอบอย่างครบถ้วนแล้ว ขั้นตอนทดสอบโปรแกรมก็จะสามารถดำเนินการได้ ถ้าหากว่าโปรแกรมที่พัฒนาขึ้นมีความซับซ้อนไม่มากนัก นักเขียนโปรแกรมสามารถทำการทดสอบโดยรับโปรแกรม ป้อนข้อมูลทีละชุด และตรวจสอบความถูกต้องของผลลัพธ์ที่ได้ ซึ่งเป็นวิธีที่ง่านและเหมาะสำหรับผู้เริ่มต้นฝึกหัดการเขียนโปรแกรม เนื่องจากสามารถทดสอบโปรแกรมได้อย่างรวดเร็ว ในบางครั้งนักเขียนโปรแกรมอาจต้องใช้โปรแกรมเฉพาะเพื่อทำการรันโปรแกรมที่พัฒนาขึ้น และทดสอบกับชุดข้อมูลทดสอบอย่างอัตโนมัติ
1.5 การจัดทำเอกสารประกอบโปรแกรม
ขั้นตอนสุดท้ายหลังจากที่ได้ทดสอบจนแน่ใจว่าโปรแกรมทำงานได้ถูกต้องกับชุดข้อมูลทดสอบทั้งหมดแล้ว คือการจัดทำเอกสารประกอบ ในขั้นตอนนี้นักเขียนโปรแกรมจะต้องรวบรวมรายละเอียดทั้งหมดในระหว่างการพัฒนาโปรแกรม เช่น รายละเอียดของปัญหาที่ได้ทำการวิเคราะห์ไว้ ข้อมูลออกที่ต้องการ ข้อมูลเข้าที่เป็นไปได้ทั้งหมด วิธีการประมวลผลเพื่อแก้ปัญหารหัสลำลองหรือผังงานที่ได้รับการปรับปรุงแล้ว และสอดคล้องกับโปรแกรมที่ได้พัฒนาขึ้น ภาษาที่ใช้คุณลักษณะของเครื่องคอมพิวเตอร์ และรุ่นของระบบปฏิบัติการที่โปรแกรมทำงานด้วย ชุดข้อมูลทดสอบ และผลการทดสอบโปรแกรม โดยนำรายละเอียดทั้งหมดนี้ มาจัดทำเป็นรายงานหรือเอกสาร เพื่อจัดเก็บควบคู่กับตัวโปรแกรมต้นฉบับที่พัฒนาขึ้น สำหรับใช้อ้างอิงในอนาคตเมื่อต้องการแก้ไข หรือพัฒนาโปรแกรมต่อไป นอกจากนี้ควรมีการจัดทำคู่มือสำหรับผู้ใช้ ซึ่งอธิบายขั้นตอนในการใช้งานโปรแกรม เพื่อให้ผู้ใช้เข้าใจวิธีใช้งานอย่างถูกต้องและรวดเร็ว
ในบทนี้จะได้อธิบายถึงรายละเอียดในขั้นตอนการเขียนโปรแกรม จากรหัสลำลองหรือผังงาน และภาษาโปรแกรมคอมพิวเตอร์ต่างๆต่อไป


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


การแก้ปัญหาด้วยคอมพิวเตอร์นั้น หลังจากที่ได้วิเคราะห์ปัญหาจนได้ขั้นตอนวิธีในการแก้ปัญหา ซึ่งอาจอยู่ในรูปแบบรหัสลำลอง หรือผังงาน ขั้นตอนต่อไปคือการเขียนโปรแกรมคอมพิวเตอร์ขึ้น เพื่อแก้ปัญหาตามขั้นตอนที่ได้วางแผนไว้ แต่เนื่องจากคอมพิวเตอร์จะรับรู้คำสั่งที่เป็นภาษาเครื่องเท่านั้น และมนุษย์ไม่สามารถเขียนโปรแกรมภาษาเครื่องได้โดยตรง เนื่องจากไม่สะดวก ยากต่อการทำความเข้าใจ จึงได้มีการสร้างภาษาคอมพิวเตอร์ระดับสูงขึ้นมาเพื่อให้ง่ายต่อการเขียนโปรแกรม ผู้เขียนโปรแกรมไม่จำเป็นต้องเรียนรู้การทำงาน และโครงสร้างภายในของเครื่องคอมพิวเตอร์ ก็สามารถเขียนโปรแกรมได้โดยไม่ต้องผ่านการแปลให้เป็นภาษาเครื่องก่อนที่จะใช้สั่งงานคอมพิวเตอร์ได้
เกร็ดน่ารู้ ภาษาคอมพิวเตอร์
ภาษาคอมพิวเตอร์แบ่งได้เป็น 3 ประเภท คือ ภาษาเครื่อง ภาษาระดับต่ำ และภาษาระดับสูง ภาษาเครื่อง คือ ภาษาที่มีคำสั่งอยู่ในรูปเลขฐานสอง ภาษาระดับต่ำ คือ ภาษาที่ใกล้เคียงกับภาษาเครื่อง โดยใช้ตัวอักษรภาษาอังกฤษแทนรหัสแสดงการทำงาน และใช้การตั้งชื่อตัวแปรแทนตำแหน่งที่ใช้เก็บค่าต่างๆ แต่เนื่องจากคอมพิวเตอร์สามารถเข้าใจคำสั่งในรูปแบบเลขฐานสองได้เพียงอย่างเดียว ดังนั้นถ้าเขียนโปรแกรมให้เป็นภาษาระดับต่ำ เมื่อแปลเป็นภาษาเครื่องจะทำให้ภาษาเครื่องทำงานได้เร็ว และมีประสิทธิภาพ แต่นักเขียนโปรแกรมต้องมีความเข้าใจในโครงสร้างของระบบคอมพิวเตอร์อย่างลึกซึ้งสำหรับภาษาระดับสูงจะมีความใกล้เคียงกับภาษาอังกฤษ นักเขียนโปรแกรมเขียนได้ง่าย แต่โปรแกรมที่เขียนขึ้นต้องผ่านการแปลงโดยโปรแกรมแปลภาษาให้เป็นภาษาเครื่องก่อน
การเลือกภาษาใดเพื่อแก้ปัญหานั้น จำเป็นต้องเลือกภาษาให้เหมาะสมกับลักษณะของปัญหา เนื่องจากภาษาคอมพิวเตอร์มีมากมาย ในที่นี้จะได้กล่าวถึงลักษณะสำคัญ ความเหมาะสม และตัวอย่างของภาษาที่นิยมใช้กันทั่วไปซึ่งเป็นภาษาในกลุ่มเชิงกระบวนการ กลุ่มเชิงวัตถุ และกลุ่มอื่นๆ ดังรายละเอียดต่อไปนี้
2.1 ภาษาเชิงกระบวนความ (procedural languages)
โปรแกรมคอมพิวเตอร์ที่เขียนด้วยภาษาเชิงกระบวนความมีลักษณะการทำงานตามลำดับของคำสั่ง จากคำสั่งแรกจนถึงคำสั่งสุดท้าย และบางคำสั่งอาจจะถูกทำซ้ำ หรือบางคำสั่งอาจไม่ถูกกระทำเลยขึ้นอยู่กับเงื่อนไขในโปรแกรม ภาษาในกลุ่มนี้เหมาะสำหรับการเริ่มต้นทำความเข้าใจกับการเขียนโปรแกรมคอมพิวเตอร์ เนื่องจากช่วยให้ผู้เรียนรู้จักการคิดอย่างเป็นระบบ อันเป็นพื้นฐานสำคัญในการเขียนโปรแกรมภาษาอื่น นอกจากนี้ในภาษาโปรแกรมประเภทอื่นก็จะยังมีรูปแบบการทำงานเชิงกระบวนการแฝงอยู่ภายในด้วยเสมอ การใช้งานภาษาในกลุ่มนี้ เช่น งานคำนวณทางวิทยาศาสตร์อาจเลือกใช้ภาษาฟอร์แทรน (FORTRAN) งานประมวลผลข้อมูลทางธุรกิจการเงินหรือธนาคารอาจเลือกใช้ภาษาโคบอล (COBOL) หรือภาษาอาร์พีจี (RPG) การเขียนโปรแกรมควบคุมการทำงานของระบบคอมพิวเตอร์มักเลือกใช้ภาษาซี เนื่องจากภาษาเครื่องที่ได้จะทำงานได้รวดเร็ว หรือการเรียนการสอนการโปรแกรมเชิงกระบวนความอาจเลือกใช้ภาษาปาสคาล (Pascal) หรือภาษาซี เป็นต้น รูปที่ 7.2 แสดงตัวอย่างโปรแกรมภาษาโคบอลซึ่งเป็นการแสดงผลคูณของตัวเลขข้อมูลเข้าสองจำนวน และรูปที่ 7.3 แสดงตัวอย่างโปรแกรมภาษาซีที่ทำหน้าที่เช่นเดียวกัน

รูปที่ 7.2 โปรแกรมภาษาโคบอลแสดงผลคูณของตัวเลขข้อมูลเข้าสองจำนวน

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

รูปที่ 7.4 โปรแกรมภาษาซีแสดงผลคูณของตัวเลขข้อมูลเข้าสองจำนวนโดยใช้ฟังก์ชั่น
เกร็ดหน้ารู้
ภาษาคอมพิวเตอร์บางภาษาซึ่งเป็นที่นิยมใช้ในอดีต จะต้องเขียนให้อยู่ในรูปแบบคอลัมน์ที่ 7 ถึง 56 เท่านั้น มิเช่นนั้นตัวแปลภาษาจะแจ้งว่าโปรแกรมผิดพลาด ภาษาเหล่านี้ถือเป็น fixed-form source code เหตุที่ต้องกำหนดตายตัวเช่นนี้เนื่องจากในยุคที่มีการเริ่มใช้งานภาษาฟอร์แทรนนั้น อุปกรณ์นำข้อมูลเข้าที่ใช้กันคือบัตรเจาะรู มีความกว้างจำกัดอยู่ที่ 80 คอลัมน์เท่านั้น จึงมีการกำหนดคอลัมน์ไว้เพื่อให้สะดวกในการนำโปรแกรมและข้อมูลเข้าสู่เครื่องคอมพิวเตอร์นั่นเอง
2.2 ภาษาเชิงวัตถุ (object oriented language)
ภาษาเชิงวัตถุจะอำนวยความสะดวกให้กับผู้เขียนโปรแกรมในการพัฒนาโปรแกรมที่ใหญ่และซับซ้อนได้เป็นอย่างดี อีกทั้งยังสามารถใช้เขียนโปรแกรมในลักษณะเดียวกับภาษาเชิงกระบวนความได้เช่นกัน ภาษาในกลุ่มนี้ เช่น ภาษาจาวา (Java) ภาษาซีชาร์ป (C#) และภาษาวพลัสพลัส (C++) รูปที่ 7.5 แสดงตัวอย่างโปรแกรมภาษาซีพลัสที่ให้ผู้เล่นทายตัวเลขที่โปรแกรมสุ่มขึ้นมาหนึ่งตัว


รูปที่ 7.5 (ก) โปรแกรมภาษาซีพลัสพลัส เพื่อให้ผู้เล่นทายตัวเลขที่โปรแกรมสุ่มขึ้นมาหนึ่งตัว

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


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


รูปที่ 7.6 (ค) เน็ตบีน
2.3 ภาษาอื่นๆ
1) โฟร์จีแอล (fourth-generation languages: 4GLs) เป็นกลุ่มของภาษาที่แตกต่างจากภาษาเชิงกระบวนความ ที่เน้นให้ผู้ใช้สามารถเข้าถึงข้อมูลในฐานข้อมูลได้โดยง่าย ภาษาจะมีความคล้ายคลึงกับภาษาอังกฤษที่ใช้กันอยู่ ตัวอย่างของภาษา 4GL เช่น ภาษาเอสคิวแอล (SQL)
2) เอชทีเอ็มแอล (Hypertext Markup Language: HTML) เป็นภาษาที่ใช้จัดรูปแบบการแสดงผลของข้อความและรูปภาพ รวมถึงสื่อประสมบนหน้าเว็บ ดังนั้นเอชทีเอ็มแอลจึงไม่ได้ถูกจัดเป็นภาษาที่ใช้ในการเขียนโปรแกรมอย่างแท้จริง แต่เป็นการกำหนดวิธีการในการแสดงผล เอชทีเอ็มแอลจะใช้แท็ก (tags) เป็นตัวกำหนดว่าส่วนใดในเอกสารจะให้แสดงผลอย่างไร รูปที่ 7.7 (ก) แสดงตัวอย่างของภาษาเอชทีเอ็มแอลที่ใช้ในการสร้างเว็บเพจในรูปที่ 7.7 (ข)

รูปที่ 7.7 (ก) ส่วนหนึ่งของภาษาเอชทีเอ็มแอลที่ใช้ในการสร้างเว็บเพจ

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


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

รูปที่ 7.8 โครงสร้างพื้นฐานของโปรแกรมภาษาซี
ฟังก์ชัน main( ) ประกอบด้วย 3 ส่วนหลัก คือ
1.ส่วนหินของฟังก์ชัน ในบรรทัดที่ 1 ประกอบด้วย ชนิดข้อมูล ชื่อฟังก์ชัน main ตามด้วยเครื่องหมาย ( และ เครื่องหมาย ) ตามลำดับ สำหรับชนิดข้อมูล เป็นการระบุว่าฟังก์ชันนี้จะส่งค่ากลับไปให้กับฟังก์ชันผู้เรียกเป็น ข้อมูลชนิดใด โดยทั่วไปแล้วสำหรับฟังก์ชัน main ( ) จะส่งค่ากลับเป็นชนิดข้อมูลจำนวนเต็มหรือ int
2.ส่วนการประกาศตัวแปร ในบรรทัดที่ 2 ใช้สำหรับประกาศตัวแปรชนิดต่างๆ เพื่อเก็บข้อมูลระหว่างการ ประมวลผล
3.ส่วนคำสั่ง ในบรรทัดที่ 3 ประกอบด้วยคำสั่งต่างๆ ซึ่งอาจรวมถึงการเรียกใช้ฟังก์ชันอื่นได้ด้วย
ส่วนประกอบตัวแปรและส่วนคำสั่งจะต้องเขียนอยู่ระหว่างเครื่องหมาย { และเครื่องหมา } เสมอทั้งสองส่วนนี้ใช้สำหรับนิยามการทำงานของฟังก์ชัน main ( ) และคำสั่งทุกคำสั่งในภาษาซีจะต้องปิดท้ายเครื่องหมาย ; (semicolon)
ในโปรแกรมนี้ ประกอบด้วยฟังก์ชัน main ( ) เพียงหนึ่งฟังก์ชัน ซึ่งจำเป็นต้องมีในภาษาซี และจากรูปแบบของการประกาศฟังก์ชัน จะต้องมีวงเล็บปีกกาเปิด และปิด เพื่อแสดงถึงตัวฟังก์ชันโดยที่ไม่จำเป็นต้องมีคำสั่งใดๆ เลยก็ได้ ดังนั้นโปรแกรมนี้จึงเป็นโปรแกรมที่สบบูรณ์แต่ไม่ได้ทำงานใดถ้าคอมไพล์และรันโปรแกรมนี้ จะพบว่าโปรแกรมจบการทำงานทันที โดยไม่มีการรับข้อมูลหรือแสดงผลใดๆ ทั้งสิ้น
3.2 องค์ประกอบของภาษาซี
ในที่นี้จะได้อธิบายองค์ประกอบพื้นฐานของภาษาซีจากตัวอย่างของโปรแกรมในรูปที่ 7.10 ซึ่งเป็นโปรแกรมที่พัฒนามาจากผังงานในตัวอย่างที่ 6.9 โดยเพิ่มการนับจำนวนครั้งของการทายทั้งหมดด้วย (รูปที่ 7.9) แสดงผังงานที่สอดคล้องกับโปรแกรมในรูปที่ 7.10)

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

รูปที่ 7.10 ตัวอย่างโปรแกรมภาษาซี

Ÿ การพิมพ์ประกาศรวมแฟ้มส่วนหัว (header file)


การประกาศรวมแฟ้มส่วนหัวดีงแสดงในบรรทัดที่ 1 และ 2 เป็นการรวมเอาฟังก์ชันมาตรฐานของภาษาซีเข้ามาร่วมใช้งานกับโปรแกรมที่เขียนขึ้น ทำให้นักเขียนโปรแกรมสามารถเรียกใช้ฟังก์ชันมาตรฐานที่ภาษาซีเตรียมไว้ให้ได้ เช่น ฟังก์ชัน printf ( ) และ scanf ( ) เป็นต้น

การประกาศตัวแปร (Variable declaration)


ในบรรทัดที่ 6 ถึง 8 เป็นการประกาศตัวแปร ซึ่งเป็นข้อกำหนดของภาษาซีที่ต้องมีการประกาศตัวแปรไว้ที่ตอนต้นของฟังก์ชัน ก่อนที่จะสามารถใช้งานตัวแปรเหล่านั้นได้ ในที่นี้มีการประกาศตัวแปร target, number และ no_of_guesses เป็นชนิดจำนวนเต็ม (int) สังเกตว่ารูปแบบของการประกาศตัวแปร คือ data_type identification_name;
ซึ่ง data_type เป็นชนิดของข้อมูล และ identification_name เป็นชื่อตัวแปรที่กำหนดขึ้นให้มีชนิดตามที่ระบุ นอกจากนี้ยังสามารถกำหนดค่าเริ่มต้นให้กับตัวแปรที่เพิ่งจะประกาศขึ้นได้เลย ดังเช่นที่กำหนดค่า 1 .ให้กับตัวแปร no_of_guesses ในบรรทัดที่ 8

Ÿ การรับข้อมูลเข้า


ในบรรทัดที่ 10,12 และ 20 เป็นการเรียกใช้ฟังก์ชัน scanf ( ) ในการรับข้อมูลเข้า โดยต้องมีการระบุ พารามิเตอร์ คือ ตัวแรกเป็นสายอักขระของการกำหนดรูปแบบของข้อมูลเข้าที่ต้องการรับ ในที่นี้คือ “%d” หมายถึงว่าต้องการรับข้อมูลเข้าที่อยู่ในรูปแบบจำนวนเต็ม และตัวที่สองเป็นตำแหน่งในหน่วยความจำของตัวแปรที่ต้องการใช้เก็บค่าที่รับเข้ามา สังเกตว่าภาษาซีใช้เครื่องหมาย & นำหน้าชื่อตัวแปร เป็นการอ้างถึงตำแหน่งในหน่วยความจำของตัวแปรนั้น

พารามิเตอร์

พารามิเตอร์ (parameter) หมายถึง ชื่อที่ถูกอ้างถึงในส่วนหัวของฟังก์ชัน หรือโปรแกรมย่อย ซึ่งจะถูกแทนที่ด้วยค่าที่ฟังก์ชันผู้เรียกส่งผ่านมาให้ในขณะที่ทีการเรียกใช้ฟังก์ชันหรือโปรแกรมย่อยนั้นๆ

Ÿ การพิมพ์ผลลัพธ์


ในบรรทัดที่ 11,16,18 และ 19 เป็นการเรียกฟังก์ชัน printf ( ) เพื่อพิมพ์ข้อความออกทางจอภาพซึ่งเราสามารถกำหนดข้อความอยู่ภายในเครื่องหมายอัญประกาศให้เป็นพารามิเตอร์ของฟังก์ชัน printf ( ) ได้เลย

สำหรับในบรรทัดที่ 23 จะมีการพิมพ์ค่าของตัวแปรชนิดจำนวนเต็ม no_of_quesses ด้วย โดยจะต้องระบุรูปแบบข้อมูลของตัวแปรที่ต้องการให้พิมพ์ภายในข้อความที่เป็นพารามิเตอร์ตัวแรกด้วย ในที่นี้ตัวแปร no_of_quesses เป็นชนิด int ซึ่งจะใช้รูปแบบกำหนดการพิมพ์คือ “%d” ในลักษณะเดียวกันกับฟังก์ชัน scanf ( ) นั่นเอง

Ÿ คำสั่งควบคุมการทำงานแบบวนซ้ำ


คำสั่ง while เป็นคำสั่งเพื่อควบคุมว่าชุดคำสั่งภายใต้คำสั่ง while (คือ ตั้งแต่บรรทัดที่ 14 ถึง 22) จะถูกวนทำซ้ำอีกหรือไม่ โดยเมื่อโปรแกรมทำงานมาถึงบรรทัดที่ 13 จะตรวจสอบก่อนว่าเงื่อนไขเป็นจริงหรือไม่ ในที่นี้คือตรวจสอบว่าค่าของตัวแปร number ไม่เท่ากันกับค่าของตัวแปร target หรือไม่ ถ้าเป็นจริง ก็จะไปทำงานตามคำสั่งภายในบรรทัดดังกล่าวหนึ่งรอบ ก่อนที่จะย้อนกลับไปตรวจสอบเงื่อนไขอีกครั้ง ถ้าเงื่อนไขเป็นเท็จ ก็จะไปทำงานในบรรทัดที่ 23 ต่อไป

Ÿ คำสั่งกำหนดค่าให้กับตัวแปร


ในบรรทัดที่ 21 เป็นการกำหนดค่าใหม่ให้กับตัวแปร no_of_quesses โดยใช้เครื่องหมายกำหนดค่า ( = ) ซึ่งเป็นการกำหนดให้ตัวแปรที่อยู่ทางซ้ายของเครื่องหมายกำหนดค่า มีค่าเท่ากับค่าของนิพจน์ทางขวาของเครื่องหมายกำหนดค่า ซึ่งในที่นี้เป็นการเพิ่มค่าของตัวแปร no_of_quesses ขึ้นอีก 1 นั่นเอง
ภาษาซีที่ใช้นิพจน์ทางคณิตศาสตร์เพื่อคำนวณและเปรียบเทียบ นิพจน์ประกอบด้วยตัวถูกดำเนินการ (operand) และตัวดำเนินการ (operator) ที่สามารถถูกลดรูปหรือถูกประเมินให้เป็นค่าทางคณิตศาสตร์เพียงค่าเดียวได้ เช่น 2*5 เป็นนิพจน์ เนื่องจากสามารถหาค่าได้เป็น 10 ตัวดำเนินการในภาษาซีมีหลายประเภท ดังตารางที่ 7.1 แสดงความหมายและตัวอย่างการใช้งานตัวดำเนินการในภาษาซี


คำสั่งควบคุมการทำงานแบบมีทางเลือก


คำสั่ง if-else ในบรรทัดที่ 15 ถึง 18 เป็นการเลือกว่าจะทำงานตามคำสั่งภายใต้ if หรือภายใต้ else แล้วแต่เงื่อนไขที่อยู่หลัง if ในบรรทัดที่ 15 โดยถ้าเงื่อนไขเป็นจริง จะทำงานภายใต้ if นั่นคือคำสั่งในบรรทัดที่ 16 เท่านั้น แล้วจะข้ามไปทำงานในบรรทัดที่ 19 เลย แต่ถ้าเงื่อนไขในบรรทัดที่ 15 เป็นเท็จ ก็จะข้ามคำสั่งภายใต้ if ไปทำงานที่คำสั่งภายใต้ else ในบรรทัดที่ 18 เท่านั้น ก่อนที่จะทำงานในบรรทัดที่ 19 ต่อไป

Ÿ คำสั่ง return


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

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


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

แสดงความคิดเห็น