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:
- Pastikan kontrol ListBox diseleksi pada jendela Designer.
- Pada jendela Properties, pengaturan untuk properti Items ditampilkan sebagai (Collection). Ketika Anda menyeleksi properti Items, sebuah tombol elipsis (…) ditampilkan.
- Klik tombol elipsis tersebut. Kotak dialog String Collection Editor akan ditampilkan, seperti ditunjukkan pada Gambar 3.6.
- 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.
- 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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
Langkah 3: Klik tombol Baca Skor. Kotak masukan akan ditampilkan seperti pada Gambar 3.19.
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
No comments:
Post a Comment