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 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 Nama Teks Form Form1 Tambah Satu Label Label1 Nilai awal Label Label2 Nilai akhir Button Button1 ByVal Button Button2 ByRef 82
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 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 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 Sub HitungRef(ByRef a As Decimal) a += 1 txtakhir.text = a Private Sub Button1_Click(ByVal sender As System.Object _, ByVal e As System.EventArgs) Handles Button1.Click HitungVal(txtAwal.Text) Private Sub Button2_Click(ByVal sender As System.Object _, ByVal e As System.EventArgs) Handles Button2.Click HitungRef(txtAwal.Text) 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: Perbedaan antara fungsi dan prosedur hanyalah pada pengembalian nilai saja (return value). Sebagai contoh, fungsi dapat 84
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 Nama Teks Form Form1 Aplikasi Pengenalan Scope Label Label1 Procedure Label Label2 Block 88
Label Label3 Module Label Label4 Namespace TextBox txtprocedure TextBox txtblock TextBox txtmodule TextBox txtnamespace 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() Sub prosedur1() Dim a As String = "var prosedur" txtprocedure.text = a Sub prosedur2() txtnamespace.text = a If True Then Dim b As String = "var block" txtblock.text = b End If txtmodule.text = b 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