Sunday, December 11, 2016

Bab 2: Visual Basic .NET: Langkah Demi Langkah




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.


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.


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.


GAMBAR 2.21

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.


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