บทที่ 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 (ข้อความ, ตำแหน่งที่เริ่มต้น , ตำแหน่งสิ้นสุด)
Mid (ข้อความ, ตำแหน่งที่เริ่มต้น , ตำแหน่งสิ้นสุด)
ฟังก์ชั่น
InStr() คือ
ใช้สำหรับค้นหาตำแหน่งของตัวอักษรหรือคำ ที่อยู่ในข้อความ เช่น
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
ความคิดเห็น
แสดงความคิดเห็น