MENGENDALIKAN ALIRAN EKSEKUSI VB.NET
APA YANG AKAN ANDA PELAJARI PADA BAB INI:
a. Bagaimana
menggunakan statemen If
b. Bagaimanan
menggunakan Select Case
c. Bagaimana
menggunakan loop For dan loop Do
Pada Bab sebelumnya, Anda telah
belajar tentang algoritma-algoritma dan peranannya dalam pemrograman. Pada bab
ini, Anda akan mempelajari bagaimana mengendalikan aliran eksekusi sehingga
Anda bisa membuat keputusan seperti “Jika X, maka lakukan A; jika tidak, maka
lakukan B”. Kemampuan membuat keputusan ini juga dikenal dengan percabangan. Anda juga akan melihat
bahwa Anda dapat merepetisi atau mengulangi eksekusi atas kode tertentu (proses
ini dikenal juga dengan perkalangan atau looping) sejumlah kali bila kondisi
tertentu dipenuhi.
MEMBUAT KEPUTUSAN
Algoritma seringkali
memerlukan keputusan. Kemampuan pembuatan keputusan ini membuat komputer
melakukan pekerjaannya dengan sangat cermat. Ketika Anda menuliskan kode, Anda
membuat dua jenis keputusan. Jenis keputusan pertama adalah mengetahui bagian
dari suatu algoritma yang akan Anda kerjakan lebih dahulu. Sebagai contoh,
dimisalkan bahwa Anda memiliki suatu daftar dengan 10 orang dan perlu
menuliskan sepotong kode untuk mengirimkan e-mail kepada tiap orang tersebut.
Untuk melakukannya, setelah mengirimkan tiap e-mail, Anda bertanya “Apakah
sudah selesai?” Jika sudah, Anda keluar dari algoritma; jika belum, Anda
mengirimkan e-mail ke orang berikutnya. Contoh lainnya, Anda bisa saja ingin
membuka suatu file, jadi Anda bertanya “Apakah file ada?” Anda harus menangani
setiap jawaban (jawaban ya atau tidak) dari pertanyaan ini.
Jenis kedua dari
keputusan digunakan untuk memilih bagian berbeda dari algoritma tergantung dari
satu atau lebih fakta. Dimisalkan bahwa Anda sedang meneliti daftar yang memuat
10 orang sehingga Anda dapat mengirimkan e-mail kepada setiap orang yang memiliki
komputer dan Anda menelepon setiap orang yang tidak memiliki komputer. Ketika
Anda meneliti tiap orang, Anda perlu memilih orang yang memiliki dan orang yang
tidak memiliki komputer untuk menentukan apa yang harus Anda lakukan.
STATEMEN IF
Cara paling sederhana
untuk membuat keputusan dalam suatu program Visual Basic adalah dengan
menggunakan statemen If…Then. Anda
akan belajar menggunakan statemen If…Then
pada latihan berikut.
LATIHAN
|
Statemen If…Then Sederhana
|
1. Ciptakan sebuah projek Windows Forms Application dengan nama If Sederhana. Tambahkan sebuah kontrol Button, tetapkan properti Name-nya menjadi tombolIf, dan properti Text-nya
menjadi If. Klik ganda pada tombol
dan tambahkan kode yang ditebalkan berikut:
Private
Sub tombolIf_Click(sender As Object, e As EventArgs) Handles tombolIf.Click
'Mendeklarasikan dan menetapkan suatu
variabel
Dim intNilai As Integer = 27
'Di sini adalah tempat Anda membuat
keputusan,
'dan memberitahu user apa yang terjadi
If intNilai = 27 Then
MessageBox.Show("'intNilai' adalah
27!", "If Sederhana")
End If
End
Sub
2. Simpan projek Anda dan kemudian
jalankan. Klik tombol If dan Anda
akan melihat sebuah kotak pesan seperti ditampilkan pada Gambar 2.1.
GAMBAR 2.1
Penjelasan
Pada contoh ini,
pertama-tama Anda mendeklarasikan sebuah variabel Integer dengan nama intNilai
dan menetapkan nilainya menjadi 27, semuanya pada baris kode yang sama, seperti
ditunjukkan di sini:
'Mendeklarasikan
dan menetapkan suatu variabel
Dim intNilai As
Integer = 27
Kemudian, Anda
menggunakan statemen If…Then untuk
menentukan apa yang akan Anda lakukan selanjutnya. Pada kasus ini, Anda
mengatakan, “Jika intNilai sama dengan 27…”:
'Di sini adalah
tempat Anda membuat keputusan,
'dan memberitahu
user apa yang terjadi
If intNilai = 27
Then
MessageBox.Show("'intNilai' adalah
27!", "If Sederhana")
End If
Blok kode yang mengikuti
statemen If…Then akan dieksekusi
hanya ketika intNilai bernilai sama
dengan 27. Anda mengakhiri blok kode dengan End If. Segala sesuatu yang ada di antara If dan End If dipanggil hanya ketika ekspresi yang
Anda uji bernilai True.
CATATAN: Perhatikan bahwa kode di dalam blok If…End If secara otomatis diindentasi (dirapikan dan disejajarkan)
bagi Anda. Ini untuk meningkatkan keterbacaan sehingga Anda dapat dapat
mengetahui kode mana yang akan dijalankan bila kondisi bernilai True.
Kode ini dapat bekerja
dengan baik, meskipun Anda hanya menggunakan satu baris kode di dalam statemen If. Sekarang, Anda telah mengetahui apa
yang terjadi jika kondisi bernilai True;
tetapi apa yang terjadi jika kondisi bernilai False? Anda akan mengetahuinya pada Latihan berikutnya.
LATIHAN
|
Kondisi Bernilai False
|
Pada contoh ini, Anda akan melihat bagaimana mengkode
statemen If bila kondisinya bernilai
False.
1.
Kembali ke mode Design untuk program If
Sederhana. Tambahkan kontrol Button
lain pada form dan tetapkan properti Name-nya
menjadi tombolIfLain dan tetapkan
properti Text-nya menjadi If Lain.
Klik ganda pada tombol itu dan tambahkan kode yang ditebalkan berikut:
Private
Sub tombolIfLain_Click(sender As Object, e As EventArgs) Handles tombolIfLain.Click
'Mendeklarasikan dan menetapkan suatu
variabel
Dim intNilai As Integer = 27
'Di sini adalah tempat Anda membuat
keputusan,
'dan memberitahu user apa yang terjadi
If intNilai = 1000 Then
MessageBox.Show("'intNilai' adalah
1000!", "If Sederhana")
End If
End
Sub
2.
Jalankan projek Anda dan klik tombol
If Lain; tidak ada apapun yang
terjadi.
Penjelasan
Pada kasus ini,
pertanyaan “Apakah intNilai sama dengan 1000?” bernilai False atau salah. Blok kode hanya dieksekusi jika kondisi bernilai True, jadi ia akan dilompati. Jika
kondisi bernilai True, baris kode
yang ada di antara If dan End If akan dieksekusi.
Statemen Else
Jika Anda ingin agar
sepotong kode dieksekusi jika kondisi bernilai True dan potongan kode lain dieksekusi bila kondisi bernilai False, maka Anda perlu menggunakan
statemen Else. Ini akan mengekspansi
Latihan sebelumnya.
LATIHAN
|
Statemen Else
|
Latihan ini mengembangkan
Latihan sebelumnya untuk menunjukkan bagaimana statemen Else digunakan.
1. Kembali kode editor kode pada projek
If Sederhana dan modifikasi kode
pada prosedur tombolIfLain_Click
sehingga ia menjadi seperti ini:
Private
Sub tombolIfLain_Click(sender As Object, e As EventArgs) Handles
tombolIfLain.Click
'Mendeklarasikan dan menetapkan suatu
variabel
Dim intNilai As Integer = 27
'Di sini adalah tempat Anda membuat
keputusan,
'dan memberitahu user apa yang terjadi
If intNilai = 1000 Then
MessageBox.Show("'intNilai' adalah
1000!", "If Sederhana")
Else
MessageBox.Show("'intNilai' tidak
bernilai 1000!", "If Sederhana")
End If
End
Sub
2. Jalankan projek dan Anda akan
melihat kode pesan seperti ditunjukkan pada Gambar 2.2.
GAMBAR 2.2
Penjelasan
Di sini, kode yang
mengikuti statemen Else dieksekusi
jika kondisi pada statemen If tidak
dipenuhi. Pada kasus ini, nilai dari intNilai
adalah 27, tetapi kondisi yang diuji adalah intNilai = 1000, yang bernilai False,
jadi kode yang ada setelah statemen Else
akan dieksekusi.
Menggunakan Beberapa Alternatif pada ElseIf
Jika Anda ingin menguji
lebih dari satu kondisi, Anda perlu menggunakan statemen ElseIf.
LATIHAN
|
Statemen ElseIf
|
Pada Latihan ini, Anda
akan menggunakan program If Sederhana
untuk melihat bagaimana Anda dapat menguji nilai 27 dan 1000 dari variabel intNilai.
1. Kembali ke editor kode dan ubah kode
pada prosedur tombolIfLain_Clik
sehingga ia menjadi seperti berikut:
Private
Sub tombolIfLain_Click(sender As Object, e As EventArgs) Handles
tombolIfLain.Click
'Mendeklarasikan dan menetapkan suatu
variabel
Dim intNilai As Integer = 27
'Di sini adalah tempat Anda membuat
keputusan,
'dan memberitahu user apa yang terjadi
If intNilai = 1000 Then
MessageBox.Show("'intNilai' adalah
1000!", "If Sederhana")
ElseIf
intNilai = 27 Then
MessageBox.Show("'intNilai' adalah
27!", "If Sederhana")
Else
MessageBox.Show("'intNilai' tidak
bernilai 1000!", "If Sederhana")
End If
End
Sub
2. Jalankan projek dan Anda akan
melihat kode pesan seperti ditunjukkan pada Gambar 2.3.
Penjelasan
Kali ini kode pada
statemen ElseIf dijalankan karena intNilai memenuhi kondisi intNilai = 27. Perhatikan bahwa Anda
tetap mencantumkan statemen Else di
akhir untuk menangkap bila mana intNilai
tidak bernilai 27 ataupun 100:
ElseIf intNilai =
27 Then
MessageBox.Show("'intNilai'
adalah 27!", "If Sederhana")
Else
MessageBox.Show("'intNilai'
tidak bernilai 1000!", "If Sederhana")
End If
CATATAN: Anda dapat menambahkan sebanyak mungkin statemen ElseIf yang diperlukan untuk menguji
kondisi-kondisi. Namun, Anda perlu mengingat bahwa setiap statemen ElseIf dicari kesesuaiannya dengan
kondisi yang memenuhi karena Visual Basic mencoba menemukan kondisi mana yang
bernilai True. Ini akan memperlambat
program Anda jika Anda memiliki terlalu banyak kondisi yang diuji. Jika Anda
memiliki banyak kondisi, Anda sebaiknya menggunakan blok Select Case, yang akan
Anda pelajari pada bab ini.
Statemen If Bersarang
Adalah dimungkinkan untuk
menempatkan suatu statemen If
bersarang atau berada di dalam statemen If
lain:
If intX = 3 Then
MessageBox.Show("intX = 3")
If intY = 6
Then
MessageBox.Show("intY = 6")
End If
End If
Tidak ada batasan berapa
dalam Anda dapat menyarangkan statemen-statemen If. Namun, semakin dalam level penyarangan yang Anda miliki, maka
semakin sulit untuk memahami kode Anda. Jadi, sebisa mungkin Anda perlu
meminimkan level penyarangan statemen If.
Statemen If Satu-Baris
Bentuk satu-baris dari
statemen If umumnya diperuntukkan
bagi pengujian sederhana dan pendek sehingga hal itu bisa menghemat ruang pada
editor kode. Namun, bentuk ini tidak memberikan struktur dan fleksibilitas dari
bentuk multibaris. Bentuk satu-baris ini umumnya lebih susah dipahami:
If intX = 3 Then MessageBox.Show("intX =
3") Else MessageBox.Show("intX tidak bernilai
3")
Anda tidak memerlukan End If di akhir dari statemen If…Then satu-baris.
Sejumlah statemen dapat
pula dieksekusi di dalam statemen If…Then
satu-baris. Semua statemen harus berada pada baris yang sama dan dipisahkan
dengan titik-dua (kolon), seperti pada contoh berikut:
If intX = 3 Then MessageBox.Show("intX = 3"): intX =
intX + 1: Total += intX
Operator-Operator Perbandingan
Anda telah mengetahui
bagaimana memeriksa apakah variabel tertentu bernilai sama dengan nilai
tertentu. Pada dasarnya, statemen If
jauh lebih kompleks dari itu. Anda bisa menanyakan pertanyaan-pertanyaan
seperti ini:
1. Apakah
intNilai lebih besar dari 49?
2. Apakah
intNilai lebih kecil dari 49?
3. Apakah
intNilai lebih besar dari atau sama
dengan 49?
4. Apakah
intNilai lebih kecil dari atau sama
dengan 49?
5. Apakah
strNama tidak sama dengan John?
Ketika menggunakan nilai
string, Anda akan menggunakan operator Sama
Dengan atau Tidak Sama Dengan.
Ketika menggunakan nilai numeriks, Anda dapat menggunakan semua operator
aritmatika yang telah didiskusikan pada bab sebelumnya.
Menggunakan Tidak Sama Dengan
Anda belum pernah
menggunakan operator Tidak Sama Dengan,
jadi Anda akan menggunakannya pada string.
LATIHAN
|
Menggunakan Tidak Sama Dengan
|
Operator Tidak Sama Dengan akan bernilai False ketika operator Sama Dengan bernilai True dan ia bernilai True ketika operator Sama Dengan bernilai False.
1. Ciptakan sebuah projek Windows Forms Application dengan nama DemoIf. Tambahkan sebuah kontrol TextBox dan sebuah kontrol Button. Tetapkan properti Name untuk TextBox1 menjadi teksNama
dan properti Text-nya menjadi Stefani. Tetapkan properti Name untuk Button1 menjadi tombolPeriksa
dan properti Text-nya menjadi Periksa.
2. Klik ganda pada kontrol Button untuk menciptakan event handler Click-nya. Tambahkan kode yang
ditebalkan berikut:
Private
Sub tombolPeriksa_Click(sender As Object, e As EventArgs) Handles
tombolPeriksa.Click
'Mendeklarasikan sebuah variabel dan membaca
nama dari kotak teks
Dim strNama As String
strNama = teksNama.Text
'Apakan nama Wendi?
If strNama <> "Wendi" Then
MessageBox.Show("Nama *bukan*
Wendy.", "Demo If")
End If
End
Sub
3. Simpan projek Anda dan kemudian
jalankan. Ketika form ditampilkan, klik tombol Periksa dan Anad akan melihat sebuah kota pesan yang
mengindikasikan bahwa nama bukan Wendi.
Penjelasan
Operator Tidak Sama
Dengan adalah <>. Ketika tombol diklik, hal pertama yang Anda lakukan
adalah membaca nama dari kotak teks dengan melihat isi dari properti Text-nya:
'Mendeklarasikan
sebuah variabel dan membaca nama dari kotak teks
Dim strNama As
String
strNama =
teksNama.Text
Setelah Anda memiliki nama yang dibaca dari properti Text, Anda menggunakan statemen If. Kali ini, Anda menggunakan operator
Tidak Sama Dengan, bukan menggunakan
operator Sama Dengan. Selain itu,
perhatikan bahwa Anda sedang membandingkan dua nilai string:
'Apakan nama
Wendi?
If strNama
<> "Wendi" Then
MessageBox.Show("Nama *bukan*
Wendy.", "Demo If")
End If
Kode yang ada di antara Then
dan End If dieksekusi hanya jika
jawaban terjadap pertanyaan yang ditanyakan pada statemen If bernilai True. Karena
jawaban atas pertanyaan itu adalah True
atau ya, maka kode itu akan dieksekusi dan kotak pesan ditampilkan.
Cara lain dalam memeriksa
sesuatu yang tidak sama dengan sesuatu yang lain adalah dengan menggunakan
katakunci Not. Kondisi pada statemen
If dapat dituliskan dengan cara
seperti ini:
If Not strNama = "Wendi" Then
Menggunakan Operator Numeris
Pada bagian ini, Anda
akan mempelajari keempat operator perbandingan.
LATIHAN
|
Menggunakan Operator Kurang Dari
|
Pada latihan ini, Anda
akan menggunakan operator lebih dari, kurang dari, lebih dari atau sama dengan,
dan kurang dari atau sama dengan.
1. Kembali ke projek Demo If. Tambahkan sebuah kontrol TextBox
lain dan tetapkan properti Name-nya
menjadi teksNilai. Tambahkan kontrol
Button lain dan tetapkan properti Name-nya menjadi tombolPeriksaNilai dan properti Text-nya menjadi Periksa
Nilai.
2. Klik ganda pada tombol Periksa Nilai dan tambahkan kode yang ditebalkan berikut pada event handler
Click-nya:
Private
Sub tombolPeriksaNilai_Click(sender As Object, e As EventArgs) Handles
tombolPeriksaNilai.Click
'Mendeklarasikan
variabel
Dim intNilai As Integer
Try
'Membaca nilai dari kotak teks
intNilai = CType(teksNilai.Text,
Integer)
Catch
Exit Sub
End Try
'Apakah intNilai kurang dari 27?
If intNilai < 27 Then
MessageBox.Show("Apakah intNilai
kurang dari 27? Ya!", "Demo If")
Else
MessageBox.Show("Apakah intNilai
kurang dari 27? Tidak!", "Demo If")
End If
End
Sub
3. Jalankan projek. Masukkan 14 ke dalam kotak teks dan klik tombol
Periksa Nilai. Anda akan diberitahu apakah nilai yang dimasukkan itu bernilai
kurang dari atau bernilai lebih dari 27, seperti ditunjukkan pada Gambar 2.4.
GAMBAR
2.4
Penjelasan
Pertama-tama, Anda
membaca nilai dari kotak teks. Ada sedikit tambahan di sini. Karena ini adalah
kotak teks, user akan bebas memasukkan apapun yang mereka suka, dan serangkaian
karakter yang tidak dapat dikonversi menjadi integer bisa saja dimasukkan, dan
program akan berhenti secara abnormal. Oleh karena itu, Anda perlu menambahkan
penangan eksepsi (exception handler)
untuk memastikan bahwa Anda selalu mendapatkan suatu nilai numeris. Selain itu,
dengan Option Strict diaktifkan,
Anda perlu mengkonversi nilai string pada kotak teks menjadi suatu tipe data Integer menggunakan fungsi CType seperti yang Anda lakukan pada
bab sebelumnya. Jika user memasukkan sesuatu yang tak valid, intNilai tetap 0
(nilai default); jika tidak, nilai numeris akan didapatkan:
'Mendeklarasikan
variabel
Dim intNilai As
Integer
Try
'Membaca
nilai dari kotak teks
intNilai
= CType(teksNilai.Text, Integer)
Catch
Exit Sub
End Try
Operator Kurang Dari
adalah <. Di sini, Anda menguji untuk menentukan apakah nilai yang
dimasukkan bernilai kurang dari 27, dan jika ya, Anda akan mengatakannya pada
suatu kotak pesan; jika tidak, Anda juga akan mengatakannya:
'Apakah intNilai
kurang dari 27?
If intNilai <
27 Then
MessageBox.Show("Apakah
intNilai kurang dari 27? Ya!", "Demo If")
Else
MessageBox.Show("Apakah
intNilai kurang dari 27? Tidak!", "Demo If")
End If
Ada sesuatu yang menarik
di sini. Jika Anda memasukkan 27 ke dalam kotak teks dan mengklik tombol, Anda
akan melihat sebuah kotak pesan yang memberitahu Anda bahwa intNilai tidak bernilai kurang dari 27.
Anda akan mengatasi ini menggunakan operator yang berbeda.
LATIHAN
|
Menggunakan Operator Kurang Dari Atau Sama Dengan
|
Operator Kurang Dari Atau
Sama Dengan akan bernilai True
ketika nilai yang diuji bernilai kurang dari atau sama dengan nilai
perbandingan dan juga ketika dua nilai bernilai sama. Anda akan melihat ini.
1. Kembali ke projek Demo If dan ubah statemen If pada event handler tombolPeriksaNilai_Click seperti
ditunjukkan di sini:
Private
Sub tombolPeriksaNilai_Click(sender As Object, e As EventArgs) Handles
tombolPeriksaNilai.Click
'Mendeklarasikan
variabel
Dim intNilai As Integer
Try
'Membaca nilai dari kotak teks
intNilai = CType(teksNilai.Text,
Integer)
Catch
Exit Sub
End Try
'Apakah intNilai kurang dari atau sama
dengan 27?
If intNilai <= 27 Then
MessageBox.Show("Apakah intNilai
kurang dari atau sama dengan 27? Ya!", "Demo If")
Else
MessageBox.Show("Apakah intNilai
kurang dari atau sama dengan 27? Tidak!", "Demo If")
End If
End
Sub
2. Sekarang jalankan projek dan
masukkan 27 ke dalam kotak teks.
Klik pada tombol Periksa Nilai dan Anda akan melihat hasil
seperti ditunjukkan pada Gambar 2.5.
GAMBAR 2.5
Penjelasan
Pada contoh ini, operator
Kurang Dari Atau Sama Dengan adalah <=. Pada situasi ini, Anda memperluas
rentang nilai yang mungkin dan mencakup nilai yang sedang diperiksa. Oleh
karena itu, pada kasus ini ketika Anda memasukkan 27, Anda mendapatkan jawaban
Ya. Jenis operator ini dinamakan dengan operator
inklusif.
LATIHAN
|
Menggunakan Operator Lebih Dari dan Operator Lebih Dari
Atau Sama Dengan
|
Pada contoh ini, Anda
akan melihat bagaimana menggunakan operator Lebih Dari dan operator Lebih Dari
Atau Sama Dengan.
1.
Kembali ke projek Demo If dan tambahkan dua statemen If lain pada event handler tombolPeriksaNilai_Click, seperti
ditunjukkan di sini:
Private
Sub tombolPeriksaNilai_Click(sender As Object, e As EventArgs) Handles
tombolPeriksaNilai.Click
'Mendeklarasikan variabel
Dim intNilai As Integer
Try
'Membaca nilai dari kotak teks
intNilai = CType(teksNilai.Text,
Integer)
Catch
Exit Sub
End Try
'Apakah intNilai kurang dari atau sama
dengan 27?
If intNilai <= 27 Then
MessageBox.Show("Apakah intNilai
kurang dari atau sama dengan 27? Ya!", "Demo If")
Else
MessageBox.Show("Apakah intNilai
kurang dari atau sama dengan 27? Tidak!", "Demo If")
End If
'Apakah intNilai lebih dari 27?
If intNilai > 27 Then
MessageBox.Show("Apakah intNilai
lebih dari 27? Ya!", "Demo If")
Else
MessageBox.Show("Apakah intNilai lebih
dari 27? Tidak!", "Demo If")
End If
'Apakah intNilai lebih dari atau sama
dengan 27?
If intNilai >= 27 Then
MessageBox.Show("Apakah intNilai
lebih dari atau sama dengan 27? Ya!", "Demo If")
Else
MessageBox.Show("Apakah intNilai
lebih dari atau sama dengan 27? Tidak!", "Demo If")
End If
End
Sub
2. Jalankan program. Kali ini masukkan nilai 99 ke dalam
kotak teks dan klik tombol Periksa Nilai. Anda akan melihat tiga kotak
pesan, satu demi satu. Kotak pesan pertama akan mengindikasikan bahwa intNilai tidak bernilai kurang dari
atay sama dengan 27, sedangkan kotak pesan kedua mengindikasikan bahwa intNilai tidak bernilai lebih dari 27.
Kotak pesan terakhir akan mengindikasikan bahwa intNilai bernilai lebih dari atau sama dengan 27.
Penjelasan
Operator Lebih Dari dan
operator Lebih Dari Atau Sama Dengan pada dasarnya kebalikan dari operator
Kurang Dari dan operator Kurang Dari Atau Sama Dengan.
Operator And dan Or
Apa yang terjadi ketika
Anda memerlukan statemen If untuk
menguji lebih dari satu kondisi? Sebagai contoh, dimisalkan bahwa Anda ingin
memastikan bahwa intNilai bernilai
kurang dari 27 dan lebih dari 10. Atau, bagaimana untuk memeriksa strNama apakah “Wendi” atau “Stefani”?
Anda dapat menggabungkan operator-operator yang digunakan dengan statemen If, seperti ditunjukkan pada Latihan
berikut.
LATIHAN
|
Menggunakan Operator Or
|
1. Ciptakanlah sebuah aplikasi Windows Forms Application dengan nama Demo And Or.
2. Pada mode design untuk Form1, tambahkan dua kontrol TextBox dan sebuah kontrol Button. Tetapkan properti Name dari kotak-kotak teks menjadi teksNama1 dan teksNama2 dan properti Name
dari tombol menjadi tombolPeriksaOr.
3. Simpan properti Text untuk teksNama1
menjadi Wendi dan properti Text untuk teksNama2 menjadi Stefani.
Terakhir, tetapkan properti Text
untuk tombolPeriksaOr menjadi Periksa Or. Form akhir akan tampak
seperti pada Gambar 2.6.
GAMBAR
2.6
4. Klik ganda pada tombol Periksa Or dan tambahkan kode berikut
pada event handler Click-nya:
Private
Sub tombolPeriksaOr_Click(sender As Object, e As EventArgs) Handles
tombolPeriksaOr.Click
'Mendeklarasikan variabel-variabel
Dim strNama1 As String, strNama2 As String
'Membaca nama-nama
strNama1 = teksNama1.Text
strNama2 = teksNama2.Text
'Apakah salah satu nama adalah Wendi?
If strNama1 = "Wendi" Or strNama2
= "Wendi" Then
MessageBox.Show("Salah satu nama
adalah Wendi.", "Demo And Or")
Else
MessageBox.Show("Tidak ada yang
bernama Wendi.", "Demo And Or")
End If
End
Sub
GAMBAR
2.7
5. Jalankan projek dan klik tombol.
Anda akan melihat hasil seperti yang ditunjukkan pada Gambar 2.7.
6. Klik OK untuk menutup kotak dialog
pesan dan tukar nama sehingga pada kotak teks atas (teksNama1) adalah Stefani
dan kotak teks bahwa (teksNama2)
adalah Wendi. Klik tombol kembali.
Anda akan melihat sebuah kotak pesan yang sama.
7. Klik Ok untuk menutup kotak dialog
pesan dan kali ini ubah kedua nama sehingga tidak satupun memuat Wendi. Klik tombol kembali. Anda akan
melihat sebuah kotak pesan yang mengindikasikan bahwa tidak satupun memuat nama
Wendi.
Penjelasan
Contoh ini menunjukkan
bahwa operator Or merupakan cara
yang hebat dalam membangun statemen If
yang membandingkan dua nilai berbeda. Pada event handler Click, Anda lebih dulu mendeklarasikan variabel-variabel dan
kemudian membaca kedua nama dan menyimpannya di dalam variabel strNama1 dan strNama2:
'Mendeklarasikan
variabel-variabel
Dim strNama1 As
String, strNama2 As String
'Membaca
nama-nama
strNama1 =
teksNama1.Text
strNama2 =
teksNama2.Text
Perhatikan bahwa Anda
telah mendefinisikan dua variabel pada baris yang sama. Ini merupakan praktek pengkodean
yang sah, meskipun kadang-kadang ia dapat membuat kode tampak lebih rapat.
Variabel-variabel dipisahkan dengan koma; perhatikan bahwa katakunci As tetap digunakan untuk memberitahu
Visual Basic tentang tipe data dari tiap variabel.
Setelah Anda memiliki
kedua nama, Anda menggunakan operator Or
untuk menggabungkan dua statemen If
yang terpisah. Pertanyaan yang sedang Anda ajukan adalah “Apakah strNama1 sama dengan Wendi atau apakah strNama2 sama dengan Wendi? Jawaban
untuk pertanyaan ini adalah (jika salah satu kotak teks memuat nama Wendi)
adalah “Ya, salah satu strNama1 sama
dengan Wendi atau strNama2 sama
dengan Wendi”:
'Apakah salah
satu nama adalah Wendi?
If
strNama1 = "Wendi" Or strNama2 = "Wendi" Then
MessageBox.Show("Salah satu nama adalah
Wendi.", "Demo And Or")
Else
MessageBox.Show("Tidak ada yang
bernama Wendi.", "Demo And Or")
End If
Menggunakan Operator And
Operator And secara konseptual mirip dengan
operator Or, kecuali bahwa kedua
bagian dari kondisi harus dipenuhi, seperti yang akan Anda lihat pada Latihan
berikut.
LATIHAN
|
Menggunakan Operator And
|
1. Kembali ke mode design pada projek Demo And Or. Tambahkan kontrol Button lain pada form. Tetapkan
properti Name-nya menjadi tombolPeriksaAnd dan tetapkan properti Text-nya menjadi Periksa And. Klik ganda
pada tombol tersebut dan tambahkan kode yang ditebalkan berikut pada event
handler Click-nya:
Private
Sub tombolPeriksaAnd_Click(sender As Object, e As EventArgs) Handles
tombolPeriksaAnd.Click
'Mendeklarasikan variabel-variabel
Dim strNama1 As String, strNama2 As String
'Membaca nama-nama
strNama1 = teksNama1.Text
strNama2 = teksNama2.Text
'Apakah kedua kotak teks memuat nama Wendi?
If strNama1 = "Wendi" And
strNama2 = "Wendi" Then
MessageBox.Show("Keduanya adalah
Wendi.", "Demo And Or")
Else
MessageBox.Show("Salah satu atau
keduanya bukan Wendi.", "Demo And Or")
End If
End
Sub
2. Jalankan program dan klik pada
tombol Periksa And. Sebuah kotak
pesan akan memberitahu Anda bahwa salah satu nama atau keduanya bukan Wendi.
3. Ubah sehingga keduanya memuat Wendi
dan klik tombol. Anda akan melihat hasil seperti ditunjukkan pada Gambar 2.8.
GAMBAR
2.8
Penjelasan
Setelah Anda membaca
kedua nama dari kedua kotak teks, Anda membandingkannya. Pada kasus ini, Anda
sedang bertanya “Apakah strNama1
sama dengan Wendi dan apakah strNama2
sama dengan Wendi”. Pada kasus ini, kedua bagian dari statemen If harus dipenuhi agar kotak pesan
menyatakan “Kedua nama adalah Wendi” akan ditampilkan:
'Apakah kedua
kotak teks memuat nama Wendi?
If strNama1 =
"Wendi" And strNama2 = "Wendi" Then
MessageBox.Show("Keduanya
adalah Wendi.", "Demo And Or")
Else
MessageBox.Show("Salah
satu atau keduanya bukan Wendi.", "Demo And Or")
End If
Lebih Lanjut Tentang Or dan And
Anda telah melihat
operator And dan Or yang digunakan terhadap string.
Kedua operator ini dapat pula dipakai terhadap nilai numeris, seperti ini:
If intX = 2 And intY = 3 Then
MessageBox.Show("Halo, kedua kondisi terpenuhi!")
End If
atau
If intX = 2 Or intY = 3 Then
MessageBox.Show("Halo,
salah satu kondisi terpenuhi!")
End If
Dalam Visual Basic, tidak
ada batasan terhadap berapa banyak operator And dan operator Or yang
dapat Anda cantumkan di dalam sebuah statemen. Adalah dimungkinkan untuk
melakukan berikut, meskipun Anda akan sangat jarang melakukannya:
If intA = 1 And intB = 2 And intC = 3 And intD = 4
And intE = 5 And
intF = 6
And intG = 7 And intH = 1 And intI = 2 And intJ = 3 And
intK = 4
And intL = 5 And intM = 6 And intN = 7 And intO = 1 And
intP = 2
And intQ = 3 And intR = 4 And intS = 5 And intT = 6 And
intU = 7
And intV = 1 And intW = 2 And intX = 3 And intY = 4 And
intZ = 5
Then
MessageBox.Show("Cukup
banyak juga statemen If ini!")
End If
Terakhir, adalah
dimungkinkan untuk menggunakan tanda kurung untuk mengelompokkan
operator-operator. Sebagai contoh, dimisalkan bahwa Anda ingin menentukan
apakah nilai dari intX ada di antara
12 dan 20 eksklusif atau antara 22 dan 25 eksklusif. Anda dapat menggunakan
statemen If…Then berikut:
If (intX > 12 And intX < 20) Or (intX > 22
And intX < 25) Then
Ada banyak kombinasi
operator, jauh lebih banyak dari yang dapat dibahas pada buku ini. Jadi, Anda
bisa mengkombinasikan apapun yang bisa Anda perlukan.
Perbandingan String
Ketika menggunakan string
dan statemen If, Anda seringkali memiliki permasalahan dengan huruf besar dan
huruf kecil. Komputer memperlakukan huruf A dan a adalah entitas yang berbeda,
meskipun manusia memandangnya sama. Ini dikenal dengan sensitivitas huruf, yang berarti bahwa huruf besar berbedari dari
huruf kecil ekivalen ketika membandingkan string. Sebagai contoh, jika Anda
menjalankan kode berikut, kotak pesan tidak akan ditampilkan:
Dim strNama As String
strNama = "Rosintan"
If strName = "ROSINTAN" Then
MessageBox.Show("Ya!
Anda adalah Rosintan.")
End If
Karena ROSINTAN tidak sama dengan Rosintan, maka statemen If ini tidak akan menampilkan kotak
pesan. Namun, pada banyak kasus sebenarnya Anda menganggap keduanya adalah
orang yang sama, jadi Anda memerlukan suatu cara dalam membandingkan string dan
mengabaikan sensitivitas huruf ini.
LATIHAN
|
Menggunakan Perbandingan String Insensitivitas Huruf
|
1. Kembali ke mode design pada projek Demo And Or dan tambahkan sebuah
kontrol TextBox lain dan kontrol Button lain pada form.
2. Tetapkan properti Name dari TextBox menjadi teksNama3
dan properti Text-nya menjadi Rosintan. Tetapkan properti Name dari Button menjadi tombolTampilString
dan properti Text-nya menjadi Bandingkan String.
3. Klik ganda pada tombol Bandingkan String untuk membuka event handler Click-nya dan tambahkan kode yang ditebalkan berikut:
Private
Sub tombolTampilString_Click(sender As Object, e As EventArgs) Handles
tombolTampilString.Click
'Mendeklarasikan variabel
Dim strNama As String
'Membaca nama
strNama = teksNama3.Text
'Membandingkan nama
If String.Compare(strNama, "ROSINTAN",
True) = 0 Then
MessageBox.Show("Halo,
Rosintan!", "Demo And Or")
End If
End
Sub
4. Jalankan projek dan klik tombol.
Anda akan melihat hasil seperti ditunjukkan pada Gambar 2.9.
5. Tutup kotak pesan dan masukkan nama
pada kotak teks terakhir dengan nama RoSiNtaN,
atau kombinasi dari huruf besar dan huruf kecil ekivalen lain, dan klik tombol.
Anda masih akan melihat kotak pesan yang sama.
6. Namun, jika Anda memasukkan sebuah
nama yang bukan Rosintan, maka kotak
pesan tidak akan ditampilkan ketika Anda mengklik tombol.
GAMBAR
2.9
Penjelasan
Setelah Anda mendapatkan
nama dari kotak teks, Anda perlu menggunakan sebuah fungsi untuk membandingkan
dua nilai. Pada kasus ini, Anda menggunakan metode Compare dari kelas System.String,
melewatkan kepadanya kedua string yang ingin Anda bandingkan. String pertama
adalah nilai yang disimpan di dalam strNama
(yang merupakan nilai yang dimasukkan ke dalam kotak teks), dengan string kedua
“ROSINTAN”. Parameter terakhir yang Anda sediakan adalah True, yang memberitahu Compare
untuk membandingkan perbandingan insesitivitas huruf; dengan kata lain, ia akan
mengabaikan perbedaan antara huruf besar dengan huruf kecil ekivalen. Jika Anda
menyediakan False untuk parameter
ini, perbandingan yang dilakukan adalah sensitivitas huruf.
Metode String.Compare memberikan hasil yang
perlu dicermati. Ia sebenarnya menghasilkan sebuah integer, bukan nilai True atau False. Ini karena metode String.Compare
dapat dipakai untuk menentukan bagaimana kedua string berbeda. Metode ini
menghasilkan 0, jika kedua string sama. Jika metode menghasikan sebuah nilai
yang bukan 0, maka kedua string berbeda.
SELECT CASE
Pada bagian ini, Anda
perlu membuat sejumlah keputusan seperti ini:
1. Apakah
konsumen bernama Bona? Jika ya, lakukan ini.
2. Apakah
konsumen bernama Stefani? Jika ya, lakukan ini.
3. Apakah
konsumen bernama Krista? Jika ya, lakukan ini.
4. Apakah
konsumen bernama Beti? Jika ya, lakukan ini.
5. Apakah
konsumen bernama Eduardo? Jika ya, lakukan ini.
Anda sebenarnya dapat
melakukan ini dengan sejumlah statemen If…Then.
Pada dasarnya, ia akan tampak seperti ini:
If Konsumen.Nama = "Bona" Then
(lakukan
sesuatu)
ElseIf Konsumen.Nama = "Stefani" Then
(lakukan sesuatu)
ElseIf Konsumen.Nama = "Krista" Then
(lakukan sesuatu)
ElseIf Konsumen.Nama = "Beti" Then
(lakukan sesuatu)
ElseIf Konsumen.Nama = "Eduardo" Then
(lakukan
sesuatu)
End If
Apa yang terjadi jika
Anda memutuskan bahwa Anda ingin memeriksa Konsumen.NamaDepan
bukan Konsumen.Nama? Anda perlu
mengganti setiap statemen If, yang
merupakan pekerjaan yang melelahkan. Selain itu, jika Konsumen.Nama ternyata adalah “Eduardo”, program tetap harus
menjejak keempat statemen If yang
lain, yang merupakan sesuatu yang tidak efisien. Pada Latihan berikut, Anda
akan mempelajari cara yang lebih baik.
LATIHAN
|
Menggunakan Select Case
|
1. Ciptakanlah sebuah projek Windows Forms Application. Namai dengan
Demo Select. Tetapkan properti Text
dari form menjadi Select Case.
2. Dari jendela Toolbox, tambahkan sebuah kontrol ListBox pada form dan tetapkan properti Name-nya menjadi listData,
properti Dock-nya menjadi Fill, dan properti IntegralHeight-nya menjadi False.
3. Dengan listData diseleksi pada mode design, lihat pada jendela Properties dan pilih properti Items.
Klik tombol elipsis di kanan dari properti, dan pada jendela String Collection Editor yang
ditampilkan, tambahkan lima nama pada baris-baris terpisah seperti ditunjukkan
pada Gambar 2.10.
GAMBAR
2.10
4.
Klik OK untuk menyimpannya.
Nama-nama akan ditambahkan pada kotak list Anda.
5. Sekarang, klik ganda pada listData untuk menciptakan sebuah event
handler SelectedIndexChanged dan
tambahkan kode yang ditebalkan berikut:
Private
Sub listData_SelectedIndexChanged(sender As Object, e As EventArgs) Handles
listData.SelectedIndexChanged
'Mendeklarasikan variabel-variabel
Dim strNama As String
Dim strWarnaFavorit As String =
""
'Membaca nama terseleksi
strNama =
listData.Items(listData.SelectedIndex).ToString
'Menggunakan statemen Select Case untuk
mendapatkan warna
'favorit dari nama terseleksi
Select Case strNama
Case "Bona"
strWarnaFavorit =
"Kuning"
Case "Stefani"
strWarnaFavorit = "Biru
Laut"
Case "Krista"
strWarnaFavorit =
"Bening"
Case "Beti"
strWarnaFavorit = "Ungu
Kasih"
Case "Eduardo"
strWarnaFavorit = "Merah"
End Select
'Menampilkan warna favorit dari nama
terseleksi
MessageBox.Show("Warna favorit dari
" & strNama & " adalah " &
strWarnaFavorit, "Demo
Select")
End
Sub
6. Simpan projek Anda dan kemudian
jalankan. Ketika Anda mengklik salah satu nama, sebuah kotak pesan akan
ditampilkan seperti ditunjukkan pada Gambar 2.11.
GAMBAR
2.11
Penjelasan
Pada Latihan ini, hal
pertama yang Anda perlu lakukan di dalam event handler SelectedIndexChanged adalah mendeklarasikan variabel-variabel dan
menentukan nama mana yang diseleksi. Anda melakukan ini dengan menemukan item
di dalam kotak list yang cocok dengan nilai dari properti SelectedIndex. Koleksi Items
dari kelas ListBox menghasilkan
sebuah tipe data Object, jadi Anda
menggunakan metode ToString untuk
mengkonversi objek menjadi sebuah tipe data String untuk variabel strNama:
'Mendeklarasikan
variabel-variabel
Dim
strNama As String
Dim
strWarnaFavorit As String = ""
'Membaca
nama terseleksi
strNama
= listData.Items(listData.SelectedIndex).ToString
Ketika Anda memilikinya,
Anda memulai blok Select Case…End Select.
Untuk melakukannya, Anda perlu menyediakan variabel yang ingin Anda cocokkan;
pada kasus ini, Anda menggunakan nama yang diseleksi pada kotak list. Di dalam
blok Select Case…End Select, Anda
mendefinisikan statemen-statemen Case
terpisah untuk tiap kondisi yang akan diperiksa. Pada contoh ini, Anda memiliki
lima, dan masing-masing ditetapkan untuk merespon nama yang berbeda. Jika
kecocokan didapati, Visual Basic akan mengeksekusi kode yang ada setelah
statemen Case yang relevan. Sebagai
contoh, jika Anda mengklik Krista,
maka kotak pesan akan menampilkan Bening
sebagai warna favoritnya, karena Visual Basic akan mengeksekusi baris, strWarnaFavorit = “Bening”. Jika Anda
mengklik Eduardo, maka pesan kotak akan menampilkan Merah sebagai warna favoritnya, karena Visual Basic akan
mengeksekusi strWarnaFavorit = “Merah”:
'Menggunakan
statemen Select Case untuk mendapatkan warna
'favorit
dari nama terseleksi
Select
Case strNama
Case "Bona"
strWarnaFavorit = "Kuning"
Case "Stefani"
strWarnaFavorit = "Biru Laut"
Case "Krista"
strWarnaFavorit = "Bening"
Case "Beti"
strWarnaFavorit = "Ungu
Kasih"
Case "Eduardo"
strWarnaFavorit = "Merah"
End
Select
Setelah blok Select Case…End Select, Anda
menampilkan sebuah kotak pesan:
'Menampilkan
warna favorit dari nama terseleksi
MessageBox.Show("Warna
favorit dari " & strNama & " adalah " &
strWarnaFavorit, "Demo Select")
Bagaimana Anda keluar
dari suatu blok Select Case…End Select?
Berikut adalah ilustrasi yang bisa diberikan:
1. User mengklik Krista. Event SelectedIndexChanged
diaktivasi, dan program menyimpan “Krista” di dalam strNama.
2. Program meraih statemen Select Case. Ini untuk membandingkan nilai di dalam strNama dengan salah satu dari lima nama yang disediakan.
3. Visual Basic menemukan sebuah
statemen Case yang memenuhi dan
berlanjut ke strWarnaFavorit = “Bening”.
4. Visual Basic berpindah ke baris
berikutnya. Ini adalah statemen Case
lain, dan, melihat bahwa program telah menemukan kecocokan yang dicari, jadi
program berpindah ke baris pertama setelah blok Select Case…End Select dan menampilkan kotak pesan.
Statemen Select Case merupakan teknik yang mudah
dan tangguh dalam memilih sebuah pilihan dari sejumlah pilihan yang disediakan.
Namun, program akan meninggalkan atau keluar dari blok Select Case…End Select segera setelah didapati statemen Case yang sesuai dengan yang dicari.
Statemen Select Case Insensitivitas Huruf
Sama seperti If, Select Case juga
memiliki watak sensitivitas huruf; Hal ini dibuktikan pada Latihan berikut.
LATIHAN
|
Menggunakan Select Case Sensitivitas Huruf
|
Pada Latihan ini, Anda
akan membuktikan bahwa huruf besar dan huruf kecil merupakan hal yang berbeda
ketika menggunakan Select Case untuk membandingkan string.
1. Kembali ke projek Demo Select dan buka dalam mode design. Cari properti Items untuk kotak list dan buka jendel String Collection Editor kembali.
2. Ubah semua nama sehingga ia
ditampilkan dengan huruf besar, seperti ditunjukkan pada Gambar 2.12.
3. Klik OK untuk menyimpan dan kemudian
jalankan projek. Anda akan melihat bahwa ketika Anda mengklik sebuah nama,
kotak dialog tidak menetapkan warna favorit apapun, seperti ditunjukkan pada
Gambar 2.13.
GAMBAR
2.12
GAMBAR
2.13
Penjelasan
Statemen Select Case melakukan pencocokan sensitivitas huruf, sama seperti If. Ini berarti bahwa jika Anda
menyediakan nama BONA atau KRISTA pada statemen, maka tidak akan ada statemen Case yang sesuai atau cocok.
Pada awal bab ini, Anda
telah belajar bagaimana menggunakan metode String.Compare
untuk melakukan perbandingan insensitivitas huruf menggunakan statemen If. Dengan Select Case, Anda tidak
dapat menggunakan metode ini untuk melakukan perbandingan insensitivitas huruf.
Jadi untuk melakukannya, Anda perlu menggunakan teknik yang lain, yang akan
Anda pelajari pada Latihan berikut ini.
LATIHAN
|
Menggunakan Select Case Insensitivitas Huruf
|
Pada contoh ini, Anda
akan belajar cara lain dalam membandingkan string menggunakan Select Case.
1. Kembali ke projek Demo Select, buka editor kode untuk Form1,
dan lakukan beberapa perubahan berikut pada event handler SelectedIndexChanged. Perhatikan pada statemen-statemen Case:
Private
Sub listData_SelectedIndexChanged(sender As Object, e As EventArgs) Handles
listData.SelectedIndexChanged
'Mendeklarasikan
variabel-variabel
Dim strNama As String
Dim strWarnaFavorit As String =
""
'Membaca nama terseleksi
strNama =
listData.Items(listData.SelectedIndex).ToString
'Mengguanakn statemen Select Case untuk
mendapatkan warna
'favorit dari nama terseleksi
Select Case strNama.ToLower
Case "bona"
strWarnaFavorit = "Kuning"
Case "stefani"
strWarnaFavorit = "Biru Laut"
Case "krista"
strWarnaFavorit = "Bening"
Case "beti"
strWarnaFavorit = "Ungu Kasih"
Case "eduardo"
strWarnaFavorit = "Merah"
End Select
'Menampilkan warna favorit dari nama
terseleksi
MessageBox.Show("Warna favorit
dari " & strNama & " adalah " &
strWarnaFavorit,
"Demo Select")
End Sub
2. Jalankan projek dan coba memilih
suatu nama lagi. Kali ini, Anda akan melihat kotak dialog yang mencantumkan
warna favorit dari orang yang diklik, seperti ditunjukkan pada Gambar 2.14.
GAMBAR
2.14
Penjelasan
Untuk membuat seleksi
insensitivitas huruf pada contoh ini, Anda perlu mengkonversi variabel strNama menjadi semua huruf kecil. Ini
dilakukan menggunakan metode ToLower:
Select Case strNama.ToLower
Ini berarti bahwa apapun
string yang diberikan (apakah itu “BONA” atau “Bona”), string itu akan selalu
dikonversi menjadi semua huruf kecil (“bona”). Namun, ketika Anda melakukan
ini, Anda perlu memastika bahwa Anda sedang membandingkan apel dengan apel,
inilah mengapa Anda perlu mengkonversi nilai yang sedang Anda periksa dengan
statemen-statemen Case menjadi semua
huruf kecil. Oleh karena itu, ketika diberikan “BONA”, program akan
mengkonversinya menjadi “bona”, dan mencoba mencari Case yang cocok dengan “bona”:
Select
Case strNama.ToLower
Case "bona"
strWarnaFavorit = "Kuning"
Case "stefani"
strWarnaFavorit = "Biru Laut"
Case
"krista"
strWarnaFavorit = "Bening"
Case "beti"
strWarnaFavorit = "Ungu Kasih"
Case
"eduardo"
strWarnaFavorit = "Merah"
End
Select
Terakhir, setelah program
memiliki warna favorit, program akan menampilkan sebuah kotak pesan.
Seleksi Jamak
Anda tidak dibatasi hanya
bisa mencocokkan satu nilai di dalam suatu blok Select Case…End Select. Anda juga dapat mencocokkan beberapa item.
LATIHAN
|
Seleksi Jamak
|
Pada Latihan ini, Anda
akan memodifikasi aplikasi sehingga Anda dapat melaporkan jenis kelamin dari
apapun yang Anda klik.
1.
Kembali ke projek Demo Select, buka editor kode untuk Form1,
dan tambahkan kode yang ditebalkan pada event handler SelectedIndecChanged berikut:
'Menampilkan
warna favorit dari nama terseleksi
MessageBox.Show("Warna
favorit dari " & strNama & " adalah " &
strWarnaFavorit, "Demo
Select")
'Menggunakan sebuah statemen
Select Case untuk menampilkan jenis kelamin seseorang
Select strNama.ToLower
Case "bona", "eduardo"
MessageBox.Show("Jenis kelamin ini
adalah laki-laki.", "Demo Select")
Case "stefani", "beti",
"krista"
MessageBox.Show("Jenis kelamin ini
adalah perempuan.", "Demo Select")
End
Select
2.
Jalankan projek dan klik salah satu
dari nama wanita. Anda akan melihat hasil seperti ditunjukkan pada Gambar 2.15,
setelah kotak pesan yang mengindikasikan warna favorit dari orang tersebut
ditampilkan.
GAMBAR
2.15
Penjelasan
Sekarang lihat pada
bagaimana seleksi jamak dilakukan. Kode yang Anda gunakan untuk membaca nama
dan menginisialisasi blok Select Case tetap sama. Namun, pada tiap
statemen Case Anda menyediakan
sebuah daftar nilai yang mungkin yang dipisahkan dengan koma. Pada statemen Case pertama, program melihat “bona”
atau “eduardo”. Jika salah satu statemen Case
memiliki kecocokan, program akan mengeksekusi kode yang ada setelahnya:
MessageBox.Show("Jenis kelamin ini adalah
laki-laki.", "Demo Select")
Pada statemen kedua,
program melihat “stefani”, “beti”, atau “krista”. Jika salah satu statemen Case memiliki kecocokan, program akan
mengeksekusi kode yang ada setelahnya:
MessageBox.Show("Jenis kelamin ini adalah
perempuan.", "Demo Select")
Statemen Case Else
Apa yang terjadi jika
tidak ada statemen Case yang
memiliki kecocokan? Anda telah melihat hal ini sebelumnya pada kasus
sensitivitas huruf dari Select Case. Pada Latihan berikutnya, Anda
akan melihatnya tetapi menggunakan statemen Case Else.
LATIHAN
|
Menggunakan Case Else
|
1. Kembali ke mode design, cari
properti Items dari kotak list, dan
buka kembali jendela String Collection Editor. Tambahkan nama lain dengan semua huruf besar pada koleksi
tersebut dan kemudian klik tombol OK.
2. Pada event handler listData_SelectedIndexChanged,
tambahkan kode yang ditebalkan berikut:
'Menggunakan
sebuah statemen Select Case untuk menampilkan jenis kelamin seseorang
Select
strNama.ToLower
Case
"bona", "eduardo"
MessageBox.Show("Jenis kelamin ini
adalah laki-laki.", "Demo Select")
Case
"stefani", "beti", "krista"
MessageBox.Show("Jenis kelamin ini
adalah perempuan.", "Demo Select")
Case
Else
MessageBox.Show("Saya tidak
mengetahui jenis kelamin dari orang ini",
"Demo
Select")
End
Select
3. Jalankan projek dan klik nama
terakhir yang baru saja Anda tambahkan. Anda akan melihat hasil yang sama
seperti ditampilkan pada Gambar 2.16.
GAMBAR
2.16
Penjelasan
Statemen Case Else dipakai jika tidak ada satupun statemen Case yang memiliki kecocokan dengan apa yang Anda cari. Tidak ada Case “toni” yang didefinisikan di dalam
blok, jadi statemen Case Else akan dieksekusi. Pada contoh ini,
Anda menampilkan sebuah kotak pesan yang mengindikasikan bahwa Anda tidak
mengetahui jenis kelamin dari orang yang diseleksi.
Tipe-Tipe Data Berbeda Pada Select Case
Pada bab ini, Anda telah
menggunakan Select Case pada variabel-variabel bertipe String. Namun, Anda dapat menggunakan Select Case pada semua tipe data dasar pada Visual Basic, seperti Integer, Double, dan Boolean.
Pada prakteknya, tipe
data yang paling sering digunakan pada Select
Case adalah String dan Integer.
LOOP
Ketika menuliskan
program, Anda seringkali perlu melakukan pekerjaan yang sama beberapa kali
untuk mendapatkan apa yang Anda inginkan. Sebagai contoh, Anda bisa saja perlu
membaca biaya telepon untuk semua konsumen, atau membaca 10 file dari disk
komputer Anda.
Untuk melakukannya, Anda
menggunakan loop, dan pada bagian ini Anda akan mempelajari dua jenis loop yang
tersedia pada Visual Basic:
a. Loop
For: Loop ini dipakai untuk jumlah
perulangan tertentu yang telah diketahui sebelumnya.
b. Loop
Do: Loop ini tetap beriterasi
sepanjang kondisi tertentu dipenuhi.
Loop For…Next
Loop paling sederhana
adalah loop For…Next.
LATIHAN
|
Menggunakan Loop For…Next
|
Anda akan belajar
membangun sebuah loop For…Next pada
Latihan ini.
1. Ciptakanlah sebuah projek Windows Forms Application dengan nama Loop.
2. Tambahkanlah sebuah kontrol ListBox dan sebuah kontrol Button pada form.
3. Ubah properti Name dari kotak list menjadi listData
dan properti IntegralHeight menjadi False.
4. Ubah properti Name dari tombol menjadi tombolLoopForNext.
Tetapkan properti Text-nya menjadi Loop For Next, seperti
ditunjukkan pada Gambar 2.17.
GAMBAR
2.17
5. Klik ganda pada tombol untuk
menciptakan event handler Click-nya
dan tambahkan kode yang ditebalkan berikut:
Private
Sub tombolLoopForNext_Click(sender As Object, e As EventArgs) Handles
tombolLoopForNext.Click
'Mendeklarasikan variabel
Dim intCacah As Integer
'Membersihkan kotak list
BersihkanList()
'Melakukan loop
For intCacah = 1 To 5
'Menambahkan item pada kotak list
listData.Items.Add("Saya adalah
item ke- " & intCacah.ToString &
" di dalam
kotak list!")
Next
End
Sub
6. Sekarang ciptakan metode berikut:
Private
Sub BersihkanList()
'Membersihkan list
listData.Items.Clear()
End
Sub
7. Simpan dan jalankan projek dan
kemudian klik tombol Loop For Next.
Anda akan melihat hasil seperti ditunjukkan pada Gambar 2.18.
GAMBAR
2.18
Penjelasan
Pertama, di dalam event
handler Clik, Anda mendefinisikan sebuah variabel:
'Mendeklarasikan
variabel
Dim intCacah As Integer
Selanjutnya, Anda
membersihkan kotak list dengan memanggil metode BersihkanList. Meskipun list kosong pada titik ini, Anda akan
menambahkan beberapa tombol lain pada projek ini, dan ingin membandingkan hasil
dari tiap tombol:
'Membersihkan
kotak list
BersihkanList()
Kemudian Anda memulai
loop dengan menggunakan katakunci For.
Ini memberitahu Visual Basic bahwa Anda ingi menciptakan sebuah loop. Segala
sesuatu yang mengikuti katakunci For dipakai untuk mendefinisikan bagaimana
loop beraksi. Pada kasus ini, Anda sedang memberikannya variabel yang Anda
ciptakan dan memberitahunya untuk mencacah dari 1 sampai 5:
'Melakukan loop
For intCacah = 1 To 5
Variabel yang Anda
berikan pada loop (pada kasus ini, intCacah)
dikenal sebagai variabel kendali loop. Ketika Anda pertama kali memasuki loop,
Visual Basic menetapkan variabel kendali ini menjadi nilai cacah awal, pada
kasus ini, 1. Setelah loop dimulai, Visual Basic bergerak ke baris pertama di
dalam loop For, pada kasus ini,
baris yang menambahkan sebuah string pada kotak list:
'Menambahkan item
pada kotak list
listData.Items.Add("Saya
adalah item ke- " & intCacah.ToString &
" di dalam kotak
list!")
Kali ini, baris kode ini
menambahkan Saya adalah item ke-1 di
dalam kotak list. Visual Basic kemudian bergerak ke statemen Next, dan hal menarik ini perlu
dicermati:
Next
Ketika statemen Next dieksekusi, Visual Basic
menginkremen variabel kendali sebesar satu. Pertama kali Next dieksekusi, nilai di dalam intCacah berubah dari 1 menjadi 2. Jika nilai dari variabel kendali
kurang dari atau sama dengan nilai henti (pada kasus ini, 5), Visual Basic akan
mundur kembali ke baris pertama setelah statemen For, pada kasus ini:
'Menambahkan item
pada kotak list
listData.Items.Add("Saya
adalah item ke- " & intCacah.ToString &
" di dalam kotak
list!")
Kali ini, baris kode ini
menambahkan Saya adalah item ke-2 di
dalam kotak list. Lagi, setelah baris ini dieksekusi, Visual Basic akan
mengeksekusi statemen Next. Nilai
dari intCacah sekarang diinkremen
dari 2 menjadi 3, dan karena 3 kurang dari atau sama dengan 5, Visual Basic
mundur ke baris yang menambahkan item pada list. Ini terjadi sampai intCacah diinkremen dari 5 menjadi 6.
Karena 6 lebih besar dari nilai henti untuk loop, loop akan berhenti
dieksekusi.
Metode yang Anda
definisikan hanya memuat satu baris kode tetapi pendaur-ulangannya menjadi
nyata pada latihan ini. Metode ini hanyalah membersihkan koleksi Items dari kotak list:
Private Sub
BersihkanList()
'Membersihkan
list
listData.Items.Clear()
End Sub
Menggunakan Katakunci Step
Anda tidak harus
mengawali loop Anda dengan 1, karena Anda bisa memilih sembarang nilai yang
Anda sukai. Anda juga tidak harus menginkremen variabel kendali loop sebesar 1
pada tiap iterasi, karena Anda bisa menginkremennya dengan sembarang nilai yang
Anda sukai.
LATIHAN
|
Menggunakan Step
|
Pada latihan ini, Anda
akan belajar tentang fleksibilitas katakunci Step.
1. Kembali ke mode Design untuk projek Loop. Tambahkan sebuah kontrol Button pada form Anda. Tetapkan
properti Name menjadi tombolLoopForNextDenganStep dan
properti Text dengan Loop For Next dengan Step.
2. Klik ganda pada tombol tersebut dan
tambahkan kode yang ditebalkan berikut pada event handler Click:
Private
Sub tombolLoopForNextDenganStep_Click(sender As Object, e As EventArgs)
Handles tombolLoopForNextDenganStep.Click
'membersihkan list
BersihkanList()
'Melakukan loop
For intCacah As Integer = 4 To 62 Step 7
'Menambahkan item pada kotak list
listData.Items.Add(intCacah.ToString)
Next
End
Sub
3. Jalankan projek dan klik tombol Loop For Next dengan Step. Anda akan
melihat
hasil seperti ditunjukkan pada Gambar 2.19.
GAMBAR 2.19
Penjelasan
Hal yang menarik pada
contoh ini terjadi pada statemen ini:
'Melakukan loop
For intCacah As Integer = 4 To 62 Step 7
Pertama, perhatikan bahwa
Anda tidak mendeklarasikan variabel intCacah
menggunakan statemen Dim. Ini
dilakukan sebagai bagian dari statemen For
dan membuat variabel ini berwatak lokal pada loop ini. Dengan menggunakan
katakunci As dan tipe data untuk
variabel ini (pada kasus ini, Integer),
Anda secara efektif mendeklarasikan sebuah variabel inline.
Selanjutnya, tidak
menggunakan 1 sebagai nilai awal, Anda menggunakan 4. Ini berarti bahwa pada
iterasi pertama loop, intCacah
ditetapkan 4, yang dapat Anda lihat karena item pertama yang ditambahkan pada
list adalah 4. Anda menggunakan katakunci Step
untuk memberitahu loop untuk menginkremen variabel kendali sebesar 7 pada tiap
iterasi, bukan sebesar nilai default 1. Inilah mengapa, ketika Anda menjalankan
iterasi kedua loop, intCacah
ditetapkan 11, bukan 5.
Meskipun Anda memberikan For sebuah nilai henti 62, loop
sebenarnya berhenti pada 60 karena nilai henti adalah nilai maksimum. Setelah
iterasi kesembilan, intCacah
bernilai 67, yang bernilai lebih dari 62, jadi loop berhenti.
Loop Mundur
Dengan menggunakan nilai Step yang bernilai kurang dari 0 (atau
sebuah nilai negatif), Anda dapat membuat loop berjalan mundur, seperti
didemonstrasikan pada latihan berikut.
LATIHAN
|
Loop Mundur
|
Pada contoh ini, Anda
akan membuat sebuah loop mundur.
1. Kembali ke mode Design dan tambahkan
kontrol Button lain pada form Anda, tetapkan properti Name menjadi tombolLoopForNextMundur
dan properti Text menjadi Loop For Next Mundur.
2. Klik ganda pada tombol ini dan
tambahkan kode yang ditebalkan berikut pada event handler Click-nya:
Private
Sub tombolLoopForNextMundur_Click(sender As Object, e As EventArgs)
Handles tombolLoopForNextMundur.Click
'membersihkan list
BersihkanList()
'Melakukan loop
For intCacah As Integer = 10 To 1 Step -1
'Menambahkan item pada kotak list
listData.Items.Add(intCacah.ToString)
Next
End
Sub
3. Jalankan projek dan klik tombol Loop For Next Mundur. Anda akan melihat
hasil seperti ditunjukkan pada Gambar 2.20.
Penjelasan
Amati kode tersebut. Jika
Anda menggunakan nilai negatif, seperti -1, loop For…Next mencoba menambahkan -1 pada nilai kendali terkini.
Penambahan nilai negatif akan mengurangi nilai dari variabel kendali, jadi intCacah berubah dari nilai awalnya 10
menjadi nilai baru 9, dan seterusnya sampai nilai henti dicapai.
Loop For Each … Next
Pada prakteknya, pada
kasus ini, mustahil Anda bisa menggunakan loop For…Next seperti diilustrasikan di sini. Karena cara bagaimana .NET
Framework bekerja, Anda umumnya akan menggunakan derivatif dari loop For…Next, yang dinamakan dengan loop For Each … Next.
Pada algoritma-algoritma
yang Anda rancang, kapanpun sebuah loop diperlukan, Anda akan memiliki
sekelompok hal yang biasanya diekspresikan sebagai suatu array. Sebagai contoh,
Anda bisa saja ingin melihat semua file di dalam sebuah folder, untuk melihat
file-file yang lebih lebih besar dari ukuran tertentu. Ketika Anda meminta .NET
Framework untuk menampilkan daftar file pada drive tertentu, apa yang
dihasilkan adalah sebuah array string, dengan tiap string di dalam array
tersebut menjelaskan satu file.
LATIHAN
|
Loop For Each
|
Pada latihan ini, Anda
akan memodifikasi aplikasi Loop Anda sehingga ia akan menghasilkan sejumlah
folder pada drive C: Anda.
1. Kembali ke mode Design dan tambahkan
kontrol Button lain pada form Anda,
tetapkan properti Name menjadi tombolLoopForEach dan properti Text menjadi Loop For Each.
2. Klik ganda pada tombol ini dan
tambahkan kode yang ditebalkan berikut pada event handler Click-nya:
Private
Sub tombolLoopForEach_Click(sender As Object, e As EventArgs)
Handles tombolLoopForEach.Click
'membersihkan list
BersihkanList()
'Menampilkan setiap folder di folde akar
dari drive C
For Each strFolder As String In
My.Computer.FileSystem.GetDirectories("C:\")
'Menambahkan item pada kotak list
listData.Items.Add(strFolder)
Next
End
Sub
3. Jalankan aplikasi dan klik pada
tombol Loop For Each. Anda akan
melihat sejumlah folder yang ada pada drive C: Anda.
Penjelasan
Pada loop For Each ini, namespace My
pada .NET Framework menyediakan sejumlah kelas yang mempermudah mencari
informasi yang akan sering Anda gunakan. Khususnya, kelas Computer menyediakan beberapa kelas yang berkaitan dengan komputer
Anda. Karena Anda ingin mengetahui tentang file dan folder, Anda menggunakan
kelas FileSystem, yang menyediakan
sejumlah metode dan properti untuk bekerja dengan file dan folder.
Metode GetDirectories menghasilkan sekumpulan
string yang merepresentasikan nama dari tiap direktori (folder) pada komputer
Anda. Pada kasus ini, Anda menggunakannya untuk menghasilkan nama dari tiap
folder pada drive C: Anda.
Konsep pada loop For Each … Next adalah bahwa untuk
setiap iterasi, Anda akan diberikan “sesuatu” yang akan Anda gunakan. Anda
perlu menyediakan sumber data (pada kasus ini, sekumpulan string yang
merepresentasikan nama-nama folder) dan sebuah variabel kendali. Metode GetDirectories menyediakan kumpulan
string tersebut, dan variabel inline strFolder
berperan sebagai variabel kendali:
'Menampilkan
setiap folder di folde akar dari drive C
For Each
strFolder As String In My.Computer.FileSystem.GetDirectories("C:\")
Next
Ini berarti bahwa pada
iterasi pertama, strFolder sama
dengan item pertama pada koleksi string (pada kasus ini, “C:\$Recycle.Bin”).
Anda kemudian menambahkan item tersebut pada kotak list:
'Menambahkan item
pada kotak list
listData.Items.Add(strFolder)
Sama seperti loop For…Next, untuk setiap iterasi loop,
Anda diberikan sebuah string yang memuat sebuah nama folder, dan Anda
menambahkan string tersebut pada kotak list. Ketika tidak ada lagi folder yang dihasilkan,
eksekusi otomatis keluar dari loop.
Loop Do…Loop
Jenis loop lain yang
dapat Anda gunakan adalah loop yang tetap beriterasi sampai suatu kondisi
tertentu dipenuhi. Ini dikenal dengan loop Do…Loop,
ada sejumlah variasi dari loop ini.
Loop pertama yang akan
Anda pelajari adalah loop Do Until…Loop.
Jenis loop ini tetap beriterasi sampai sesuatu terjadi.
LATIHAN
|
Menggunakan Loop Do Until…Loop
|
Untuk latihan ini, Anda
akan menggunakan pembangkit bilangan acak yang ada pada .NET Framework dan
menciptakan sebuah loop yang akan tetap membangkitkan bilangan acak sampai ia
menghasilkan nilai 10. Ketika Anda mendapatkan nilai 10, Anda akan menghentikan
loop.
1. Kembali ke mode Design pada projek Loop, tambahkan kontrol Button pada form Anda, dan tetapkan
properti Name menjadi tombolLoopDoUntil dan properti Text menjadi Loop Do Until.
2. Klik ganda pada tombol tersebut dan
tambahkan kode yang ditebalkan berikut pada event handler Click-nya:
Private
Sub tombolLoopDoUntil_Click(sender As Object, e As EventArgs)
Handles tombolLoopDoUntil.Click
'Mendeklarasikan variabel-variabel
Dim objAcak As New Random
Dim intNilaiAcak As Integer = 0
'Membersikan list
BersihkanList()
'Memproses loop sampai intNilaiAcak = 10
Do Until intNilaiAcak = 10
'Mendapatkan sebuah nilai acak antara 0
sampai 24
intNilaiAcak = objAcak.Next(25)
'menambahkan nilai itu pada kotak list
listData.Items.Add(intNilaiAcak.ToString)
Loop
End
Sub
3. Jalankan projek dan klik tombol Loop Do Until. Anda akan melihat hasil
yang mirip dengan apa yang ditunjukkan pada Gambar 2.21. Tetap klik tombol
tersebut. Banyak elemen di dalam list akan berbeda.
Penjelasan
Loop Do Until…Loop tetap beriterasi sampai kondisi yang diberikan
terpenuhi. Ketika Anda menggunakan jenis loop ini, tidak ada variabel kendali
yang dipakai untuk menjejak loop. Anda sendiri yang menjejak posisi terkini
dari loop. Anda memulainya dengan mendeklarasikan sebuah variabel (yang juga
dikenal dengan objek) dari kelas Random,
yang menyediakan metode-metode untuk membangkitkan nilai-nilai acak. Objek ini
diberikan prefiks obj untuk
mengindikasikan bahwa ia adalah suatu objek dari sebuah kelas. Variabel
berikutnya yang Anda deklarasikan adalah intNilaiAcak,
yang dipakai untuk menerima nilai acak yang dibangkitkan oleh objek objAcak Anda:
'Mendeklarasikan
variabel-variabel
Dim objAcak As
New Random
Dim intNilaiAcak As Integer = 0
Kemudian Anda
membersihkan atau mengosongkan item-item sebelumnya yang ada pada kotak list:
'Membersikan list
BersihkanList()
Selanjutnya, Anda
membangun loop, yang mengindikasikan bahwa Anda ingin loop tetap beriterasi
sampai intNilaiAcak bernilai sama
dengan 10:
'Memproses loop sampai
intNilaiAcak = 10
Do Until intNilaiAcak = 10
Dengan tiap iterasi loop,
Anda meminta pembangkit bilangan acak untuk menghasilkan suatu nilai acak baru
dan menyimpannya di dalam variabel intNilaiAcak.
Ini dilakukan dengan memanggil metode Next
dari objek objAcak.
Pada kasus ini, Anda
melewatkan 25 sebagai parameter pada metode Next, yang berarti bahwa sembarang
nilai yang dihasilkan haruslah di antara 0 dan 24, inklusif. Jadi, nilai yang
Anda berikan kepada metode Next
haruslah sebuah nilai yang lebih besar 1 dari nilai tertinggi yang akan Anda
dapatkan. Anda kemudian menambahkan nilai yang dibangkitkan pada kotak list:
'Mendapatkan
sebuah nilai acak antara 0 sampai 24
intNilaiAcak
= objAcak.Next(25)
'menambahkan
nilai itu pada kotak list
listData.Items.Add(intNilaiAcak.ToString)
Loop
Hal menarik terjadi
ketika Anda menjumpai statemen Loop.
Pada titik ini, Visual Basic tidak kembali ke baris pertama di dalam loop,
tetapi ke baris Do Until. Ketika
eksekusi kembali ke Do Until,
ekspresi itu akan dievaluasi. Kecuali jika ekspresi itu menghasilkan False, eksekusi akan dilanjutkan ke
baris pertama di dalam loop. Namun, jika intNilaiAcak
bernilai 10, ekspresi akan menghasilkan True,
dan eksekusi akan berlanjut ke baris pertama setelah statemen Loop.
Loop Do While…Loop
Konsep kebalikan dari
loop Do Until…Loop adalah loop Do While…Loop. Jenis loop ini tetap
beriterasi sampai kondisi tertentu bernilai True.
LATIHAN
|
Menggunakan Loop Do While…Loop
|
Pada latihan ini, Anda
akan melihat sebuah loop Do While…Loop
untuk tetap beriterasi ketika nilai acak yang dihasilkan bernilai kurang dari
15.
1. Kembali ke mode Design pada projek Loop, tambahkan kontrol Button pada form Anda, dan tetapkan
properti Name menjadi tombolLoopDoWhile dan properti Text menjadi Loop Do While.
2. Klik ganda pada tombol tersebut dan
tambahkan kode yang ditebalkan berikut pada event handler Click-nya:
Private
Sub tombolLoopDoWhile_Click(sender As Object, e As EventArgs)
Handles tombolLoopDoWhile.Click
'Mendeklarasikan variabel-variabel
Dim objAcak As New Random
Dim intNilaiAcak As Integer = 0
'Membersikan list
BersihkanList()
'Memproses loop sampai intNilaiAcak = 10
Do While intNilaiAcak < 15
'Mendapatkan sebuah nilai acak antara 0
sampai 24
intNilaiAcak = objAcak.Next(25)
'menambahkan nilai itu pada kotak list
listData.Items.Add(intNilaiAcak.ToString)
Loop
End
Sub
3. Jalankan projek dan klik pada tombol
Loop Do While. Anda akan melihat
hasil yang mirip dengan apa yang ditampilkan pada Gambar 2.22.
Penjelasan
Setiap kali Anda menekan
tombol ini, loop akan dieksekusi sepanjang pembangkit bilangan acak
menghasilkan nilai acak yang kurang dari 15.
Loop Do While…Loop tetap beriterasi sepanjang ekspresi yang diberikan
bernilai True. Ketika ekspresi
bernilai False, loop akan selesai
dieksekusi. Ketika Anda mengawali loop, Anda perlu memastikan bahwa intNilaiAcak bernilai kurang dari 15.
Jika ya, ekspresi akan bernilai True,dan Anda dapat menjalankan kode di dalam
loop:
'Memproses loop
sampai intNilaiAcak = 10
Do While
intNilaiAcak < 15
'Mendapatkan
sebuah nilai acak antara 0 sampai 24
intNilaiAcak
= objAcak.Next(25)
'menambahkan
nilai itu pada kotak list
listData.Items.Add(intNilaiAcak.ToString)
Loop
Sekali lagi, ketika
statemen Loop dijumpai, Visual Basic akan melompat mundur ke statemen Do While.
Ketika di sana, ia akan mengevaluasi ekspresi kembali. Jika bernilai True, kompiler akan mengeksekusi kode
yang ada di dalam loop sekali lagi. Jika bernilai False (karena intNilaiAcak
bernilai lebih besar atau sama dengan 15), maka Visual Basic akan mengeksekusi
baris pertama setelah loop, yang secara efektif mengakhiri eksekusi loop.
Ekspresi Akseptabel untuk Do…Loop
Anda mungkin
bertanya-tanya apakah jenis ekspresi yang dapat Anda gunakan pada dua variasi
dari Do…Loop. Jika Anda dapat
menggunakannya pada statemen If,
maka Anda dapat menggunakannya pada Do…Loop.
Sebagai contoh, Anda dapat menuliskan ini:
Do
While intX > 10 And intX < 100
atau
Do
Until (intX > 10 And intX < 100) Or intY = True
atau
Do
While String.Compare(strA, strB) > 0
Versi Lain dari Do…Loop
Adalah dimungkinkan untuk
menempatkan statemen Until atau While setelah Loop, menggantikan Do.
Perhatikan dua loop berikut:
Do
While intX < 3
intX += 1
Loop
dan
Do
intX += 1
Loop
While intX < 3
Pada tatapan pertama,
tampak bahwa While intX < 3
seperti dipindah tempatkan. Anda mungkin berpikir bahwa kedua loop ini
ekivalen, tetapi ada perbedaan kecil. Dimisalkan bahwa nilai dari intX lebih besar dari 3 (seperti 4)
ketika kedua loop Do ini dimulai.
Loop pertama tidak akan dieksekusi sama sekali. Ketika Loop While intX < 3 dieksekusi, loop ini akan langsung selesai.
Ini terjadi meskipun kondisi yang mengatakan bahwa intX harus lebih kecil dari 3.
Sekarang, perhatika kedua
loop Do Until berikut:
Do
Until intX = 3
intX += 1
Loop
dan
Do
intX += 1
Loop
Until intX = 3
Sekali lagi, meskipun
pada tatapan pertama kedua loop ini ekivalen, tetapi sebenarnya tidak; dan
keduanya berperilaku sedikit berbeda. Katakanlah bahwa intX adalah 3. Loop pertama tidak akan dieksekusi sama sekali,
karena intX telah memenuhi kondisi
untuk keluar dari loop. Namun, loop kedua akan dieksekusi sekali saja.
Kemudian, ketika Loop Until intX = 3
dieksekusi untuk pertama kalinya, intX
sekarang bernilai 4, jadi Visual Basic kembali ke awal loop dan menginkremen
intX menjadi 5, dan seterusnya. Pada dasarnya, ini merupakan contoh klasik dari
loop tak berhingga, yang tidak akan pernah berhenti.
Anda mungkin juga akan
menjumpai variasi dari Do While…Loop
yang dinamakan dengan While…End While.
Konvensi ini merupakan versi sebelumnya dari Visual Basic, tetapi pada
pengembang piranti lunak masih suka menggunakannya. Jadi, Anda perlu
mengenalinya. Kedua loop ini ekivalen, tetapi sebaiknya Anda menggunakan loop
yang pertama:
Do
While intX < 3
intX += 1
Loop
dan
While
intX < 3
intX += 1
End
While
Loop Bersarang
Anda bisa saja perlu
memulai sebuah loop yang ada di dalam loop lain. Ini dikenal dengan loop
bersarang, dan hal ini sama dengan penyarangan yang telah Anda lihat pada
statemen If.
LATIHAN
|
Menggunakan Loop Bersarang
|
Pada latihan ini, Anda
akan melihat bagaimana menciptakan dan menjalankan sebuah loop yang ada di
dalam loop lain.
1. Kembali ke mode Design pada projek Loop, tambahkan kontrol Button pada form Anda, dan tetapkan
properti Name menjadi tombolLoopBersarang dan properti Text menjadi Loop Bersarang.
2. Klik ganda pada tombol tersebut dan
tambahkan kode yang ditebalkan berikut pada event handler Click-nya:
Private
Sub tombolLoopBersarang_Click(sender As Object, e As EventArgs)
Handles tombolLoopBersarang.Click
'Membersikan list
BersihkanList()
'Memproses loop luar
For loopLuarInt As Integer = 1 To 2
'Memproses loop dalam
For loopDalamInt As Integer = 1 To 3
listData.Items.Add(loopLuarInt.ToString
&
", " &
loopDalamInt.ToString)
Next
Next
End
Sub
GAMBAR
2.23
3. Jalankan program dan klik tombol Loop Bersarang. Anda akan melihat hasil seperti ditunjukkan pada Gambar 2.23.
Penjelasan
Kode ini cukup sederhana.
Loop pertama Anda (loop luar) beriterasi dengan mengubah loopLuarInt dari 1 sampai 2, dan loop bersarang (loop dalam)
beriterasi dengan mengubah loopDalamInt
dari 1 sampai 3. Di dalam loop bersarang, Anda memiliki sebaris kode yang
menampilkan nilai terkini dari loopLuarInt
dan loopDalamInt:
'Memproses loop
luar
For loopLuarInt
As Integer = 1 To 2
'Memproses
loop dalam
For
loopDalamInt As Integer = 1 To 3
listData.Items.Add(loopLuarInt.ToString
&
", " & loopDalamInt.ToString)
Next
Next
Setiap statemen For harus dipasangkan dengan sebuah
statemen Next, dan setiap statemen Next harus dipasangkan dengan statemen For terakhir yang diciptakan. Pada
kasus ini, statemen Next pertama
adalah untuk loop 1 To 3, yang menyebabkan loopDalamInt
diinkremen. Ketika nilai dari loopDalamInt
menjadi 4, loop dalam selesai dieksekusi.
Setelah loop dalam
selesai dieksekusi, statemen Next
lain dijumpai. Statemen ini berpasangan dengan statemen For pertama, jadi loopLuarInt
ditetapkan 2 dan Visual Basic pindah ke baris pertama pada loop luar, pada
kasus ini, statemen For lain.
Setelah di sana, loop dalam dimulai sekali lagi. Meskipun pada latihan ini Anda
menggunakan loop For…Next bersarang,
Anda juga dapat membuat loop Do…While
bersarang dan bahkan menggabungkan keduanya.
Mengaborsi Loop
Kadangkala Anda tidak
ingin melihat loop untuk menyelesaikan iterasinya. Sebagai contoh, Anda ingin
mencari sesuatu pada suatu daftar, dan ketika Anda menemukannya, tidak ada lagi
alasan untuk melihat sisa daftar yang ada.
LATIHAN
|
Mengaborsi Loop
|
Pada latihan ini, Anda
akan menampilkan semua daftar pada drive lokal Anda, tetapi kali ini, ketika
Anda menemukan c:\Program Files,
Anda akan menampilkan sebuah pesan dan keluar.
1. Kembali ke mode Design pada projek Loop, tambahkan kontrol Button pada form Anda, dan tetapkan
properti Name menjadi tombolAborsiLoop dan properti Text menjadi Aborsi Loop.
2. Klik ganda pada tombol tersebut dan
tambahkan kode yang ditebalkan berikut pada event handler Click-nya:
Private
Sub tombolAborsiLoop_Click(sender As Object, e As EventArgs)
Handles tombolAborsiLoop.Click
'Membersikan list
BersihkanList()
'Menampilkan setiap folde di drive C:\ Anda
For Each strFolder As String In
My.Computer.FileSystem.GetDirectories("C:\")
'Menambahkan item pada kotak list
listData.Items.Add(strFolder)
'Apakah Anda memiliki folder C:\Program
Files?
If String.Compare(strFolder,
"c:\program files", True) = 0 Then
'Memberitahu user
MessageBox.Show("Ditemukan,
keluar dari loop sekarang.", "Loop")
'Mengaborsi loop
Exit For
End If
Next
End
Sub
3. Jalankan program dan klik tombol Aborsi Loop. Anda akan melihat sesuatu yang mirip dengan hasil yang
ditampilkan pada Gambar 2.24.
GAMBAR 2.24
Penjelasan
Kali ini, dengan tiap
iterasi, Anda menggunakan metode String.Compare
yang telah didiskusikan sebelumnya untuk memeriksa nama folder untuk melihat
apakah ia cocok dengan C:\Program Files:
'Apakah Anda
memiliki folder C:\Program Files?
If String.Compare(strFolder, "c:\program
files", True) = 0 Then
Jika ya, maka hal pertama
yang Anda lakukan adalah menampilkan sebuah kotak pesan:
'Memberitahu user
MessageBox.Show("Ditemukan,
keluar dari loop sekarang.", "Loop")
Setelah user mengklik OK
untuk menutup kotak pesan, Anda menggunakan statemen Exit For untuk
menghentikan loop.
Pada kasus ini, loop
diaborsi, dan Visual Basic melanjutkan eksekusi ke baris pertama setelah
statemen Next:
'Mengaborsi loop
Exit For
Tentu, jika nama folder
tidak cocok dengan apa yang Anda cari, loop tetap beriterasi. Penggunaan loop
untuk mencari sebuah item di dalam suatu daftar item adalah hal yang paling
umum dilakukan. Setelah item yang dicari ditemukan, Anda menggunakan statemen Exit For untuk mengaborsi loop sebagai suatu cara untuk meningkatkan
kinerja aplikasi Anda. Statemen Exit
For akan menghentikan sebuah loop
jika Anda sedang menggunakan loop bersarang.
Bayangkan jika Anda
memiliki sebuah daftar dengan 1000 item. Anda menemukan item yang dicari pada
iterasi kesepuluh. Jika Anda tidak menghentikan loop segera setelah Anda
menemukan item yang dicari, maka Anda sama saja meminta komputer untuk menjejak
990 item lain dengan sia-sia. Jika Anda langsung mengaborsi loop, Anda bisa
berpindah dan mengeksekusi bagian lain dari algoritma.
Mengaborsi Do…Loop
Seperti yang Anda tebak,
Anda dapat mengaborsi Do…Loop dengan
cara yang hampir sama, seperti terlihat pada latihan berikut.
LATIHAN
|
Mengaborsi Do…Loop
|
Pada contoh ini, Anda
akan menggunakan Exit Do untuk
mengaborsi sebuah Do…Loop.
1. Kembali ke mode Design pada projek Loop, tambahkan kontrol Button pada form Anda, dan tetapkan
properti Name menjadi tombolAborsiDoLoop dan properti Text menjadi Aborsi Do Loop.
2. Klik ganda pada tombol tersebut dan
tambahkan kode yang ditebalkan berikut pada event handler Click-nya:
Private
Sub tombolAborsiDoLoop_Click(sender As Object, e As EventArgs)
Handles tombolAborsiDoLoop.Click
'Mendeklarasikan variabel
Dim
intCacah As Integer = 0
'Membersikan list
BersihkanList()
'Memproses loop
Do While intCacah < 10
'Menambahkan item pada kotak list
listData.Items.Add(intCacah.ToString)
'Menginkremen cacah sebesar 1
intCacah += 1
'Apakah Anda perlu mengaborsi loop?
If intCacah = 3 Then
Exit Do
End If
Loop
End
Sub
3. Jalankan program dan klik tombol Aborsi Do Loop. Anda akan
melihat sesuatu yang sama dengan hasil yang ditampilkan pada Gambar 2.25.
GAMBAR
2.25
Penjelasan
Pada kasus ini, karena
Anda berada di dalam sebuah Do…Loop,
Anda perlu menggunakan Exit Do, menggantikan Exit For. Namun,
prinsipnya sama. Exit Do dapat diterapkan pada Do While…Loop dan Do Until…Loop.
Loop Tak Berhingga
Ketika membangun loop,
Anda dapat menciptakan sesuatu yang dikenal dengan loop tak berhingga. Ini
adalah loop, setelah dimulai, tidak akan pernah berhenti. Perhatikan kode ini:
Dim
intX As Integer = 0
Do
intX += 1
Loop
Until intX = 0
Loop ini diawali pada
iterasi pertama. Kemudian, ketika Loop
Unit intX = 0 dieksekusi untuk pertama kalinya, intX menjadi 1. Oleh karena itu, Anda kembali ke awal loop kembali
dan menginkremen intX menjadi 2, dan
seterusnya. Apa yang penting di sini adalah bahwa intX tidak akan pernah menjadi 0. Loop menjadi tak berhingga, dan
program akan berhenti secara tak normal.
No comments:
Post a Comment