บทที่ 2 ตอน 5 เหตุการณ์การทำงานของเมธอดสำหรับโปรแกรมแม่สูตรคูณ

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

|1|     Public Class Form1
|2|    
|3|         Private Sub Form1_Load() Handles MyBase.Load
|4|             setinterface()
|5|         End Sub
|6|         Sub setinterface()
|7|             setCombo(ComboBox1)
|8|             setCombo(ComboBox2)
|9|             setCombo(ComboBox3)
|10|            setCombo(ComboBox4)
|11|        End Sub
|12|   
|13|        Sub setCombo(prmCbo As ComboBox)
|14|            For i = 1 To 100
|15|                prmCbo.Items.Add(i)
|16|            Next
|17|            prmCbo.Text = "12"
|18|        End Sub
|19|   
|20|        Function setMultiply(prmNum As Int16, prmLoop As Int16) As Boolean
|21|            Dim i As Int16
|22|            Dim Lp As Int16 = prmLoop
|23|            Dim num As Int16 = prmNum
|24|   
|25|            ListBox1.Items.Clear()
|26|            For i = 1 To Lp
|27|                ListBox1.Items.Add(num & " : " & i & " = " & i * Lp)
|28|            Next
|29|        End Function
|30|        Sub setColor(prmC As Int16)
|31|            If prmC = 1 Then ListBox1.ForeColor = Color.Red
|32|            If prmC = 2 Then ListBox1.ForeColor = Color.Green
|33|            If prmC = 3 Then ListBox1.ForeColor = Color.Blue
|34|        End Sub
|35|        Private Sub Button1_Click() Handles Button1.Click
|36|            setMultiply(1, Val(ComboBox1.Text))
|37|            setColor(1)
|38|        End Sub
|39|        Private Sub Button2_Click() Handles Button2.Click
|40|            setMultiply(2, Val(ComboBox2.Text))
|41|            setColor(2)
|42|        End Sub
|43|        Private Sub Button3_Click() Handles Button3.Click
|44|            setMultiply(3, Val(ComboBox3.Text))
|45|            setColor(3)
|46|        End Sub
|47|        Private Sub Button4_Click() Handles Button4.Click
|48|            setMultiply(4, Val(ComboBox4.Text))
|49|            setColor(1)
|50|        End Sub
|51|    End Class

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

(1) เมธอด setCombo(ComboBox) เป็นการกำหนดค่าตัวเลขเพื่อระบุจำนวนการรอบจากเลข 1 ถึง 100 โดยการส่งตัวแปร Object ชนิด Combobox ไปผ่านตัวแปรอาร์กิวเมนต์ไปยังค่าพารามิเตอร์


|1|     Public Class Form1
|2|    
|3|         Sub setCombo(prmCbo As ComboBox)
|4|             For i = 1 To 100
|5|                 prmCbo.Items.Add(i)
|6|             Next
|7|             prmCbo.Text = "12"
|8|         End Sub
|9|    
|10|    End Class

(2) เมธอด Setinterface() จากนั้นสร้างเมธอดเพื่อเรียกใช้รายการเมธอด setCombo() โดยการกำหนดค่าให้กับ Combobox ทุกตัวในฟอร์ม ซึ่งสามารถเขียนโค้ดได้


|1|     Public Class Form1
|2|         Sub setinterface()
|3|             setCombo(ComboBox1)
|4|             setCombo(ComboBox2)
|5|             setCombo(ComboBox3)
|6|             setCombo(ComboBox4)
|7|         End Sub
|8|     End Class

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


|1|     Public Class Form1
|2|         Private Sub Form1_Load() Handles MyBase.Load
|3|             setinterface()
|4|         End Sub
|5|     End Class

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


|1|     Public Class Form1
|2|     Function setMultiply(prmNum As Int16, prmLoop As Int16) As Boolean
|3|             Dim i As Int16
|4|             Dim Lp As Int16 = prmLoop
|5|             Dim num As Int16 = prmNum
|6|    
|7|             ListBox1.Items.Clear()
|8|             For i = 1 To Lp
|9|                 ListBox1.Items.Add(num & " : " & i & " = " & i * Lp)
|10|            Next
|11|        End Function
|12|    End Class

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

|1|     Public Class Form1
|2|    
|3|         Private Sub Button1_Click() Handles Button1.Click
|4|             setMultiply(1, Val(ComboBox1.Text))
|5|         End Sub
|6|    
|7|     End Class
(4) เมธอด setColor() ซึ่งมีหน้าที่ในการกำหนดค่าสีตามตัวเลือกที่ส่งค่าอาร์กิวเมนต์ เลข 1 ถึง 3 ซึ่งจะแสดงค่าสี คือ สีแดง  สีเขียว สีฟ้า ซึ่งหากพิจารณาจะโค้ดจะเห็นว่ามีเพียงค่าสี 3 สีในการเปลี่ยนสีตัวอักษร สามารถเขียนโค้ดได้ดังนี้

|1|     Public Class Form1
|2|    
|3|         Sub setColor(prmC As Int16)
|4|             If prmC = 1 Then ListBox1.ForeColor = Color.Red
|5|             If prmC = 2 Then ListBox1.ForeColor = Color.Green
|6|             If prmC = 3 Then ListBox1.ForeColor = Color.Blue
|7|         End Sub
|8|    
|9|     End Class

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

|1|     Public Class Form1
|2|    
|3|         Private Sub Button1_Click() Handles Button1.Click
|4|             setMultiply(1, Val(ComboBox1.Text))
|5|             setColor(1)
|6|         End Sub
|7|    
|8|     End Class 

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

สำหรับการเขียนโปแกรมเพื่อแก้ปัญหาโปรแกรมเครื่องคิดเลข นักศึกษาอาจจะมีแนวทางการเขียนโปรแกรมที่แตกต่างจากนี้ก็ได้ ซึ่งโปรแกรมนี้จะใช้ฟังก์ชั่นที่สำคัญจาก VB.NET มาช่วยในการจัดการกับข้อความ  คือ ฟังก์ชั่น Mid()   และ ฟังก์ชั่น InStr()  สำหรับการใช้งานเพิ่มเติมของฟังก์ชั่นทั้งสองนี้นักศึกษา สามารถศึกษาเพิ่มเติมได้จากแหล่งข้อมูลต่างๆ
ฟังก์ชั่น  Mid()  คือ ใช้สำหรับการตัดเอาบางส่วนจากข้อความตามเงื่อนไขที่กำหนด  เช่น
Mid (ข้อความ, ตำแหน่งที่เริ่มต้น , ตำแหน่งสิ้นสุด)  
ฟังก์ชั่น  InStr()  คือ ใช้สำหรับค้นหาตำแหน่งของตัวอักษรหรือคำ ที่อยู่ในข้อความ เช่น
InStr(ข้อความ , “ตัวอักษร

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

แผนภาพสำหรับเหตุการณ์การทำงานของเมธอดสำหรับโปรแกรมแม่สูตรคูณ
(2) ออกแบบหน้าฟอร์มเสร็จแล้วจากนั้นให้เขียนโค้ดในส่วนของเมธอดแต่ละส่วนภายในส่วนของคลาส Form1 ดังนี้
|1|     Public Class Form1
|2|    
|3|         Sub AddNumber(prmNumber As String)
|4|             txtResult.Text = txtResult.Text & prmNumber
|5|         End Sub
|6|    
|7|         Sub doCalculator(prmSign As String)
|8|             Dim sign As String = prmSign
|9|             If txtOpt.Text = sign Then
|10|                txtNum1.Text = Val(Mid(txtResult.Text, 1, InStr(txtResult.Text, sign)))
|11|                txtNum2.Text = Val(Mid(txtResult.Text, InStr(txtResult.Text, sign) + 1, Len(txtResult.Text)))
|12|                txtResult.Text = doOperator(prmSign)
|13|            End If
|14|            txtResult.Text = Val(txtResult.Text)
|15|            txtOpt.Text = sign
|16|            txtResult.Text = txtResult.Text & txtOpt.Text
|17|        End Sub
|18|        Function doOperator(prmSign As String) As Double
|19|            Dim result As Double
|20|            Select Case prmSign
|21|                Case "+" : result = Val(txtNum1.Text) + Val(txtNum2.Text)
|22|                Case "-" : result = Val(txtNum1.Text) - Val(txtNum2.Text)
|23|                Case "*" : result = Val(txtNum1.Text) * Val(txtNum2.Text)
|24|                Case "/" : result = Val(txtNum1.Text) / Val(txtNum2.Text)
|25|            End Select
|26|            Return result
|27|        End Function
|28|   
|29|        Private Sub Form1_Load() Handles MyBase.Load
|30|            Me.Text = "super Calculator"
|31|        End Sub
|32|   
|33|        Private Sub btnNum1_Click() Handles btnNum1.Click
|34|            AddNumber("1")
|35|        End Sub
|36|   
|37|        Private Sub btnNum2_Click() Handles btnNum2.Click
|38|            AddNumber("2")
|39|        End Sub
|40|   
|41|        Private Sub btnNum3_Click() Handles btnNum3.Click
|42|            AddNumber("3")
|43|        End Sub
|44|   
|45|        Private Sub btnNum4_Click() Handles btnNum4.Click
|46|            AddNumber("4")
|47|        End Sub
|48|   
|49|        Private Sub btnNum5_Click() Handles btnNum5.Click
|50|            AddNumber("5")
|51|        End Sub
|52|   
|53|        Private Sub btnNum6_Click() Handles btnNum6.Click
|54|            AddNumber("6")
|55|        End Sub
|56|   
|57|        Private Sub btnNum7_Click() Handles btnNum7.Click
|58|            AddNumber("7")
|59|        End Sub
|60|   
|61|        Private Sub btnNum8_Click() Handles btnNum8.Click
|62|            AddNumber("8")
|63|        End Sub
|64|   
|65|        Private Sub btnNum9_Click() Handles btnNum9.Click
|66|            AddNumber("9")
|67|        End Sub
|68|   
|69|        Private Sub btnNum0_Click() Handles btnNum0.Click
|70|            AddNumber("0")
|71|        End Sub
|72|   
|73|        Private Sub btnNumDot_Click() Handles btnNumDot.Click
|74|            AddNumber(".")
|75|        End Sub
|76|   
|77|        Private Sub btnOperationAdd_Click() Handles btnOperationAdd.Click
|78|            doCalculator("+")
|79|        End Sub
|80|   
|81|        Private Sub btnOperationDiff_Click() Handles btnOperationDiff.Click
|82|            doCalculator("-")
|83|        End Sub
|84|   
|85|        Private Sub btnOperationMulti_Click() Handles btnOperationMulti.Click
|86|            doCalculator("*")
|87|        End Sub
|88|   
|89|        Private Sub btnOperationSub_Click() Handles btnOperationSub.Click
|90|            doCalculator("/")
|91|        End Sub
|92|        Private Sub btnNumEnter_Click() Handles btnNumEnter.Click
|93|            doCalculator(txtOpt.Text)
|94|        End Sub
|95|        Private Sub btnDel_Click() Handles btnDel.Click
|96|            If txtResult.Text = "" Then Exit Sub
|97|            txtResult.Text = Mid(txtResult.Text, 1, Len(txtResult.Text) - 1)
|98|        End Sub
|99|   
|100|       Private Sub btnClear_Click() Handles btnClear.Click
|101|           txtResult.Text = ""
|102|           txtNum1.Text = ""
|103|           txtNum2.Text = ""
|104|           txtOpt.Text = ""
|105|       End Sub
|106|   End Class


ความคิดเห็น

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

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

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

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