Wednesday, December 14, 2016

Bab 3. Visual Basic .NET Untuk Pemula



List dan Loop





Bab ini diawali dengan menunjukkan kepada Anda bagaimana menggunakan kotak periksa, yang memberikan cara yang sederhana dan cepat untuk meminta user memasukkan data. Kotak list dan kotak combo juga akan diintroduksi. Sekarang, Anda belajar bagaimana menuliskan loop, yang menyebabkan blok atau serangkaian statemen pemrograman dieksekusi. Anda juga akan belajar bagaimana membangkitkan nilai-nilai acak dan menggunakannya untuk sejumlah tujuan di dalam sebuah program.


3.1 Kotak Masukan
KONSEP: Kotak periksa memberikan cara yang sederhana untuk membaca masukan tanpa menggunakan kotak teks pada sebuah form.

Kotak masukan adalah sebuah cara yang cepat dan sederhana untuk meminta user untuk memasukkan data. Gambar 3.1 menunjukkan contoh kotak masukan. Pada gambar, kotak masukan menampilkan pesan kepada user dan menyediakan sebuah kotak periksa agar user mengetikkan masukan. Kotak masukan juga memiliki tombol OK dan Cancel.

Anda dapat menampilkan kotak periksa dengan fungsi InputBox. Ketika fungsi ini dipanggil, sebuah kotak masukan seperti yang ditunjukkan pada Gambar 3.1 ditampilkan di layar. Berikut adalah bentuk umum sederhana dari fungsi ini:

InputBox(Prompt, [Judul], [Default])


Gambar 3.1 Kotak masukan yang meminta nama user


Kurung siku pada bentuk umum yang ditunjukkan mengapit argumen Judul dan Default mengindikasikan bahwa kedunya bersifat opsional. Argumen pertama, Prompt, adalah sebuah string yang ditampilkan kepada user pada kotak masukan. Normalnya, string tersebut meminta user untuk memasukkan sebuah nilai. Argumen-argumen opsional, Judul dan Default, dijelaskan sebagai berikut:

  • Judul adalah sebuah string yang ditampilkan pada batang judul dari kotak masukan. Jika Anda tidak menyediakan nilai untuk Judul, nama dari projek akan ditampilkan.
  • Default adalah sebuah string yang awalnya ditampilkan pada kotak teks dari kotak masukan. Jika Anda tidak menyediakan sebuah nilai untuk Default, kotak teks dari kotak masukan dibiarkan kosong.

Jika user mengklik tombol OK pada kotak masukan atau menekan kunci Enter, fungsi ini akan menghasilkan nilai string dari kotak teks pada kotak masukan. Jika user mengklik tombol Cancel, fungsi ini akan menghasilkan sebuah string kosong. Untuk membaca nilai yang dihasilkan oleh fungsi InputBox, Anda menggunakan operator penugasan untuk menugaskannya kepada sebuah variabel. Sebagai contoh, statemen berikut menampilkan kotak teks yang ditampilkan pada Gambar 3.2:

Dim strNamauser As String
strNamauser = InputBox("Masukkan namauser Anda.", "Masukan diperlukan")


Gambar 3.2 Kotak masukan yang meminta namauser


Setelah statemen ini dieksekusi, nilai yang dimasukkan oleh user pada kotak masukan disimpan sebagai sebuah string di dalam variabel strNamauser. Sebagai contoh lain, statemen berikut menampilkan kotak masukan yang ditampilkan pada Gambar 3.3, dan mengkonversi string yang dimasukkan oleh user menjadi sebuah nilai numerik:

Dim strMasukanUser As String
Dim dblNilai As Double
strMasukanUser = InputBox("Masukkan jarak.", "Sediakan sebuah nilai")
dblJarak = CDbl(strMasukanUser)


Gambar 3.3 Kotak masukan dengan nilai numerik


CATATAN: Pada banyak aplikasi, fungsi InputBox digunakan sebagai metode utama untuk membaca masukan karena ia menarik perhatian user. Fungsi ini juga menyulitkan validasi data, karena kotak masukan ditutup sebelum validasi dapat dilakukan. Meskipun ada kelemahan ini, fungsi InputBox tetap menjadi perangkat yang berguna dalam mengembangkan dan menguji aplikasi.

Sebagai latihan bagi Anda, berikut diberikan kotak masukan yang ditampilkan pada Gambar 3.4. Tuliskanlah sebuah statemen yang menampilkan kotak masukan pada lokasi default pada layar. Tuliskanlah pula sebuah statemen yang menampilkan kotak masukan dan menugaskan nilai baliknya kepada sebuah variabel integer hanya jika user mengklik tombol OK.


Gambar 3.4 Kotak masukan yang meminta sebuah nilai dari user



3.2 Kotak List
KONSEP: Kotak list menampilkan sejumlah item dan user dapat memilih satu atau lebih item dari situ.

Kontrol ListBox
Kontrol ListBox menampilkan sejumlah item dan user dapat menyeleksi satu atau lebih item dari situ. Gambar 3.5 menunjukkan sebuah form dengan dua kotak list. Pada saat program dijalankan, user memilih salah satu item, yang menyebabkan item terseleksi disorot.


Gambar 3.5 Contoh kotak list (kontrol ListBox)


Salah satu kotak list pada Gambar 3.5 tidak memiliki memiliki batang penggulung, tetapi kotak yang lain memilikinya. Batang penggulung ditampilkan ketika kotak list memiliki lebih banyak item yang dapat ditampilkan pada ruang yang disediakan. Pada gambar, kotak list atas memiliki empat item (Poodle, Great Dane, German Shepherd, dan Terrier), dan semua item ditampilkan. Kotak list bahwa menunjukkan tiga item (Siamese, Persian, dan Bobtail), tetapi karena ia memiliki batang penggulung, Anda mengatahui bahwa masih ada item lain di dalam kotak list yang tidak ditampilkan.

Menciptakan Kontrol ListBox
Anda menciptakan sebuah kontrol ListBox menggunakan salah satu metode berikut:

  • Klik ganda pada ikon ListBox pada jendela Toolbox agar kontrol ListBox ditampilkan pada form. Pindahkan kontrol tersebut ke lokasi yang diinginkan dan ubah ukurannya sesuai yang diinginkan.
  • Klik ikon ListBox pada jendela Toolbox dan gunakan mouse untuk menggeret kontrol ListBox ke atas form dengan lokasi dan ukuran yang diinginkan.

Pada mode design, kontrol ListBox akan ditampilkan sebagai sebuah persegi-panjang. Ukurannya menentukan ukuran dari kotak list. Prefiks yang akan digunakan untuk nama kontrol ListBox pada buku ini adalah list, dimana karakter pertama adalah huruf kecil dari L.

Properti Items
Entri-entri di dalam sebuah kotak list disimpan pada suatu properti dengan nama Items. Anda dapat menyimpan nilai-nilai di dalam properti Items (yang juga dikenal dengan koleksi Items) pada saat perancangan atau pada saat aplikasi dijalankan. Untuk menyimpan nilai-nilai di dalam properti Items pada saat perancangan, ikuti langkah-langkah berikut:

  1. Pastikan kontrol ListBox diseleksi pada jendela Designer.
  2. Pada jendela Properties, pengaturan untuk properti Items ditampilkan sebagai (Collection). Ketika Anda menyeleksi properti Items, sebuah tombol elipsis () ditampilkan.
  3. Klik tombol elipsis tersebut. Kotak dialog String Collection Editor akan ditampilkan, seperti ditunjukkan pada Gambar 3.6.
  4. Ketikkan nilai-nilai yang akan ditampilkan pada kotak list ke dalam kotak dialog String Collection Editor. Ketikkan setiap nilai pada baris terpisah dengan menekan kunci Enter setelah setiap entri.
  5. Setelah Anda memasukkan semua nilai, klik tombol OK.


Gambar 3.6 Kotak dialog String Collection Editor


Properti Items.Count
Anda dapat menggunakan properti Items.Count untuk menentukan banyak item yang disimpan di dalam kotak list. Ketika tidak ada item di dalam properti Items, properti Items.Count bernilai 0. Sebagai contoh, diasumsikan bahwa sebuah aplikasi memiliki kotak list dengan nama listPekerja. Statemen If…Then berikut menampilkan sebuah pesan ketika tidak ada item di dalam kotak list:

If listPekerja.Items.Count = 0 Then
    labelStatus.Text = "Tidak ada item di dalam kotak list!"
End If

Statemen berikut menugaskan banyak item di dalam kotak list kepada variabel intBanyakPekerja:

intBanyakPekerja = listPekerja.Items.Count

Pengindeksan Item
Properti Items adalah sekumpulan objek, dimana di dalamnya setiap objek memiliki sebuah indeks atau nomor. Objek pertama di dalam koleksi memiliki indeks 0, berikutnya memiliki indeks 1, dan seterusnya. Nilai indeks terakhir adalah n - 1, dimana n adalah banyak item di dalam koleksi. Ketika Anda mengakses properti Items di dalam kode, Anda perlu memberikan sebuah indeks integer. Pada contoh berikut, ekspresi ini mengakses item pertama di dalam kotak list:

listPekerja.Items(0)

Jika Anda ingin membaca sebuah item dari properti Items dan menugaskannya kepada suatu variabel, Anda perlu secara eksplisit mengkonversi item tersebut menjadi tipe data yang sama dengan variabel. Sebagai contoh, dimisalkan bahwa Anda ingin membaca item pertama di dalam kotak list listPekerja dan menugaskannya kepada strNama, sebuah variabel string. Anda akan memanggil metode ToString seperti ditunjukkan berikut:

strNama = listPekerja.Items(0).ToString()

Statemen ini membaca item yang disimpan pada listPekerja.Items(0), memanggil metode ToString, dan menugaskan string yang dihasilkan kepada variabel strNama.

Lihat contoh lain berikut. Dimisalkan bahwa sebuah aplikasi memiliki kotak list dengan nama listNomorRuang. Statemen berikut menunjukkan bagaimana menugaskan item kedua di dalam kotak list tersebut kepada sebuah variabel integer dengan nama intNomorRuang:

intNomorRuang = CInt(listNomorRuang.Items(1))

Statemen ini membaca item yang disimpan pada listNomorRuang.Items(1), mengkonversinya menjadi sebuah integer dengan fungsi CInt, dan menugaskan nilai yang dihasilkan kepada variabel intNomorRuang.

Penanganan Eksepsi yang Disebabkan Indeks
Ketika Anda menggunakan sebuah indeks pada properti Items, eksepsi akan dilempar jika indeks tersebut di luar rentang. Karena indeks diawali dari nol, nilai indeks tertinggi yang dapat Anda gunakan adalah ukuran koleksi yang dikurangi dengan satu. Anda dapat menangani error semacam itu. Pada kode berikut, diasumsikan bahwa variabel intIndeks memuat sebuah nilai yang ingin Anda gunakan sebagai indeks. Jika nilai di dalam intIndeks berada di luar rentang, eksepsi akan ditangani. Anda menampilkan properti Message (Gambar 3.7) dari objek eksepsi untuk memberitahu user tentang apa yang terjadi:

Try
    strMasukan = listBulan.Items(intIndeks).ToString()
Catch ex As Exception
    MessageBox.Show(ex.Message)
End Try

Gambar 3.7 Eksepsi dilemparkan karena indeks di luar rentang


Banyak programer lebih memilih menangani error pengindeksan ini menggunakan statemen If. Kode berikut merupakan sebuah contoh dimana di dalamnya Anda membandingkan indeks (di dalam sebuah variabel dengan nama intIndeks) dengan properti Count dari koleksi Items:

If intIndeks >= 0 And intIndeks < listBulan.Items.Count Then
    strMasukan = listBulan.Items(intIndeks).ToString()
Else
    MessageBox.Show("Indes di luar rentang: " & intIndeks)
End If

Properti SelectedIndex
Ketika user memilih sebuah item di dalam kotak list, indeks item disimpan di dalam properti SelectedIndex. Jika tidak ada item yang diseleksi, SelectedIndex bernilai -1. Anda dapat menggunakan nilai dari properti SelectedIndex sebagai sebuah indeks untuk membaca item terseleksi dari properti Items. Sebagai contoh, diasumsikan bahwa sebuah aplikasi memiliki kotak list dengan nama listLokasi. Segmen kode berikut menggunakan statemen If…Then untuk menentukan apakah user telah menyeleksi sebuah item di dalam kotak list atau tidak. Jika sebuah item diseleksi, maka kode ini menyalin item dari properti Items ke variabel string strLokasi.

If listLokasi.SelectedIndex <> -1 Then
    strLokasi = listLokasi.Items(listLokasi.SelectedIndex).ToString()
End If

Anda dapat pula menggunakan properti selectedIndex untuk membatalkan seleksi item dengan menetapkan nilainya menjadi -1. Sebagai contoh, statemen berikut mendeseleksi sebuah item terseleksi pada listLokasi:

listLokasi.SelectedIndex = -1

Properti SelectedItem
Ketika properti SelectedIndex memuat indeks dari item yang sedang terseleksi, properti SelectedItem memuat item itu sendiri. Sebagai contoh, dimisalkan bahwa kotak list listBuah memuat Apel, Pir, dan Pisang. Jika user menyeleksi Pir, statemen berikut menyalin string Pir ke variabel strBuahTerseleksi:

strBuahTerseleksi = listBuah.SelectedItem.ToString()

Properti Sorted
Anda dapat menggunakan properti Sorted dari kotak list untuk mengurutkan setiap item di dalam properti Items secara alfabetis. Properti Boolean ini ditetapkan False secara default, yang menyebabkan item-item ditampilkan sesuai urutan ketika dimasukkan ke dalam list. Ketika ditetapkan True, item-item akan diurutkan secara alfabetis.
Metode Items.Add
Untuk menyimpan nilai-nilai di dalam properti Items dengan kode pada saat aplikasi dijalankan, Anda menggunakan metode Items.Add. Berikut adalah bentuk umum dari metode ini:

KotakList.Items.Add(Item)

KotakList adalah nama dari kontrol kotak list. Item adalah nilai yang akan ditambahkan pada properti Items. Sebagai contoh, dimisalkan bahwa sebuah aplikasi memiliki kotak list dengan nama listSiswa. Statemen berikut menambahkan string “Kristoff” di akhir kotak list:

listSiswa.Items.Add("Kristoff")

Anda dapat secara virtual menambahkan nilai-nilai dengan tipe apapun ke dalam kotak list, termasuk objek-objek. Sebagai contoh, statemen-statemen berikut menambahkan objek Integer, Decimal, dan Date ke dalam kotak list:

Dim intNil As Integer = 5
Dim decGajiKotor As Decimal = 1200D
Dim datTanggalAwal As Date = #12/18/2016#
listNilai.Items.Add(intNil)
listUpah.Items.Add(decGajiKotor)
listTanggal.Items.Add(datTanggalAwal)

Ketika Anda menambahkan sebuah objek, selain string, ke dalam kotak list, teks yang ditampilkan pada kotak list adalah string yang dihasilkan oleh metode ToString.

Metode Items.Insert
Untuk menyisipkan sebuah item pada posisi tertentu, Anda menggunakan metode Items.Insert. Berikut adalah bentuk umum dari metode Items.Insert:

KotakList.Items.Insert(Indeks, Item)

KotakList adalah nama dari kontrol kotak list. Indeks adalah sebuah argumen integer yang menetapkan posisi di mana Item akan ditempatkan di dalam properti Items. Item adalah item yang akan ditambahkan ke dalam kotak list.

Sebagai contoh, dimisalkan bahwa kotak list listSiswa memuat item-item berikut: Bili, Jo, Jeri, dan Shanti. Karena Bili adalah iterm pertama, indeksnya 0. Indeks untuk Jo adalah 1, untuk Jeri adalah 2, dan untuk Shanti adalah 3. Sekarang, dimisalkan statemen berikut dieksekusi:

listSiswa.Items.Insert(2, "Jeni")

Statemen ini menyisipkan Jeni pada indeks 2. String yang sebelumnya ada pada indeks 2 (Jeri) digeser ke indeks 3, dan string yang sebelumnya pada indeks 3 (Shanti) digeser ke indeks 4. Sekarang, item-item di dalam properti Items adalah Bili, Jo, Jeni, Jeri, dan Shanti.

Metode Items.Remove dan Items.RemoveAt
Metode Items.Remove dan Items.RemoveAt keduanya menghapus sebuah item dari properti Items dari sebuah kotak list. Berikut adalah bentuk umum dari kedua metode ini:

KotakList.Items.Remove(Item)
KotakList.Items.RemoveAt(Indeks)

KotakList adalah nama dari kontrol kotak list. Dengan metode Items.Remove, Item adalah item yang ingin Anda hapus. Sebagai contoh, statemen berikut menghapus string Industri Indonesia dari kotak list listIndustri:

listIndustri.Items.Remove("Industri Indonesia")

Jika Anda menetapkan sebuah item yang tidak ada di dalam list, maka tidak ada yang akan dihapus.

Metode Items.RemoveAt menghapus item pada posisi tertentu. Sebagai contoh, statemen berikut menghapus item pada indeks 4 dari kotak list listIndustri:

listIndustri.Items.RemoveAt(4)

Metode Items.Clear
Metode Items.Clear menghapus semua item di dalam properti Items. Berikut adalah bentuk umum dari metode ini:

KotakList.Items.Clear()

Sebagai contoh, diasumsikan bahwa sebuah aplikasi mempunyai kotak list dengan nama listMobil. Statemen berikut menghapus semua item di dalam kotak list:

listMobil.Items.Clear()



Pada Tutorial 3.1, Anda menciptakan sebuah aplikasi dengan dua kotak list.

Tutorial 3.1: Menciptakan Kotak List
Langkah 1: Ciptakanlah sebuah projek Windows Forms Application dengan nama Kotak List. Ubah properti Text dari form menjadi Demo Kotak List.

Langkah 2: Pada form, ciptakanlah sebuah kotak list seperti ditunjukkan pada Gambar 3.8. Perhatikan bahwa nama default dari kotak list adalah ListBox1. Juga perhatikan nama dari kotak list ditampilkan pada saat perancangan. Nama itu tidak akan ditampilkan saat aplikasi dijalankan.

Gambar 3.8 Sebuah kotak list

Langkah 3: Ubah nama (pada properti Name) dari kotak list menjadi listBulan.

Langkah 4: Dengan kotak list diseleksi, klik properti Items pada jendela Properties. Kemudian klik tombol elipsis ().

Langkah 5: Kotak dialog String Collection Editor akan ditampilkan. Ketikkan nama-nama bulan berikut, satu per baris: Januari, Februari, Maret, April, Mei, Juni, Juli, Agustus, September, Oktober, November, dan Desember. Ketika selesai, kotak dialog akan ditampilkan seperti pada Gambar 3.9. Klik tombol OK untuk menutup kotak dialog tersebut.

Gambar 3.9 Kotak dialog String Collection Editor yang memuat nama-nama bulan


Langkah 6: Ciptakan sebuah kotak list lain dan buat ukurannya sama dengan kotak list pertama. Ubah namanya menjadi listTahun. Masukkan item-item pada properti Items: 2012, 2013, 2014, 2015, dan 2016.

Langkah 7: Ciptakan dua tombol pada form. Namai tombol pertama dengan tombolOK, dan ubah properti Text-nya menjadi OK. Namai tombol kedua dengan tombolReset dan ubah properti Text-nya menjadi Reset. Form akan tampak seperti pada Gambar 3.10.

Gambar 3.10 Form dengan dua kotak list dan dua tombol


Langkah 8: Klik ganda pada tombolOK untuk menghasilkan template kode untuk event handler Click. Sempurnakan event handler ini dengan menuliskan kode tebal yang ditunjukkan pada baris 2 sampai baris 15.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub tombolOK_Click(…) Handles tombolOK.Click
    Dim strMasukan As String 'memuat bulan dan tahun terseleksi

    If listBulan.SelectedIndex = -1 Then
        'tidak ada bulan diseleksi
        MessageBox.Show("Pilihlah bulan.")
    ElseIf listTahun.SelectedIndex = -1 Then
        'tidak ada tahun diseleksi
        MessageBox.Show("Pilihlah tahun.")
    Else
        'membaca tahun dan bulan terseleksi
        strMasukan = listBulan.SelectedItem.ToString() &
          " " & listTahun.SelectedItem.ToString()
        MessageBox.Show("Anda memilih " & strMasukan)
    End If
End Sub

Amati kode lebih dekat. Statemen If pada baris 4 menentukan apakah listBulan.SelectedIndex sama dengan -1, yang berarti user belum menyeleksi apapun dari kotak list listBulan. Jika benar, baris 6 akan menampilkan kotak pesan yang memberitahu user untuk menyeleksi sebuah bulan.

Jika user telah menyeleksi sebuah item dari listBulan, klausa Else pada baris 7 akan menentukan apakah listTahun.SelectedIndex bernilai -1, yang berarti bahwa user belum menyeleksi apapun dari kotak list listTahun. Jika benar, baris 9 akan menampilkan kotak pesan yang memberitahu user untuk menyeleksi sebuah tahun.

Jika user telah menyeleksi item pada kotak list listBulan dan listTahun, program akan melompat ke klausa Else pada baris 10. Statemen pada baris 11 dan baris 12 menciptakan sebuah string yang memuat sebuah string yang memuat bulan terseleksi, diikuti dengan spasi, dan tahun terseleksi. Sebagai contoh, jika user menyeleksi April pada listBulan dan 2015 pada listTahun, maka string “April 2015” akan diciptakan dan ditugaskan kepada variabel strMasukan. Kemudian baris 14 menampilkan string tersebut pada kotak pesan.

Langkah 9: Klik ganda pada tombol tombolReset untuk menambahkan kode template event handler Click. Tuliskan kode berikut:

Private Sub tombolReset_Click(…) Handles tombolReset.Click
    'mengatur ulang kotak-kotak list untuk membatalkan seleksi
    listBulan.SelectedIndex = -1
    listTahun.SelectedIndex = -1
End Sub

Ketika tombol ini diklik, properti SelectedIndex dari kedua kotak list akan ditetapkan menjadi -1. Ini akan mendeseleksi setiap item terseleksi.

Langkah 10: Jalankan aplikasi. Tanpa memilih item apapun pada kedua kotak list, klik tombol OK. Sebuah kotak pesan akan ditampilkan yang menginstruksikan Anda untuk memilih bulan.

Langkah 11: Pilih Maret pada listBulan, tetapi jangan pilih item pada listTahun. Klik tombol OK. Kali ini sebuah kotak pesan akan ditampilkan yang menginstruksikan Anda untuk memilih tahun.

Langkah 12: Dengan Maret masih terseleksi pada listBulan, pilih 2015 pada listTahun. Klik tombol OK. Sekarang sebuah kotak pesan akan ditampilkan dengan pesan Anda memilih Maret 2015. Klik tombol OK untuk menutup kotak pesan.

Langkah 13: Klik tombol Reset. Item-item yang sebelumnya Anda seleksi pada listBulan dan listTahun akan dideseleksi.

Langkah 14: Tutup aplikasi dan simpan projek.



3.3 Introduksi Loop: Loop Do While
KONSEP: Loop adalah sebuah struktur berulang yang memuat sebuah blok statemen program.

Bab 4 mengenalkan struktur-struktur keputusan, yang mengarahkan aliran dari sebuah program. Struktur repetisi atau loop menyebabkan satu atau lebih statemen dieksekusi secara berulang. Visual Basic memiliki tiga jenis loop: loop Do While, loop Do Until, dan loop For…Next. Perbedaan di antara ketiganya adalah bagaimana ia mengendalikan repetisi.

Loop Do While
Lop Do While memiliki dua bagian penting: (1) sebuah ekspresi Boolean yang diuji untuk menghasilkan nilai True atau False, dan (2) sebuah statemen atau sekelompok statemen yang dieksekusi secara berulang sepanjang ekspresi Boolean bernilai True. Gambar 3.11 menunjukkan diagram alir dari sebuah loop Do While.

Gambar 3.11 Diagram alir dari sebuah loop Do While


Perhatikan kegunaan dari simbol diamond untuk menguji ekspresi Boolean. Jika ekspresi bernilai True, struktur akan melakukan sebuah proses. Kemudian ia menguji lagi ekspresi Boolean; jika ekspresi masih bernilai True, proses akan diulangi. Ini berlanjut sepanjang ekspresi Boolean bernilai True.

Berikut adalah bentuk umum dari loop Do While:

Do While EkspresiBoolean
    statemen
    (atau statemen-statemen lain)
Loop

Statemen Do While adalah awal dari loop, dan statemen Loop adalah akhir loop. Statemen-statemen yang ada di antara kedua baris ini dikenal dengan tubuh loop. Ketika loop dieksekusi, EkspresiBoolean diuji. Jika bernilai True, statemen-statemen yang ada di dalam tubuh loop akan dieksekusi. Kemudian loop diulangi lagi dan EkspresiBooleah diuji kembali. Jika masih bernilai True, statemen-statemen yang ada di dalam tubuh loop akan dieksekusi. Siklus ini berulang sampai EkspresiBoolean bernilai False.

Karena statemen-statemen yang ada di dalam tubuh loop akan dieksekusi hanya dieksekusi ketika ekspresi Boolean bernilai True, ia disebut dengan statemen-statemen yang dieksekusi secara kondisional. Loop Do While bekerja seperti statemen If yang dieksekusi secara berulang. Sepanjang ekspresi Boolean bernilai True, statemen-statemen kondisional akan dieksekusi. Setiap repetisi loop disebut dengan iterasi. Pada Tutorial 3.2, Anda menyempurnakan sebuah aplikasi yang mendemonstrasikan loop Do While.


Tutorial 3.2: Menyempurnakan Sebuah Aplikasi yang Menggunakan Loop Do While
Langkah 1: Buka projek Demo Do While.

Langkah 2: Pada jendela Designer untuk Form1, klik ganda pada tombol Jalankan Demo untuk menampilkan jendela Code.

Langkah 3: Sempurnakan event handler tombolJalankan_Click dengan menuliskan kode pada baris 2 sampai baris 7 berikut:

1
2
3
4
5
6
7
8
Private Sub tombolJalankan_Click(…) Handles tombolJalankan.Click
    Dim intHitung As Integer = 0

    Do While intHitung < 10
        listKeluaran.Items.Add("Hallo")
        intHitung += 1
    Loop
End Sub

Amati kode lebih dekat. Baris 2 mendeklarasikan sebuah variabel Integer dengan nama intHitung dan menginisialisasinya dengan nilai 0. Baris 4 merupakan awal dari loop Do While yang akan dieksekusi sepanjang intHitung bernilai kurang dari 10.

Gambar 3.12 Keluaran dari aplikasi Demo Do While

Statemen pertama di dalam tubuh loop diberikan pada baris 5. Ia menambahkan katak Hallo pada kotak list listKeluaran. Kemudian, baris 6 menggunakan operator penugasan penggabungan += untuk menambahkan 1 pada intHitung.

Katakunci Loop diberikan pada baris 7. Ini menandai akhir dari loop Do While dan menyebabkan loop diulangi kembali pada baris 4. Setiap kali loop dimulai, ekspresi intHitung < 10 diuji. Jika ekspresi ini bernilai True, statemen-statemen di dalam tubuh loop (baris 5 dan baris 6) dieksekusi. Jika ekspresi bernilai False, loop akan berhenti dan program akan mengeksekusi statemen yang ada setelah loop pada baris 7. (Pada kode ini, event handler berakhir segera setelah loop berakhir).

Langkah 4: Simpan dan jalankan aplikasi. Klik pada tombol Jalankan Demo. Keluaran ditampilkan pada Gambar 3.12.



Loop Tak-Hingga
Loop harus memuat sesuatu di dalam tubuhnya untuk menghentikannya beriterasi. Ini berarti bahwa harus ada sesuatu di dalam loop Do While yang membuat ekspresi Boolean bernilai False. Loop pada aplikasi Demo Do While berhenti ketika variabel intHitung tidak lagi bernilai kurang dari 10.

Jika sebuah loop tidak memiliki cari untuk berhenti, ia dinamakan dengan loop tak-hingga. Loop tak-hingga tetap beriterasi sampai program diinterupsi. Berikut adalah salah satu contohnya:

intHitung = 0
Do While intHitung < 10
    listKeluaran.Items.Add("Hallo")
Loop

Loop ini akan dieksekusi selamanya karena ia tidak memuat sebuah statemen yang mengubah intHitung. Setiap kali ekspesi uji dievaluasi, intHitung masih sama dengan 0.

Gaya Pemrograman dan Loop
Ketika Anda mengetikkan kode untuk sebuah loop, Visual Studio secara otomatis akan mengindentasi atau memajukan beberapa spasi statemen-statemen di dalam tubuh loop. Ini bukanlah persyaratan sintaksis, tetapi konvensi gaya pemrogaman. Sebagai contoh, bandingkanlah loop-loop berikut:

Do While intHitung < 10
    listKeluaran.Items.Add("Hallo")
    intHitung += 1
Loop

Do While intHitung < 10
listKeluaran.Items.Add("Hallo")
intHitung += 1
Loop

Kedua loop ini melakukan hal yang sama, tetapi loop kedua tidak memiliki indentasi yang tepat. Pada loop pertama, Anda dapat dengan mudah melihat statemen-statemen mana yang direpetisi oleh loop ketika statemen-statemen itu diindentasi.

Kounter atau Pencacah
Pencacah adalah sebuah variabel yang secara teratur diinkremen atau didekremen setiap kali sebuah loop beriterasi. Penginkremenan sebuah variabel berarti menambahkan 1 pada nilainya. Pendekremenan sebuah variabel berarti mengurangkan 1 dari nilainya.

Statemen-statemen berikut menginkremen variabel intX:

intX = intX + 1
intX += 1

Statemen-statemen berikut mendekremen variabel intX:

intX = intX - 1
intX -= 1

Seringkali, sebuah program harus mengendalikan atau menjejak banyaknya iterasi yang dialami loop. Sebagai contoh, loop pada aplikasi Demo Do While menambahkan Hallo pada kotak list sebanyak 10 kali. Lihat bagian kode ini kembali:

Do While intHitung < 10
    listKeluaran.Items.Add("Hallo")
    intHitung += 1
Loop

Pada kode tersebut, variabel intHitung, yang dimulai dari 0, diinkremen setiap kali loop beriterasi. Ketika intHitung meraih 10, loop akan berhenti. Sebagai variabel pencacah, ia secara teratur diinkremen pada tiap iterasi loop. Pada dasarnya, intHitung menjejak berapa iterasi yang telah dilakukan oleh loop.

Loop Do While Pra-uji dan Pasca-uji
Loop Do While dapat dituliskan sebagai loop pra-uji atau loop pasca-uji. Perbedaan dari kedua loop ini adalah berikut:

  • Pada loop pra-uji, ekspresi Boolean diuji lebih dulu. Jika ekspresi bernilai True, statemen-statemen di dalam tubuh loop akan dieksekusi. Proses ini berulang sampai ekspresi Boolean bernilai False.
  • Pada loop pasca-uji, statemen-statemen di dalam tubuh loop akan dieksekusi lebih dahulu, baru kemudian ekspresi Boolean dieksekusi. Jika ekspresi Boolean bernilai True, loop akan direpetisi. Jika ekspresi Boolean bernilai False, loop akan berhenti.

Contoh-contoh yang telah Anda lihat sejauh ini merupakan loop-loop pra-uji. Karakteristik penting dari sebuah loop pra-uji adalah bahwa tubuh loop tidak akan pernah dieksekusi jika ekspresi Boolean bernilai False pada awal loop.

Dim intHitung As Integer = 100

Do While intHitung < 10
    MessageBox.Show("Hallo Bro!")
    intHitung += 1
Loop

Pada kode ini, variabel intHitung diinisialisasi dengan nilai 100. Ketika loop Do While mulai dieksekusi, ekspresi intHitung < 10 diuji. Karena ekspresi ini bernilai False, loop akan segera berhenti. Statemen-statemen di dalam tubuh loop tidak akan pernah dieksekusi.

Loop Do While dapat pula dituliskan sebagai sebuah loop pasca-uji, menggunakan bentuk umum berikut:

Do
    Statemen
    (atau statemen-statemen lain)
Loop While EkspresiBoolean

Perhatikan bahwa pada bentuk umum ini, klausa While EkspresiBoolean berada di akhir loop, setelah katakunci Loop. Loop yang dituliskan dengan cara ini adalah loop Do While pasca-uji, dimana ekspresi Boolean diuji setelah tubuh loop dieksekusi. Diagram alir pada Gambar 3.13 menunjukkan logika dari sebuah loop Do While pasca-uji.

Gambar 3.13 Logika dari dari sebuah loop Do While


Sebuah loop pasca-uji selalu melakukan sedikitnya satu iterasi, meskipun jika ekspresi Boolean bernilai False pada awal loop. Sebagai contoh, lihat pada kode berikut:

Dim intHitung As Integer = 100
Do
    MessageBox.Show("Hallo Bro!")
    intHitung += 1
Loop While intHitung < 10

Pada kode ini, variabel intHitung diinisialisasi dengan nilai 100. Kemudian loop mulai dieksekusi. Karena ini adalah loop pasca-uji, statemen-statemen di dalam tubuh loop lebih dulu dieksekusi baru kemudian ekspres intHitung < 10 diuji. Ekspresi ini bernilai False, jadi loop berhenti setelah iterasi pertama.


Pada Tutorial 3.3, Anda akan memodifikasi aplikasi Demo Do While untuk menggunakan sebuah loop pasca-uji.

Tutorial 3.3: Memodifikasi Aplikasi Demo Do While Untuk Menggunakan Loop Pasca-uji
Langkah 1: Buka projek Demo Do While.

Langkah 2: Buka jendela Code. Ketika Anda menuliskan event handler tombolJalankan_Click pada Tutorial 3.2, Anda menggunakan loop Do While pra-uji. Pada langkah ini, Anda akan memodifikasi loop sehingga ia merupakan loop pasca-uji. Ubah kode menjadi berikut:

Private Sub tombolJalankan_Click(…) Handles tombolJalankan.Click
    Dim intHitung As Integer = 0

    Do
        listKeluaran.Items.Add("Hallo")
        intHitung += 1
    Loop While intHitung < 10
End Sub

Langkah 3: Jalankan aplikasi dan klik tombol Jalankan Demo. Loop akan menampilkan Hallo sebanyak 10 kali pada kotak list.

Langkah 4: Klik tombol Keluar untuk mengakhiri aplikasi. Kembali ke kode untuk melihat kode event handler tombolJalankan_Click dan ubah operator kurang-dari menjadi operasi lebih-dari pada ekspresi Boolean. Setelah melakukan ini, loop akan menjadi:

Private Sub tombolJalankan_Click(…) Handles tombolJalankan.Click
    Dim intHitung As Integer = 0

    Do
        listKeluaran.Items.Add("Hallo")
        intHitung += 1
    Loop While intHitung > 10
End Sub

Meskipun ekspresi intHitung > 10 bernilai False, statemen-statemen di dalam tubuh loop tetap dieksekusi sekali karena ia merupakan sebuah loop pasca-uji.

Langkah 5: Jalankan aplikasi dan klik tombol Jalankan Demo. Loop akan menampilkan Hallo satu kali pada kotak list.

Langkah 6: Klik tombol Keluar untuk mengakhiri aplikasi.



Menghitung Total Berjalan
Banyak pekerjaan pemrograman yang meminta Anda untuk menghitung total dari suatu runtun nilai. Sebagai contoh, dimisalkan bahwa Anda menuliskan sebuah program yang menghitung penjualan total dalam seminggu. Program akan membaca penjualan setiap hari sebagai masukan dan menghitung total berjalan dari nilai-nilai yang dimasukkan.

Program yang menghitung total dari suatu runtun nilai umumnya menggunakan dua elemen:
·         Sebuah loop yang membaca setiap nilai di dalam runtun.
·         Sebuah variabel yang mengakumulasi total nilai yang telah dibaca.

Variabel yang dipakai untuk mengakumulasi total nilai disebut dengan akumulator. Sering dikatakan bahwa loop dapat menghitung total berjalan karena ia mengakumulasi total ketika membaca setiap nilai di dalam runtun. Gambat 3.14 menunjukkan logika dari sebuah loop yang menghitung total berjalan.

Ketika loop selesai dieksekusi, akumulator akan memuat total dari semua nilai yang dibaca oleh loop. Perhatikan bahwa langkah pertama pada diagram alir adalah menetapkan variabel akumulator dengan 0. Ini adalah langkah kritis. Setiap kali loop membaca sebuah nilai, ia menambahkannya pada akumulator. Jika akumulator diawali dengan sebuah nilai selain 0, ia tidak akan memuat nilai total yang tepat ketika loop selesai dieksekusi.

Lihat contoh berikut. Aplikasi pada Tutorial 3.4 menghitung penjualan total perusahaan untuk lima hari dengan membaca nilai penjualan harian sebagai masukan dan menghitung total berjalan dari nilai-nilai yang dibaca.

Gambar 3.14 Logika untuk menghitung total berjalan



Tutorial 3.4: Menggunakan Loop untuk Menghitung Total Berjalan
Pada tutorial ini, Anda akan menggunakan sebuah kotak masukan dan sebuah loop untuk memasukkan lima nilai penjualan secara terpisah. Nilai-nilai kemudian ditambahkan pada total berjalan, yang akan ditampilkan.

Langkah 1: Buka projek Total Berjalan.

Langkah 2: Buka Form1 dalam mode perancangan dan klik ganda pada tombol Masukkan Penjualan.

Langkah 3: Sempurnakan event handler tombolMasukkan_Click dengan menuliskan kode tebal seperti ditunjukkan pada baris 2 sampai baris 28:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Private Sub tombolMasukkan_Click(…) Handles tombolMasukkan.Click
    Const intBANYAK_HARI As Integer = 5 'banyak hari
    Dim intHitung As Integer = 1        'pencacah loop
    Dim decPenjualan As Decimal = 0     'memuat penjualan harian
    Dim decTotal As Decimal = 0         'memuat penjualan total
    Dim strMasukan As String            'memuat masukan string

    'membaca penjualan tiap hari
    Do While intHitung <= intBANYAK_HARI
        'membaca penjualan harian dari user
        strMasukan = InputBox("Masukkan nilai penjualan untuk hari " &
        intHitung.ToString())

        'mengkonversi masukan menjadi sebuah Decimal
        If Decimal.TryParse(strMasukan, decPenjualan) Then
            'menambahkan penjualan harian pada penjualan total
            decTotal += decPenjualan

            'menambahkan 1 pada pencacah loop
            intHitung += 1
        Else
            'menampilkan pesan error karena masukan tak valid
            MessageBox.Show("Masukkan nilai numerik.")
        End If
    Loop

    'menampilkan penjualan total
    labelTotal.Text = "Rp. " & decTotal.ToString()
End Sub

Amati kode lebih dekat. Berikut adalah simpulan dari deklarasi-deklarasi variabel dan konstanta:

  • Baris 2 mendeklarasikan sebuah konstanta dengan nama intBANYAK_HARI, yang ditetapkan dengan nilai 5. Ini adalah banyak hari dari data penjualan yang ingin dibaca dari user.
  • Baris 3 mendeklarasikan sebuah variabel dengan nama intHitung yang akan dipakai sebagai pencacah loop. Perhatikan bahwa variabel ini diinisialisasi dengan nilai 1.
  • Baris 4 mendeklarasikan sebuah variabel dengan nama decPenjualan yang akan dipakai untuk memuat nilai penjualan harian.
  • Baris 5 mendeklarasikan sebuah variabel dengan nama decTotal yang akan dipakai untuk memuat penjualan total. Ini adalah variabel akumulator. Penting untuk mengingat bahwa decTotal harus diawali dengan nilai 0 sehingga nilai penjualan total menjadi tepat.
  • Baris 6 mendeklarasikan sebuah variabel dengan nama strMasukan yang akan memuat masukan user, yang dihasilkan dari fungsi InputBox.


Loop Do While yang diawali pada baris 9 dieksekusi sepanjang nilai dari intHitung kurang dari atau sama dengan intBANYAK_HARI. Statemen pada baris 11 dan baris 12 menampilkan kotak masukan yang meminta user untuk memasukkan nilai penjualan per hari. (Pertama kali loop beriterasi, ia akan meminta user untuk memasukkan nilai penjualan hari 1, kedua kalinya ia akan meminta user untuk memasukkan nilai penjualan hari 2, dan seterusnya). Masukan user ditugaskan, sebagai sebuah string, kepada variabel strMasukan.

Karena masukan string dihasilkan sebagai suatu string, Anda perlu mengkonversinya menjadi sebuah Decimal sehingga Anda dapat melakukan operasi matematika terhadapnya. Ini berarti bahwa eksepsi akan dilemparkan jika user memasukkan masukan tak numerik. Untuk mencegah terjadinya eksepsi, statemen If…Then pada baris 15 memanggil metode Decimal.TryParse untuk mengkonversi strMasukan menjadi Decimal dan menyimpan hasilnya di dalam variabel decPenjualan. Ingat dari Bab 4 bahwa metode ini menghasilkan True jika konversi berhasil, atau False jika nilai tidak dapat dikonversi menjadi Decimal. Jika metode ini menghasilkan False, maka program akan melompat ke klausa Else pada baris 21, menampilkan pesan error pada baris 23, dan kemudian loop akan diulangi kembali. Jika masukan user berhasil dikonversi menjadi Decimal, decPenjualan ditambahkan pada variabel decTotal pada baris 17, dan 1 ditambahkan pada pencacah intHitung pada baris 20. Loop kemudian diulangi lagi.

Setelah loop selesai dieksekusi, baris 28 akan menampilkan penjualan total pada label labelTotal.

Langkah 4: Simpan dan jalankan program. Klik tombol Masukkan Penjualan. Kotak masukan yang ditampilkan pada Gambar 3.15 akan meminta user untuk memasukkan nilai penjualan untuk hari 1. Masukkan 1000, dan klik tombol OK.

Gambar 3.15 Kotak masukan


Langkah 5: Aplikasi akan menyajikan sejumlah kotak masukan untuk nilai penjualan hari 2, 3, 4, dan 5. Masukkan nilai-nilai berikut:

Hari 2: 2000
Hari 3: 3000
Hari 4: 4000
Hari 5: 5000

Langkah 6: Setelah Anda memasukkan nilai penjualan untuk lima hari, aplikasi akan menampilkan penjualan total seperti ditunjukkan pada Gambar 3.16.

Gambar 3.16 Penjualan total ditampilkan

Langkah 7: Akhiri program, dengan menekan tombol Keluar.



Membiarkan User Mengendalikan Loop
Kadangkal user harus memutuskan berapa kali sebuah loop akan beriterasi. Pada Tutorial 3.5, Anda akan memeriksa sebuah modifikasi dari aplikasi Total Berjalan. Versi ini meminta user untuk memasukkan berapa banyak hari dari penjualan harian yang ingin dihitung. Aplikasi kemudian menggunakan nilai itu untuk mengendalikan loop Do While.

Tutorial 3.5: Membiarkan User Mengendalikan Loop
Langkah 1: Buka projek Total Berjalan 2.

Langkah 2: Jalankan aplikasi. Ketika form ditampilkan, klik tombol Masukkan Penjualan. Kotak masukan akan ditampilkan seperti ditunjukkan pada Gambar 3.17.

Langkah 3: Kotak masukan akan meminta Anda untuk memasukkan banyak hari penjualan harian yang akan dihitung. Masukkan 3 dan klik tombol OK (atau tekan kunci Enter).

Langkah 4: Karena Anda memasukkan 3 untuk banyak hari, aplikasi akan menyajikan tiga kotak masukan yang meminta nilai penjualan untuk hari 1, 2, dan 3. Masukkan nilai-nilai berikut ketika diminta:

Hari 1: 1000
Hari 2: 2000
Hari 3: 3000

Gambar 3.17 Kotak masukan, yang meminta berapa hari penjualan yang akan dihitung


Langkah 5: Setelah Anda memasukkan nilai-nilai penjualan selama 3 hari, aplikasi akan menampilkan Rp. 6000 sebagai nilai penjualan total, seperti ditampilkan pada gambar berikut:



Langkah 6: Klik tombol Keluar untuk mengakhiri aplikasi.

Langkah 7: Buka jendela Code dan lihat pada event handle tombolMasukkan_Click. Perhatikan bahwa versi kode ini tidak mendeklarasikan konstanta intBANYAK_HARI, seperti yang digunakan pada Tutorial 3.4. Event handler ini memiliki sebuah variabel baru dengan nama intBanyakHari, seperti dideklarasikan berikut:

Dim intBanyakHari As Integer      ‘memuat banyak hari penjualan

Kode berikut membaca banyak hari dari user, mengkonversi masukan menjadi sebuah integer, dan menugaskan hasilnya kepada variabel intBanyakHari:

'mambaca banyak hari dari user
strMasukan = InputBox("Berapa banyak hari penjualan yang akan dihitung?")

'mengkonversi masukan user menjadi sebuah integer
intBanyakHari = CInt(strMasukan)

Setelah kode ini dieksekusi, intBanyakHari akan memuat banyak hari yang ditetapkan oleh user. Kemudian, perhatikan baris pertama dari loop Do While:

Do While intHitung <= intBanyakHari

Loop ini akan dieksekusi sepanjang intHitung bernilai kurang dari atau sama dengan intBanyakHari, nilai yang ditetapkan oleh user. Hasilnya, banyak iterasi loop akan sama dengan banyak hari yang ditetapkan oleh user.

Berikut adalah kode utuh dari event handler tombolMasukkan_Click yang telah dimodifikasi:

Private Sub tombolMasukkan_Click(…) Handles tombolMasukkan.Click
    Dim intBanyakHari As Integer        'memuat banyak hari

    Dim intHitung As Integer = 1        'pencacah loop
    Dim decPenjualan As Decimal = 0     'memuat penjualan harian
    Dim decTotal As Decimal = 0         'memuat penjualan total
    Dim strMasukan As String            'memuat masukan string

    'mambaca banyak hari dari user
    strMasukan = InputBox("Berapa banyak hari penjualan yang akan dihitung?")

    'mengkonversi masukan user menjadi sebuah integer
    intBanyakHari = CInt(strMasukan)

    'membaca penjualan tiap hari
    Do While intHitung <= intBanyakHari
        'membaca penjualan harian dari user
        strMasukan = InputBox("Masukkan nilai penjualan untuk hari " &
        intHitung.ToString())

        'mengkonversi masukan menjadi sebuah Decimal
        If Decimal.TryParse(strMasukan, decPenjualan) Then
            'menambahkan penjualan harian pada penjualan total
            decTotal += decPenjualan

            'menambahkan 1 pada pencacah loop
            intHitung += 1
        Else
            'menampilkan pesan error karena masukan tak valid
            MessageBox.Show("Masukkan nilai numerik.")
        End If
    Loop

    'menampilkan penjualan total
    labelTotal.Text = "Rp. " & decTotal.ToString()
End Sub



3.4 Loop Do Until dan Loop For…Next
KONSEP: Loop Do Until beriterasi sampai ekspresi ujinya bernilai True. Loop For…Next menggunakan sebuah variabel pencacah atau kounter dan beriterasi dengan sejumlah repetisi tertentu.

Loop Do Until
Loop Do While beriterasi sepanjang ekspresi Boolean bernilai True. Kadangkala, lebih mudah untuk menuliskan sebuah loop yang beriterasi sampai ekspresi bernilai True, yaitu, sebuah loop yang beriterasi sepanjang ekspresi ujinya bernilai False, dan kemudian berhenti ketika ekspresi bernilai True.

Sebuah loop yang beriterasi sampai kondisi bernilai True dikenal dengan loop Do Until. Loop Do Until dapat dituliskan sebagai loop pra-uji atau loop pasca-uji. Berikut adalah bentuk umum dari sebuah loop Do Until pra-uji:

Do Until EkspresiBoolean
    Statemen
    (Atau statemen-statemen lain)
Loop

Berikut adalah bentuk umum dari sebuah loop Do Until pasca-uji:

Do
    Statemen
    (Atau statemen-statemen lain)
Loop Until EkspresiBoolean



Pada Tutorial 3.6, Anda akan memeriksa sebuah aplikasi yang menggunakan loop Do Until. Aplikasi ini meminta user untuk memasukkan sejumlah skor ujian dan kemudian menampilkan reratanya.

Tutorial 3.6: Memeriksa Sebuah Aplikasi Yang Menggunakan Loop Do Until
Langkah 1: Bukan projek Baca Skor.

Langkah 2: Jalankan aplikasi. Form akan ditampilkan seperti pada Gambar 3.18.

Gambar 3.18 Form dari aplikasi Baca Skor


Langkah 3: Klik tombol Baca Skor. Kotak masukan akan ditampilkan seperti pada Gambar 3.19.

Gambar 3.19 Kotak masukan


Langkah 4: Masukkan 5 untuk banyak skor ujian dan klik tombol OK (atau tekan kunci Enter).

Langkah 5: Karena Anda memasukkan 5 untuk banyak skor ujian, aplikasi akan menyajikan lima kotak masukan untuk skor 1, 2, 3, 4, dan 5.

Langkah 6: Setelah Anda memasukkan skor ujian kelima, rerata skor ujian akan ditampilkan pada form aplikasi, seperti ditampilkan pada gambar berikut. Klik tombol Keluar untuk mengakhiri aplikasi.


Langkah 7: Buka jendela Code. Kode aplikasi ditampilkan berikut dengan nomor baris untuk referensi.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Public Class Form1

    Private Sub tombolBaca_Click(…) Handles tombolBaca.Click
        'prosedur ini membaca skor ujian, kemudian menghitung dan
        'menampilkan rerata
        Dim intBanyakSkor As Integer    'banyak skor ujian
        Dim dblSkorUjian As Double      'memuat skor ujian
        Dim dblTotal As Double = 0      'akumulator, diinisialisasi dengan 0
        Dim dblRerata As Double         'rerata dari skor-skor ujian
        Dim strMasukan As String        'memuat masukan user
        Dim intHitung As Integer = 1    'variabel pencacah, diinisialisasi dengan 1

        'meminta user memasukkan banyak skor ujian
        strMasukan = InputBox("Berapa banyak skor ujian yang ingin direratakan?")

        'mengkonversi masukan menjadi sebuah integer
        If Integer.TryParse(strMasukan, intBanyakSkor) Then

            'membaca skor-skor ujian
            Do Until intHitung > intBanyakSkor
                'meminta user untuk memasukkan skor ujian
                strMasukan = InputBox("Masukkan skor ujian " &
                intHitung.ToString())

                'mengkonversi masukan menjadi sebuah Double
                If Double.TryParse(strMasukan, dblSkorUjian) Then

                    'menambahkan skor pada akumulator
                    dblTotal += dblSkorUjian

                    'menambah 1 pada pencacah
                    intHitung += 1
                Else
                    'skor ujian tak-valid
                    MessageBox.Show("Masukkan skor ujian numerik.")
                End If
            Loop

            'menghitung dan menampilkan rerata
            If intBanyakSkor > 0 Then
                dblRerata = dblTotal / intBanyakSkor
                labelRerata.Text = dblRerata.ToString()
            End If

        Else
            'nilai tak valid dari banyak skor ujian
            MessageBox.Show("Masukkan nilai integer untuk banyak skor ujian.")
        End If
    End Sub

    Private Sub tombolKeluar_Click(…) Handles tombolKeluar.Click
        'menutup form
        Me.Close()
    End Sub
End Class


Amati kode pada event handle tombolBaca_Click:

  • Variabel-variabel lokal dideklarasikan pada baris 6 sampai baris 11. Perhatikan bahwa variabel dblTotal (baris 8) diinisialisasi dengan 0. Variabel ini dipakai sebagai akumulator. Perhatikan pula bahwa variabel intHitung (baris 11) diinisialisasi dengan 1. Variabel ini digunakan sebagai pencacah atau kounter loop.
  • Baris 14 menampilkan kotak masukan yang meminta user agar memasukkan banyak skor ujian. Masukan ditugaskan kepada strMasukan.
  • Statemen If…Then pada baris 17 menggunakan metode Integer.TryParse untuk mengkonversi strMasukan menjadi integer, dan menyimpan hasilnya di dalam variabel intBanyakSkor. Jika konversi berhasil, metode Integer.TryParse akan menghasilkan True dan program berlanjut ke baris 20. Jika konversi gagal (karena masukan tak valid), maka metode Integer.TryParse akan menghasilkan False, dan program melompat ke klausa Else pada baris 45. Jika ini terjadi, baris 47 akan menampilkan pesan error, dan event handler berakhir.
  • Loop Do Until yang diawali pada baris 20 beriterasi sampai intHitung bernilai lebih besar dari intBanyakSkor. Di dalam loop, baris 22 dan baris 23 meminta user untuk memasukkan skor ujian, menyimpan masukan user ke dalam strMasukan. Statemen If…Then pada baris 26 menggunakan metode Double.TryParse untuk mengkonversi strMasukan menjadi sebuah Double, dan menyimpan hasilnya di dalam variabel dblSkorUjian. Jika konversi berhasil, metode Double.TryParse akan menghasilkan True dan program berlanjut ke baris 29. Jika konversi gagal (karena masukan tak valid), metode Double.TryParse akan menghasilkan False, dan program akan melompat ke klausa Else pada baris 33. Jika ini terjadi, baris 35 akan menampilkan pesan error, dan event handler berakhir.
  • Baris 29 menggunakan operator += untuk menjumlahkan dblSkorUjian dengan variabel akumulator dblTotal.
  • Baris 32 menggunakan operator += untuk menambahkan 1 pada variabel pencacah intHitung.
  • Setelah loop selesai dieksekusi, statemen If…Then pada baris 40 menentukan apakah intBanyakSkor lebih besar dari 0 atau tidak. Jika ya, baris 41 akan menghitung rerata dari skor ujian, dan baris 42 menampilkan rerata pada kontrol label labelRerata.


Loop For…Next
Loop For…Next ideal untuk situasi-situasi yang memerlukan pencacah karena loop ini menginisialisasi, menguji, dan menginkremen sebuah variabel pencacah. Berikut adalah format dari loop For…Next:

For VariabelPencacah = NilaiAwal To NilaiAkhir [Step Inkremen]
    statemen
    (atau statemen-statemen lain)
Next [VariabelPencacah]

Seperti biasa, kurung siku bukan bagian dari sintaksis, tetapi untuk mengindikasikan bagian-bagian opsional. Amati sintaksis ini lebih dekat:


  • VariabelPencacah adalah variabel yang dipakai sebagai pencacah. Ia harus berupa sebuah variabel numerik.
  • NilaiAwal adalah nilai dari variabel pencacah yang awalnya ditetapkan. Nilai ini harus numerik.
  • NilaiAkhir adalah nilai dari variabel pencacah yang diuji sebelum tiap iterasi loop dilakukan. Nilai ini harus numerik.
  • Bagian Step Inkremen adalah opsional. Jika ada, Inkremen (harus berupa ekspresi numerik) adalah nilai yang ditambahkan pada variabel pencacah di akhir tiap iterasi. Jika bagian Step Inkremen diabaikan, variabel pencacah akan diinkremen sebesar 1 di akhir tiap iterasi.
  • Statemen Next [VariabelPencacah] menandai akhir loop dan menyebabkan variabel pencacah diinkremen. Perhatikan bahwa nama dari variabel pencacah bersifat opsional.

Berikut adalah sebuah contoh dari loop For…Next:

For intHitung = 1 To 10
    MessageBox.Show("Hallo")
Next

Loop ini mengeksekusi statemen MessageBox.Show(“Hallo”) sebanyak 10 kali. Langkah-langkah berikut terjadi ketika loop dieksekusi:
1.      Variabel pencacah intHitung ditetapkan 1 (nilai awal).
2.      Variabel intHitung dibandingkan dengan 10 (nilai akhir). Jika intHitung bernilai kurang dari atau sama dengan 10, dilanjutkan ke Langkah 3. Jika tidak, loop selesai dieksekusi.
3.      Statemen MessageBox.Show(“Hallo”) di dalam tubuh loop dieksekusi.
4.      Variabel intHitung diinkremen sebesar 1.
5.      Kembali ke Langkah 2 dan ulangi langkah-langkah selanjutnya.

Diagram alir yang ditampilkan pada Gambar 3.20 menunjukkan apa yang dilakukan oleh loop ini.

Gambar 3.20 Diagram alir dari sebuah loop For…Next

Pada Tutorial 3.7, Anda akan memeriksa sebuah aplikasi yang mendemonstrasikan loop For…Next.

Tutorial 3.7: Memeriksa Sebuah Aplikasi Yang Menggunakan Loop For…Next
Langkah 1: Buka projek Demo For Next 1.

Langkah 2: Jalankan aplikasi. Form akan ditampilkan seperti pada Gambar 3.21.

Langkah 3: Klik tombol Jalankan Demo. Form sekarang ditampilkan seperti pada Gambar 3.22.

Gambar 3.21 Form aplikasi Demo For Next 1

Gambar 3.22 Hasil dari loop For…Next

Langkah 4: Klik tombol Keluar untuk mengakhiri aplikasi.

Langkah 5: Buka jendela Code dan cari event handler tombolJalankan_Click. Kodenya adalah berikut:

Private Sub tombolJalankan_Click(…) Handles tombolJalankan.Click
    Dim intHitung As Integer    'pencacah loop
    Dim intKuadrat As Integer   'memuat hasil kuadrat
    Dim strTemp As String       'memuat keluaran

    For intHitung = 1 To 10
        'menghitung kuadrat dari intHitung
        intKuadrat = CInt(intHitung ^ 2)

        'menciptakan string untuk ditampilkan
        strTemp = "Kuadrat dari " & intHitung.ToString() &
        " adalah " & intKuadrat.ToString()

        'menambahkan string pada kotak list
        listKeluaran.Items.Add(strTemp)
    Next
End Sub

Gambar 3.23 mengilustrasikan urutan langkah-langkah oleh loop For…Next pada program ini.

Gambar 3.23 Langkah-langkah pada loop For…Next


Pada Tutorial 3.8, Anda menyempurnakan sebuah aplikasi, yang menggunakan citra dan loop For…Next untuk melakukan animasi sederhana.

Tutorial 3.8: Menyempurnakan Aplikasi Yang Menggunakan Loop For…Next
Langkah 1: Buka projek Demo For Next 2.

Langkah 2: Buka form aplikasi, seperti ditunjukkan pada Gambar 3.24.

Gambar 3.24 Form untuk aplikasi Demo For Next 2

Citra ditampilkan oleh sebuah kontrol PictureBox. Kontrol ini memiliki properti Left yang menetapkan jarak dari tepi kiri form ke tepi kiri dari kontrol PictureBox. (Jarak diukur dalam piksel). Pada tutorial ini, Anda akan menuliskan sebuah loop For…Next yang akan memindahkan citra melintasi form dengan menambah nilai dari properti Left dari kontrol PictureBox.

Langkah 3: Klik ganda pada tombol Jalankan, dan kemudian sempurnakan event handler tombolJalankan_Click dengan menuliskan kode berikut:

Private Sub tombolJalankan_Click(…) Handles tombolJalankan.Click
    Dim intHitung As Integer 'pencacah loop

    'menggeser citra melintasi form
    For intHitung = 16 To 328
        gbrTopi.Left = intHitung
    Next
End Sub

Lihat pada baris pertama dari loop For…Next:

For intHitung = 16 To 328

Nilai awal dari intHitung adalah 16, dan nilai akhirnya adalah 328. Di dalam loop, statemen berikut menyimpan nilai dari intHitung di dalam properti Left dari kontrol PictureBox dengan nama grbTopi:

grbTopi.Left = intHitung

Saat loop beriterasi, nilai di dalam properti Left bertambah besar, yang menyebabkan kontrol PictureBox berpindah melintasi form.

Langkah 4: Jalankan aplikasi. Setiap kali Anda mengklik tombol Jalankan, citra topi akan berpindah dari tepi kiri ke tepi kanan form.

Langkah 5: Klik tombol Keluar untuk mengakhiri aplikasi. Jika Anda inginkan, buka jendela Code dan lakukan eksperimen dengan nilai awal dan nilai akhir yang berbeda untuk loop For…Next.



Menetapkan Nilai Langkah
Nilai langkah adalah nilai yang ditambahkan pada variabel pencacah di akhir dari tiap iterasi dari loop For…Next. Secara default, nilai langkah adalah 1. Anda dapat menetapkan nilai langkah yang berbeda dengan katakunci Step. Sebagai contoh, lihat kode berikut:

For intHitung = 0 To 100 Step 10
    MessageBox.Show(intHitung.ToString())
Next

Pada loop ini, nilai awal dari intHitung adalah 0 dan nilai akhirnya adalah 100. Nilai langkah adalah 10, yang berarti bahwa 10 ditambahkan pada intHitung di akhir dari tiap iterasi. Selama iterasi pertama intHitung adalah 0, selama iterasi kedua intHitung adalah 10, selama iterasi ketiga intHitung adalah 20, dan seterusnya.

Anda dapat pula menetapkan nilai langkah negatif jika Anda ingin mendekremen variabel pencacah. Sebagai contoh, lihat loop berikut:

For intHitung = 10 To 1 Step -1
    MessageBox.Show(intHitung.ToString())
Next

Pada loop ini, nilai awal dari intHitung adalah 10 dan nilai akhirnya adalah 1. Nilai langkahnya adalah -1, yang berarti bahwa 1 dikurangkan dari intHitung di akhir dari tiap iterasi. Selama iterasi pertama intHitung adalah 10, selama iterasi kedua intHitung adalah 9, dan seterusnya.

Menjumlahlah Runtun Nilai Dengan Loop For…Next
Loop For…Next dapat dipakai untuk menghitung penjumlahan atas runtun nilai, seperti ditunjukkan pada kode berikut:

Dim intHitung As Integer          'pencacah loop
Dim intTotal As Integer = 0       'akumulator

'menjumlahlah nilai 1 sampai 100
For intHitung = 1 To 100
    intTotal += intHitung
Next

'menampilkan penjumlahan runtun nilai
MessageBox.Show("Penjumlahan atas 1 sampai 100 adalah " & intTotal.ToString())

Kode ini menggunakan variabel intTotal sebagai akumulator dan menghitung penjumlahan atas nilai 1 sampai 100. Variabel pencacah, intHitung, memiliki nilai awal 1 dan nilai akhir 100. Selama tiap iterasi, nilai dari intHitung ditambahkan pada intTotal.

Anda dapat pula membiarkan user menetapkan berapa banyak nilai yang akan dijumlahkan, berikut dengan tiap nilainya. Sebagai contoh, lihat kode berikut:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Dim intHitung As Integer        'pencacah loop
Dim intHitungMaks As Integer    'memuat  banyak nilai yang akan dibaca
Dim dblTotal As Double = 0.0    'akumulator
Dim strMasukan As String        'memuat masukan user
Dim dblNil As Double            'memuat nilai yang dibaca

'membaca banyak nilai yang akan dijumlahkan
strMasukan = InputBox("Berapa banyak nilai yang ingin dijumlahkan?")
intHitungMaks = CInt(strMasukan)

'menjumlahkan nilai-nilai yang dimasukkan oleh user
For intHitung = 1 To intHitungMaks
    'membaca sebuah nilai
    strMasukan = InputBox("Masukkan sebuah nilai.")
    dblNil = CDbl(strMasukan)

    'menjumlahan nilai pada akumulator
    dblTotal += dblNil
Next

'menampilkan penjumlahan atas nilai-nilai
MessageBox.Show("Penjumlahan atas nilai-nilai itu adalah " &
  dblTotal.ToString())

Agar lebih sederhana, di sini tidak digunakan penanganan eksepsi atau kode untuk memvalidasi masukan user. Baris 8 meminta user untuk memasukkan banyak nilai yang akan dijumlahkan, dan baris 9 menyimpan masukan user ke dalam variabel intHitungMaks. Pada baris 12, yang merupakan awal dari loop For…Next, variabel intHitung memiliki nilai awal 1 dan nilai akhir intHitungMaks. Hasilnya, banyak iterasi akan sama dengan nilai yang disimpan di dalam intHitungMaks.

Pada baris 14, sebuah kotak masukan dipakai untuk meminta user untuk memasukkan sebuah nilai. Pada baris 15, nilai yang dimasukkan oleh user disimpan di dalam variabel dblNil. Baris 18 menjumlahkan dblNil pada variabel dblTotal, yang merupakan akumulator.


3.5 Loop Bersarang
KONSEP: Loop yang dimuat di dalam loop lain disebut dengan loop bersarang.
Loop bersarang adalah sebuah loop yang berada di dalam loop lain. Jam adalah contoh dari sesuatu yang bekerja seperi loop bersarang. Lengan detik, lengan menit, dan lengan jam semuanya berputar. Lengan jam hanya membuat satu revolusi untuk setiap 60 revolusi dari lengan menit. Dan memerlukan 60 revolusi dari lengan detik untuk satu revolusi dari lengan menit. Ini berarti bahwa untuk setiap revolusi dari lengan jam, lengan menit berputar sebanyak 3600 kali.

Berikut adalah sebuah segmen kode yang menggunakan loop For…Next yang secara parsial mensimulasikan sebuah jam digital. Kode ini menampilkan detik dari 0 sampai 59 pada sebuah label dengan nama labelDetik:

For intDetik = 0 To 59
    labelDetik.Text = intDetik.ToString()
Next

Anda dapat menambahkan sebuah variabel menit dan label lain, dan menempatkan sebuah loop bersarang di dalam loop lain yang memiliki siklus 60 menit:

For intMenit = 0 To 59
    labelMenit.Text = intMenit.ToString()

    For intDetik = 0 To 59
        labelDetik.Text = intDetik.ToString()
    Next
Next

Untuk menyempurnakan simulasi jam, sebuah variabel lain, label, dan loop dapat ditambahkan untuk mencacah jam:

For intJam = 0 To 23
    labelJam.Text = intJam.ToString()

    For intMenit = 0 To 59
        labelMenit.Text = intMenit.ToString()

        For intDetik = 0 To 59
            labelDetik.Text = intDetik.ToString()
        Next
    Next
Next

Loop paling dalam akan beriterasi 60 kali untuk tiap iterasi dari loop tengah. Loop tengah akan beriterasi 60 kali untuk setiap iterasi dari loop paling luar. Ketika loop paling luar telah beriterasi 24 kali, loop tengah telah beriterasi 1440 kali dan loop paling dalam telah beriterasi 86400 kali.

Contoh simulasi jam ini menunjukkan beberapa hal penting tentang loop bersarang:
·         Loop dalam menyelesaikan seluruh iterasi yang ada untuk setiap iterasi dari loop luar.
·         Loop dalam menyelesaikan seluruh iterasinya sebelum loop luar menyelesaikan seluruh iterasinya.
·         Untuk mendapatkan total iterasi dari sebuah loop bersarang, Anda mengalikan banyak iterasi dari semua loop.



3.6 Kotak List Kolom Jamak, Kotak List Periksa, dan Kotak Combo
KONSEP: Kotak list kolom-jalam (multi-kolom) menampilkan item-item pada kolom-kolom dengan batang penggeser horisontal, jika diperlukan. Kotak list periksa menampilkan sebuah kotak periksa di samping setiap item di dalam list. Kotak combo melakukan fungsi-fungsi yang sama seperti kotak list, dan ia juga membiarkan user memasukkan teks.

Kotak List Kolom-Jamak
Kontrol ListBox memiliki properti Multicolumn yang dapat ditetapkan True atau False. Secara default, ia ditetapkan False. Jika Anda menetapkan Multicolumn dengan True, ini menyebabkan kotak list ditampilkan pada kolom-kolom. Anda dapat menetapkan ukuran kolom, dalam piksel, dengan properti ColumnWidth. Sebagai contoh, dimisalkan sebuah form memiliki kotak list dengan nama listNilai, seperti ditunjukkan pada Gambar 3.25.

Gambar 3.25 Sebuah kotak list

Properti Multicolumn kemudian ditetapkan True, dan properti ColumnWidth ditetapkan 30. Kode berikut menambahkan nilai 0 sampai 200 pada kotak list:

For intNilai = 0 To 200
    listNilai.Items.Add(intNilai)
Next

Setelah kode dieksekusi, kotak list akan ditampilkan seperti pada Gambar 3.26. Perhatikan bahwa sebuah batang penggulung horisontal secara otomatis ditampilkan pada kotak list. User dapat menggulung list dan memilih sebuah nilai.

Gambar 3.26 Kotak list menampilkan kolom-jamak


Kotak List Periksa
Kontrol CheckedListBox merupakan variasi dari kontrol ListBox. Ia mendukung semua properti dari ListBox dan setiap metodenya. Setiap item pada kontrol CheckedListBox ditampilkan dengan sebuah kotak periksa di sampingnya. Gambar 3.27 menunjukkan contoh dari kontrol ini.

Gambar 3.27 Kotak list periksa

Sebuah item pada kotak list periksa dapat diseleksi dan/atau dicentang. Hanya satu item pada sebuah kotak list periksa yang dapat diseleksi, tetapi beberapa item dapat dicentang secara bersamaan.

Berikut adalah bagaimana properti CheckOnClick menentukan apakah item menjadi tercentang atau tidak:

  • Ketika ditetapkan False, user akan mengklik sebuah item sekali saja untuk menyeleksinya, dan kemudian mengkliknya kembali untuk mencentangnya (atau membatalkan centang, jika item telah tercentang sebelumnya).
  • Ketika ditetapkan True, user akan mengklik sebuah item sekali saja untuk menyeleksi dan mencentangnya (atau membatalkan centang, jika item telah tercentang sebelumnya).

Properti CheckOnClick ditetapkan False secara default. Karena pengaturan ini membuat pekerjaan yang melibatkan kontrol ini sedikit lebih kompleks, Anda mungkin lebih menginginkannya ditetapkan True pada aplikas Anda.

Anda dapat mengakses item terseleksi pada sebuah kotak list periksa dengan cara yang sama seperti yang Anda lakukan pada kotak list biasa: melalui properti SelectedIndex dan SelectedItem. Kedua properti ini mengindikasikan item mana yang diseleksi, tetapi tidak melaportkan item mana yang dicentang. Anda mengakses item tercentang melalui metode GetItemChecked, yang memiliki bentuk umum berikut:

KotakListPeriksa.GetItemChecked(Indeks)

KotakListPeriksa adalah nama dari kontrol CheckedListBox dan Indeks adalah indeks dari sebuah item di dalam list. Jika item dicentang, metode ini akan menghasilkan True. Sebaliknya, ia menghasilkan False. Sebagai contoh, diasumsikan bahwa sebuah aplikasi memiliki sebuah kotak list periksa dengan nama clbKota. Kode berikut menghitung banyaknya item yang tercentang:

Dim intIndeks As Integer                 'indeks dari item
Dim intKotaTercentang As Integer = 0     'menghitung banyak item tercentang

'menjejak item-item pada kotak list, menghitung
'banyak item yang tercentang
For intIndeks = 0 To clbKota.Items.Count - 1
    If clbKota.GetItemChecked(intIndeks) = True Then
        intKotaTercentang += 1
    End If
Next

'menampilkan banyak kota yang tercentang
MessageBox.Show("Anda mencentang " & intKotaTercentang.ToString() & " kota.")

Sebagai contoh lain, diasumsikan bahw sebuah aplikasi menggunakan kontrol-kontrol seperti ditunjukkan pada Gambar 3.28. Kotak list periksa di sisi kiri adalah clbKota dan kotak list di sisi kanan adalah listPeriksa. Tombol OK, tomboOK, menggunakan event handler Click berikut:

Private Sub tombolOK_Click(...) Handles btnOk.Click
    Dim intIndeks As Integer  'indeks kotak list

    For intIndeks = 0 To clbKota.Items.Count - 1
        If clbKota.GetItemChecked(intIndeks) = True Then
            listPeriksa.Items.Add(clbKota.Items(intIndeks))
        End If
    Next
End Sub

Gambar 3.29 Kota-kota yang dicentang


Event handler tombolOK_Click menambahkan item-item tercentang di dalam kontrol clbKota pada kontrol listPeriksa.

Kotak Combo
Kotak combo dan kotak list sama dalam beberapa hal:
·         Keduanya menampilkan sejumlah item kepada user.
·         Keduanya memiliki properti Items, Items.Count, SelectedIndex, SelectedItem, dan Sorted.
·         Keduanya memiliki metode Items.Add, Items.Clear, Items.Remove, dan Items.RemoveAt.
·         Semua properti dan metode dapat diterapkan dengan cara yang sama pada kotak combo dan kotak list.

Selain itu, kotak combol memiliki luasan persegi-panjang yang berperan seperti kotak teks. User dapat menyeleksi sebuah item dari kotak combo atau mengetikkan teks ke dalam luasan masukan teks dari kotak combo.

Seperti kotak teks, kotak combo memiliki properti Text. Jika user mengetikkan teks ke dalam kotak combo, teks tersebut akan disimpan di dalam properti Text. Selain itu, ketika user menyeleksi sebuah item pada kotak combo, item itu akan disalin ke properti Text.


Jenis Kotak Combo
Ada tiga jenis kotak combo: kotak combo drop-down, kotak combo sederhana, dan kotak combo drop-down list. Anda dapat memilih jenis kotak combo menggunakan properti DropDownStyle. Lihat perbedaan dari tiap jenis kotak combo ini.

Kotak Combo Drop-Down
Ini adalah pengaturan default untuk properti DropDownStyle. Pada saat aplikasi dijalankan, kotak combo ini ditampilkan seperti pada Gambar 3.30.

Gambar 3.30 Sebuah kotak combo drop-dwon

Jenis kotak combo ini berperilaku seperti kotak teks atau kotak list. User dapat mengetikkan teks ke dalam kotak yang disediakan (seperti kotak teks) atau mengklik tanda anak panah ke bawah yang disediakan. Jika user mengklik anak panah itu, sejumlah item akan ditampilkan, seperti ditunjukkan pada Gambar 3.31.

Gambar 3.31 Sebuah kotak Combo ketika user mengklik anak panah

Ketika user memilih sebuah item dari daftar item, item tersebut akan ditampilkan pada luasan masukan teks dan disalin ke properti Text dari kotak combo.

Kotak Combo Sederhana
Dengan jenis kotak combo sederhana, daftar item tidak ditampilkan dengan drop-down, tetapi semua item selalu ditampilkan. Gambar 3.32 menunjukkan sebuah contoh dari jenis kotak combo ini.

Gambar 3.32 Kotak combo sederhana

Ketika user memilih sebuah item dari daftar item, item tersebut akan ditampilkan pada luasan masukan teks dan disalin ke properti Text dari kotak combo.


Kotak Combo Drop-Down List
Dengan jenis kotak combo ini, user tidak dapat mengetikkan teks secara langsung. Item harus diseleksi. Gambar 3.33 menunjukkan contoh dari jenis kotak combo ini. Ketika user mengetikkan anak panah yang disediakan, semua item akan ditampilkan seperti pada Gambar 3.34.

Gambar 3.33 Kotak combo drop-down list

Gambar 3.34 Kotak combo drop-down list ketika user mengetikkan anak panah yang disediakan

Ketika user memilih sebuah item dari daftar item, item tersebut akan ditampilkan pada luasan masukan teks dan disalin ke properti Text dari kotak combo.


Membaca Masukan User dari Kotak Combo
Sama seperti kotak list, Anda dapat menentukan item mana yang diseleksi pada kotak combo dengan membaca nilai yang disimpan di dalam properti SelectedIndex atau SelectedItem. Jika user mengetikkan teks ke dalam luasan teks pada kotak combo, Anda tidak dapat menggunakan properti SelectedIndex atau SelectedItem untuk membaca teks tersebut. Cara terbaik untuk membaca masukan user adalah dengan properti Text, yang memuat masukan teks user atau item terseleksi pada kotak combo.

Tutorial 3.9: Menciptakan Kotak Combo
Pada tutorial ini, Anda akan menciptakan tiga jenis kotak combo.
Langkah 1: Ciptakanlah sebuah projek Windows Forms Application dengan nama Demo Jenis Kotak Combo.

Langkah 2: Bangunlah form seperti ditunjukkan pada Gambar 3.35. Ciptakanlah tiga kotak combo: cboNegara (kotak combo drop-down), cboMain (kotak combo sederhana), dan cboArtis (kotak combo drop-down list).

Langkah 3: Masukkan item-item berikut ke dalam properti Items dari kotak combo cboNegara: Inggris, Irlandia, Skotlandia, dan Wales. Tetapkan properti Sorted dari kotak combo dengan True.

Langkah 4: Masukkan item-item berikut ke dalam properti Items dari kotak combo cboMain: Hamlet, Much Ado About Nothing, Rome and Juliet, A Comery of Errors, dan The Merchant of Venice. Tetapkan propert Sorted dari kotak combo menjadi True.

Langkah 5: Masukkan item-item berikut ke dalam properti Items dari kotak combo cboArtis: Michelangelo, Raphael, dan da Vinci.

Gambar 3.35 Form Demo Jenis Kotak Combo


Langkah 6: Eventh handler tombolTampil_Click melakukan pekerjaan-pekerjaan berikut:
·         Menyalin item terseleksi atau teks yang diketikkan dari kotak combo cboNegara ke properti labelNegara.Text.
·         Menyalin item terseleksi atau teks yang diketikkan dari kotak combo cboMain ke properti labelMain.Text.
·         Menyalin item terseleksi atau teks yang diketikkan dari kotak combo cboArtis ke properti labelArtis.Text.

Masukkan kode berikut ke dalam event handler tombolTampil_Clik:

Private Sub tombolTampil_Click(…) Handles tombolTampil.Click
    'menampilkan seleksi-seleksi kotak combo
    labelNegara.Text = cboNegara.Text
    labelMain.Text = cboMain.Text
    labelArtis.Text = cboArtis.Text
End Sub

Langkah 7: Event handler tombolReset_Click mendeseleksi sembarang item yang diseleksi pada setiap kotak combo. Seperti kotak list, ini dilakukan dengan menetapkan properti SelectedIndex menjadi -1. Prosedur ini juga perlu menetapkan properti Text dari labelNegara, labelMain, dan labelArtis menjadi String.Empty. Masukkan kode berikut ke dalam event handler tombolReset_Click.

Private Sub tombolReset_Click(…) Handles tombolReset.Click
    'mereset kotak combo
    cboNegara.SelectedIndex = -1
    cboNegara.Text = String.Empty
    cboMain.SelectedIndex = -1
    cboMain.Text = String.Empty
    cboArtis.SelectedIndex = -1
    'Perhatian: cboArtis.Text adalah read-only

    'mereset label
    labelNegara.Text = String.Empty
    labelMain.Text = String.Empty
    labelArtis.Text = String.Empty
End Sub

Langkah 8: Event handle tombolKeluar_Click harus mengakhiri aplikasi. Tuliskan kode untuk event handler ini.

Langkah 9: Simpan projek dan jalankan aplikasi. Lihat gambar berikut sebagai hasil dari aplikasi ini.




3.7 Bilangan Acak
KONSEP: Visual Basic menyediakan perangkat-perangkat untuk membangkitkan bilangan acak dan menginisialisasi runtun acak dengan sebuah nilai tunas acak.

Aplikasi komputer seperti gam dan simulasi seringkali memanfaatkan apa yang dinamakan dengan event acak. Program yang mensimulasikan trafik, misalnya, membangkitkan nilai-nilai acak dari wahana-wahana simulasi. Berdasarkan informasi yang disediakan selama simulasi, perancang dapat mengestimasi waktu rerata yang dibutuhkan para pengendara di antara titik-titik henti di jalan raya.

Untuk menghasilkan nilai-nilai acak pada Visual Basic, Anda perlu menciptakan sebuah tipe objek khusus yang dikenal dengan objek Random di dalam memori. Objek-objek Random memiliki metode-metode dan properti-properti yang dapat menghasilkan nilai-nilai acak dengan mudah. Berikut adalah contoh statemen yang menciptakan sebuah objek Random:

Dim rand As New Random

Statemen ini mendeklarasikan sebuah variabel dengan nama rand. Ekspresi New Random menciptakan sebuah objek Random di dalam memori. Setelah statemen ini dieksekusi, variabel rand akan mengakses objek Random yang diciptakan tersebut. Hasilnya, Anda akan dapat menggunakan variabel rand untuk memanggil metode-metode dari objek tersebut untuk menghasilkan nilai-nilai acak.

Metode Next
Setelah Anda menciptakan objek Random, Anda dapat memanggil metode Next dari objek itu untuk menghasilkan sebuah nilai integer acak. Kode berikut menunjukkan contohnya:

'mendeklarasikan sebuah variabel Integer
Dim intNil As Integer

'menciptakan sebuah objek Random
Dim rand As New Random

'menghasilkan sebuah integer acak dan menugaskannya kepada intNil
intNil = rand.Next()

Setelah kode ini dieksekusi, variabel intNil akan memuat sebuah nilai acak. Jika Anda memanggil metode Next tanpa argumen, seperti ditunjukkan pada contoh ini, integer yang dihasilkan berada di dalam rentang 0 dan 2147483647. Anda dapat melewatkan sebuah argumen yang menetapkan batas atas pada rentang nilai yang dihasilkan. Pada statemen berikut, nilai yang ditugaskan kepada intNil berada di dalam rentang 0 dan 99:

intNil = rand.Next(100)

Rentang dari nilai acak tidak harus diawali dari nol. Anda dapat menambah atau mengurangkan sebuah nilai untuk menggeser batas numerik ke atas atau ke bawah. Pada statemen berikut, Anda memanggil metode Next untuk mendapatkan sebuah nilai acak dalam rentang 0 sampai 9, dan kemudian menambahkan 1 padanya. Jadi, nilai yang ditugaskan kepada intNil berada di dalam rentang 1 sampai 10:

intNil = rand.Next(10) + 1

Statemen berikut menunjukkan contoh lain. Ia menugaskan sebuah integer acak dengan rentang -50 sampai 49 kepada variabel intNil

intNil = rand.Next(100) - 50

Metode NextDouble
Anda dapat memanggil metode NextDouble dari sebuah objek Random untuk mendapatkan nilai acak pecahan dalam rentang 0.0 sampai 1.0 (tidak termasuk 1.0). Kode berikut menunjukkan sebuah contoh:

'mendeklarasikan sebuah variabel Double
Dim dbNil As Double

'menciptakan sebuah objek Random
Dim rand As New Random

'menghasilkan nilai acak dan menugaskan kepada dbNil
dbNil = rand.NextDouble()

Setelah kode ini dieksekusi, variabel dblNil akan memuat sebuah nilai acak pecahan dalam rentang 0.0 sampai (tetapi tidak termasuk) 1.0. Jika Anda menginginkan nilai acak pecahan dalam rentang yang lebih luas, Anda bisa mengalikannya dengan sebuah faktor penskala. Statemen berikut menugaskan sebuah nilai acak dalam rentang 0.0 sampai (tetapi tidak termasuk) 500.0 kepada variabel dblNil:

dblNil = rand.NextDouble() * 500.0

Statemen berikut menghasilkan sebuah nilai acak pecahan antara 100.0 sampai 600.0:

dblNil = (rand.NextDouble() * 500.0) + 100.0


Pada Tutorial 3.10, Anda akan menciptakan sebuah aplikasi VB yang menggunakan nilai-nilai acak untuk mensimulasikan pelemparan koin.

Tutorial 3.10: Menciptakan Aplikasi Pelemparan Koin
Pada tutorial ini, Anda akan menciptakan sebuah aplikasi yang mensimulasikan pelemparan sebuah koin. Setiap kali user melempar koin, aplikasi akan menciptakan sebuah objek Random untuk mendapatkan nilai integer acak dalam rentang 0 sampai 1. Jika nilai acak adalah 0, ini berarti sisi ekor dari koin berada di atas, dan jika nilai acak adalah 1, ini berarti sisi kepala yang berada di atas. Aplikasi akan menampilkan sebuah citra koin yang menunjukkan sisi kepala atau sisi ekor, tergantung dari nilai dari nilai acak.

Langkah 1: Ciptakanlah sebuah aplikasi Windows Forms Application dengan nama Melempar Koin.

Langkah 2: Bangunlah form dengan dua kontrol PictureBox dan dua Button, seperti ditunjukkan pada Gambar 3.36. Di dalam folder terkait, Anda akan mendapati dua file citra dengan nama kepala.gif dan ekor.gif. Tetapkan properti Image dari kontrol gbrKepala menjadi kepala.gif dan tetapkan properti Image dari kontrol grbEkor menjadi ekor.gif.

Langkah 3: Tetapkan properti Visible menjadi False untuk kedua kontrol PictureBox.

Gambar 3.36 Form Melempar Koin


Langkah 4: Klik ganda pada tombol tombolLempar untuk menciptakan sebuah template kode untuk event handler Click-nya. Sempurnakan event handler dengan menuliskan kode berikut yang ditunjukkan pada baris 2 sampai baris 20:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    Private Sub tombolLempar_Click(…) Handles tombolLempar.Click
        Dim intSisiAtas As Integer  'untuk mengindikasikan sisi mana yang di atas
        Dim rand As New Random      'pembangkit nilai Random

        'menghasilkan nilai acak dalam rentang 0 sampai 1
        '0 berarti ekor di atas, dan 1 berarti kepala di atas
        intSisiAtas = rand.Next(2)

        'menampilkan sisi yang di atas
        If intSisiAtas = 0 Then
            '1 berarti ekor di atas, jadi menampilkan citra
            'ekor dan menyembunyikan citra kepala
            gbrEkor.Visible = True
            gbrKepala.Visible = False
        Else
            '1 berarti kepala di atas, jadi menampilkan citra
            'kepala dan menyembunyikan citra ekor
            gbrKepala.Visible = True
            gbrEkor.Visible = False
        End If
    End Sub

Amati kode lebih dekat. Baris 2 mendeklarasikan sebuah variabel Integer dengan nama intSisiAtas. Variabel ini akan memuat sebuah nilai acak yang mengindikasikan sisi koin mana yang berada di atas. Baris 3 menciptakan sebuah objek Random, menggunakan nama rand untuk mengakses objek tersebut.

Baris 7 memanggil metode Next dari objek rand, melewatkan 2 sebagai argumennya. Ini berarti bahwa metode ini akan menghasilkan sebuah nilai dalam rentang 0 sampai 1. Nilai acak ini kemudian ditugaskan kepada variabel intSisiAtas.

Statemen If pada baris 10 menentukan apakah intSisiAtas bernilai 0. Jika ya, ini berarti sisi ekor dari koin yang berada di atas, jadi baris 13 membuat kontrol gbrEkor terlihat dan baris 14 menyembunyikan kontrol gbrKepala.

Statemen If pada baris 14 menentukan apakah intSisiAtas bernilai 1. Jika ya, ini berarti sisi kepala dari koin yang berada di atas, jadi baris 18 membuat kontrol gbrKepala terlihat dan baris 19 menyembunyikan kontrol gbrEkor.

Langkah 5: Tuliskanlah sebuah event handler untuk tombol tombolKeluar. Tombol ini akan menutup form ketika diklik.

Langkah 6: Simpan aplikasi dan jalankan. Awalnya Anda tidak akan melihat koin pada form. Ketika Anda mengklik tombol Lempar Koin, salah satu dari kedua citra (kepala atau ekor) akan ditampilkan, seperti ditunjukkan pada Gambar 3.37. Klik tombol ini beberapa kali untuk mensimulasikan pelemparan koin. Ketika selesai, klik tombol Keluar.

Gambar 3.37 Form Melempar Koin dengan sisi kepala dan sisi ekor di atas



3.8 Menyederhanakan Kode dengan Statemen With…End With
KONSEP: Statemen With…End With dapat Anda pakai untuk menyederhanakan serangkaian statemen yang melakukan operasi-operasi menggunakan objek yang sama.
Kadangkala Anda perlu menuliskan serangkaian statemen yang melakukan operasi-operasi pada kontrol atau objek yang sama. Kode berikut menunjukkan sebuah contoh dari sejumlah operasi yang dilakukan terhadap sebuah kotak teks dengan nama teksNama:

txtNama.Clear()
txtNama.ForeColor = Color.Blue
txtNama.BackColor = Color.Yellow
txtNama.BorderStyle = BorderStyle.Fixed3D

Pada Visual Basic, Anda dapat menyederhanakan kode ini menggunakan statemen With…End With, seperti berikut:

With teksNama
    .Clear()
    .ForeColor = Color.Blue
    .BackColor = Color.Yellow
    .BorderStyle = BorderStyle.Fixed3D
End With

Perhatikan bahwa pada statemen With…End With, Anda mengakses kontrol teksNama hanya sekali, pada baris pertama. Ini akan mengeliminasi kebutuhan untuk secara berulang mengetikkan teksNama di awal dari tiap baris.



3.9 ToolTip
KONSEP: ToolTip adalah sebuah cara standar dan mudah dalam menyediakan bantuan kepada pengguna aplikasi. Kontrol ToolTip dapat Anda pakai untuk menugaskan kisi-kisi pada kontrol-kontrol dari sebuah form.

ToolTip adalah sebuah kotak kecil yang ditampilkan ketika user menahan kursor mouse di atas sebuah kontrol. Kotak tersebut menunjukkan penjelasan singkat dari apa yang dilakukan oleh kontrol tersebut. Hampir semua aplikasi Windows menggunakan ToolTip sebagai cara untuk menyediakan bantuan kepada user.

Kontrol ToolTip dapat Anda pakai untuk memberikan penjelasan singkat untuk kontrol-kontrol lain pada sebuah form. Tempatkan kontrol ToolTip pada aplikasi Anda seperti Anda menempatkan kontrol-kontrol lain: klik ganda pada ikon ToolTip pada jendela Toolbox. Ketika Anda melakukannya, sebuah kontrol ToolTip akan ditempatkan di dalam luasan di bawah dari jendela Designer, seperti ditunjukkan pada Gambar 3.38.

Gambar 3.38 Kontrol ToolTip

Karena kontrol ToolTip tidak dapat dilihat saat aplikasi dijalankan, ia ditempatkan pada component tray di bawah jendela Designer.

Ketika Anda menambahkan sebuah kontrol ToolTip pada suatu form, properti baru ditambahkan pada kontrol-kontrol lain. Properti tersebut dinamai dengan ToolTip on KontrolToolTip, dimana KontrolToolTip adalah nama dari kontrol ToolTip. Sebagai contoh, dimisalkan bahwa Anda menambahkan sebuah kontrol ToolTip pada form dengan mempertahankan nama defaultnya sebagai ToolTip1. Properti baru yang ditambahkan pada kontrol-kontrol lain akan dinamai sebagai ToolTip on ToolTip1. Properti baru ini akan memuat string yang akan ditampilkan sebagai ToolTip dari kontrol.

Properti-Properti dari ToolTip
Anda dapat memilih kontrol ToolTip pada component tray dan kemudian memeriksa properti-propertinya pada jendela Properties. Properti InitialDelay menentukan jumlah waktu, dalam milidetik, yang terjadi antara saat user memosisikan pointer mouse pada sebuah kontrol dan kemunculan ToolTip. Pengaturan defaultnya adalah 500 atau setengah detik.

Properti AutoPopDelay juga merupakan takaran waktu dalam milidetik. Ia menentukan berapa lama sebuah ToolTip tetap ditampilkan ketika ia ditampilkan. Pengaturan defaultnya adalah 5000. Properti ReshowDelay memuat jumlah milidetik yang terjadi antara penampilan ToolTip yang berbeda ketika user memindahkan pointer mouse datu satu kontrol ke kontrol lain. Pengaturan defaulnya adalah 100.

Anda dapat menetapkan properti-properti ini secara individual, atau menetapkannya sekaligus dengan properti AutomaticDelay. Ketika Anda menyimpan sebuah nilai di dalam properti AutomaticDelay, properti InitialDelay ditetapkan dengan nilai yang sama tersebut, properti AutoPopDelay ditetapkan 10 kali dari nilai itu, dan properti ReshowDelay ditetapkan seperlima dari nilai itu. Pada Tutorial 3.11, Anda menambahkan ToolTip pada sebuah aplikasi.


ToolTip 3.11: Menambahkan ToolTip Pada Aplikasi
Langkah 1: Buka projek Melempar Koin yang telah Anda selesaikan pada Tutorial 3.10 dan buka form pada jendela Designer.

Langkah 2: Gulung ke bawah pada jendela Toolbox sampai Anda menemukan ikon ToolTip. Klik ganda pada ikon tersebut untuk menambahkan kontrol ToolTip pada component tray. Perhatikan bahwa nama defaul untuk kontrol ToolTip adalah ToolTip1.

Langkah 3: Ketika Anda menambahkan kontrol ToolTip1, Visual Basic secara otomatis menambahkan sebuah properti baru dengan nama ToolTip on ToolTip1 pada semua kontrol lain pada form. Pada jendela Designer, pilih tombolLempar, dan kemudian cari properti ToolTip on ToolTip1 pada jendela Properties.

Langkah 4: Tetapkan properti ToolTip on ToolTip1 dari kontrol Button tombolLempar menjadi Klik untuk melempar koin.

Langkah 5: Pada jendela Designer, pilih kontrol Button tombolKeluara, dan kemudian tetapkan properti ToolTip on ToolTip1 dari kontrol itu menjadi Klik untuk keluar.

Langkah 6: Simpan projek dan jalankan. Citra di sisi kiri menunjukkan ToolTip ditampilkan ketika Anda menahan kursor mouse di atas tombol tombolLempar, dan citra di kanan menunjukkan ToolTip ditampilkan ketika Anda menahan kursor mouse di atas tombol tombolKeluar.

Gambar 3.39 ToolTip ditampilkan




No comments:

Post a Comment