PEMROGRAMAN VISUAL BASIC
Setelah memahami bahasa Visual Basic dasar untuk menuliskan kode program, langkah selanjutnya adalah mempelajari pemrograman VB itu sendiri.
6.1 Sub Procedure Sejauh ini, Anda telah menuliskan sub procedure yang dibuat secara otomatis pada saat menggunakan event. Sub procedure merupakan blok kode yang mempunyai nama dan berisi perintah yang dapat dipanggil sewaktu-waktu. Artinya, Anda dapat membuat beberapa baris kode perintah yang kemudian dipanggil berkali-kali sesuai kebutuhan. Berikut sintaks untuk menuliskan sub procedure: [Private|Public] Sub subname[(argumentlist)] statements End Sub
Selanjutnya, Anda dapat memanggil sub procedure sewaktu-waktu dengan sintaks berikut: [Call] subname[(argumentlist)]
81
Keterangan mengenai sub prosedur: •
Sub prosedur (procedure) sebaiknya menggunakan nama dengan kata kerja (verb).
•
Pemanggilan prosedur yang masih dalam satu kelas (class) ataupun modul (module) dapat dilakukan dengan kata kunci Me.
Prosedur dapat menerima argumen melalui nilai (by value) atau juga referensi (by reference). Jika menggunakan by value, nilai pada argumen tidak akan berubah. Sedangkan jika menggunakan by reference, nilai argumen dapat berubah sesuai dengan perintah dalam prosedur. Secara default, argumen dimasukkan melalui nilai (by value). Anda dapat menambahkan kata kunci ByVal untuk by value dan ByRef untuk by reference. Sintaks argumen yang digunakan seperti berikut: [ByVal|ByRef] variablename As type
Sebagai contoh kasus, lakukan praktek berikut untuk membuat prosedur dengan parameter nilai dan referensi. 1. Buat projek baru lalu buat interface seperti gambar berikut.
Gunakan teks dan nama seperti tabel di bawah ini. Kontrol Form Label Label Button Button
82
Nama Form1 Label1 Label2 Button1 Button2
Teks Tambah Satu Nilai awal Nilai akhir ByVal ByRef
2. Terdapat dua tombol pada form. Tombol ByVal akan menjalankan prosedur dengan argumen di-passing sebagai value. Sub HitungVal(ByVal a As Decimal) a += 1 txtAkhir.Text = a End Sub
Sedangkan tombol ByRef akan menjalankan prosedur yang mirip namun dengan argumen di-passing sebagai referensi. Sub HitungRef(ByRef a As Decimal) a += 1 txtAkhir.Text = a End Sub
3. Klik ganda pada tombol ByVal dan ketikkan kode untuk memanggil prosedur HitungVal: HitungVal(txtAwal.Text)
4. Klik ganda pada tombol ByRef dan ketikkan kode untuk memanggil prosedur HitungRef: HitungRef(txtAwal.Text)
5. Jalankan program dengan menekan tombol F5 keyboard. Tes untuk penghitungan menggunakan ByVal. Nilai pada argumen (txtAwal.Text) tetap, sedangkan nilai akhir (a) bertambah satu.
6. Tes untuk penghitungan menggunakan ByRef. Maka nilai pada argumen (txtAwal.Text) dan nilai akhir (a) akan bertambah satu.
83
7. Di bawah ini kode lengkap program: Public Class Form1 Sub HitungVal(ByVal a As Decimal) a += 1 txtAkhir.Text = a End Sub Sub HitungRef(ByRef a As Decimal) a += 1 txtAkhir.Text = a End Sub Private Sub Button1_Click(ByVal sender As System.Object _ , ByVal e As System.EventArgs) Handles Button1.Click HitungVal(txtAwal.Text) End Sub Private Sub Button2_Click(ByVal sender As System.Object _ , ByVal e As System.EventArgs) Handles Button2.Click HitungRef(txtAwal.Text) End Sub End Class
6.2 Function Procedure (Fungsi) Fungsi mempunyai banyak kemiripan dengan sub procedure. Bedanya, fungsi selalu mengembalikan nilai (return value). Sintaks fungsi dituliskan sebagai berikut: [Private|Public] Function functionname[(argumentlist)] [As type] statements { functionname = expression} | {Return expression} End Function
Keterangan mengenai Fungsi: •
84
Perbedaan antara fungsi dan prosedur hanyalah pada pengembalian nilai saja (return value). Sebagai contoh, fungsi dapat
menggunakan argumen berupa nilai (by value) dan referensi (by reference). •
Pengembalian nilai dapat dilakukan menggunakan operator assignment “=” pada fungsi atau bisa dengan perintah Return.
Akan lebih jelas lagi jika Anda melakukan praktek menggunakan fungsi. Untuk itu, kembangkan lagi aplikasi Tambah Satu dengan cara berikut: 1. Jalankan kembali aplikasi Tambah Satu. Jika Anda memasukkan karakter bukan angka pada textbox txtAwal lalu tombol diklik, program akan error.
2. Pesan kesalahan menunjukkan peristiwa InvalidCastException. Artinya, terjadi kegagalan casting saat mengubah karakter a menjadi bilangan (angka).
Untuk mengatasi masalah ini, dibutuhkan validasi data. Artinya, kevalidan data dicek terlebih dahulu baru kemudian diproses. Jika data tidak valid, proses tidak dilanjutkan. 3. Untuk mengakomodasi keperluan ini, buat fungsi baru dengan nama cekdata sebagai berikut. Private Function cekdata() As Boolean If IsNumeric(txtAwal.Text) Then Return True Else Return False
85
End If End Function ‘Jika data adalah angka, maka fungsi akan mengembalikan nilai ‘True. Jika tidak, maka fungsi mengembalikan nilai False.
4. Ubah kode untuk klik pada tombol ByVal menjadi sebagai berikut. If cekdata() = True Then HitungVal(txtAwal.Text) Else MessageBox.Show("Data yang dimasukkan bukan angka", _ "Kesalahan Data", MessageBoxButtons.OK, _ MessageBoxIcon.Error) End If
5. Ubah kode untuk klik pada tombol ByRef menjadi sebagai berikut. If cekdata() = True Then HitungRef(txtAwal.Text) Else MessageBox.Show("Data yang dimasukkan bukan angka", _ "Kesalahan Data", MessageBoxButtons.OK, _ MessageBoxIcon.Error) End If
6. Jalankan kembali program dengan menekan tombol F5 keyboard. Masukkan sembarang karakter bukan angka pada Nilai awal lalu tekan tombol ByVal/ByRef. Maka akan keluar kotak dialog kesalahan dan pengguna harus menginput ulang masukannya.
86
6.3 Modul (Module) Modul merupakan bagian yang sengaja dipisahkan untuk memudahkan pemrograman. Dalam modul dapat dimasukkan prosedur, fungsi, dan variabel yang kemudian digunakan oleh beberapa form. •
Umumnya modul dideklarasikan secara publik (public) agar dapat digunakan di dalam kode mana pun.
•
Modul dapat diisi dengan main procedure yang akan dijalankan pertama kali saat program dimulai.
•
Modul merupakan salah satu implementasi code reuse yang bertujuan agar program lebih efisien.
Pembuatan modul dapat dilakukan dengan sintaks berikut: Module modulename Statements End Module
Anda dapat membuat modul melalui aplikasi Visual Studio. Caranya, klik menu Project > Add Module. Anda juga dapat mengklik kanan nama Projek pada Solution Explorer. Pilih menu Add > Module.
Penggunaan prosedur, fungsi, variabel dalam modul dilakukan biasa, yaitu secara langsung. 87
6.4 Scope Scope dapat menentukan masa berlakunya suatu nama, terutama nama variabel dan konstanta. Variabel dan konstanta hanya berlaku dalam rentang tertentu dari kode program. Di luar areanya, variabel dan konstanta sudah tidak dikenali lagi oleh kompiler. Secara garis besar, terdapat empat buah scope dalam Visual Basic: prosedur (termasuk fungsi), blok kode program (block), modul (modules), dan namespace. Scope Procedure /Function Block Module Proyek/ Namespace
Keterangan Variabel di dalamnya disebut dengan local variable. Hanya berlaku di dalam prosedur/function Blok kode artinya berada di antara dua kata kunci, seperti For‐Next, Do‐Loop. Hanya berlaku di dalam blok tersebut Variabel/konstanta berlaku hingga class yang menaungi modul tersebut Variabel/konstanta dapat berlaku pada projek tersebut
Untuk memahami konsep scope dengan jelas, lakukan praktek pengolahan variabel sebagai berikut: 1. Buat projek baru lalu desain interface seperti di bawah ini.
Kontrol Form Label Label 88
Nama Form1 Label1 Label2
Teks Aplikasi Pengenalan Scope Procedure Block
Label Label TextBox TextBox TextBox TextBox
Label3 Label4 txtProcedure txtBlock txtModule txtNamespace
Module Namespace
2. Masukkan kode dengan cara klik pada Form. Pada jendela Properties, klik tombol Events . 3. Klik ganda pada properti Load.
4. Edit kode hingga menjadi seperti di bawah ini. Module modulku Public b = "var modul" End Module Public Class Form1 Dim a As String = "var namespace" Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load prosedur1() prosedur2() End Sub Sub prosedur1() Dim a As String = "var prosedur" txtProcedure.Text = a End Sub Sub prosedur2() txtNamespace.Text = a If True Then Dim b As String = "var block" txtBlock.Text = b End If txtModule.Text = b End Sub End Class
Dalam kode di atas, variabel untuk berbagai scope akan ditampilkan ke dalam TextBox. 89
5. Jalankan aplikasi dengan menekan tombol F5 keyboard.
90