หน่วยที่ 8 โปรแกรมย่อย และฟังก์ชั่น

โปรแกรมย่อย (Sub Program)

ในหน่วยการเรียนรู้ที่ 8 นี้ผู้เขียนจะอธิบายนี้ผู้เขียนจะอธิบายถึงการสร้างและการใช้งานโปรแกรมย่อย (Sub Program) ละฟังก์ชัน (Function) เพื่อให้ผู้เรียนมีความรู้ความเข้าใจและสามารถพัฒนาขึ้นมาใช้งานเองได้

8.1โปรแกรมย่อย (Subprogram)

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

8.1.1 การสร้างโปรแกรมย่อย

การสร้างโปรแกรมย่อย สามารถทําได้โดยมีการประกาศคีย์เวิร์ด Sub และจบด้วย End Sub เพื่อบอกขอบเขตของโปรแกรมย่อยนั้น ภายใน Sub จะเป็นคําสั่ง (Code) การทํางานของโปรแกรมตามที่ ผู้เขียนโปรแกรมต้องการ




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

8.1.2 ตัวอย่างการเขียนโปรแกรมย่อย

ตัวอย่างต่อไปนี้เป็นตัวอย่างการเขียนโปรแกรมย่อย โดยเป็นการเขียนโปรแกรมย่อยเพื่อทําการคํานวณหาพื้นที่สามเหลี่ยมมุมฉาก (0.5 x ฐาน x สูง) โดยโปรแกรมย่อยนี้จะกําหนดชื่อว่า TriangleArea และมีการรับค่าเข้ามาประมวลผล 2 ค่า คือ ค่าความกว้างของฐาน (Base) และค่าความสูงของ

สามเหลี่ยม (Height) ซึ่งเมื่อทําการประมวลผลแล้ว จะมีหน้าต่างแจ้งผลลัพธ์การคํานวณแสดงขึ้นมา โปรแกรมย่อยดังกล่าว สามารถเขียนได้ ดังนี้




8. 1.3 การใช้งานโปรแกรมย่อย

โปรแกรมย่อยหากมีการสร้างขึ้นไว้แล้ว แต่ไม่มีการเรียกเพื่อใช้งาน โปรแกรมย่อยนั้นจะไม่มี การทํางานเกิดขึ้น เนื่องจากโปรแกรมย่อยเป็นโปรแกรมที่พัฒนาหรือสร้างขึ้นเพื่อนําไปให้กับโปรแกรมหลัก

สําหรับการเรียกใช้งานโปรแกรมย่อยที่สร้างขึ้น สามารถเรียกใช้ได้โดยการเรียกผ่านชื่อ โปรแกรมย่อยแล้วตามด้วยเครื่องหมายวงเล็บ เช่น MySub() และหากโปรแกรมย่อยนั้น มีการรับค่าเข้ามา ประมูลผลภายใน ก็ให้ทําการส่งค่าเข้ามาโดยผ่านวงเล็บ เช่น MySub(“ข้อความ”) เป็นต้น ดูตัวอย่างการ เรียกใช้โปรแกรมย่อยในรูปที่ 8.1


จากรูปที่ 8.1 ให้สังเกตหมายเลขบรรทัดที่ 4 ซึ่งเป็นการเรียกใช้งานโปรแกรมย่อยที่ชื่อว่า angleArea ที่ได้สร้างไว้แล้ว โดยมีการส่งค่าพารามิเตอร์มาให้แก่โปรแกรมย่อยดังกล่าว 2 ค่า คือ เลข 3และ 2 TriangleArea (3, 2) การส่งค่าพารามิเตอร์ หากมีการส่งค่ามากกว่า 1 ค่าให้คันค่าข้อมูลด้วย เครื่องหมาย comma (,)



ฟังก์ชัน (Function)


8.2 ฟังก์ชัน (Function)

ฟังก์ชัน (Function) เป็นการทํางานที่คล้ายกับโปรแกรมย่อย คือ เป็นส่วนย่อยของโปรแกรมหลัก สร้างขึ้นเพื่อให้โปรแกรมหลักเรียกใช้งาน แต่แตกต่างจากโปรแกรมย่อยในส่วนของการส่งค่ากลับออกมา (Return Value) อธิบายคือ เมื่อโปรแกรมย่อยประมวลผลเสร็จ จะไม่มีการส่งค่ากลับออกมาจากโปรแกรม ย่อยนั้น แต่ฟังก์ชันเมื่อมีการประมวลผลเสร็จแล้ว จะมีการส่งค่ากลับออกมาจากฟังก์ชันนั้น

8.2.1 การสร้างฟังก์ชัน

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

8.2.2 ตัวอย่างการเขียนฟังก์ชัน

ต่อไปนี้เป็นตัวอย่างการเขียนฟังก์ชัน โดยเป็นการเขียนฟังก์ชันเพื่อทําการแปลงค่าจากหน่วย นาที่ให้เป็นวินาที (นาที่ x 60) เช่น เวลา 5 นาที่จะเท่ากับ 300 วินาที (5 x 60 = 300) เป็นต้น โดยจะมีการ สร้างฟังก์ชันที่ชื่อว่า convertMinute โดยมีการรับค่าพารามิเตอร์เข้ามาประมวลผลภายในฟังก์ชัน 1 ค่า คือ ค่าของนาที่ที่ต้องการแปลงให้เป็นวินาที และค่าที่ส่งกลับ (Return) จะเป็นค่าตัวเลขจํานวนเต็ม (Integer) เขียนฟังก์ชันได้ ดังนี้





8.2.3 การใช้งานฟังก์ชัน

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

โปรแกรมเป็นการประกาศตัวแปรไว้เพื่อเป็นตัวแปรที่จะนํามารับค่าที่ ส่งกลับออกมาจากฟังก์ชัน ConvertMinute ซึ่งประเภทของตัวแปรจะเป็นประเภทเดียวกับค่าที่ฟังก์ชันจะ ส่งกลับออกมา (Integer) ในบรรทัดที่ 6 เป็นการเรียกใช้ฟังก์ชัน ConvertMinute พร้อมกับมีการส่งค่าเข้าไป ยังฟังก์ชัน ConvertMinute (9) และข้างหน้าได้นําเอาตัวแปร sec ที่ประกาศไว้มารับค่า จากนั้นในบรรทัดที่ 7 นําตัวแปร sec ที่รับค่าจากฟังก์ชั้นนํามาแสดงผลที่หน้าจอโปรแกรมแจ้งเตือน


การตั้งชื่อโปรแกรมย่อยและฟังก์ชัน

8.3 การตั้งชื่อโปรแกรมย่อยและฟังก์ชัน

จากที่เรียนรู้เรื่องของการสร้างโปรแกรมย่อยและฟังก์ชันมาแล้ว จะพบว่าการพัฒนาหรือการเขียน โค้ดโปรแกรมสําหรับโปรแกรมย่อยหรือฟังก์ชัน จําเป็นต้องมีการตั้งชื่อโปรแกรมย่อยหรือฟังก์ชันนั้น ๆ ซึ่ง การตั้งชื่อดังกล่าว Visual Basic จะมีข้อกําหนดในการตั้งชื่อ ดังนี้

1. ชื่อโปรแกรมย่อยหรือชื่อฟังก์ชันควรเป็นชื่อที่สื่อความหมายถึงการใช้งาน

2. ชื่อโปรแกรมย่อยหรือชื่อฟังก์ชันไม่ขึ้นต้นด้วยตัวเลข

3. ชื่อโปรแกรมย่อยหรือชื่อฟังก์ชันไม่มีการเว้นวรรค

4. ชื่อโปรแกรมย่อยหรือชื่อฟังก์ชันไม่ใช้อักษรพิเศษใด ๆ ยกเว้นเครื่องหมาย Under Score (-) 5. ชื่อโปรแกรมย่อยหรือชื่อฟังก์ชันไม่ตั้งชื่อเป็นภาษาไทย


ตารางที่ 8.1 ตัวอย่างการตั้งชื่อโปรแกรมย่อยและฟังก์ชัน

ฟังก์ชันที่มาพร้อมกับ Visual Basic

8.4 ฟังก์ชันที่มาพร้อมกับ Visual Basic

จากที่เรียนรู้ไปเป็นการเรียนรู้เพื่อสร้างฟังก์ชันขึ้นมาใช้งานเอง แต่ยังมีฟังก์ชันอีก 1 ประเภทที่ ผู้พัฒนาโปรแกรมไม่จําเป็นต้องเขียนขึ้นมาให้งานเอง แต่สามารถเรียกใช้งานได้ทันที ฟังก์ชันในรูปแบบนั้น เรียกว่า Build in Function หรือฟังก์ชันที่มีมาแล้วกับตัวแปรภาษา ซึ่งในที่นี้คือภาษา Visual Basic ที่กําลัง ศึกษาในหนังสือเล่มนี้ สําหรับฟังก์ชันที่มีมาพร้อมกับ VB ที่ได้ใช้งานบ้างแล้ว เช่น MsgBox () เป็นต้น ซึ่งอัน ที่จริงแล้วยังมีฟังก์ชันอีกเป็นจํานวนมากที่ VB จัดเตรียมขึ้นมาเพื่อให้นํามาเรียกใช้งานให้เหมาะสมในด้าน ต่าง ๆ โดยจะแนะนําเพียงบางส่วน ดังนี้

8.4.1 ฟังก์ชันด้านตัวเลข

Visual Basic มีฟังก์ชันที่มีการทํางานด้านตัวเลขให้ผู้พัฒนาโปรแกรมนําไปใช้งานจํานวนหนึ่งดังนี้


ตารางที่ 8.2 ฟังก์ชันด้านตัวเลข


8.4.2 ฟังก์ชันด้านตัวอักษรข้อความ

Visual Basic มีฟังก์ชันที่มีการทํางานด้านตัวอักษรข้อความ (String) ให้ผู้พัฒนาโปรแกรม นําไปใช้งานจํานวนหนึ่ง ดังนี้

ตารางที่ 8.3 ฟังก์ชันตัวอักษรข้อความ


8.4.3 ฟังก์ชันด้านวัน/เวลา

Visual Basic มีฟังก์ชันที่มีการทํางานด้านวัน/เวลาให้นักพัฒนาสามารถเรียกใช้งานได้ โดย อาจจะนําไปใช้งานโปรแกรมที่ต้องมีการใช้ข้อมูลประเภทวัน/เวลาต่าง ๆ ดังนี้

ใน Visual Basic ยังมีฟังก์ชันอื่น ๆ อีกมากมายให้นักพัฒนาโปรแกรมเรียกใช้งาน ซึ่งผู้เรียนควร สนใจเรียนรู้ศึกษาต่อไป

ตัวอย่างการใช้ฟังก์ชันที่มีมาพร้อมกับ Visual Basic

เมื่อได้ทําการเรียนรู้ว่ามีฟังก์ชันใดบ้างที่มาพร้อมกับ Visual Basic ต่อมาจะเป็นตัวอย่างการใช้งาน ฟังก์ชันดังกล่าว โดยการสร้างโปรแกรมสําหรับแสดงวันเวลาปัจจุบัน ที่หน้าจอโปรแกรม ซึ่งมีการออกแบบ หน้าจอโปรแกรมไว้ดังในรูปที่ 8.3 และมีการกําหนดค่าให้กับคอนโทรลต่าง ๆ


ตารางที่ 8.5 กําหนดคุณสมบัติให้กับคอนโทรล


เมื่อได้ทําการออกแบบหน้าจอโปรแกรม และกําหนดค่าต่าง ๆ ดังที่กล่าวมาแล้ว ต่อมาทาการเขียน โปรแกรมโดยมีการใช้งานฟังก์ชันร่วมด้วย ดังรูปที่ 8.4

จากรูปที่ 8.4 เป็นการเขียนโปรแกรมเพื่อแสดงวันเดือนปีของวันปัจจุบันโดยมีการใช้ฟังก์ชันในกลุ่ม ของวันเวลา จากนั้นนําค่าที่ได้จากฟังก์ชันมาแสดงผลที่ Label ที่สร้างไว้ (LB1) เมื่อเขียนโปรแกรมเสร็จสิ้น แล้ว ทําการทดสอบโปรแกรม โปรแกรมจะมีการทํางานและแสดงผลดังรูปที่ 8.5

สรุปสาระสําคัญ

จากหน่วยการเรียนรู้นี้ ผู้เรียนได้ทําการเรียนรู้และมีความเข้าใจเกี่ยวกับการเขียนโปรแกรมย่อย และ ฟังก์ชัน รวมถึงการใช้งานฟังก์ชันที่มาพร้อมกับ Visual Basic ซึ่งนับว่ามีประโยชน์มากในการพัฒนาหรือ ศึกษาด้านการเขียนโปรแกรมด้วย Visual Basic ต่อไป