Program Utama
Subprogram Subprogram
Subprogram Subprogram
Keuntungan lain dengan adanya subprogram adalah penghematan kode program. Hal ini
terjadi karena setiap proses yang diperlukan dalam program utama cukup memanggil
nama dari suatu subprogram, jadi tidak lagi menuliskan kode yang sama dibeberapa
tempat guna proses yang sama pula. Suatu subprogram dapat ditulis dalam bentuk fungsi
atau prosedur, hal ini sangat tergantung dengan permasalahan yang akan diselesaikan.
74
Salah satu proses didalam suatu algoritma adalah prosedur (procedure). Ada beberapa hal
yang harus diketahui untuk pembuatan prosedur, antara lain :
1) Definisi Prosedur
2) Pemanggilan Prosedur
3) Parameter Prosedur
Keterangan :
Modifiers : menentukan tingkat akses prosedur, nilai yang mungkin adalah: Public,
Private, Protected, Friend, Protected Friend dan informasi mengenai overloading,
overriding, berbagi, dan shadowing.
Subname: menunjukkan nama Sub
ParameterList: menentukan daftar parameter
Contoh berikut menunjukkan sebuah CalculatePay prosedur Sub yang mengambil dua
parameter jam kerja dan upah dan menampilkan total gaji seorang karyawan:
Module mysub
Sub CalculatePay(ByVal hours As Double, ByVal wage As Decimal)
‘deklarasi variabel lokal
Dim pay As Double pay =
hours * wage
Console.WriteLine("Total Bayar: {0:C}", pay)
End Sub
Sub Main()
‘pemanggilan Sub prosedur CalculatePay
CalculatePay(25, 10)
CalculatePay(40, 20)
CalculatePay(30, 27.5)
Console.ReadLine()
End Sub
End Module
Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:
B. Parameter Prosedur
Sebagian besar program memerlukan pertukaran informasi antara prosedur dan titik
dimana ia dipanggil, pertukaran parameter menawarkan mekanisme pertukaran informasi
tersebut. Tiap item data ditransfer antara parameter aktual (di titik pemanggil) dan
parameter formal ( di tubuh fungsi atau prosedur) yang bersesuaian. Berdasarkan maksud
penggunaannya, prosedur terdapat tiga macam parameter, yaitu
Parameter masukan terjadi karena nilai (value) parameter aktual diisikan (assign) ke
dalam parameter formal yang bersesuaian. Perhatikanlah ilustrasi Gambar 7.2 berikut ini :
Parameter Parameter
Aktual Formal
Copy
A X
Copy
B Y
} Input Parameter
Dalam VB.Net, Anda menyatakan parameter referensi menggunakan kata kunci ByVal.
Contoh berikut menunjukkan konsep tersebut:
Module paramByval
Sub swap(ByVal x As Integer, ByVal y As Integer)
Dim temp As Integer
temp = x ' simpan nilai dari x
x = y ' tukar nilai y kedalam x
y = temp 'tukar nilai temp kedalam y
End Sub
Sub Main()
Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:
Sebelum ditukar, Nilai dari a :100
Sebelum ditukar, Nilai dari b :200
Sesudah ditukar, Nilai dari a :100
Sesudah ditukar, Nilai dari b :200
Pada kebanyakan aplikasi informasi harus juga dikirim dalam kedua arah, dimana saat
awal pemanggilan prosedur parameter formal akan menerima nilai (value) dari parameter
aktual, tetapi setelah selesai proses parameter formal mengirimkan balik nilai hasil proses
ke parameter aktual pemanggilnya. Perhatikanlah Parameter
Parameter ilustrasi Gambar 7.3 berikut ini :
Aktual Formal
1. Copy
A X
}
2. Copy Input/Output
1. Copy Parameter
B Y
2. Copy
Dalam VB.Net, Anda menyatakan parameter referensi menggunakan kata kunci ByRef.
Contoh berikut menunjukkan hal tersebut:
Console.WriteLine()
Console.WriteLine("Nilai x dalam prosedur : {0}", x)
Console.WriteLine("Nilai y dalam prosedur : {0}", y)
End Sub
Sub Main()
' definisi variabel lokal
Dim a As Integer = 100
Dim b As Integer = 200
Console.WriteLine("Sebelum ditukar, Nilai dari a : {0}", a)
Console.WriteLine("Sebelum ditukar, Nilai dari b : {0}", b)
' pemanggilan prosedur swap '
swap(a, b)
Console.WriteLine()
Console.WriteLine("Sesudah ditukar, Nilai dari a : {0}", a)
Console.WriteLine("Sesudah ditukar, Nilai dari b : {0}", b)
Console.ReadLine()
End Sub
End Module
Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:
Sebelum ditukar, Nilai dari a :100
Sebelum ditukar, Nilai dari b :200
Pernyataan [Public | Private] menentukan ruang lingkup (scope) fungsi. Sebuah fungsi
dengan scope public bisa digunakan dalam lingkup project. Sedangkan fungsi dengan
scope private hanya bisa digunakan dalam lingkup form saja.
<argumen> merupakan serangkaian nilai dan tipe data yang dipakai oleh fungsi untuk
mengerjakan ‘tugas’-nya. Pernyataan As <tipe_data> pada procedure function
Sub Main()
Dim a As Integer = 100
Dim b As Integer = 200
Dim res As Integer
Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:
Nilai Maksimal adalah : 200
Sebuah fungsi dapat memanggil dirinya sendiri. Hal ini dikenal sebagai rekursi. Berikut
adalah contoh yang menghitung faktorial untuk angka menggunakan fungsi rekursif:
Module myfunctions
Function factorial(ByVal num As Integer) As Integer
' deklarasi variabel lokal
Dim result As Integer
If (num = 1) Then
Return 1
Else
result = factorial(num - 1) * num
Return result
End If
End Function
Sub Main()
‘pemanggilan fungsi factorial
Console.WriteLine("Factorial dari 6 : {0}", factorial(6))
Console.WriteLine("Factorial dari 7 : {0}", factorial(7))
Console.WriteLine("Factorial dari 8 : {0}", factorial(8))
Console.ReadLine()
End Sub
End Module
Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:
Factorial dari 6 : 720
Factorial dari 7 : 5040
Factorial dari 8 : 40320
Adapun beberapa property from tersebut harus diberi nilai sebagai berikut :
For i = 0 To indeks_data
listitem = ListView1.Items.Add(data_berobat(i, 0))
listitem.SubItems.Add(data_berobat(i, 1))
listitem.SubItems.Add(data_berobat(i, 2))
Next
End If
End Sub
Sub Main()
‘deklarasi variabel lokal
Dim N As Integer N = 90
‘pemanggilan fungsi Grade
Console.WriteLine("Nilai Rata-rata : {0}", N)
Console.WriteLine("Keterangan : {0}", Grade(N))
Console.ReadLine()
End Sub
End Module
Adapun beberapa property from tersebut harus diberi nilai sebagai berikut :
Object Properties Nilai
Name Form1
Form1
Text Konversi Angka ke Terbilang
Label1 Text Masukkan Angka
Label2 Text Terbilang
Dim letak(5)
letak(1) = "ribu "
letak(2) = "juta "
letak(3) = "milyar "
letak(4) = "trilyun "
If (x = 0) Then
Terbilang = "nol"
Exit Function
End If
For i = 4 To 1 Step -1
tampung = Int(x / (10 ^ (3 * i)))
If (tampung > 0) Then
bagian = ratusan(tampung, tanda)
teks = teks & bagian & letak(i) End If
x = x - tampung * (10 ^ (3 * i))
Next
Dim angka(9)
angka(1) = "se"
angka(2) = "dua "
angka(3) = "tiga "
angka(4) = "empat "
angka(5) = "lima "
angka(6) = "enam "
angka(7) = "tujuh "
angka(8) = "delapan "
angka(9) = "sembilan "
Dim posisi(2)
posisi(1) = "puluh "
posisi(2) = "ratus "
bilang = ""
For j = 2 To 1 Step -1
tmp = Int(y / (10 ^ j))
If (tmp > 0) Then
bag = angka(tmp)
If (j = 1 And tmp = 1) Then
y = y - tmp * 10 ^ j If
(y >= 1) Then
posisi(j) = "belas "
Else
angka(y) = "se"
End If
bilang = bilang & angka(y) & posisi(j)
ratusan = bilang
Exit Function
Else
bilang = bilang & bag & posisi(j)
End If
End If
y = y - tmp * 10 ^ j
Next
Kemudian berikan event click pada CmdKonversi dengan kode program sebagai
berikut :
Private Sub Cmdkonversi_Click(sender As Object, e As EventArgs) Handles
Cmdkonversi.Click
Dim angka As Double
Dim teks As String
angka = Val(Textangka.Text)
teks = Terbilang(angka)
Textterbilang.Text = teks
End Sub
Kemudian berikan event click pada CmdExit dengan kode program sebagai
berikut :
Private Sub cmdExit_Click(sender As Object, e As EventArgs) Handles
cmdExit.Click
End
End Sub
Hasil eksekusi program tersebut dan masukkan suatu angka pada kotak teks
Angka, klik tombol Konversi, teks terbilang dari angka tersebut akan muncul
pada kotak teks Terbilang.
7.3 Rangkuman
<argumen> merupakan serangkaian nilai dan tipe data yang dipakai oleh procedure /
function untuk mengerjakan ‘tugas’-nya atau sering disebut sebagai paramater. Sebuah
procedure / function bisa saja tidak memakai argumen sama sekali.
Pernyataan As <tipe_data> pada function menentukan tipe data nilai yang akan
dikembalikan (return value) setelah ‘tugas’-nya selesai.
Hasil Program
Prosedur & Fungsi 76
Akar Kuadrat
Pangkat
Perkalian
End Sub
End Sub
Hasil Program
Persegi
Segitiga
Layang-layang