บทที่ 2 ตอน 4 การบังคับให้ออกจากฟังก์ชั่นโดยใช้คำสั่ง Exit Function

การบังคับให้ออกจากฟังก์ชั่นโดยใช้คำสั่ง Exit Function
|1|         Function testFunction() As String
|2|             MsgBox("456")
|3|             Exit Function
|4|             MsgBox("789")
|5|             Return "123"
|6|         End Function
    จากโค้ดสังเกตว่าเมื่อเรียกใช้เมธอด testFunction() จะมีการแสดงผลของกล่องข้อความเพียงครั้งเดียวเนื่อจากในบรรทัดที่ 3 มีการบังคับให้ออกจากเมธอดโดยคำสั่ง Exit Function
การบังคับให้ออกจากซับรูทีนโดยใช้คำสั่ง Exit Sub
|1|         Sub testFunction()
|2|             MsgBox("456")
|3|             Exit Sub
|4|             MsgBox("789")
|5|         End Sub
จากโค้ดของซับรูทีนเช่นเดียวกันกับฟังก์ชั่นเมื่อระบบทำงานไปพบกับคำสั่ง Exit Sub ในบรรทัดที่ 3 จะหลุดหรือออกจากซับรูทีนทันทีโดยมีการแสดงผลของกล่องข้อความเพียงครั้งเดียวคือ 456

การส่งค่าอาร์กิวเมนต์ชนิดวัตถุ หรือ Object
นอกจากการส่งค่าที่เป็นชนิดข้อมูลพื้นฐาน (integer string long …) ผ่านค่าอาร์กิวเมนต์ไปยังค่าตัวแปรพารามิเตอร์ ภายในฟังก์ชั่นได้แล้วยังสามารถส่งค่าข้อมูลชนิดวัตถุเข้าไปในเมธอดได้ (อะไรก็ตามที่เป็นวัตถุ ก็ส่งเข้าไปได้) ซึ่งข้อมูลชนิดวัตถุที่ส่งเข้าไปนั้นยังคงมี ค่าคุณสมบัติ และจำนวนเมธอดอยู่แต่มีข้อสังเกตคือ ตัวแปรพารามิเตอร์ที่มารับค่านั้นจะต้องเป็นชนิดข้อมูลเดียวกันกับอาร์กิวเมนต์ที่ส่งค่าเข้ามา มิฉะนั้นอาจจะเกิดข้อผิดพลาดในการรันโปรแกรมได้
ตัวอย่างต่อไปนี้คือเมธอด setButton() โดยมีการส่งค่าอาร์กิวเมนต์ชนิด button ผ่านตัวแปรพารามิเตอร์ ดังนั้นตัวแปรพารามิเตอร์จะต้องประกาศเป็นตัวแปรชนิด Button เช่นกันเพื่อจะได้สอดคล้องกับอาร์กิวเมนต์ที่ส่งเข้ามา
|1|     Public Class Form1
|2|    
|3|         Sub setButton(ByVal prmBtn As Button)
|4|             prmBtn.BackColor = Color.Red
|5|             prmBtn.ForeColor = Color.Blue
|6|             prmBtn.Text = "แสดงข้อความ"
|7|             prmBtn.Font = New Font("Tahoma", 16, FontStyle.Bold)
|8|         End Sub
|9|    
|10|      
|11|        Private Sub Button1_Click() Handles Button1.Click
|12|            setButton(Button1)
|13|        End Sub
|14|   
|15|    End Class
โปรดสังเกตในบรรทัดที่ 12 เมื่อมีการเรียกใช้เมธอด setButton()ก็จะส่งออฟเจ็กต์ Button1 เข้าไปในเมธอด โดยมีบรรทัดที่ 3 ในการรับค่า Button1 ผ่านตัวแปรพารามิเตอร์ prmBtn การเขียนเมธอด setButton() สามารถเขียนโค้ดคำสั่งให้กระชับขึ้นโดยการใช้คำสั่ง With มาช่วยจัดระบบดังนี้
|1|         Sub setbutton(ByVal prmBtn As Button)
|2|             With prmBtn
|3|                 .BackColor = Color.Red
|4|                 .ForeColor = Color.Blue
|5|                 .Text = "แสดงข้อความ"
|6|                 .Font = New Font("Tahoma", 16, FontStyle.Bold)
|7|             End With
|8|         End Sub

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

โปรแกรมคำนวณสูตรการคูณนี้จะมีขั้นตอนในการทำงานโดยเริ่มจากการโหลดฟอร์มครั้งแรก (Form1_Load) คำสั่งจะทำการวนรอบค่าจาก 1 ถึง 100 เข้าไปยัง ComboBox 1 ถึง 4 และกำหนดการแสดงผลค่าเริ่มต้นของ Combobox คือ 12 จากนั้นเมื่อผู้ใช้คลิกปุ่มคำนวณ จะทำการคำนวณสูตรการคูณโดยจะวนรอบจำนวน 12 รอบ จากนั้นจะแสดงผลไปยัง ListBox1 โดยมีการกำหนดค่าสีในแต่ละปุ่มคำนวณโดยสีที่แตกต่างกัน ซึ่งในส่วนแรกจะมีการออกแบบและเขียนโค้ดคำสั่งดังนี้ 


ส่วนที่ 1 เขียนโปรแกรมโดยไม่ใช้เมธอด

(1)  ขั้นตอนในการออกแบบหน้าจอ ให้ออกแบบหน้าจอดังภาพโดยในคุณสมบัติ Name ให้ตั้งชื่อตัวควบคุมทั้งหมด ดังภาพ
(1) จากนั้นให้ทดลองเขียนโค้ดคำสั่งในเหตุการณ์ที่จะเกิดขึ้น คือ  Form1_Load  Button1_Click  Button2_Click    Button3_Click   Button4_Click
|1|     Public Class Form1
|2|    
|3|         Private Sub Form1_Load() Handles MyBase.Load
|4|             Dim i As Int16
|5|    
|6|             For i = 1 To 100
|7|                 ComboBox1.Items.Add(i)
|8|             Next
|9|             ComboBox1.Text = "12"
|10|   
|11|            For i = 1 To 100
|12|                ComboBox2.Items.Add(i)
|13|            Next
|14|            ComboBox2.Text = "12"
|15|   
|16|            For i = 1 To 100
|17|                ComboBox3.Items.Add(i)
|18|            Next
|19|            ComboBox3.Text = "12"
|20|   
|21|            For i = 1 To 100
|22|                ComboBox4.Items.Add(i)
|23|            Next
|24|            ComboBox4.Text = "12"
|25|   
|26|        End Sub
|27|   
|28|        Private Sub Button1_Click() Handles Button1.Click
|29|            Dim i As Int16
|30|            Dim Lp As Int16 = Val(ComboBox1.Text)
|31|            Dim num As Int16 = 1
|32|   
|33|            ListBox1.Items.Clear()
|34|            For i = 1 To Lp
|35|                ListBox1.Items.Add(num & " : " & i & " = " & i * Lp)
|36|            Next
|37|            ListBox1.ForeColor = Color.Red
|38|        End Sub
|39|   
|40|        Private Sub Button2_Click() Handles Button2.Click
|41|            Dim i As Int16
|42|            Dim Lp As Int16 = Val(ComboBox2.Text)
|43|            Dim num As Int16 = 2
|44|   
|45|            ListBox1.Items.Clear()
|46|            For i = 1 To Lp
|47|                ListBox1.Items.Add(num & " : " & i & " = " & i * Lp)
|48|            Next
|49|            ListBox1.ForeColor = Color.Green
|50|        End Sub
|51|   
|52|        Private Sub Button3_Click() Handles Button3.Click
|53|            Dim i As Int16
|54|            Dim Lp As Int16 = Val(ComboBox3.Text)
|55|            Dim num As Int16 = 3
|56|   
|57|            ListBox1.Items.Clear()
|58|            For i = 1 To Lp
|59|                ListBox1.Items.Add(num & " : " & i & " = " & i * Lp)
|60|            Next
|61|            ListBox1.ForeColor = Color.Blue
|62|        End Sub
|63|   
|64|        Private Sub Button4_Click() Handles Button4.Click
|65|            Dim i As Int16
|66|            Dim Lp As Int16 = Val(ComboBox4.Text)
|67|            Dim num As Int16 = 4
|68|   
|69|            ListBox1.Items.Clear()
|70|            For i = 1 To Lp
|71|                ListBox1.Items.Add(num & " : " & i & " = " & i * Lp)
|72|            Next
|73|            ListBox1.ForeColor = Color.Red
|74|        End Sub
|75|    End Class    

          (3)  รันโปรแกรมและทดลองคลิกปุ่มคำนวณไปทีละปุ่ม โดยสังเกตการแสดงผลใน ListBox1
ส่วนที่ 2 เขียนโปรแกรมสูตรการคูณโดยใช้เมธอดมาช่วยจัดระเบียบ
ในส่วนที่ 2 นี้ให้ออกแบบหน้าฟอร์มและตั้งชื่อให้กับตัวควบคุมต่างๆ เหมือนกับส่วนที่ 1  เพียงแต่การเขียนโค้ดคำสั่งจะต้องเขียนขึ้นใหม่

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


ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

บทที่ 11 ตอน 3 การออกแบบรายงานด้วย Crystal Report

บทที่ 6 กระบวนการพอลิมอร์ฟิซึม (Polymorphism)

บทที่ 11 ตอน 3 การออกแบบรายงานด้วย Crystal Report Ex2