Bab5 tatacara sub dan fungsi
Click here to load reader
-
Upload
anas-assayuti -
Category
Technology
-
view
421 -
download
11
Transcript of Bab5 tatacara sub dan fungsi
BAB LIMA: TATACARA SUB DAN FUNGSI
Di dalam pengaturcaraan, pastinya akan terdapat beberapa tatacara yang melakukan operasi yang
sama. Contohnya, pengguna boleh memilih sama ada butang arahan atau menu pilihan bagi
melaksanakan arahan yang sama. Daripada menaip atau menyalin semula pengekodan yang sama,
adalah lebih baik menggunakan Tatacara Am. Tatacara Am ini membenarkan pengekodan
digunakan semula (reusable) dan dipanggil oleh kedua-dua Tatacara Acara.
Tatacara Acara membolehkan pengekodan yang besar dipecahkan kepada unit lebih kecil
bagi melaksanakan tugas yang lebih spesitik. Dengan ini, sebarang arahan yang akan dilakukan
ke atas kod tersebut akan menjadi lebih mudah lagi kerana hanya perlu mengubah bahagian yang
ingin diubah tanpa melibatkan keseluruhan aturcara.
TATACARA SUB
Membina Tatacara Sub (Sub Procedure)
Langkah 1: Buka tetingkap pengekodan.
Langkah 2: Pilih Add Procedure daripada menu Tools.
Langkah 3: Masukkan nama bagi tatacara di dalam kotak dialog yang terpapar.
Langkah 4: Pada bahagian Type, pilih butang pilihan Sub dan bahagian scope, pilih butang
pilihan Private. Butang pilihan Public akan menyebabkan tatacara boleh dicapai
oleh modul projek yang lain.
Langkah 5: Klik OK.
Bagi contoh Tatacara Sub yang berikut, Tatacara Sub SelectColor tidak mempunyai acara.
Private Sub SelectColor()
'Allow user to select a color
dlgColor.ShowColor
End Sub
Tatacara Sub dan Fungsi
Mohd Farid JaafarJSM, FSKTM, UPM
68
Pengekodan bagi tatacara yang baru adalah sama seperti tatacara yang lain, cuma bezanya ialah
Tatacara Sub tidak mempunyai acara. Tatacara Sub yang baru ini masih tidak boleh dilaksanakan
selagi tidak dipanggil oleh tatacara yang lain. Untuk memanggil Tatacara Sub, nama bagi
Tatacara Sub yang baru , contohnya SelectColor, akan dipanggil dari Tatacara Sub yang lain.
Contoh:
Private Sub cmdChangeMessage_Click()
'Change the color of the message
SelectColor
lbIMessage.ForeColor = dlgColor.Color
End Sub
Private Sub cmdChangeTitle_Click()
'Change the color of the title
SelectColor
IblTitle.ForeColor = dlgColor.Color
End Sub
**Kedua-dua tatacara di atas memanggil semula tatacara SelectColor
Menghantar Pembolehubah kepada Tatacara
Kadangkala kita akan menggunakan nilai bagi suatu pembolehubah bagi tatacara pertama di
dalam tatacara kedua. Tatacara kedua akan memanggil nilai pembolehubah dari tatacara
pertama atau sebaliknya. Bagi keadaan ini, pengisytiharan di peringkat modul mesti dilakukan.
Tetapi cara ini akan menyebabkan pembolehubah boleh dicapai oleh tatacara selain daripada
tatacara pertama atau kedua.
Untuk memastikan skop bagi pembolehubah hanya dicapai oleh tatacara yang tertentu sahaja,
pengisytiharan pembolehubah akan dilakukan secara setempat dan akan diberikan kepada tatacara
yang memanggil pembolehubah itu sahaja. Berdasarkan contoh berikut, Tatacara Sub SelectColor
akan dipanggil dari beberapa tatacara.
Tatacara Sub dan Fungsi
Mohd Farid JaafarJSM, FSKTM, UPM
69
Contoh:
Private Sub SelectColor(ingInComingColor As Long)
‘Allow user to select a color
With dlgColor
.Flags = cdICCRGBInit 'Initialize the Color dialog Box
.Color = ingInComingColor 'Set the initial color ShowColor
End With
End Sub
Private Sub cmdChangeMessage_Click()
'Change the color of the message
Dim IngOriginalColor As Long
IngOriginalColor = IblMessage.ForeColor
SelectColor IngOriginalColor
lblMessage.ForeColor = dlgColor.Color
End Sub
Private Sub cmdChangeTitle_Click()
'Change the color of the title
Dim IngOriginalColor As Long
lngOriginalColor = IblTitle.ForeColor
SelectColor IngOriginalColor
lblTitle.ForeColor = dlgColor.Color
End Sub
Tatacara SelectColor di atas mempunyai argumen yang berikut:
Private Sub SelectColor (lnglncomingColor As Long)
Ini bermaksud, apabila tatacara lain memanggil Tatacara SelectColor, argumen mesti disertakan
sekali. Nilai bagi argumen mestilah berjenis data sama bagi kedua-dua tatacara yang memanggil
dan dipanggil. Bagi cmdChangeMessage_Click() dan cmdChangeTitle_Click(), pembolehubah
IngOriginalColor adalah data berjenis Long Integer.
Tatacara Sub dan Fungsi
Mohd Farid JaafarJSM, FSKTM, UPM
70
Nama bagi argumen bagi tatacara yang memanggil dan dipanggil tidak semestinya sama.
Tatacara Sub SelectColor akan mengambil sebarang nilai yang berjenis data Long Integer yang
memanggilnya iaitu cmdChangeMessage_Click() dan cmdChangeTitle_Click() dan dirujukkan
kepada ingInComingColor di dalam Tatacara Sub SelectColor.
Menghantar Argumen Menggunakan ByVal atau ByRef
ByVal atau ByRef (dengan nilai atau dengan rujukan) adalah digunakan apabila anda hendak
menghantar suatu nilai kepada suatu tatacara. Dengan ByVal, nilai bagi argumen akan dihantar
kepada tatacara dan tatacara tersebut tidak boleh mengubah nilai tersebut. Tetapi dengan ByRef
nilai bagi argumen yang dihantar kepada tatacara boleh berubah. Sekiranya anda tidak
menentukan sama ada ByVal atau ByRef, argumen akan dihantar menggunakan rujukan, ByRef.
TATACARA FUNGSI
Membina Tatacara Fungsi
Dalam bab yang lepas, anda telah mempelajari Fungsi Format dan Fungsi Val. Fungsi ini adalah
fungsi yang tertakrif dan tidak perlu dibina oleh pengaturcara. Dalam bahagian ini, anda akan
mempelajari membina fungsi sendiri bagi mengira suatu nilai dan memanggil fungsi dari lokasi
yang diperlukan. Sebagai contoh, suatu tatacara fungsi bernama Commission akan melakukan
pengiraan dan mengembalikan nilai komisen bagi jurujual.
Cara untuk membina fungsi Commision sama seperti membina tatacara sub. Di bahagian
tetingkap kod, pilih Add Procedure dari menu Tools. Pilih fungsi Function dan Private pada
Scope. Berikan nama Commission dan di dalam tetingkap kod akan mengandungi pernyataan
berikut:
Private Function Commission ()
End Function
Tatacara Sub dan Fungsi
Mohd Farid JaafarJSM, FSKTM, UPM
71
Tatacara fungsi adalah hampir sama seperti tatacara sub. Perbezaannya ialah fungsi
mempunyai argumen dan memulangkan nilai. Argumen diletakkan di dalam kurungan
(parentheses ( ) ). Argumen dihantar menggunakan ByVal atau ByRef.
Apabila menulis fungsi, isytiharkan argumen yang diperlukan oleh fungsi. Setiap argumen
diberikan nama pencam dan jenis data. Nama pencam ini akan digunakan dalam fungsi dan
memegang nilai yang dirujuk semasa fungsi dipanggil. Nilai yang dipulangkan bagi setiap fungsi
diberikan oleh pernyataan FunctionName = expression.
Contoh:
Private Function FunctionName (var7 As Typel, var2 As Type2, ...) As dataType
Statement (s)
FunctionName = expression
End Function
Contoh:
Private Function Commission (ByVal curSalesAmount As Currency)
Private Function Payment (curRate As Currency, curTime As Currency)
Perbezaan antara tatacara sub dan tatacara fungsi ialah tatacara fungsi mesti menentukan nilai
yang akan dipulangkan. Nilai pulangan ini akan diberikan kepada pembolehubah yang telah
diisytiharkan (sama seperti nama fungsi).
Kita juga boleh menentukan jenis data pada nilai yang akan dipulangkan dengan menambah
klausa ’As’ selepas nama fungsi. Bagi contoh di atas, fungsi curCommission, nilai yang
dipulangkan adalah berjenis currency. Tatacara di atas merupakan cara bagaimana untuk kita
menulis fungsi curCommission bagi mengira jumlah komisyen vang berjenis currency.
Tatacara Sub dan Fungsi
Mohd Farid JaafarJSM, FSKTM, UPM
72
Contoh: Pembolehubah curCommision
Private Function CurCommision (ByVal curSalesAmount As Currency) As Currency
‘Calculate the sales commission
If curSalesAmount < 1000 Then
CurCommision = 0
ElseIf curSalesAmount <= 2000 Then
CurCommision = 0.15 * curSalesAmount
Else
CurCommision = 0.2 * curSalesAmount
End If
End Function
Memanggil Fungsi
Cara untuk memanggil fungsi bagi Function curCommssion ada seperti berikut:
Dim curSales As Currency
If IsNumeric(txtSales.Text) Then
CurSales = Val(txtSales.Text)
lblCommision.Caption = curCommision(curSales)
End If
* * Bagi contoh di atas, nama argumen yang pada fungsi yang memanggil adalah tidak sama
dengan nama argumen pada fungsi yang dipanggil (curSales != curSalesAmount). Apabila
fungsi dipanggil, nilai pada curSales akan dihantar pada fungsi dan diberi bepada argumen,
berdasarkan pada contoh di atas ialah argumen curSalesAmount. Ini bermakna argumen bagi
setiap kiraan di dalam fungsi tersebut akan merujuk kepada argumen curSales.
Tatacara Sub dan Fungsi
Mohd Farid JaafarJSM, FSKTM, UPM
73
Membina Tatacara Fungsi dengan Beberapa Argumen
Untuk menulis pelbagai argumen pada fungsi, argumen diletakkan di dalam kurungan
(parenthesis ( ) ) dan dipisahkan oleh koma ( , ). Setiap argumen diberi nama pencam jenis data.
Contoh di bawah menunjukkan fungsi curPayment dan 3 argumen.
Private Function curPayment (curRate As Currency, curTime As Currency, _
curAmt As Currency) As Currency
‘Calculate the monthly payment to an amortized loan
‘Set the return value of the function
curPayment = curAmt * (1 + curRate/12) ^ (curTime * 12)
End Function
Memanggil Fungsi dengan Beberapa Argumen
Berikut merupakan cara untuk memanggil fungsi yang mempunyai pelbagai argumen:
curRate = Val (txtRate.Text)
curTime = Val (txtTime.Text)
curAmount = Val (txtAmount.Text)
lblPayment.Caption = curPayment (curRate, curTime, curAmount)
Output yang dihasilkan oleh fungsi juga boleh diformatkan. Berdasarkan arahan bawah, fungsi
dipanggil menggunakan fungsi tersarang (nested function):
lblPayment.Caption = FormatCurrency (curPayment (Val (txtRate.Text), _
Val (txtTime.Text), Val (txtAmount.Text)))
Tatacara Sub dan Fungsi
Mohd Farid JaafarJSM, FSKTM, UPM
74
TATACARA DIGUNA SEMULA
Tatacara fungsi boleh digunakan lebih daripada sekali di dalam sesuatu pengaturcaraan. Berikut
merupakan contoh pengaturcaraan bagi menggunakan fungsi curCalculateBonus untuk mengira
bonus kepada pemilik kedai dan komisen kepada jurujual. Jumlah dan nilai kadar akan diberi oleh
tatacara event kepada tatacara fungsi. Contoh aturcara:
**Perhatikan general sub procedure (Clear) digunakan untuk mengosongkan nilai pada skrin
antaramuka
Option Explicit
Private Sub mnuCalculateBonus_Click()
‘Calculate and display the amount of the bonus earned by the shopper
Dim curPurchase As Currency
Dim curBonus As Currency
Const curBonusPercent As Currency = 0.01
curPurchase = Val (txtPurchaseAmount.Text)
If curPurchase > 0 Then
‘Call function procedure
curBonus = curCalculateBonus (curPurchase, curBonusPercent)
MsgBox txtName.Text & “ has earned “ & FormatCurrency (curBonus) _
& “ in girt certificates”, vbInformation, “Congratulations”
txtName.SetFocus
Else
MsgBox “You must input a value for the amount of purchase”, _ vbOKOnly,
“Input Requested”
With txtPurchaseAmount
.Text = “”
.SetFocus
End With
End If
End Sub
Tatacara Sub dan Fungsi
Mohd Farid JaafarJSM, FSKTM, UPM
75
Private Sub mnuCalculateCommision_Click()
‘Calculate and display the amount of the salesperson’s commission
Dim curPurchase As Currency
Dim curCommision As Currency
Const curCommisionLimit As Currency = 500
Const curCommisionPercent As Currency = 0.05
curPurchase = Val (txtPurchase.Text)
If curPurchase >= curCommisionLimit Then
‘Call function procedure
CurCommision = curCalculateBonus (curPurchase, curCommision)
MsgBox “Salesman ” & txtSalesPersonID.Text & “ earns ” & _
FormatCurrency (curCommision) & “ in commission for this sale.”, _
VbInformation, “Congratulation”
txtName.SetFocus
Else
MsgBox “No commission earned on this sale”, vbInformation, “Sorry”
End If
End Sub
Private Sub mnuEditClear_Click()
‘Call the Clear procedure
Clear ‘Call the Sub procedure
End Sub
Private Function curCalculateBonus (curAmount As Currency, curate As _
Currency) As Currency
‘Calculate the amount of bonus earned based on the sale
‘amount and the percentage rate
curCalculateBonus = curAmount * curate
End Function
Tatacara Sub dan Fungsi
Mohd Farid JaafarJSM, FSKTM, UPM
76
Private Sub Clear()
‘Clear the text boxes on the form
txtName.Text = “”
txtPurchaseAmount.Text = “”
txtSalesPersonID.Text = “”
txtName.SetFocus
End Sub
TATACARA SUB VS TATACARA FUNGSI
Tatacara Sub dan Tatacara Fungsi merupakan tatacara yang akan melaksanakan tindakan/operasi.
Tatacara Fungsi boleh mengembalikan nilai (return value) kepada tempat dari mana ia dipanggil.