BAB LIMA: TATACARA SUB DAN          FUNGSIDi dalam pengaturcaraan, pastinya akan terdapat beberapa tatacara yang melakukan...
Tatacara Sub dan FungsiPengekodan bagi tatacara yang baru adalah sama seperti tatacara yang lain, cuma bezanya ialahTataca...
Tatacara Sub dan FungsiContoh:   Private Sub SelectColor(ingInComingColor As Long)          ‘Allow user to select a color ...
Tatacara Sub dan Fungsi    Nama bagi argumen bagi tatacara yang memanggil dan dipanggil tidak semestinya sama.Tatacara Sub...
Tatacara Sub dan Fungsi    Tatacara fungsi adalah hampir sama seperti tatacara sub. Perbezaannya ialah fungsimempunyai arg...
Tatacara Sub dan FungsiContoh: Pembolehubah curCommision   Private Function CurCommision (ByVal curSalesAmount As Currency...
Tatacara Sub dan FungsiMembina Tatacara Fungsi dengan Beberapa ArgumenUntuk menulis pelbagai argumen pada fungsi, argumen ...
Tatacara Sub dan FungsiTATACARA DIGUNA SEMULATatacara fungsi boleh digunakan lebih daripada sekali di dalam sesuatu pengat...
Tatacara Sub dan Fungsi   Private Sub mnuCalculateCommision_Click()   ‘Calculate and display the amount of the salesperson...
Tatacara Sub dan Fungsi   Private Sub Clear()   ‘Clear the text boxes on the form   txtName.Text = “”   txtPurchaseAmount....
Upcoming SlideShare
Loading in …5
×

Bab5 tatacara sub dan fungsi

605 views

Published on

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
605
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
26
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Bab5 tatacara sub dan fungsi

  1. 1. BAB LIMA: TATACARA SUB DAN FUNGSIDi dalam pengaturcaraan, pastinya akan terdapat beberapa tatacara yang melakukan operasi yangsama. Contohnya, pengguna boleh memilih sama ada butang arahan atau menu pilihan bagimelaksanakan arahan yang sama. Daripada menaip atau menyalin semula pengekodan yang sama,adalah lebih baik menggunakan Tatacara Am. Tatacara Am ini membenarkan pengekodandigunakan semula (reusable) dan dipanggil oleh kedua-dua Tatacara Acara. Tatacara Acara membolehkan pengekodan yang besar dipecahkan kepada unit lebih kecilbagi melaksanakan tugas yang lebih spesitik. Dengan ini, sebarang arahan yang akan dilakukanke atas kod tersebut akan menjadi lebih mudah lagi kerana hanya perlu mengubah bahagian yangingin diubah tanpa melibatkan keseluruhan aturcara.TATACARA SUBMembina 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
  2. 2. Tatacara Sub dan FungsiPengekodan bagi tatacara yang baru adalah sama seperti tatacara yang lain, cuma bezanya ialahTatacara Sub tidak mempunyai acara. Tatacara Sub yang baru ini masih tidak boleh dilaksanakanselagi tidak dipanggil oleh tatacara yang lain. Untuk memanggil Tatacara Sub, nama bagiTatacara 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 SelectColorMenghantar Pembolehubah kepada TatacaraKadangkala kita akan menggunakan nilai bagi suatu pembolehubah bagi tatacara pertama didalam tatacara kedua. Tatacara kedua akan memanggil nilai pembolehubah dari tatacarapertama atau sebaliknya. Bagi keadaan ini, pengisytiharan di peringkat modul mesti dilakukan.Tetapi cara ini akan menyebabkan pembolehubah boleh dicapai oleh tatacara selain daripadatatacara 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 tatacarayang memanggil pembolehubah itu sahaja. Berdasarkan contoh berikut, Tatacara Sub SelectColorakan dipanggil dari beberapa tatacara.Mohd Farid Jaafar 68JSM, FSKTM, UPM
  3. 3. Tatacara Sub dan FungsiContoh: 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 SubTatacara SelectColor di atas mempunyai argumen yang berikut: Private Sub SelectColor (lnglncomingColor As Long)Ini bermaksud, apabila tatacara lain memanggil Tatacara SelectColor, argumen mesti disertakansekali. Nilai bagi argumen mestilah berjenis data sama bagi kedua-dua tatacara yang memanggildan dipanggil. Bagi cmdChangeMessage_Click() dan cmdChangeTitle_Click(), pembolehubahIngOriginalColor adalah data berjenis Long Integer.Mohd Farid Jaafar 69JSM, FSKTM, UPM
  4. 4. Tatacara Sub dan Fungsi Nama bagi argumen bagi tatacara yang memanggil dan dipanggil tidak semestinya sama.Tatacara Sub SelectColor akan mengambil sebarang nilai yang berjenis data Long Integer yangmemanggilnya iaitu cmdChangeMessage_Click() dan cmdChangeTitle_Click() dan dirujukkankepada ingInComingColor di dalam Tatacara Sub SelectColor.Menghantar Argumen Menggunakan ByVal atau ByRefByVal atau ByRef (dengan nilai atau dengan rujukan) adalah digunakan apabila anda hendakmenghantar suatu nilai kepada suatu tatacara. Dengan ByVal, nilai bagi argumen akan dihantarkepada tatacara dan tatacara tersebut tidak boleh mengubah nilai tersebut. Tetapi dengan ByRefnilai bagi argumen yang dihantar kepada tatacara boleh berubah. Sekiranya anda tidakmenentukan sama ada ByVal atau ByRef, argumen akan dihantar menggunakan rujukan, ByRef.TATACARA FUNGSIMembina Tatacara FungsiDalam bab yang lepas, anda telah mempelajari Fungsi Format dan Fungsi Val. Fungsi ini adalahfungsi yang tertakrif dan tidak perlu dibina oleh pengaturcara. Dalam bahagian ini, anda akanmempelajari membina fungsi sendiri bagi mengira suatu nilai dan memanggil fungsi dari lokasiyang diperlukan. Sebagai contoh, suatu tatacara fungsi bernama Commission akan melakukanpengiraan dan mengembalikan nilai komisen bagi jurujual. Cara untuk membina fungsi Commision sama seperti membina tatacara sub. Di bahagiantetingkap kod, pilih Add Procedure dari menu Tools. Pilih fungsi Function dan Private padaScope. Berikan nama Commission dan di dalam tetingkap kod akan mengandungi pernyataanberikut: Private Function Commission () End FunctionMohd Farid Jaafar 70JSM, FSKTM, UPM
  5. 5. Tatacara Sub dan Fungsi Tatacara fungsi adalah hampir sama seperti tatacara sub. Perbezaannya ialah fungsimempunyai 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 argumendiberikan nama pencam dan jenis data. Nama pencam ini akan digunakan dalam fungsi danmemegang nilai yang dirujuk semasa fungsi dipanggil. Nilai yang dipulangkan bagi setiap fungsidiberikan oleh pernyataan FunctionName = expression.Contoh: Private Function FunctionName (var7 As Typel, var2 As Type2, ...) As dataType Statement (s) FunctionName = expression End FunctionContoh: 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 nilaiyang akan dipulangkan. Nilai pulangan ini akan diberikan kepada pembolehubah yang telahdiisytiharkan (sama seperti nama fungsi).Kita juga boleh menentukan jenis data pada nilai yang akan dipulangkan dengan menambahklausa ’As’ selepas nama fungsi. Bagi contoh di atas, fungsi curCommission, nilai yangdipulangkan adalah berjenis currency. Tatacara di atas merupakan cara bagaimana untuk kitamenulis fungsi curCommission bagi mengira jumlah komisyen vang berjenis currency.Mohd Farid Jaafar 71JSM, FSKTM, UPM
  6. 6. Tatacara Sub dan FungsiContoh: 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 FunctionMemanggil FungsiCara 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 samadengan nama argumen pada fungsi yang dipanggil (curSales != curSalesAmount). Apabilafungsi dipanggil, nilai pada curSales akan dihantar pada fungsi dan diberi bepada argumen,berdasarkan pada contoh di atas ialah argumen curSalesAmount. Ini bermakna argumen bagisetiap kiraan di dalam fungsi tersebut akan merujuk kepada argumen curSales.Mohd Farid Jaafar 72JSM, FSKTM, UPM
  7. 7. Tatacara Sub dan FungsiMembina Tatacara Fungsi dengan Beberapa ArgumenUntuk 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 FunctionMemanggil Fungsi dengan Beberapa ArgumenBerikut 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, fungsidipanggil menggunakan fungsi tersarang (nested function): lblPayment.Caption = FormatCurrency (curPayment (Val (txtRate.Text), _ Val (txtTime.Text), Val (txtAmount.Text)))Mohd Farid Jaafar 73JSM, FSKTM, UPM
  8. 8. Tatacara Sub dan FungsiTATACARA DIGUNA SEMULATatacara fungsi boleh digunakan lebih daripada sekali di dalam sesuatu pengaturcaraan. Berikutmerupakan contoh pengaturcaraan bagi menggunakan fungsi curCalculateBonus untuk mengirabonus kepada pemilik kedai dan komisen kepada jurujual. Jumlah dan nilai kadar akan diberi olehtatacara event kepada tatacara fungsi. Contoh aturcara:**Perhatikan general sub procedure (Clear) digunakan untuk mengosongkan nilai pada skrinantaramuka 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 SubMohd Farid Jaafar 74JSM, FSKTM, UPM
  9. 9. Tatacara Sub dan Fungsi 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 FunctionMohd Farid Jaafar 75JSM, FSKTM, UPM
  10. 10. Tatacara Sub dan Fungsi Private Sub Clear() ‘Clear the text boxes on the form txtName.Text = “” txtPurchaseAmount.Text = “” txtSalesPersonID.Text = “” txtName.SetFocus End SubTATACARA SUB VS TATACARA FUNGSITatacara Sub dan Tatacara Fungsi merupakan tatacara yang akan melaksanakan tindakan/operasi.Tatacara Fungsi boleh mengembalikan nilai (return value) kepada tempat dari mana ia dipanggil.Mohd Farid Jaafar 76JSM, FSKTM, UPM

×