Array
Bab ini akan
mendiskusikan array, yang merupakan grup yang memuat variabel-variabel yang
bisa dipakai untuk menyimpan sekumpulan data. Array satu-dimensi berguna untuk
menyimpan dan bekerja dengan satu himpunan data, sedangkan array dua-dimensi
dapat dipakai untuk menyimpan dan bekerja dengan sejumlah himpunan data. Bab
ini menyajikan sejumlah teknik pemrograman array, seperti penjumlahan dan
pererataan elemen-elemen di dalam sebuah array, penjumlahan semua kolom pada
suatu array dua-dimensi, pencarian suatu nilai spesifik pada sebuah array, dan
penggunaan array-array paralel. Properti Enabled,
Anchor, dan Dock, dan kontrol Timer
juga akan dibahas.
6.1 Array
KONSEP: Array adalah sekelompok variabel yang memiliki satu nama. Anda
menyimpan dan bekerja dengan nilai-nilai di dalam sebuah array menggunakan
subskript.
Kadangkala diperlukan
bagi sebuah aplikasi untuk menyimpan sejumlah nilai dengan tipe sama.
Seringkali lebih baik untuk melakukannya dengan menciptakan sebuah array
daripada menggunakan beberapa variabel individu. Array seperti sekelompok variabel yang memiliki nama sama. Setiap
nilai yang disimpan di dalam sebuah array disebut dengan elemen. Anda dapat mengakses elemen-elemen di dalam sebuah array
melalui subskript. Subskript, yang
juga dikenal dengan indeks, adalah
sebuah nomor yang mengidentifikasi elemen tertentu di dalam sebuah array.
Penomoran subskript
diawali dari 9, jadi subskript dari elemen pertama di dalam sebuah array adalah
0 dan subskript dari elemen terakhir adalah jumlah elemen total array dikurangi
dengan satu. Sebagai contoh, perhatikan sebuah array dengan tujuh integer.
Subskript dari elemen pertamanya adalah 0 dan subskript dari elemen terakhirnya
adalah 6.
Mendeklarasikan Array
Anda mendeklarasikan
sebuah array dengan cara yang hampir sama dengan ketika Anda mendeklarasikan
variabel biasa. Berikut adalah bentuk umum dari pendeklarasian array:
Dim
NamaArray (SubskriptAtas) As TipeData
Amati sintaksis itu lebih
dekat:
- NamaArray adalah nama dari array.
- SubskriptAtas adalah nilai dari subskript tertinggi dari array. Ini harus berupa integer positif, konstanta, atau variabel integer yang memuat nilai positif.
- TipeData adalah sebuah tipe data Visual Basic.
Lihat contoh-contoh
berikut.
Dim
intJam(6) As Integer
Statemen ini
mendeklarasikan intJam sebagai sebuah array yang memuat integer-integer. Nomor
atau nilai yang ada di dalam kurung, 6, mengindikasikan subskript tertinggi
dari array. Gambar 6.1 menunjukkan bahwa array ini memuat tuju elemen dengan
subskript 0 sampai 6. Gambar itu menunjukkan bahwa setiap elemen array
diinisialisasi dengan nilai 0.
Gambar 6.1 Array intJam
Berikut adalah contoh
lain dari sebuah deklarasi array:
Dim
decGaji(4) As Decimal
Statemen ini
mendeklarasikan decGaji sebagai
sebuah array dengan lima nilai Decimal,
seperti ditunjukan pada Gambar 6.2 dengan subskript 0 sampai 4. Contoh berikut
menggunakan isi dari sebuah variabel Integer
untuk menetapkan ukuran array:
Dim
intUkuran As Integer = 4
Dim decGaji(intUkuran)
As Decimal
Gambar 6.2 Array decGaji
Penetapan Ukuran
Array Secara Implisit dan Inisialisasi Array
Anda dapat menetapkan
ukuran array secara implisit dengan mengabaikan subskript atas pada deklarasi
array dan menyediakan sebuah daftar inisialisasi. Daftar inisialisasi array
adalah suatu himpunan nilai yang diapit oleh kurung kurawal, dengan nilai-nilai
dipisahkan dengan koma. Berikut adalah sebuah contoh dari pendeklarasian array
yang menggunakan daftar inisialisasi:
Dim
intNilai() As Integer = { 2, 4, 6, 8, 10, 12 }
Statemen ini
mendeklarasikan intNilai sebagai
sebuah array yang memuat integer-integer. Nilai 2, 4, 6, 8, 10, dan 12 disimpan
di dalam array. Nilai 2 disimpan pada elemen nol, 4 disimpan pada elemen satu,
dan seterusnya. Perhatikan bahwa tidak ada subskript atas yang disediakan di
dalam kurung. Pada kasus ini, array memiliki enam elemen, seperti ditunjukkan
pada Gambar 6.3.
Gambar 6.3 Array intNilai
Kode berikut
mendeklarasikan ukuran array string secara implisit:
Dim
strTeman() As String = { "Joe", "Geri", "Bili",
"Rosi" }
Anda dapat menginisialisasi
sebuah array dengan string-string kosong, seperti ditunjukkan di sini:
Dim
strTeman() As String = { "", "", "", ""
}
Adalah ide yang baik
untuk menginisialisasi sebuah array string, khususnya jika ada peluang bahwa
program Anda akan mengakses elemen-elemennya sebelum ada data disimpan di
dalamnya. Penerapan sebuah operasi pada suatu array string akan menyebabkan
error runtime jika tidak ada data yang disimpan di dalam array tersebut.
Menggunakan
Konstanta Bernama Sebagai Subskript Pada Deklarasi Array
Untuk membuat program
lebih mudah untuk dikembangkan, programer biasanya menggunakan konstanta
bernama sebagai subskript atas pada sebuah deklarasi array, seperti ditunjukkan
pada kode berikut:
Const
intSUBSKRIPT_MAKS As Integer = 100
Dim
intArray(intSUBSKRIPT_MAKS) As Integer
Cukup sering, ketika Anda
menuliskan kode yang memproses array, Anda perlu mengakses nilai dari subskript
atas dari array. Anda akan melihat contoh seperti ini nanti pada bab ini.
Ketika Anda mendeklarasikan sebuah konstanta bernama untuk merepresentasikan
subskript atas dari array, Anda dapat menggunakan konstanta itu kapan saja
ketika Anda perlu mengakses subskript terakhir pada array. Kemudian, jika Anda
perlu memodifikasi program sehingga array berukuran berbeda, Anda hanya perlu
mengubah nilai dari konstanta bernama itu.
Bekerja dengan
Elemen-Elemen Array
Anda dapat menyimpan
sebuah nilai di dalam suatu elemen array menggunakan statemen penugasan. Di
sisi kiri dari operator =, Anda menggunakan nama array dengan subskript dari
elemen yang ingin Anda tugaskan. Sebagai contoh, dimisalkan bahwa intNilai
adalah sebuah array integer dengan subskript 0 sampai 5. Statemen-statemen
berikut menyimpan nilai pada tiap elemen array:
intNilai(0)
= 100
intNilai(1)
= 200
intNilai(2)
= 300
intNilai(3)
= 400
intNilai(4)
= 500
intNilai(5)
= 600
Gambar 6.4 menunjukkan
nilai-nilai yang ditugaskan kepada elemen-elemen array setelah
statemen-statemen ini dieksekusi.
Gambar 6.4 Array intNilai dengan nilai-nilai yang
ditugasi
Mengakses
Elemen-Elemen Array dengan Loop
Anda dapat menugaskan
sebuah integer kepada suatu variabel dan kemudian menggunakan variabel itu
sebagai subskript. Ini memungkinkan penggunaan loop dalam mengakses array
secara menyeluruh, melakukan operasi yang sama pada setiap elemen. Ini berguna
ketika Anda ingin memproses elemen-elemen di dalam sebuah array besar karena
penulisan statemen-statemen secara individual memerlukan penulisan kode yang
panjang.
Sebagai contoh, kode
berikut mendeklarasikan intDeret
sebagai sebuah array dengan 10 integer. Subskript array mulai dari 0 sampai 9.
Loop For…Next menyimpan nilai 100
pada tiap elemen array, diawali dari subskript 0:
Const
intSUBSKRIPT_MAKS As Integer = 9
Dim
intDeret(intSUBSKRIPT_MAKS) As Integer
Dim
intHitung As Integer
For
intHitung = 0 To intSUBSKRIPT_MAKS
intDeret(intHitung) = 100
Next
Variabel intHitung, yang digunakan sebagai
kounter atau pencacah loop, mengambil nilai 0 sampai 0 ketika loop beriterasi.
Iterasi pertama pada loop, intHitung
sama dengan 0, sehingga statemen intDeret(intHitung)
= 100 menugaskan 100 kepada intDeret(0).
Ketika iterasi kedua loop dieksekusi, statemen menyimpan 100 di dalam intDeret(1), dan seterusnya. Gambar 6.5
mengilustrasikan bagaimana loop dibangun sehingga variabel kounter diawali dari
subskript array pertama dan berakhir pada subskript array terakhir.
Contoh berikut
menggunakan sebuah loop Do While
untuk melakukan operasi yang sama:
Const
intSUBSKRIPT_MAKS As Integer = 9
Dim
intDeret(intSUBSKRIPT_MAKS) As Integer
Dim
intHitung As Integer = 0
Do
While intHitung <= intSUBSKRIPT_MAKS
intDeret(intHitung) = 100
intHitung += 1
Loop
Telah disebutkan
sebelumnya bahwa adalah hal baik untuk menginisialisasi sebuah array string
ketika ada peluang bahwa program Anda akan mengakses elemen-elemennya sebelum
data disimpan. Akan melelahkan bila menyediakan penginisialisasi terpisah untuk
setiap elemen array. Untuk mengatasinya, Anda bisa menggunakan sebuah loop
untuk menginisialisasi elemen-elemen array. Sebagai contoh, kode berikut
menyimpan string kosong ke dalam setiap elemen dari array strNama, sebuah array
string dengan 1000-elemen:
Const
intSUBSKRIPT_MAKS As Integer = 999
Dim
strNama(intSUBSKRIPT_MAKS) As String
Dim
intHitung As Integer
For
intHitung = 0 To intSUBSKRIPT_MAKS
strNama (intHitung) = String.Empty
Next
Pemeriksaan Batas
Array
Sistem runtime Visual
Basic melakukan pemeriksaan batas array, yang berarti bahwa ia tidak
membolehkan sebuah statemen untuk menggunakan subskript di luar rentang valid
untuk array. Sebagai contoh, pada deklarasi berikut, array dengan nama intNilai memiliki rentang subskript 0
sampai 10:
Const
intSUBSKRIPT_MAKS As Integer = 10
Dim
intNilai(intSUBSKRIPT_MAKS) As Integer
Jika sebuah statemen
menggunakan subskript yang kurang dari 0 dan lebih besar dari 10 dengan array
ini, maka program akan melemparkan eksepsi.
Kompiler tidak akan
menampilkan pesan error pada saat perancangan (design time) ketika Anda menuliskan statemen semacam itu. Sebagai
contoh, loop pada kode berikut menggunakan subskript di luar rentang yang
valid:
Const
intSUBSKRIPT_MAKS As Integer = 10
Dim
intNilai(intSUBSKRIPT_MAKS) As Integer
Dim
intIndeks As Integer
For
intIndeks = 0 To 20
intNilai(intIndeks) = 99
Next
Pada saat aplikasi
dijalankan, loop ini dieksekusi sampai intIndeks
sama dengan 11. Pada titik itu, ketika statemen penugasan mencoba untuk
menggunakan intIndeks sebagai sebuah
subskript, eksepsi dilemparkan, seperti ditunjukkan pada Gambar 6.6.
Tutorial 6.1: Menggunakan Array Untuk
Memuat Sejumlah Nilai Acak
Pada tutorial ini, Anda
akan menciptakan sebuah aplikasi yang secara acak membangkitkan nilai-nilai
lotere. Ketika sebuah tombol diklik, aplikasi akan membangkitkan lima buah
integr 2-dijit dan menyimpannya ke dalam sebuah array. Isi array kemudian
ditampilkan pada sejumlah label pada form.
Langkah 1: Ciptakanlah sebuah projek Windows
Forms Application baru dengan nama Angka Lotere.
Langkah 2: Bangunlah form dari projek dengan sejumlah kontrol Label dan Button seperti
ditunjukkan pada Gambar 6.7. Tetapkan properti-properti berikut untuk setiap
kontrol Label:
- AutoSize = False
- BorderStyle = Fixed3D
- TextAlign = MiddleCenter
- Hapus properti Text
Langkah 3: Sempurnakan kode untuk dua event handler pada form seperti ditunjukkan
berikut. (Jangan ketika nomor baris, karena ditunjukkan hanya 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
|
Public Class FormLotere
Private
Sub tombolBangkitkan_Click(…) Handles tombolBangkitkan.Click
'menciptakan sebuah array untuk
menampung lima angka lotere
Const intSUBSKRIPT_MAKS As Integer =
4 'subskript maksimum
Dim intAngka(intSUBSKRIPT_MAKS) As Integer
'deklarasi array
Dim intHitung As Integer 'pencacah
loop
'menciptakan sebuah objek Random
Dim rand As New Random
'mengisi array dengan nilai-nilai
acak
'setiap nilai berada dalam rentang
0-99.
For intHitung = 0 To
intSUBSKRIPT_MAKS
intAngka(intHitung) =
rand.Next(100)
Next
'menampilkan elemen-elemen array pada
label-label
labelPertama.Text =
intAngka(0).ToString()
labelKedua.Text =
intAngka(1).ToString()
labelKetiga.Text =
intAngka(2).ToString()
labelKeempat.Text =
intAngka(3).ToString()
labelKelima.Text =
intAngka(4).ToString()
End Sub
Private
Sub tombolKeluar_Click(…) Handles tombolKeluar.Click
'menutup form
Me.Close()
End Sub
End Class
|
Amati kode lebih dekat
untuk event handler btnBangkitkan_Click.
Baris 5 mendeklarasikan konstanta intSUBSKRIPT_MAKS,
yang ditetapkan dengan nilai 4, dan baris 6 mendeklarasikan sebuah array
integer dengan nama intAngka.
Konstanta ini dipakai sebagai subskript atas. Seperti ditunjukkan pada Gambar 6.8,
array intAngka memiliki lima elemen, dan subskriptnya akan bernilai 0 sampai 4.
Baris 7 mendeklarasikan sebuah variabel dengan nama intHitung yang akan dipakai sebagai pencacah loop.
Baris 10 mendeklarasikan
sebuah objek Random, menggunakan
nama rand untuk mengakses objek itu.
Kemudian, loop For…Next pada baris
14 dieksekusi. Jika Anda mempelajari baris 14 secara hati-hati, Anda akan
melihat bahwa loop akan beriterasi lima kali:
·
Pada iterasi pertama, intHitung akan ditetapkan 0.
·
Pada iterasi kedua, intHitung akan ditetapkan 1.
·
Pada iterasi ketiga, intHitung akan ditetapkan 2.
·
Pada iterasi keempat, intHitung akan ditetapkan 3.
·
Pada iterasi kelima, intHitung akan ditetapkan 4.
Statemen di dalam loop
pada baris 15 membaca nilai acak dalam rentang 0 sampai 99 dan menugaskannya
kepada intAngka(intHitung). Sebagai
hasilnya,
·
Nilai acak pertama akan ditugaskan kepada intAngka(0).
·
Nilai acak kedua akan ditugaskan kepada intAngka(1).
·
Nilai acak ketiga akan ditugaskan kepada intAngka(2).
·
Nilai acak keempat akan ditugaskan kepada intAngka(3).
·
Nilai acak kelima akan ditugaskan kepada intAngka(4).
Statemen-statemen pada
baris 19 sampai baris 23 menampilkan nilai dari tiap elemen dengan menugaskan
nilai-nilai kepada kontrol-kontrol Label.
Perhatikan bahw Anda memanggil metode ToString
dari tiap elemen array untuk mengkonversi nilainya menjadi string, seperti
ditunjukkan pada baris 19:
labelPertama.Text
= intAngka(0).ToString()
Nilai yang disimpan di
dalam intNilai(0) adalah sebuah
integer, sehingga ekspresi intNilai(0).ToString()
mengkonversi nilai itu menjadi sebuah string. String yang dihasilkan kemudian
ditugaskan kepada properti Text dari
kontrol labelPertama. Teknik ini
dipakai untuk mengkonversi elemen-elemen array lainnya dan menugaskan
nilai-nilainya kepada kontrol-kontrol Label
pada baris 20 sampai baris 23.
Langkah 4: Simpan projek, dan jalankan aplikasi. Klik tombol Bangkitkan Angka. Anda akan
melihat nilai-nilai acak yang ditampilkan pada tiap kontrol Label, seperti ditunjukkan pada Gambar 6.9.
Menggunakan
Elemen-Elemen Array Untuk Menyimpan Masukan
Elemen-elemen array dapat
disimpan untuk menampung data yang dimasukkan oleh user. Sebagai contoh, kode
berikut membaca nilai-nilai dari user dan menyimpannya ke dalam array intDeret:
Const
intSUBSKRIPT_MAKS As Integer = 9
Dim
intDeret(intSUBSKRIPT_MAKS) As Integer
Dim
intHitung As Integer
For
intHitung = 0 To intSUBSKRIPT_MAKS
intDeret(intHitung) = CInt(InputBox("Masukkan
sebuah nilai."))
Next
Pada Tutorial 6.2, Anda
akan menciptakan sebuah aplikasi yang menggunakan kotak masukan untuk membaca
suatu runtun string sebagai masukan, dan menyimpan string-string tersebut ke
dalam sebuah array.
Tutorial 6.2: Menggunakan Array Untuk Memuat Daftar Nama Yang Dimasukkan User
Pada tutorial ini, Anda
akan menciptakan sebuah aplikasi yang menggunakan array untuk menampung lima
string. Aplikasi ini akan memiliki sebuah tombol yang dapat dipakai untuk
memasukkan nama dari lima teman. Nama-nama itu kemudian akan disimpan di alam
array dan ditampilkan pada sebuah kotak list.
Langkah 1: Ciptakanlah sebuah projek Windows
Forms Application dengan nama Daftar
Teman.
Langkah 2: Bangunlah form projek dengan sebuah kontrol ListBox dan dua kontrol Button
seperti ditunjukkan pada Gambar 6.10.
Langkah 3: Sempurnakan kode untuk event handler pada form seperti ditunjukkan
berikut. (Jangan ketika nomor baris, karena hanya ditujukan 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
|
Public Class FormTeman
Private
Sub tombolMasukkanNama_Click(…) Handles tombolMasukkanNama.Click
Const intSUBSKRIPT_MAKS As Integer =
4 'subskript maks
Dim strNama(intSUBSKRIPT_MAKS) As
String 'array menampung nama-nama
Dim intHitung As Integer ' Loop
counter
'memberitahu user apa yang harus
dilakukan
MessageBox.Show("Saya meminta
Anda untuk memasukkan nama " &
"dari lima teman.")
'membaca nama dan menyimpannya ke
dalam array
For intHitung = 0 To
intSUBSKRIPT_MAKS
strNama(intHitung) =
InputBox("Masukkan nama teman.")
Next
'membersihkan kotak list
listTeman.Items.Clear()
'menampilkan isi array pada kotak
list
For intHitung = 0 To
intSUBSKRIPT_MAKS
listTeman.Items.Add(strNama(intHitung))
Next
End Sub
Private
Sub tombolKeluar_Click(…) Handles tombolKeluar.Click
'menutup
Me.Close()
End Sub
End Class
|
Amati kode lebih dekat
untuk event handler tombolMasukkanNama_Click.
Baris 4 mendeklarasikan konstanta intSUBSKRIPT_MAKS,
yang ditetapkan dengan nilai 4, dan baris 5 mendeklarasikan sebuah array string
dengan nama strNama. Konstanta intSUBSKRIPT_MAKS dipakai sebagai
subskript atas. Seperti ditunjukkan pada Gambar 6.11, array strNama memiliki lima elemen, dan
subskriptnya akan bernilai 0 sampai 4. Baris 6 mendeklarasikan sebuah variabel
dengan nama intHitung yang akan
dipakai sebagai pencacah loop.
Baris 9 dan baris 10
menampilkan sebuah kotak pesan yang meminta user untuk memasukkan lima nama.
Kemudian, loop For…Next pada baris
13 dieksekusi lima kali:
·
Pada iterasi pertama, intHitung ditetapkan 0.
·
Pada iterasi kedua, intHitung ditetapkan 1.
·
Pada iterasi ketiga, intHitung ditetapkan 2.
·
Pada iterasi keempat, intHitung ditetapkan 3.
·
Pada iterasi kelima, intHitung ditetapkan 4.
Statemen di dalam loop,
pada baris 14, melakukan hal berikut: (1) menampilkan sebuah kotak masukan yang
meminta user untuk memasukkan nama teman, dan (2) menugaskan nilai yang
dimasukkan oleh user kepada strNama(intHitung).
Sebagai hasilnya,
·
Nama pertama yang dimasukkan oleh user akan
ditugaskan kepada strNama(0).
·
Nama kedua yang dimasukkan oleh user akan
ditugaskan kepada strNama(1).
·
Nama ketiga yang dimasukkan oleh user akan
ditugaskan kepada strNama(2).
·
Nama keempat yang dimasukkan oleh user akan
ditugaskan kepada strNama(3).
·
Nama kelima yang dimasukkan oleh user akan
ditugaskan kepada strNama(4).
Baris 18 membersihkan isi
dari kotak list listTeman. Kemudian,
loop For…Next lain dieksekusi pada
baris 21. Sama seperti loop For…Next
sebelumnya, loop ini menggunakan variabel intHitung
untuk menjejak elemen-elemen dari array strNama.
Ketika loop ini dieksekusi, statemen pada baris 22 menambahkan sebuah elemen
array pada kotak list listTeman.
Setelah loop selesai dieksekusi, setiap nama yang disimpan di dalam array strNama akan ditampilkan pada kotak
list.
Langkah 4: Simpan projek, dan jalankan aplikasi. Klik tombol Masukkan Nama, dan kemudian masukkan lima nama pada kotak masukan.
Setelah Anda memasukkan nama terakhir, Anda akan melihat nama-nama ditampilkan
pada kotak list, seperti ditampilkan pada Gambar 6.12.
Panjang Array
Array memiliki properti Length yang menampung jumlah elemen di
dalam array. Sebagai contoh, diasumsikan deklarasi berikut:
Dim
strNama() As String = { "Joe", "Geri", "Rosi" }
Array strNama memiliki 3 elemen, dengan
subskript atas 2. Properti Length
dari array ini menghasilkan nilai 3. Berikut adalah contoh kode yang
menggunakan properti Length:
For
intHitung = 0 to strNama.Length – 1
MessageBox.Show(strNama(intHitung))
Next
Kode ini menggunakan
ekspresi strNama.Length-1 sebagai
batas atas loop, karena nilai di dalam properti Length adalah 1 lebih besar dari subskript atas dari array. Seperti
yang akan Anda pelajari nanti, adalah dimungkinkan untuk mengubah ukuran dari
sebuah array ketika aplikasi sedang berjalan. Anda dapat menggunakan properti Length untuk mendapatkan nilai terkini
dari ukuran array.
Memproses Isi
Array
Anda dapat menggunakan
elemen array sama seperti variabel biasa. Sebagai contoh, diasumsikan bahwa
intJam adalah sebuah array integer. Statemen berikut mengalikan intJam(3) dengan variabel decGajiPerJam dan menyimpan hasilnya
pada variabel decGajiKotor:
decGajiKotor = intJam(3) * decGajiPerJam
Diasumsikan bahwa intNilai adalah sebuah array integer.
Statemen berikut menambahkan 1 pada intNilai(0):
intNilai(0) += 1
Dan, diasumsikan bahwa decGaji adalah sebuah array Decimal. Statemen berikut menampilkan decGaji(5) pada sebuah kotak pesan:
MessageBox.Show(decGaji(5).ToString())
Pada Tutorial 6.3, Anda
akan menciptakan sebuah aplikasi yang melakukan perhitungan-perhitungan
menggunakan elemen-elemen array.
Tutorial 6.3: Menciptakan Sebuah
Aplikasi yang Menggunakan Elemen-Elemen Array Pada Perhitungan
Sebuah Rumah Pizza memiliki enam orang pekerja, masing-masing dibayar Rp.
12 ribu per jam. Pada tutorial ini, sebuah aplikasi yang menyimpan banyaknya
jam kerja oleh tiap pekerja di dalam sebuah array. Aplikasi menggunakan
nilai-nilai di dalam array untuk menghitung gaji kotor dari tiap pekerja.
Langkah 1: Buka projek Hitung Gaji. Gambar 6.13 menunjukkan
form dari projek, yang telah disediakan untuk Anda.
Langkah 2: Sempurnakan kode untuk
event handler kontrol Button seperti
ditunjukkan berikut:
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
|
Public Class Form1
Private
Sub tombolHitungGaji_Click(…) Handles tombolHitungGaji.Click
'konstanta-konstanta
Const decGAJI_PER_JAM As Decimal =
12000D
Const intSUBSKRIPT_MAKS As Integer =
5
'array dan variabel-variabel lain
Dim dblArrayJam(intSUBSKRIPT_MAKS) As
Double
Dim intHitung As Integer = 0 'pencacah loop
Dim decGajiPekerja As Decimal 'memuat gaji kotor
'meminta user untuk memasukkan jam
kerja tiap pekerja
MessageBox.Show("Saya meminta
Anda untuk memasukkan " &
"banyaknya jam kerja tiap
pekerja.")
'membaca banyak jam kerja oleh
karyawan
Do While intHitung < dblArrayJam.Length
Try
dblArrayJam(intHitung) =
CDbl(InputBox("Nomor
pekerja " &
(intHitung + 1).ToString()))
intHitung += 1
Catch
'menampilkan pesan error
untuk masukan tak valid
MessageBox.Show("Masukkan jumlah jam kerja " &
"yang valid untuk
pekerja.")
End Try
Loop
'membersihkan kotak list
listKeluaran.Items.Clear()
'menghitung dan menampilkan gaji
kotor tiap pekerja
For intHitung = 0 To
dblArrayJam.Length - 1
decGajiPekerja =
CDec(dblArrayJam(intHitung) *
decGAJI_PER_JAM)
listKeluaran.Items.Add("Pekerja
" &
(intHitung + 1).ToString() &
" bergaji Rp. " &
decGajiPekerja.ToString())
Next
End Sub
Private
Sub tombolKeluar_Click(…) Handles tombolKeluar.Click
'menutup form
Me.Close()
End Sub
End Class
|
Amati kode pada event handler tombolHitungGaji_Click
lebih dekat. Berikut adalah simpulan dari deklarasi-deklarasi pada baris 5
sampai baris 11:
·
Baris 5 mendeklarasikan konstanta decGAJI_PER_JAM untuk gaji pekerja per
jam.
·
Baris 6 mendeklarasikan konstanta intSUBSKRIPT_MAKS untuk subskript atas
pada array.
·
Baris 9 mendeklarasikan dblArrayJam, sebuah array Double, untuk memuat semua banyaknya jam
kerja dari pekerja.
·
Baris 10 mendeklarasikan intHitung, yang akan dipakai sebagai pencacah loop (diinisialisasi
dengan 0) dan untuk menjejak array dblArrayJam.
·
Baris 11 mendeklarasikan decGajiPekerja, sebuah variabel Decimal untuk menampung gaji kotor pekerja.
Baris 14 dan baris 15 menampilkan sebuah kotak pesan, yang memberitahu
user apa yang diminta. Loop Do While
yang diawali pada baris 18 menggunakan variabel intHitung untuk menjejak array dblArrayJam.
Ingat bahwa intHitung diinisialisasi
dengan 0. Loop dieksekusi sepanjang intHitung
bernilai kurang dari dblArrayJam.Length.
Di dalam loop, sebuah statemen Try-Catch
dipakai untuk menangkap sembarang eksepsi yang bisa saja terjadi jika user
memasukkan nilai tak numerik. Statemen yang ada pada baris 20 sampai baris 22
melakukan hal-hal berikut:
·
Menampilkan sebuah kotak masukan yang meminta user
untuk memasukkan banyaknya jam kerja untuk tiap pekerja.
·
Menggunakan fungsi CDbl untuk mengkonversi masukan user menjadi sebuah Double.
·
Menugaskan nilai yang dihasilkan kepada elemen
array dblArrayJam(intHitung).
Jika user memasukkan nilai tak valid, program akan melompat ke klausa Catch pada baris 24, menampilkan pesan
error pada baris 26 dan baris 27, dan kemudian loop dimulai kembali. Jika user
memasukkan nilai yang valid, baris 23 akan menambahkan 1 pada variabel intHitung. Loop kemudian dimulai
kembali.
Setelah user memasukkan nilai-nilai untuk elemen-elemen array, baris 32
membersihkan kotak list, dan kemudian loop For…Next
pada baris 35 dimulai. Loop ini juga menggunakan variabel intHitung untuk menjejak setiap elemen array. Baris 36 dan baris 37
menggunakan sebuah elemen array untuk menghitung gaji kotor pekerja, dan baris
39 sampai baris 42 menambahkan sebuah string pada kotak list yang melaporkan
gaji kotor pekerja.
Langkah 3:Simpan projek, dan
jalankan aplikasi. Klik tombol Hitung Gaji. Serangkaian kotak masukan akan
ditampilkan, yang meminta Anda untuk memasukkan banyaknya jam kerja untuk
pekerja 1 sampai pekerja 6. Masukkan nilai-nilai berikut secara berurutan:
Pekerja 1: 10
Pekerja 2: 20
Pekerja 3: 30
Pekerja 4: 40
Pekerja 5: 50
Pekerja 6: 60
Setelah Anda memasukkan banyak jam kerja untuk pekerja 6, form akan
ditampilkan, seperti pada Gambar 6.14.
Langkah 4: Klik tombol Keluar untuk mengakhiri program.
Mengakses
Elemen-Elemen Array dengan Loop For Each
Visual Basic menyediakan
sebuah loop spesial yang dikenal dengan loop For Each. Loop For Each dapat menyederhanakan pemrosesan ketika pekerjaan Anda hanya
menjejak atau menelusuri sebuah array, membaca nilai dari tiap elemen array.
Loop ini dapat membaca elemen-elemen array, tetapi ia tidak dapat memodifikasi
nilai-nilainya. Loop For Each dituliskan dengan bentuk umum
berikut:
For Each var As tipe In array
statemen_statemen
Next
Pada bentuk umumnya, var adalah nama dari sebuah variabel
yang akan diciptakan hanya untuk digunakan pada loop, tipe adalah tipe data dari array, dan array adalah nama dari sebuah array. Loop ini akan beriterasi satu
kali untuk setiap elemen array. Setiap kali loop beriterasi, ia menyalin sebuah
elemen array ke variabel var.
Sebagai contoh, pertama kali loop beriterasi, variabel var akan memuat nilai dari array(0);
kedua kalinya loop beriterasi, variabel var
akan memuat array(1); dan
seterusnya. Ini berlanjut sampai loop menjejak semua elemen di dalam array.
Sebagai contoh,
dimisalkan bahwa Anda memiliki deklarasi array berikut:
Dim
intArray() As Integer = {10, 20, 30, 40, 50, 60}
Berikut adalah loop For Each yang menampilkan semua elemen array pada sebuah kontrol ListBox dengan nama listTampil:
For
Each intNil As Integer In intArray
listTampil.Items.Add(intNil)
Next
Topik Opsional:
Menggunakan Loop For Each dengan kontrol ListBox
Loop For Each dapat pula dipakai untuk memproses item-item di dalam
sebuah koleksi. Dimisalkan bahwa Anda ingin melakukan pencarian nama kota pada
koleksi Items dari sebuah kontrol ListBox dengan nama listKota. Diasumsikan pula bahwa user
telah memasukkan sebuah nama kota ke dalam kontrol TextBox dengan nama teksKota.
Gambar 6.15 menunjukkan sebuah contoh program. Berikut adalah statemen-statemen
yang dieksekusi untuk melakukan pencarian:
For
Each strKota As String In listKota.Items
If strKota = teksKota.Text Then
labelHasil.Text = "Kota ditemukan!"
End If
Next
6.2 Teknik-Teknik Pemrosesan Array
KONSEP: Ada banyak teknik pemrograman yang dapat diterapkan pada array.
Anda dapat mencari nilai total dari semua elemen dan melakukan pencarian elemen
tertentu. Informasi terkait dapat disimpan pada array-array paralel. Selain
itu, ukuran array dapat diubah saat aplikasi dijalankan.
Bagaimana Mencari
Nilai Total Dari Semua Elemen Array
Untuk mencari total dari
semua elemen array, Anda bisa menggunakan loop dengan sebuah variabel
akumulator. Loop tersebut menjumlahkan nilai pada tiap elemen array pada
akumulator tersebut. Sebagai contoh, diasumsikan bahwa deklarasi array berikut
ada pada sebuah aplikasi, dan nilai-nilai telah disimpan di dalam array:
Const
intSUBSKRIPT_MAKS As Integer = 24
Dim
intUnit(intSUBSKRIPT_MAKS) As Integer
Kode berikut menjumlahkan
tiap elemen array pada variabel intTotal:
Dim
intTotal As Integer = 0
Dim
intHitung As Integer
For
intHitung = 0 To (intUnit.Length – 1)
intTotal += intUnit(intHitung)
Next
CATATAN: Statemen pertama pada contoh tersebut menentapkan intTotal menjadi 0. Ingat dari Bab 5 bahwa sebuah variabel
akumulator perlu ditetapkan 0 sebelum ia digunakan untuk menjejak nilai total
berjalan. Meskipun Visual Basic secara otomatis menginisialisasi variabel
numerik dengan 0, statemen ini menekankan bahwa intTotal harus sama dengan 0 sebelum loop dimulai.
Contoh tersebut
mendemonstrasikan bagaimana menggunakan loop For…Next untuk mencari nilai total dari semua elemen array. Anda
dapat pula menggunakan loop For Each, seperti ditunjukkan pada kode
berikut:
Dim
intTotal As Integer = 0
For Each intNil As Integer In intUnit
intTotal += intNil
Next
Ketika loop selesai
dieksekusi, intTotal akan memuat
nilai total dari semua elemen array.
Menghitung Nilai
Rerata Pada Array Numerik
Langkah pertama dalam
menghitung nilai rerata pada sebuah array numerik adalah menjumlahkan semua
elemen array. Langkah kedua adalah membagi hasil penjumlahan tersebut dengan
banyak elemen di dalam array. Diasumsikan bahwa deklarasi berikut ada pada
sebuah aplikasi, dan nilai-nilai telah disimpan di dalam array:
Const
intSUBSKRIPT_MAKS As Integer = 24
Dim
intUnit(intSUBSKRIPT_MAKS) As Integer
Loop berikut menghitung
nilai rerata pada array intUnit.
Nilai rerata disimpan di dalam variabel dblRerata:
Dim
intTotal As Integer = 0
Dim
dblRerata As Double
Dim
intHitung As Integer
For
intHitung = 0 To (intUnit.Length - 1)
intTotal += intUnit(intHitung)
Next
'menggunakan
pembagian titik-mengambang untuk menghitung rerata
dblRerata =
intTotal / intUnit.Length
Statemen yang menghitung
rerata (dblRerata) harus ditempatkan
setelah akhir loop. Ia hanya dieksekusi sekali saja.
Mencari Nilai
Tertinggi dan Nilai Terendah Pada Array Integer
Pada awal bab ini, ketika
mempelajari loop For Each, Anda
mengetahui bagaimana mencari nilai terbesar pada sebuah array. Anda akan
melihat contoh yang sama menggunakan loop For
Next dan mengakses setiap elemen array menggunakan subskript. Diasumsikan
bahwa deklarasi array berikut ada pada sebuah aplikasi, dan bahwa nilai-nilai
telah disimpan di dalam array:
Dim
intNilai() As Integer = {1, 2, 3, 4, 5}
Dim
intHitung As Integer 'pencacah
loop
Dim
intTertinggi As Integer 'untuk
memuat nilai tertinggi
'membaca
elemen pertama
intTertinggi
= intNilai(0)
'mencari
nilai tertinggi
For
intHitung = 1 To (intNilai.Length - 1)
If intNilai(intHitung) > intTertinggi
Then
intTertinggi = intNilai(intHitung)
End If
Next
Kode ini diawali dengan
menugaskan nilai dari elemen array pertama kepada variabel intTertinggi. Selanjutnya, loop membandingkan semua elemen array
lain, diawali pada subskript 1, dengan intTertinggi.
Setiap kali ia menemukan sebuah nilai di dalam array yang lebih besar dari intTertinggi, nilai itu disalin ke intTertinggi. Ketika loop selesai
dieksekusi, intTertinggi sama dengan
nilai tertinggi di dalam array.
Nilai Terendah
Kode berikut, yang
mencari nilai terendah di dalam array, hampir sama dengan kode untuk mencari
nilai tertinggi. Ketika loop selesai dieksekusi, intTerendah sama dengan nilai
terendah di dalam array.
Dim
intNilai() As Integer = {1, 2, 3, 4, 5}
Dim
intHitung As Integer 'pencacah
loop
Dim
intTerendah As Integer 'untuk memuat
nilai terendah
'membaca
elemen pertama
intTerendah
= intNilai(0)
'mencari
nilai terendah
For
intHitung = 1 To (intNilai.Length - 1)
If intNilai(intHitung) < intTerendah
Then
intTerendah = intNilai(intHitung)
End If
Next
Menyalin Isi
Array Ke Array Lain
Diasumsikan bahwa sebuah
aplikasi telah mendeklarasikan dua array berikut dan telah menginisialisasi
array intNilaiLama dengan
nilai-nilai:
Const
intSUBSRKIPT_MAKS As Integer = 200
Dim
intNilaiLama(intSUBSRKIPT_MAKS) As Integer
Dim intNilaiBaru(intSUBSRKIPT_MAKS)
As Integer
Dimisalkan bahwa Anda
ingin menyalin isi dari array intNilaiLama
ke array intNilaiBaru. Anda mungkin
akan tergoda untuk menggunakan statemen penugasan tunggal berikut:
intNilaiBaru = intNilaiLama
Meskipun statemen ini
dapat dikompilasi, ia tidak menyalin isi array intNilaiLama ke array intNilaiBaru.
Melainkan, ia menyebabkan intNilaiBaru
dan intNilaiLama mereferensi array
yang sama di dalam array.
Jadi, Anda perlu
menggunakan sebuah loop untuk menyalin elemen-elemen individual dari intNilaiLama ke intNilaiBaru, seperti ditunjukkan pada kode berikut:
For
intHitung = 0 To (intNilaiLama.Length-1)
intNilaiBaru(intHitung) = intNilaiLama(intHitung)
Next
Array-Array
Paralel
Kadangkala, adalah
berguna untuk menyimpan data yang berelasi pada dua atau lebih array yang
berelasi, yang dikenal sebagai array-array
paralel. Hal ini dimulai dengan mendeklarasikan dua array, satu array yang
memuat nama pelatihan dan array lain memuat biaya tiap pelatihan:
Const
intMAKS As Integer = 4
Dim
strPelatihan(intMAKS) As String = {"Keterampilan Bernegosiasi",
"Menekan Stres", "Kerja Tim",
"Menulis Resume"}
Dim
decBiaya(intMAKS) As String = {500D, 450D, 720D, 250D}
Informasi untuk tiap
pelatihan disimpan pada posisi yang sama di dalam tiap array. Sebagai contoh,
harga dari strPelatihan(0) disimpan
di dalam decBiaya(0). Dengan kata
lain, Keterampilan Bernegoisasi berbiaya Rp. 500. Atau,
harga dari strPelatihan(2) disimpan
di dalam decBiaya(2). Gambar 6.16
menunjukkan bagaimana array-array ini dipasangkan satu sama lain.
Dengan memiliki informasi
di dalam array-array paralel, Anda memiliki keuntungan yaitu hanya memerlukan
satu subksript untuk mendapatkan informasi. Sebagai contoh, loop berikut
menampilkan tiap nama pelatihan dan harganya pada sebuah kotak list:
For
i As Integer = 0 to intMaks-1
listTampil.Items.Add(strPelatihan(i) &
" berbiaya " & decBiaya(i))
Next i
Tutorial 6.4 memeriksa
sebuah aplikasi yang menggunakan array-array paralel: satu array yang memuat
nama-nama bulan, dan array lain yang memuat banyak hari dalam tiap bulan.
Tutorial 6.4: Menggunakan Array-Array
Paralel
Pada tutorial ini, Anda akan menciptakan sebuah aplikasi yang menampilkan
banyak hari pada tiap bulan. Aplikasi ini akan menggunakan dua array paralel:
sebuah array string yang diinisialisasi dengan nama tiap bulan, dan sebuah
array Integer yang diinisialisasi
dengan banyak hari pada tiap bulan. Ketika sebuah tombol diklik, aplikasi akan
menampilkan keluarannya pada sebuah kotak list.
Langkah 1: Ciptakanlah sebuah
projek Windows Forms Application
baru dengan nama Bulan dan Hari.
Langkah 2: Bangunlah form projek
dengan sebuah kontrol ListBox dan
dua kontrol Button seperti
ditunjukkan pada Gambar 6.17.
Langkah 3: Sempurnakan kode untuk
setiap event handler pada form seperti ditunjukkan berikut:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
Private Sub tombolTampil_Click(…) Handles
tombolTampil.Click
Dim strBulan() As String =
{"Januari", "Februari", "Maret",
"April", "Mei",
"Juni", "Juli", "Agustus",
"September",
"Oktober",
"November", "Desember"}
'array dengan banyak hari tiap bulan
Dim intHari() As Integer = {31, 28, 31,
30, 31, 30,
31, 31, 30, 31, 30, 31}
'menampilkan daftar bulan dengan banyak
hari
Dim i As Integer
For i = 0 To strBulan.Length - 1
listKeluaran.Items.Add(strBulan(i)
& " memiliki " &
intHari(i).ToString() & "
hari.")
Next
End Sub
|
Amati lebih dekat kode untuk event handler tombolTampil_Click. Baris 3 sampai baris 5 mendeklarasikan sebuah
array String dengan nama strBulan. Array strBulan diinisialisasi dengan nama-nama bulan, jadi ia memiliki
dua belas elemen. Baris 8 dan baris 9 mendeklarasikan sebuah array Integer dengan nama intHari. Array intHari diinisialisasi dengan banyak hari pada tiap bulan, jadi ia
memiliki dua belas elemen.
Array strBulan dan intHari memiliki relasi paralel seperti
ditunjukkan pada Gambar 6.18. Pada relasi ini, strBulan(i) memuat nama sebuah bulan, dan intHari(i) memuat banyak hari pada bulan yang sama.
Loop For…Next yang diawali pada
baris 13 menggunakan variabel i untuk
menjejak array-array paralel, yang menampilkan sebaris keluaran pada kotak list
listKeluaran. Pada iterasi pertama, string “Januari memiliki 31 hari.” akan
ditambahkan pada kotak list. Pada iterasi kedua, string “Februari memiliki 28 hari.”
akan ditambahkan pada kotak list. Ini berlanjut untuk setiap elemen di dalam
kedua array.
Langkah 4: Simpan projek, dan
jalankan aplikasi. Klik tombol Tampilkan
Bulan dan Hari. Anda akan melihat keluara seperti ditunjukkan pada Gambar 6.19.
Langkah 5: Klik tombol Keluar untuk mengakhiri aplikasi.
Kotak List dan
Kotak Combo
Item-item yang disimpan
di dalam sebuah kotak list atau kotak combol memiliki indeks built-in. Indeks
dari item pertama adalah 0, indeks dari item kedua adalah 1, dan seterusnya.
Karena skema pengindeksan ini berkaitan dengan cara dari subskript array
digunakan, adalah mudah untuk menciptakan relasi-relasi paralel antara kotak
list, kotak combo, dan array.
Sebagai contoh,
diasumsikan bahwa sebuah aplikasi memiliki kotak list dengan nama listOrang. Statemen-statemen berikut
menyimpan tiga nama di dalam kotak list:
listOrang.Items.Add("Vivian
Siahaan")
listOrang.Items.Add("John
Kristof")
listOrang.Items.Add("Rico
Chandra")
Dengan statemen-statemen
ini dieksekusi, “Vivian Siahaan” disimpan pada indeks 0, “John Kristof”
disimpan pada indeks 1, dan “Rico Chandra” disimpan pada indeks 2. Juga diasumsikan
bahwa aplikasi memiliki sebuah array string dengan nama strNomorTelp. Array ini memuat nomor-nomor telepon dari tiga orang
dengan nama-nama yang disimpan di dalam kotak list. Statemen-statemen berikut
menyimpan nomor-nomor telepon di dalam array:
strNomorTelp(0)
= "555-2987"
strNomorTelp(1)
= "555-5656"
strNomorTelp(2)
= "555-8897"
Nomor telepon yang
disimpan pada elemen 0 (“555-2987”) adalah milik dari orang dengan nama yang
disimpan pada indeks 0 di dalam kotak list (“Vivian Siahaan”). Sama halnya,
nomor telepon yang disimpan pada elemen 1 adalah milik dari orang dengan nama
yang disimpan pada indeks 1 di dalam kotak list, dan seterusnya. Ketika user
memilih sebuah nama dari kotak list, statemen berikut menampilkan nomor telepon
orang tersebut:
MessageBox.Show(strNomorTelp(listOrang.SelectedIndex))
Properti SelectedIndex memuat indeks dari item
terseleksi di dalam kotak list. Statemen ini menggunakan indeks sebagai sebuah
subskript di dalam array strNomorTelp.
Adalah dimungkinkan agar
properti SelectedIndex memuat sebuah
nilai di luar batas dari array paralel. Ketika tidak ada item diseleksi,
properti SelectedIndex memuat -1.
Kode berikut memberikan pemeriksaan error:
With
listOrang
If .SelectedIndex > -1 And
.SelectedIndex < strNomorTelp.Length
Then
MessageBox.Show(strNomorTelp(.SelectedIndex))
Else
MessageBox.Show("Ini bukan pilihan
yang valid.")
End If
End
With
Array yang
Menunjuk ke Data Lain
Cara lain dimana array
dapat bermanfaat adalah ketika Anda perlu mencari informasi di dalam array lain
yang memiliki datanya dengan urutan yang berbeda. Pertama, Anda kembali
menggunakan array pelatihan dan biayanya yang telah digunakan sebelumnya:
Dim
strPelatihan() As String = {"Keterampilan Bernegoisasi",
"Menekan stres", "Kerja Tim",
"Menulis Resume"}
Dim decBiaya()
As String = {500D, 450D, 720D, 250D}
Kemudian, Anda
mendeklarasikan sebuah daftar kota di mana pelatihan akan diadakan:
Dim
strKota() As String = {"Siantar", "Medan", "Jakarta",
"Solo", "Surabaya",
"Bandung"}
Anda akan mencocokkan
antara tiap pelatihan dengan tiap kota. Untuk melakukannya, Anda menciptakan
sebuah array lokasi yang memberitahu di mana tiap pelatihan akan diselenggarakan:
Dim
intLokasi() As Integer = {3, 0, 1, 4}
Nilai para array tersebut
menunjuk ke sebuah entri pada array strKota.
Ia memberitahu, misalnya, bahwa pelatihan pertama adalah pada strKota(3), yaitu Solo. Atau, pelatihan
kedua adalah strKota(0), yaitu
Siantar. Pelatihan ketiga berada di strKota(4),
yaitu Surabaya. Anda akan menuliskan semua informasi ini pada sebuah kotak
list, dengan menambahkan nama kota pelatihan:
For
i As Integer = 0 to strPelatihan.Length-1
listTampil.Items.Add(strPelatihan(i) &
" berbiaya " & decBiaya(i) [#] &
" dan akan diselenggarakan di "
& strKota(intLokasi(i)))
Next
i
Untuk memahami kode ini,
Anda perlu melihat ekspresi strKota(intLokasi(i)).
Ketika loop beriterasi pertama kalinya, ketika i = 0, intLokasi(0) memuat nilai 3. Sekarang, Anda menggunakan nilai 3 ini
untuk menciptakan ekspresi strKota(3).
Apa isinya? Anda dapat melihat elemen dengan subskript 3 di dalam array strKota, yaitu Solo, seperti ditunjukkan pada Gambar 6.20.
Melakukan
Pencarian Pada Array
Aplikasi tidak hanya
menyimpan dan memproses informasi yang disimpan di dalam array, tetapi juga
seringkali perlu melakukan pencarian item spesifik pada array. Metode paling
dasar dalam pencarian pada array adalah pencarian
sekuensial. Ia menggunakan sebuah loop untuk memeriksa elemen-elemen di
dalam array, satu per satu, diawali dari elemen pertama. Metode ini
membandingkan setiap elemen dengan nilai yang sedang dicari dan berhenti ketika
nilai ditemukan atau ketika akhir array diraih. Jika nilai yang sedang dicari
tidak ada di dalam array, algoritma tidak berhasil menemukannya sama akhir
array.
Pseudocode untuk
pencarian sekuensial adalah sebagai berikut:
ditemukan = False
subskript = 0
Do While ditemukan bernilai False dan subskript
< panjang array
If
array(subskript) = nilaiDicari Then
ditemukan = True
posisi = subskript
End
If
subskript
+= 1
End While
Pada pseudocode, ditemukan adalah sebuah variabel
Boolean, posisi dan subskript adalah integer, array adalah sebuah array bertipe
apapun, dan nilaiDicari adalah nilai
yang sedang dicari. Ketika pencarian selesai, jika variabel ditemukan bernilai False, nilai yang dicari tidak ditemukan. Jika ditemukan bernilai True,
posisi akan memuat subskript dari
elemen array yang memuat nilai yang dicari.
Sebagai contoh,
dimisalkan sebuah aplikasi menyimpan sejumlah skor ujian di dalam sebuah array
dengan nama skor. Pseudocode berikut
melakukan pencarian sebuah elemen yang memuat nilai 100 di dalam array:
ditemukan = False
hitung = 0
Do While Not ditemukan And hitung < skor.Length
If skor(hitung)
= 100 Then
ditemukan = True
posisi = hitung
End
If
hitung += 1
Loop
' Apakah elemen 100 ditemukan di dalam array?
If ditemukan Then
Tampilkan “Selamat! Anda mendapatkan skor 100 ” & (posisi + 1)
Else
Tampilkan “Anda tidak mendapatkan skor 100, tetap semangat!”
End If
Mengurutkan Array
Programer seringkali
ingin mengurutkan atau menata elemen-elemen dari sebuah array dengan tatanan
menaik, yang berarti bahwa nilai-nilai ditata dari terendah sampai tertinggi.
Nilai terendah disimpan pada elemen pertama dan nilai tertinggi disimpan pada
elemen terakhir. Untuk mengurutkan array dengan tatanan menaik, Anda
menggunakan metode Array.Sort.
Bentuk umumnya adalah sebagai berikut:
Array.Sort(NamaArray)
NamaArray adalah nama array yang ingin Anda urutkan. Sebagai contoh, diasumsikan
bahwa deklarasi berikut ada pada sebuah aplikasi:
Dim
intNilai() As Integer = {7, 12, 1, 6, 3}
Statemen berikut akan
mengurutkan array dengan tatanan menaik:
Array.Sort(intNilai)
Setelah statemen ini
dieksekusi, nilai-nilai array menjadi tatanan berikut: 1, 3, 6, 7, 12. Ketika
Anda melewatkan sebuah array string kepada metode Array.Sort, array tersebut
diurutkan dengan tatanan menaik sesuai dengan skema pengkondean Unicode, yang telah
didiskusikan pada Bab 3. Umumnya, pengurutan terjadi dengan tatanan alfabetis.
Jadi, dengan begitu, dijit-dijit numerik berada di posisi depan, huruf-huruf
besar kemudian, dan huruf-huruf kecil belakangan. Sebagai contoh, diasumsikan
bahwa deklarasi berikut diberikan:
Dim strNama()
As String = {"dan", "Kim", "Adam",
"Bill"}
Statemen tersebut
mengurutkan array dengan tatanan menaik:
Array.Sort(strNama)
Setelah statemen
dieksekusi, nilai-nilai di dalam array menjadi tatanan berikut: “Adam”, “Bill”,
“Kim”, “dan”
Mengubah Ukuran
Array Secara Dinamis
Anda dapat mengubah
banyak elemen di dalam suatu array pada saat aplikasi dijalankan, dengan
menggunakan statemen ReDim. Bentuk
umum dari statemen ReDim adalah
berikut:
ReDim
[Preserve] NamaArray(SubskriptAtas)
Kata Preserve bersifat opsional. Jika digunakan, semua nilai yang ada di
dalam array dipertahankan. NamaArray
adalah nama dari array yang ukurannya diubah. Elemen SubskriptAtas adalah subskript atas baru dan harus berupa bilangan
bulat positif. Jika Anda mengubah ukuran sebuah array dan membuatnya lebih
kecil dari sebelumnya, elemen-elemen di akhir array akan hilang.
Sebagai contoh, statemen
berikut mengubah ukuran array strNama
sehingga 25 menjadi subskript atas baru:
ReDim
Preserve strNama(25)
Setelah statemen ini
dieksekusi, strNama memiliki 26
elemen. Karena katakunci Preserve digunakan, semua nilai yang awalnya disimpan
di dalam strNama akan tetap ada.
Ketika Anda tidak
mengetahui pada saat perancangan berapa banyak elemen yang Anda perlukan di
dalam sebuah array, Anda dapat mendeklarasikan sebuah array tanpa ukuran dan
menggunakan statemen ReDim untuk
memberikannya ukuran.
Sebagai contoh,
dimisalkan bahwa Anda ingin menuliskan sebuah aplikasi pererata yang
mereratakan sejumlah skor ujian. Anda awalnya dapat mendeklarasikan array tanpa
ukuran, sebagai berikut:
Dim
dblSkor() As Double
Saat itu, dblSkor sama dengan Nothing, tetapi mampu mereferensi
sebuah array yang memuat nilai-nilai Double.
Kemudian, ketika aplikasi telah menentukan banyaknya skor ujian, sebuah
statemen ReDim akan memberikannya
ukuran. Kode berikut menunjukkan sebuah contoh dari operasi semacam itu:
intBanyakSkor
= CInt(InputBox("Masukkan banyaknya skor ujian."))
If
intBanyakSkor > 0 Then
ReDim dblSkor(intBanyakSkor - 1)
Else
MessageBox.Show("Anda harus memasukkan
1 atau lebih besar dari itu.")
End
If
Kode ini meminta user
untuk memasukkan banyaknya skor ujian. Jika user memasukkan suatu nilai yang
lebih besar dari 0, statemen ReDim
akan mengubah ukuran array dengan intBanyakSkor
– 1 sebagai subskript atas. (Karena subskript diawali dari 0, subskript atas
menjadi intBanyakSkor – 1).
6.4 Prosedur dan Fungsi: Bekerja dengan Array
KONSEP: Anda dapat melewatkan array sebagai argumen kepada prosedur dan
fungsi. Anda dapat menghasilkan (menjadikan nilai balik berupa) array dari
sebuah fungsi. Kapabilitas ini dapat Anda pakai untuk menulis prosedur atau
fungsi yang melakukan sejumlah operasi pada array.
Melewatkan Array
Sebagai Argumen
Seringkali Anda ingin
menuliskan prosedur atau fungsi yang memproses data dalam array. Sebagai
contoh, prosedur dapat dituliskan untuk menyimpan data di dalam array,
menampilkan isi array, dan menjumlahkan atau mereratakan nilai-nilai di dalam
array. Umumnya prosedur semacam itu menerima array sebagai argumennya.
Prosedur berikut menerima
sebuah array integer sebagai argumennya dan menampilkan penjumlahan atas
elemen-elemen array:
'prosedur TampilJum menampilkan penjumlahan atas
tiap elemen
'di dalam array argumen
Sub
TampilJum(ByVal intArray() As Integer)
Dim intTotal As Integer = 0 'akumulator
Dim intHitung As Integer 'pencacah loop
For intHitung = 0 To (intArray.Length - 1)
intTotal += intArray(intHitung)
Next
MessageBox.Show("Penjumlahan
total = " & intTotal.ToString())
End
Sub
Variabel parameter
dideklarasikan sebagai sebuah array tanpa subskript atas yang ditetapkan di
dalam kurung. Parameter adalah sebuah variabel objek yang mereferensi suatu
array yang dilewatkan sebagai argumen. Untuk memanggil prosedur, Anda
melewatkan nama array, seperti ditunjukkan pada kode berikut:
Dim
intNilai() As Integer = { 2, 4, 7, 9, 8, 12, 10 }
TampilJum(intNilai)
Dengan kode ini
dieksekusi, prosedur TampilJum
dipanggil dan array intNilai
dilewatkan sebagai argumen. Prosedur ini menghitung dan menampilkan penjumlahan
atas elemen-elemen di dalam intNilai.
Melewatkan Array
Dengan Nilai dan Dengan Referensi
Parameter array dapat
dideklarasikan ByVal atau ByRef. Namun, katakunci ByVal tidak membatasi sebuah prosedur
dari pengaksesan dan pemodifikasian elemen-elemen array argumen. Sebagai
contoh, lihat prosedur SetKeNol
berikut:
'menetapkan semua elemen
dari argumen array menjadi nol
Sub SetKeNol(ByVal intArray() As Integer)
Dim intHitung
As Integer 'kounter loop
For intHitung
= 0 To intArray.Length - 1
intArray(intHitung)
= 0
Next
End Sub
Prosedur ini menerima
sebuah array integer sebagai argumennya dan menetapkan setiap elemen dari array
menjadi 0. Dimisalkan bahwa Anda memanggil prosedur ini, seperti ditunjukkan
pada kode berikut:
Dim
intNilai() As Integer = { 1, 2, 3, 4, 5 }
SetKeNol(intNilai)
Setelah prosedur
dieksekusi, array intNilai akan
memuat nilai-nilai 0, 0, 0, 0, dan 0.
Meskipun katakunci ByVal tidak membatas sebuah prosedur
dari pengaksesan dan pemodifikasian elemen-elemen dari argumen array, ia
mencegah argumen array dari penugasan kepada array lain. Sebagai contoh,
prosedur berikut menerima sebuah array sebagai argumennya dan kemudian menugaskan
parameter itu kepada array lain:
'menugaskan
argumen array kepada array lain. apa bisa?
Sub
ResetNilai(ByVal intArray() As Integer)
Dim baruArray() As Integer = { 0, 0, 0, 0,
0}
intArray = baruArray
End
Sub
Dimisalkan bahwa Anda
memanggil prosedur ini, seperti ditunjukkan pada kode ini:
Dim
intNilai() As Integer = { 1, 2, 3, 4, 5 }
ResetNilai(intNilai)
Setelah prosedur
dieksekusi, array intNilai masih
memuat nilai-nilai 1, 2, 3, 4, dan 5. Jika array parameter dideklarasikan
dengan katakunci ByRef, penugasan
ini akan memengaruhi argumen, dan array intNilai
akan memuat nilai-nilai 0, 0, 0, 0, dan 0 setelah prosedur dieksekusi.
Menghasilkan
(Menjadikan Nilai Balik Berupa) Array Dari Sebuah Fungsi
Anda dapat menghasilkan
atau menjadikan array sebagai nilai balik. Sebagai contoh, fungsi berikut
meminta user memasukkan empat nama. Nama-nama itu kemudian dihasilkan di dalam
suatu array.
'membaca tiga nama dari user dan menghasilkan atau
menjadikan
'array string sebagai nilai balik
Function
BacaNama() As String()
Const intSUBSKRIPT_MAKS As Integer = 2
Dim strNama(intSUBSKRIPT_MAKS) As String
Dim intHitung As Integer
For intHitung = 0 To 3
strNama(intHitung) = InputBox("Masukkan nama " &
(intHitung + 1).ToString())
Next
Return strNama
End
Function
Fungsi tersebut memiliki
tipe nilai balik berupa String(),
yang mengindikasikan bahwa ia menghasilkan sebuah array string. Nilai balik
dapat ditugaskan kepada sembarang array string. Kode berikut menunjukkan nilai
balik fungsi yang ditugaskan kepada strKonsumen:
Dim
strKonsumen() As String
strKonsumen
= BacaNama()
Setelah kode dieksekusi,
array strKonsumen akan memuat
nama-nama yang dimasukkan oleh user.
Sebuah array yang
dihasilkan dari suatu fungsi harus ditugaskan kepada sebuah array dengan tipe
sama. Sebagai contoh, jika fungsi menghasilkan sebuah array integer, maka nilai
baliknya harus ditugaskan hanya kepada sebuah array integer. Pada Tutorial 6.5,
Anda akan mempelajari sebuah aplikasi yang memuat beberapa fungsi yang bekerja
pada array.
Tutorial 6.5: Memeriksa Sebuah Aplikasi
Yang Melewatkan Array Kepada Prosedur dan Fungsi
Pada tutorial ini, Anda
akan memeriksa sebuah aplikasi Data
Penjualan, yang meminta user untuk memasukkan data penjualan untuk lima
hari. Aplikasi ini kemudian menghitung dan menampilkan penjualan total,
penjualan rerata, penjualan tertinggi, dan penjualan terendah.
Langkah 1: Buka projek Data Penjualan.
Langkah 2: Sebelum Anda melihat kode, jalankan aplikasi. Gambar 6.21 menunjukkan
form dari projek. Klik tombol Hitung
Data Penjualan.
Langkah 3: Serangkaian lima kotak masukan akan ditampilkan, yang meminta Anda untuk
memasukkan nilai penjualan untuk hari 1 sampai hari 5. Masukkan nilai-nilai
berikut untuk tiap kotak masukan:
Hari 1: 1000
Hari 2: 2000
Hari 3: 3000
Hari 4: 4000
Hari 5: 5000
Setelah Anda memasukkan
nilai penjualan untuk hari 5, form aplikasi akan ditampilkan seperti pada Gambar
6.22.
Langkah 4: Klik tombol Keluar untuk
mengakhiri aplikasi.
Langkah 5: Sekarang, Anda akan memeriksa kode apliksi. Buka jendela Code dan lihat pada event handler tombolHitung_Click. Kode ditampilkan di
sini, dengan nomor baris sebagai 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
|
Public Class FormDataPenjualan
Private
Sub tombolHitung_Click(…) Handles tombolHitung.Click
'menciptakan array untuk memuat
nilai-nilai penjualan
Const intSUBRKRIPT_MAKS As Integer =
4
Dim decPenjualan(intSUBRKRIPT_MAKS)
As Decimal
'variabel-variabel lokal lain
Dim decPenjualanTotal As Decimal 'menampung penjualan total
Dim decPenjualanRerata As
Decimal 'menampung penjualan
rerata
Dim decPenjualanTertinggi As
Decimal 'menampung penjualan
tertinggi
Dim decPenjualanTerendah As
Decimal 'menampung penjualan
terendah
'membaca nilai-nilai penjualan dari
user
BacaDataPenjualan(decPenjualan)
'menghitung penjualan total,
penjualan rerata, penjualan tertinggi
'dan penjualan terendah
decPenjualanTotal =
TotalArray(decPenjualan)
decPenjualanRerata =
RerataArray(decPenjualan)
decPenjualanTertinggi =
Tertinggi(decPenjualan)
decPenjualanTerendah =
Terendah(decPenjualan)
'menampilkan hasil
labelTotal.Text = "Rp. "
& decPenjualanTotal.ToString()
labelRerata.Text = "Rp. "
& decPenjualanRerata.ToString()
labelTertinggi.Text = "Rp.
" & decPenjualanTertinggi.ToString()
labelTerendah.Text = "Rp. "
& decPenjualanTerendah.ToString()
End Sub
|
Berikut adalah simpulan
deklarasi-deklarasi yang ditampilkan pada baris 5 sampai baris 12:
- Baris 5 mendeklarasikan konstanta intSUBSKRIPT_MAKS, ditetapkan nilai 4. Ini akan menjadi subskript atas dari array yang memuat data-data penjualan.
- Baris 6 mendeklarasikan decPenjualan sebagai sebuah array Decimal, menggunakan intSUBSKRIPT_MAKS sebagai subskript atasnya. Array ini mempunyai lima elemen, satu untuk tiap data penjualan.
- Baris 9 mendeklarasikan decPenjualanTotal sebagai sebuah variabel Decimal, untuk menampung penjualan total.
- Baris 10 mendeklarasikan decPenjualanRerata sebagai sebuah variabel Decimal, untuk menampung penjualan rerata.
- Baris 11 mendeklarasikan decPenjualanTertinggi sebagai sebuah variabel Decimal, untuk menampung penjualan tertinggi.
- Baris 12 mendeklarasikan decPenjualanTerendah sebagai sebuah variabel Decimal, untuk menampung penjualan terendah.
Baris 15 memanggil
prosedur BacaDataPenjualan, yang
melewatkan array decPenjualan
sebagai argumennya. Prosedur BacaDataPenjualan
menampilkan sejumlah kotak masukan yang meminta user untuk memasukan nilai
penjualan untuk tiap hari. Prosedur ini menyimpan nilai-nilai yang dimasukkan
oleh user di dalam array yang dilewatkan sebagai argumen.
Baris 19 memanggil fungsi
TotalArray, yang melewatkan array decPenjualan sebagai argumennya. Fungsi
ini menghasilkan total dari nilai-nilai di dalam array, dan nilai total itu
ditugaskan kepada variabel decPenjualanTotal.
Baris 20 memanggil fungsi
RerataArray, yang melewatkan array decPenjualan sebagai argumennya. Fungsi
ini menghasilkan rerata dari nilai-nilai di dalam array, dan nilai rerata itu
ditugaskan kepada variabel decPenjualanRerata.
Baris 21 memanggil fungsi
Tertinggi, yang melewatkan array decPenjualan sebagai argumennya. Fungsi
ini menghasilkan nilai tertinggi dari nilai-nilai di dalam array, dan nilai
tertinggi itu ditugaskan kepada variabel decPenjualanTertinggi.
Baris 22 memanggil fungsi
Terendah, yang melewatkan array decPenjualan sebagai argumennya. Fungsi
ini menghasilkan nilai terendah dari nilai-nilai di dalam array, dan nilai
terendah itu ditugaskan kepada variabel decPenjualanTerendah.
Statemen-statemen pada
baris 25 sampai baris 28 menampilkan data penjualan pada kontrol-kontrol Label pada form dari aplikasi.
Tepat di bawah event
handler tombolHitung_Click
ditempatkan prosedur BacaDataPenjualan,
yang ditunjukkan di sini dengan nomor baris sebagai referensi.
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
'prosedur
BacaDataPenjualan menerima sebuah argumen array Decimal
'Ia
mengisi array dengan nilai-nilai penjualan yang dimasukkan oleh user.
Sub
BacaDataPenjualan(ByRef decPenjualan() As Decimal)
Dim
intHitung As Integer = 0 'kounter loop, ditetapkan 0
'mengisi array decPenjualan dengan nilai-nilai dimasukkan user.
Do
While intHitung < decPenjualan.Length
Try
'membaca nilai penjualan sehari
decPenjualan(intHitung) =
CDec(InputBox("Masukkan nilai penjualan untuk hari " &
(intHitung + 1).ToString()))
'menginkremen intHitung
intHitung += 1
Catch
'menampilkan pesan error untuk masukan tak valid
MessageBox.Show("Enter a valid numeric value.")
End Try
Loop
End Sub
|
Baris 35 mendeklarasikan intHitung, yang akan dipakai sebagai
pencacah loop dan untuk menjejak parameter array decPenjualan. Perhatikan bahwa intHitung
diinisialisasi dengan 0.
Loop Do While yang diawali pada baris 38 menggunakan variabel intHitung untuk menjejak parameter
array decPenjualan. Ingat bahwa intHitung diinisialisasi dengan 0. Loop
dieksekusi sepanjang intHitung bernilai
kurang dari decPenjualan.Length.
Di dalam loop, sebuah
statemen Try-Catch dipakai untuk
menangkap sembarang eksepsi yang bisa terjadi ketika user memasukkan nilai tak
numerik. Statemen yang ada pada baris 41 sampai baris 43 melakukan hal-hal
berikut:
·
Menampilkan sebuah kotak masukan yang meminta user
untuk memasukkan nilai penjualan untuk hari tertentu.
·
Menggunakan fungsi CDec untuk mengkonversi masukan user menjadi sebuah Decimal.
·
Menugaskan nilai yang dihasilkan kepada elemen
array decPenjualan(intHitung).
Jika user memasukkan
sebuah nilai tak valid, program akan melompat ke klausa Catch pada baris 46, menampilkan pesan error pada baris 48, dan
kemudian loop dimulai kembali. Jika user memasukkan sebuah nilai valid, baris
45 akan menambahkan 1 pada variabel intHitung.
Lop kemudian akan dimulai kembali. Ketika loop selesai dieksekusi, parameter
array decPenjualan akan memuat
nilai-nilai penjualan yang dimasukkan oleh user, dan prosedur berakhir.
Selanjutnya adalah fungsi
TotalArray, yang ditampilkan di sini
dengan nomor baris untuk referensi. Fungsi ini menerima sebuah array Decimal sebagai argumennya. Ia
menggunakan loop untuk menjejak elemen-elemen array, menjumlahkan
nilai-nilainya pada sebuah variabel akumulator. Total dari elemen-elemen array
kemudian dijadikan nilai balik.
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
'fungsi
TotalArray menerima sebuah array Decimal sebagai argumennya
'dan
menghasilkan nilai total dari elemen-elemen array
Function
TotalArray(ByVal decNilai() As Decimal) As Decimal
Dim
decTotal As Decimal = 0 'akumulator
Dim
intHitung As Integer 'pencacah
loop
'menghitung total dari elemen-elemen array
For
intHitung = 0 To (decNilai.Length - 1)
decTotal += decNilai(intHitung)
Next
'menghasilkan total
Return
decTotal
End
Function
|
Selanjutnya, fungsi RerataArray, yang ditunjukkan di sini
dengan nomor baris sebagai referensi. Fungsi ini menerima sebuah array Decimal sebagai argumennya dan
menghasilkan rerata dari elemen-elemen array.
69
70
71
72
73
74
75
|
'fungsi
RerataArray menerima sebuah array Decimal sebagai argumennya
'dan
menghasilkan rerata dari elemen-elemennya
Function
RerataArray(ByVal decNilai() As Decimal) As Decimal
Return
TotalArray(decNilai) / decNilai.Length
End
Function
|
Selanjutnya, fungsi Tertinggi, yang ditunjukkan di sini
dengan nomor baris sebagai referensi. Fungsi ini menerima sebuah array Decimal sebagai argumennya dan
menghasilkan nilai tertinggi dari elemen-elemen array.
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
'fungsi
Tertinggi menerima sebuah array Decimal sebagai argumennya
'dan
menghasilkan nilai tertinggi yang dimuatnya
Function
Tertinggi(ByVal decNilai() As Decimal) As Decimal
Dim
intHitung As Integer 'pencacah
loop
Dim
decTertinggi As Decimal 'memuat
nilai tertinggi
'membaca nilai pertama di dalam array
decTertinggi = decNilai(0)
'mencari nilai tertinggi
For
intHitung = 1 To (decNilai.Length - 1)
If
decNilai(intHitung) > decTertinggi Then
decTertinggi = decNilai(intHitung)
End If
Next
'menghasilkan nilai tertinggi
Return
decTertinggi
End
Function
|
Selanjutnya, fungsi Terendah, yang ditunjukkan di sini
dengan nomor baris sebagai referensi. Fungsi ini menerima sebuah array Decimal sebagai argumennya dan
menghasilkan nilai terendah dari elemen-elemen array.
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
'fungsi
Terendah menerima sebuah array Decimal sebagai argumennya
'dan
menghasilkan nilai terendah yang dimuatnya
Function
Terendah(ByVal decNilai() As Decimal) As Decimal
Dim
intHitung As Integer 'pencacah
loop
Dim decTerendah As Decimal 'memuat nilai terendah
'membaca nilai pertama di dalam array
decTerendah = decNilai(0)
'mencari nilai terendah
For
intHitung = 1 To (decNilai.Length - 1)
If
decNilai(intHitung) < decTerendah Then
decTerendah = decNilai(intHitung)
End If
Next
'menghasilkan nilai terendah
Return
decTerendah
End
Function
|
Selanjutnya adalah event
handler tombolKeluar_Click, yang
ditunjukkan di sini dengan nomor baris untuk referensi:
118
119
120
121
122
|
Private Sub tombolKeluar_Click(sender As Object, e
As EventArgs) Handles tombolKeluar.Click
'menutup Form
Me.Close()
End Sub
|
6.4 Array Multi-Dimensi
KONSEP: Anda dapat menciptakan array dengan lebih dari dua dimensi untuk
memuat himpunan data yang kompleks.
Array Dua-Dimensi
Semua array yang
disajikan sejauh ini hanya memiliki satu subskript. Sebuah array dengan satu
subskript dikenal dengan array satu-dimensi dan berguna untuk menyimpan dan
bekerja dengan satu himpunan data. Kadangkala, adalah diperlukan untuk bekerja
dengan beberapa himpunan data. Sebagai contoh, pada sebuah program
pererata-nilai, seorang guru merekam semua skor ujian siswa di dalam sebuah
array. Jika guru memiliki 30 siswa, ini berarti ada 30 array untuk merekam skor
ujian untuk kelas. Daripada harus mendeklarasikan 30 array, akan lebih baik
bila mendeklarasikan sebuah array dua-dimensi.
Array dua-dimensi adalah
sebuah array yang memuat sejumlah array. Array dua dimensi dapat memuat
sejumlah himpunan nilai. Imajinasikan sebuah array dua-dimensi yang memiliki
baris-baris dan kolom-kolom, seperti ditunjukkan pada Gambar 6.23. Gambar ini
menunjukkan sebuah array dengan tiga baris (dinomori 0, 1, dan 2) dan empat
kolom (dinomori 0, 1, 2, dan 3). Ada total 12 elemen di dalam array.
Untuk mendeklarasikan
sebuah array dua-dimensi, dua subskript atas diperlukan, pertama untuk
baris-baris dan kedua untuk kolom-kolom. Bentuk umum dari deklarasi array
dua-dimensi diberikan sebagai berikut:
Dim
NamaArray(AtasBaris, AtasKolom) As TipeData
Amati sintaksis tersebut
lebih dekat:
·
NamaArray
adalah nama dari array.
·
AtasBaris
adalah nilai dari subskript baris tertinggi dari array. Nilainya harus berupa
sebuah integer positif.
·
AtasKolom
adalah nilai dari subskript kolom tertinggi dari array. Nilainya harus berupa
sebuah integer positif.
·
TipeData
adalah sebuah tipe data Visual Basic.
Sebuah contoh deklarasi
dari array dua-dimensi dengan tiga baris dan empat kolom diberikan berikut dan ditampilkan
pada Gambar 6.24. Subskript baris tertinggi adalah 2 dan subskript kolom
tertinggi adalah 3.
Dim dblSkor
(2, 3) As Double
Seperti array
satu-dimensi, adalah praktek yang baik bila menggunakan konstanta bernama untuk
menetapkan subskript atas. Berikut adalah contohnya:
Const
intMAKS_BARIS As Integer = 2
Const
intMAKS_KOL As Integer = 3
Dim dblSkor(intMAKS_BARIS,
intMAKS_KOL) As Double
Ketika data di dalam
sebuah array dua-dimensi diproses, setiap elemennya memiliki dua subskript,
pertama untuk barisnya dan kedua untuk kolomnya. Dengan menggunakan array dblSkor sebagai contoh, elemen-elemen
pada baris 0 direferensi sebagai berikut:
dblSkor(0,
0)
dblSkor(0,
1)
dblSkor(0,
2)
dblSkor(0,
3)
Elemen-elemen pada baris
1 direferensi sebagai berikut:
dblSkor(1,
0)
dblSkor(1,
1)
dblSkor(1,
2)
dblSkor(1,
3)
Elemen-elemen pada baris
2 direferensi sebagai berikut:
dblSkor(2,
0)
dblSkor(2,
1)
dblSkor(2,
2)
dblSkor(2,
3)
Gambar 6.25
mengilustrasikan array dengan subskript-subskript ditampilkan untuk tiap
elemen.
Untuk mengakses salah
satu elemen dari sebuah array dua-dimensi, Anda perlu menggunakan dua
subskript. Sebagai contoh, statemen berikut menyimpan nilai 95 di dalam dblSkor(2, 1):
dblSkor(2,
1) = 95
Program seringkali
menggunakan loop-loop bersarang untuk memproses array dua-dimensi. Sebagai
contoh, kode berikut meminta user untuk memasukkan sebuah skor, sekali untuk
tiap elemen di dalam array:
For
intBaris = 0 To intMAKS_BARIS
For intKol = 0 To intMAKS_KOL
dblSkor(intBaris, intKol) = CDbl(InputBox("Masukkan
sebuah skor."))
Next
Next
Dan kode berikut
menampilkan semua elemen di dalam array dblSkor:
For
intBaris = 0 To intMAKS_BARIS
For intKol = 0 To intMAKS_KOL
lstOutput.Items.Add(dblSkor (intBaris, intKol).ToString())
Next
Next
Mengubah Ukuran
Secara Implisit dan Inisialisasi Array Dua-Dimensi
Sama seperti array
satu-dimensi, Anda bisa menyediakan daftar inisialisasi untuk array
dua-dimensi. Ingat bahwa ketika Anda menyediakan daftar inisialisasi untuk
sebuah array, Anda tidak dapat menyedikan subskript atas. Ketika
menginisialisasi sebuah array dua-dimensi, Anda harus menyediakan koma untuk
mengindikasikan jumlah dimensi. Berikut adalah sebuah contoh deklarasi dari
array dua-dimensi dengan sebuah daftar inisialisasi:
Dim
intNilai(,) As Integer = {{1, 2, 3},
{4, 5, 6},
{7, 8, 9}}
Nilai-nilai inisialisasi
untuk setiap baris diapit dengan kurung kurawal. Pada contoh ini, nilai-nilai
inisialisasi untuk baris 0 adalah {1, 2, 3}, nilai-nilai inisialisasi untuk
baris 1 adalah {4, 5, 6}, dan nilai-nilai inisialisasi untuk baris 2 adalah {7,
8, 9}. Jadi, statemen ini mendeklarasikan sebuah array dengan tiga baris dan
tiga kolom.
Nilai-nilai ditugaskan
kepada array intNilai dengan cara
berikut:
intNilai(0,
0) ditetapkan menjadi 1
intNilai(0,
1) ditetapkan menjadi 2
intNilai(0,
2) ditetapkan menjadi 3
intNilai(1,
0) ditetapkan menjadi 4
intNilai(1,
1) ditetapkan menjadi 5
intNilai(1,
2) ditetapkan menjadi 6
intNilai(2,
0) ditetapkan menjadi 7
intNilai(2,
1) ditetapkan menjadi 8
intNilai(2,
2) ditetapkan menjadi 9
Menjumlahkan
Kolom-Kolom Array Dua-Dimensi
Anda dapat menggunakan
loop bersarang untuk menjumlahkan kolom-kolom pada sebuah array dua-dimensi.
Kode berikut menjumlahkan setiap kolom dari sebuah array dengan nama intNilai. Loop luar mengendalikan
subskript kolom dan loop dalam mengendalikan subskript baris. Variabel intTotal mengakumulasi penjumlahan dari
tiap kolom.
'menjumlahkan kolom-kolom
For
intKol = 0 To intMAKS_KOL
'menginisialisasi akumulator
intTotal = 0
'menjumlahkan
semua baris di dalam kolom ini
For intBaris = 0 To intMAKS_BARIS
intTotal += intValues(intBaris, intKol)
Next
'menampilkan
hasil penjumlahan kolom
MessageBox.Show("Penjumlahan kolom "
& intKol.ToString() &
" = " & intTotal.ToString())
Next
Tutorial 6.6: Menyempurnakan Aplikasi
Daftar Kursi
Pada tutorial ini, Anda akan menyempurnakan aplikasi Daftar Kursi. Ketika
selesai, aplikasi ini akan menampilkan daftar kursi di dalam pesawat dan user
dapat memilih nomor kursi.
Aplikasi akan menampilkan harga dari kursi terseleksi.
Langkah 1: Buka projek Daftar Kursi.
Gambar 6.26 menunjukkan
form aplikasi yang telah diciptakan untuk Anda. Citra daftar kursi (yang
ditampilkan pada sebuah kontrol PictureBox)
menunjukkan kursi-kursi di pesawat, yang ditata pada baris-baris dan
kolom-kolom. Ketika aplikasi dijalankan, user akan memasukkan nomor baris dan
nomor kolom pada kotak teks teksBaris dan teksKol, dan kemudian mengklik tombol
Tampilkan Harga. Harga dari kursi terseleksi akan ditampilkan pada label labelHarga.
Berikut adalah tabel yang
menunjukkan daftar harga tiap kursi (dalam ribu rupiah).
Ketika Anda menuliskan
kode untuk aplikasi, Anda akan menciptakan sebuah array dua-dimensi untuk
menampung nilai-nilai ini.
Langkah 2: Sempurnakan kode untuk dua event handler pada form seperti ditunjukkan
berikut. (Jangan ketik nomor baris, karena hanya 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
|
Public Class FormDaftarKursi
Private
Sub tombolTampil_Click(…) Handles tombolTampil.Click
'variabel-variabel untuk baris dan
kolom terseleksi
Dim intBaris, intKol As Integer
'konstanta-konstanta untuk subskript
baris maks dan kolom maks
Const intMAKS_BARIS As Integer = 5
Const intMAKS_KOL As Integer = 3
'array dengan harga tiap kursi
Dim decHarga(,) = {{450D, 450D, 450D,
450D},
{425D, 425D, 425D, 425D},
{400D, 400D, 400D, 400D},
{375D, 375D, 375D, 375D},
{375D, 375D, 375D, 375D},
{350D, 350D, 350D, 350D}}
Try
'membaca nomor baris dan kolom
terseleksi
intBaris = CInt(teksBaris.Text)
intKol = CInt(teksKol.Text)
'memastikan baris dan kolom ada
di dalam rentang
If intBaris >= 0 And intBaris
<= intMAKS_BARIS Then
If intKol >= 0 And intKol
<= intMAKS_KOL Then
'Tampilkan harga kursi
terseleksi
labelHarga.Text = "Rp
" & decHarga(intBaris, intKol).ToString() &
" ribu"
Else
'pesan error untuk kolom
tak valid
MessageBox.Show("Kolom
harus 0 sampai " &
intMAKS_KOL.ToString())
End If
Else
'pesan error untuk baris tak
valid
MessageBox.Show("Baris
harus 0 sampai " &
intMAKS_BARIS.ToString())
End If
Catch
'pesan error untuk masukan
tak-integer
MessageBox.Show("Baris dan
kolom harus integer.")
End Try
End Sub
Private
Sub tombolKeluar_Click(…) Handles tombolKeluar.Click
'menutup form
Me.Close()
End Sub
End Class
|
Amati lebih dekat kode
pada event handler tombolTampil_Click. Baris 5 mendeklarasikan variabel intBaris dan intKol. Keduanya akan memuat nomor baris dan nomor kolom yang
dimasukkan oleh user. Baris 8 dan baris 9 mendeklarasikan konstanta intMAKS_BARIS (ditetapkan 5) dan intMAKS_KOL (ditetapkan 3). Nilai-nilai
ini merupakan nomor baris atas dan nomor kolom atas di dalam array.
Baris 12 sampai baris 17
mendeklarasikan decHarga, sebuah
array Decimal dua-dimensi, yang
diinisialisasi dengan harga-harga kursi.
Sebuah statemen Try-Catch diawali pada baris 19 untuk
menangani nilai-nilai tak numerik yang dimasukkan oleh user. Pada baris 21,
Anda membaca nomor baris yang dimasukkan oleh user ke dalam kotak teks teksBaris, mengkonversinya menjadi
sebuah integer, dan menyimpan hasilnya ke dalam variabel intBaris. Jika sebuah eksepsi dilemparkan karena nilai tak numerik,
program akan melompat ke klausa Catch
pada baris 39.
Pada baris 22, Anda
membaca nomor kolom yang dimasukkan oleh user ke dalam kotak teks teksKol, mengkonversinya menjadi sebuah
integer, dan menyimpan hasilnya ke dalam variabel intKol. Jika sebuah eksepsi dilemparkan karena nilai tak numerik,
program akan melompat ke klausa Catch
pada baris 39.
Selanjutnya, Anda ingin
memastikan bahwa nomor baris dan nomor kolom yang terseleksi berada di dalam
rentang yang benar. Nomor baris valid adalah 0 sampai 5, dan nomor kolom valid
adalah 0 sampai 3. Statemen If…Else pada
baris 25 menentukan apakah intBaris
berada di dalam rentang yang tepat. Jika tidak, klausa Else pada baris 34 akan menampilkan pesan error. Jika intBaris berada di dalam rentang yang
tepat, statemen If…Then pada baris
26 akan menentukan apakah intKol berada
di dalam rentang yang tepat. Jika tidak, klause Else pada baris 29 akan menampilkan pesan error. Sebaliknya,
program akan berlanjut ke baris 28. Baris 28 menggunakan intBaris dan intKol
sebagai subskript untuk membaca harga kursi terseleksi dari array decHarga, dan
kemudian menampilkan nilai itu pada label labelHarga.
Langkah 3: Simpan projek, dan kemudian jalankan aplikasi. Eksperimen dengan
memasukkan nomor baris dan nomor kolom yang berbeda, dan bandingkan harga
tertampil dengan tabel harga kursi yang diberikan. Gambar 6.27 menunjukkan form
aplikasi dengan baris 2 dan kolom 3 terseleksi. Ketika selesai, klik tombol Keluar untuk mengakhiri aplikasi.
Array Tiga
Dimensi
Anda dapat menciptakan
array sampai dengan 32 dimensi, tetapi adalah sangat jarang untuk memiliki
lebih dari 3 dimensi. Berikut adalah sebuah contoh deklarasi atas array
tiga-dimensi:
Dim
decKursi(9, 11, 14) As Decimal
Array ini dipandang
sebagai 10 kursi dengan 12 baris, dengan tiap baris memuat 15 kolom. Array ini
dipakai untuk menyimpan harga kursi di sebuah auditorium, dimana di dalamnya
ada 15 kursi pada sebuah baris, 12 baris pada suatu seksi, dan 10 seksi di
dalam auditorium.
Gambar 6.28
merepresentasikan sebuah array tiga-dimensi sebagai halaman-halaman yang
masing-masing memuat array dua-dimensi. Array dengan lebih dari tiga-dimensi
sangat susah untuk divisualisasi tetapi berguna pada sejumlah aplikasi
pemrograman.
6.5 Fokus Perancangan GUI: Properti Enabled
dan Kontrol Timer
KONSEP: Anda dapat menonaktifkan kontrol dengan menetapkan properti
Enabled menjadi False. Kontrol Timer dapat Anda pakai untuk mengeksekusi sebuah
prosedur dengan interval waktu teratur.
Properti Enabled
Hampir semua kontrol
memiliki properti Boolean dengan nama Enabled.
Bila properti Enabled dari sebuah
kontrol ditetapkan False, kontrol
itu dinonaktifkan, yang berarti bahwa ia tidak dapat menerima fokus dan tidak dapat
merespon event-event yang dipicu oleh user. Selain itu, banyak kontrol
ditampilkan buram ketika properti Enabled
ditetapkan False. Sebagai contoh,
Gambar 6.29 menunjukkan sebuah form dengan tiga tombol yang properti Enabled-nya ditetapkan False.
Secara default, properti Enabled dari sebuah kontrol ditetapkan True. Jika Anda mengubah properti Enabled dari sebuah kontrol menjadi False pada saat perancangan, kontrol
itu awalnya dinonaktifkan ketika aplikasi dijalankan.
Anda dapat mengubah nilai
dari properti Enabled dengan kode
pada saat aplikasi dijalankan. Sebagai contoh, diasumsikan bahwa sebuah tombol
radio dengan nama radBiru diberikan.
Statemen berikut menonaktifkan kontrol:
radBiru.Enabled
= False
Kadangkala Anda tidak
ingin user mengakses kontrl tertentu. Sebagai contoh, dimisalkan terdapat
sebuah aplikasi yang menghitung harga dari dua mode berbeda dari sebuah mobil
baru. Satu model hanya memiliki warna merah, kuning, dan hitam, sedangkan model
lain hanya memiliki warna putih, hijau, dan oranye. Ketika user menyeleksi
sebuah model, aplikasi akan menonaktifkan warna-warna yang tidak tersedia untuk
model tersebut.
Kontrol Timer
Kontrol Timer dapat Anda pakai untuk secara
otomatis mengeksekusi kode pada interval waktu teratur. Ini berguna ketika Anda
menginginkan sebuah aplikasi untuk menjalankan suatu operasi pada waktu-waktu
tertentu atau setelah sejumlah waktu telah dilewati. Sebagai contoh, sebuah
kontrol Timer dapat melakukan
animasi sederhana dengan menggerakkan citra grafis melintasi layar, atau
kontrol Timer juga dapat menyebabkan
sebuah form tersembunyi setelah sejumlah waktu telah dilewati.
Anda mengklik ganda ikon Timer pada jendela Toolbox untuk menempatkan kontrol Timer pada sebuah form. (Kontrol Timer berada di bagian Components
pada jendela Toolbox). Karena
kontrol Timer tidak terlihat pada
saat aplikasi dijalankan, pada saat perancangan ia berada pada component tray. Prefiks yang akan
digunakan untuk nama dari kontrol Timer
adalah tmr.
Event Timer
Ketika Anda menempatkan
kontrol Timer pada sebuah form, ia
merespon event Tick ketika aplikasi
dijalankan. Event Tick dibangkitkan
pada interval waktu teratur. Jika kontrol memiliki sebuah event handler Tick, ia dieksekusi setiap kali event Tick terjadi. Oleh karena itu, kode
yang Anda tuliskan di dalam event handler Tick
akan dieksekusi pada interval waktu teratur. Untuk menciptakan template kode
event handler Tick, Anda mengklik
ganda pada sebuah kontrol Timer yang
telah ditempatkan pada component tray.
Properti-Properti
dari Kontrol Timer
Kontrol Timer memiliki dua properti penting: Enabled dan Interval. Ketika properti Enabled
ditetapkan True, kontrol Timer akan merespon event Tick. Ketika properti Enabled ditetapkan False, kontrol Timer
tidak merespon event Tick (kode di
dalam event handler Tick tidak
dieksekusi).
Properti Interval dapat ditetapkan menjadi
sebuah nilai 1 atau lebih besar dari 1. Nilai yang disimpan di dalam properti
Interval adalah jumlah milidetik yang merupakan interval terjadinya event
pewaktu. Satu milidetik adalah seper-seribu detik, jadi penetapan properti Interval menjadi 1000 menyebabkan event
pewaktu terjadi setiap detik.
Pada Tutorial 6.7, Anda
memeriksa sebuah aplikasi yang mendemonstrasikan sebuah kontrol Timer.
Tutorial 6.7: Demo Timer
Langkah 1: Buka projek Demo Timer. Form aplikasi ditunjukkan pada
Gambar 6.30. Perhatikan bahwa kontrol Timer
ditampilkan sebagai sebuah stopwatch pada component
tray.
Langkah 2: Jalankan aplikasi. Form ditampilkan pada Gambar 6.31.
Langkah 3: Angka yang ditampilkan pada label labelPewaktu
awalnya ditetapkan 0, tetapi diinkremen setiap detik. Setelah beberapa detik,
klik pada tombol Hentikan Pewaktu untuk menghentikan pewaktu.
Langkah 4: Ketika Anda mengklik tombol Hentikan
Pewaktu, teks pada tombol berubah
menjadi Mulai Pewaktu. Klik pada tombol itu kembali untuk memulai pewaktu.
Langkah 5: Setelah beberapa detik, klik tombol Keluar
untuk mengakhiri aplikasi.
Langkah 6: Dengan jendela Designer
terbuka, pilih kontrol Timer.
Langkah 7: Dengan kontrol Timer
terseleksi, lihat pada jendela Properties.
Nama dari kontrol adalah tmrDetik.
Properti Enabled awalnya ditetapkan True, dan properti Interval ditetapkan 1000.
Langkah 8: Buka jendela Code dan
perhatikan bahwa sebuah variabel level-kelas yang diberi nama intDetik dideklarasikan.
Langkah 9: Lihat pada event handler tmrDetik_Tick.
Kodenya adalah sebagai berikut:
Private Sub tmrDetik_Tick(…) Handles tmrDetik.Tick
'memperbarui
detik yang ditampilkan
intDetik += 1
labelPencacah.Text = intDetik.ToString()
End Sub
Setiap kali event handler
tmrDetik_Tick dieksekusi, ia
menambahkan 1 pada intDetik dan
kemudian menyalin nilainya pada label labelPewaktu.
Karena properti Interval dari
kontrol Timer ditetapkan 1000, event
handler ini dieksekusi setiap detik (kecuali jika properti Enabled dari kontrol Timer
ditetapkan False).
Langkah 10: Tombol yang menghentikan dan memulai pewaktu diberi nama tombolTogglePewaktu. Lihat event handler
tombolTogglePewaktu. Kodenya adalah
sebagai berikut:
Private Sub tombolTogglePewaktu_Click(…) Handles
tombolTogglePewaktu.Click
'toggle
pewaktu
If
tmrDetik.Enabled = True Then
tmrDetik.Enabled = False
tombolTogglePewaktu.Text = "&Mulai
Pewaktu"
Else
tmrDetik.Enabled = True
tombolTogglePewaktu.Text =
"&Hentikan Pewaktu"
End If
End Sub
Jika tmrDetik.Enabled bernilai True,
kode akan membuatnya False dan
mengubah teks pada tombol menjadi &Mulai
Pewaktu. Sebaliknya, ia menetapkan True
dan mengubah teks pada tombol menjadi &Hentikan
Pewaktu.
Pada tutorial 6.8, Anda
akan menggunakan sebuah kontrol Timer
untuk menciptakan sebuah aplikasi game.
Tutorial 6.8: Menciptakan Game Tangkap
Daku
Pada tutorial ini, Anda akan menciptakan sebuah aplikasi game yang
menampilkan sebuah tombol. Setiap detik, tombol akan bergerak ke lokasi acak
baru pada form aplikasi. User memenangi permainan ketika ia berhasil mengklik
tombol.
Ada sejumlah properti tombol dan form yang akan berguna:
- Form aktif diidentifikasi dengan katakunci Me.
- Lebar dan tinggi, dalam piksel, pada sebuah form atau kontrol lain, dikendalikan oleh properti Width dan Height.
- Posisi dari sebuah tombol di dalam form dikendalikan oleh properti Top dan Left. Koordinat piksel vertikal diawali dari 0 di atas form dan bertambah ke arah bawah, seperti ditunjukkan pada Gambar 6.32.
Aplikasi game Tangkap Daku memiliki sebuah kontrol Timer dengan properti Interval-nya ditetapkan 1000. Hasilnya,
ia akan membangkitkan sebuah event Tick
setiap detik. Event handler Tick
dari kontrol Timer akan
membangkitkan dua angka acak dan menugaskannya kepada properti Top dan Left dari kontrol Button.
Hasilnya, kontrol Button akan
bergerak ke lokasi acak baru pada form. Event handler Click dari kontrol Button
akan menonaktifkan kontrol Timer dan
menampilkan pesan yang mengindikasikan bahwa user memenangi permainan.
Langkah 1: Ciptakanlah sebuah
project Windows Forms Application baru
dengan nama Tangkap Daku. Bangunlah form aplikasi seperti
ditunjukkan pada Gambar 6.33. Namai kontrol Button dengan tombolTangkapDaku,
dan tempatkan ia di tengah-tengah secara vertikal dan horisontal di dalam form.
Langkah 2: Ciptakan sebuah kontrol
Timer dan namai dengan tmrGame. Tetapkan properti Enabled dengan True dan properti Interval
dengan 1000.
Langkah 3: Kode untuk aplikasi
akan ditampilkan di akhir tutorial ini, dengan nomor baris sebagai referensi.
Klik ganda pada kontrol tmrGame yang
Anda ciptakan pada Langkah 2. Ini akan membuka jendela Code dan menciptakan sebuah template kode untuk event handler tmrGame_Tick. Sempurnakan event handler
ini dengan memasukkan kode yang ditunjukkan pada baris 4 sampai baris 16.
Amati kode lebih dekat:
- Baris 5 menciptakan sebuah objek Random yang akan dipakai untuk membangkitkan nilai-nilai acak.
- Baris 8 mendeklarasikan dua variabel: intKiriBaru dan intAtasBaru. Kedua variabel ini akan menampung nilai-nilai acak untuk lokasi baru dari tombol.
- Baris 11 membangkitkan sebuah integer acak dan menugaskannya kepada intKiriBaru. Perhatikan bahwa argumen yang dilewatkan kepada metode rand.Next adalah ekspresi Me.Width – tombolTangkapDaku.Width. Ini akan memastikan bahwa nilai acak itu bukanlah sebuah nilai yang akan menempatkan kontrol Button di luat batas kanan dari form.
- Baris 12 membangkitkan sebuah integer acak dan menugaskannya kepada intAtasBaru. Perhatikan bahwa argumen yang dilewatkan kepada metode rand.Next adalah ekspresi Me.Height – tombolTangkapDaku.Height. Ini akan memastikan bahwa nilai acak itu bukanlah sebuah nilai yang akan menempatkan kontrol Button di luat batas bawah dari form.
- Baris 15 menugaskan intKiriBaru kepada tombolTangkapDaku.Left.
- Baris 16 menugaskan intAtasBaru kepada tombolTangkapDaku.Top.
Langkah 4: Pada jendela Designer,
klik ganda pada kontrol tombolTangkapDaku.
Ini akan membuka jendela Code dan
menciptakan sebuah template kode untuk event handler tombolTangkapDaku_Click. Sempurnakan event handler ini dengan
memasukkan kode yang ditunjukkan pada baris 20 sampai baris 24.
Amati kode lebih dekat:
·
Baris 21 menetapkan properti Enabled dari kontrol Timer
dengan False. Ini akan menghentikan Timer dari pembangkitan event Tick.
·
Baris 24 menampilkan kotak pesan yang memberitahu
user bahwa ia telah memenangkan permainan.
Langkah 5: Simpan projek dan
jalankan aplikasi. Setelah Anda semakin lebih baik dalam permainan ini, Anda
dapat membuat tantangan lebih sulit dengan mengubah properti Interval dari kontrol Timer menjadi nilai yang lebih rendah.
Ini akan mengurangi interval waktu antara perpindahan tombol.
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
|
Public Class FormTangkapDaku
Private
Sub tmrGame_Tick(…) Handles tmrGame.Tick
'menciptakan sebuah objek Random
Dim rand As New Random
'variabel-variabel untuk memuat
koordinat XY
Dim intKiriBaru, intAtasBaru As
Integer
'membaca koordinat XY acak
intKiriBaru = rand.Next(Me.Width - tombolTangkapDaku.Width)
intAtasBaru = rand.Next(Me.Height -
tombolTangkapDaku.Height)
'menggeser tombol ke lokasi baru
tombolTangkapDaku.Left = intKiriBaru
tombolTangkapDaku.Top = intAtasBaru
End Sub
Private
Sub tombolTangkapDaku_Click(…) Handles tombolTangkapDaku.Click
'menonaktifkan timer
tmrGame.Enabled = False
'menampilkan pesa
MessageBox.Show("Anda
menang!")
End Sub
End Class
|
6.6 Fokus Perancangan GUI: Properti Anchor
dan Dock
KONSEP: Kontrol memiliki dua properti: Anchor dan Dock, yang dapat dipakai
untuk mengendalikan posisi kontrol pada form ketika form diubah ukurannya saat
aplikasi dijalankan.
Properti Anchor
Secara default, ketika
user mengubah ukuran form saat aplikasi dijalankan, posisi dari kontrol pada
form tidak berubah terhadap tepi atas dan tepi kiri dari form. Sebagai contoh,
pada Gambar 6.34, citra di sisi kiri menunjukkan form sebelum user mengubah
ukurannya dan citra di sisi kanan menunjukkan form setelah user mengubah
ukurannya.
Ketika user mengubah
ukuran form, posisi dari kotak list dan tombol tidak berubah. Kontrol memiliki
properti Anchor, yang dapat Anda
pakai untuk mengendalikan satu atau lebih tepi dari sebuah form. Ketika sebuah
kontrol dilekatkan ke tepi form, jarak antara tepi kontrol dan tepi form tetap
konstan ketika form diubah ukurannya saat aplikasi dijalankan.
Ketika Anda mengklik
properti Anchor pada jendela Properties, jendela popup akan
ditampilkan seperti ditunjukkan pada Gambar 6.35. Perhatikan bahwa batang atas
dan batang kiri diseleksi, yang mengindikasikan bahwa kontrol dilekatkan ke
tepi atas dan tepi kiri dari form. Ini adalah pengaturan default dari properti Anchor.
Untuk mengubah pengaturan properti Anchor, Anda memilih batang-batang yang berkaitan dengan tepi-tepi form yang ingin Anda lekatkan dengan kontrol. Sebagai contoh, Gambar 6.36 menunjukkan bagaimana properti Anchor ditampilkan ketika kontrol dilekatkan dengan tepi bawah dan tepi kanan dari form.
Gambar 6.37 menunjukkan
sebuah form sebelum dan sesudah ia diubah ukurannya. Kali ini, kontrol-kontrol Button dilekatkan ke tepi bawah dan
tepi kanan dari form dan kotak list dilekatkan ke tepi atas dan tepi kiri dari
form.
Adalah dimungkinkan untuk
melekatkan sebuah kontrol ke sisi-sisi yang berlawanan, seperti atas dan bawah,
atau kiri dan kanan. Pendekatan ini menyebabkan kontrol berubah ukuran ketika
form diubah ukurannya. Sebagai contoh, lihat pada Gambar 6.38. Kontrol PictureBox dilekatkan ke empat sisi
dari form, dan properti SizeMode
ditetapkan StretchImage. Ketika form diubah ukurannya, kontrol PictureBox juga berubah ukuran.
Properti Dock
Ketika sebuah kontrol
didock, ia diposisikan secara langsung ke salah satu tepi dari sebuah form.
Selain itu, panjang atau lebar dari sebuah kontrol yang didock diubah untuk
menyesuaikan lebar atau panjang dari tepi form. Sebagai contoh, form pada
Gambar 6.39 memiliki empat tombol yang didock. Sebuah tombol didock ke setiap
tepi dari form.
Tombol-tombol secara
otomatis berubah ukuran untuk memenuhi tepi-tepi. Gunakan properti Dock untuk mendock sebuah kontrol ke
tepi form. Pada jendela Properties,
jendela popup ditampilkan pada Gambar 6.40. Hal itu mengilustrasikan bagaimana
setiap tombol pada jendela popup memengaruhi kontrol. Tombol persegi di tengah
menyebabkan kontrol mengisi keseluruhan form.
6.7 Fokus Penyelesaian Permasalahan:
Membangun Aplikasi Pusat Kepemimpinan Tarabunga
KONSEP: Pada bagian ini, Anda membangun sebuah aplikasi yang menggunakan
data yang disimpan di dalam array-array paralel.
Pusat Kepemimpinan
Tarabunga (PKT) mempublikasikan buku, video, dan CD yang tercantum pada Tabel 6.1.
Tabel 6.1 Produk-Produk Pusat Kepemimpinan Tarabunga (PKT)
Judul Produk
|
Deskripsi Produk
|
Nomor Produk
|
Harga
|
Enam Langkah
Kepemimpinan
|
Buku
|
914
|
Rp. 12.950
|
Enam Langkah
Kepemimpinan
|
CD
|
915
|
Rp. 14.950
|
Jalan
Kesuksesan
|
Video
|
916
|
Rp. 18.950
|
Tujuh Pelajaran
Keberhasilan
|
Buku
|
917
|
Rp. 16.950
|
Tujuh Pelajaran
Keberhasilan
|
CD
|
918
|
Rp. 21.950
|
Dimisalkan bahwa wakil manajer
penjualan meminta Anda untuk menuliskan sebuah program pelaporan penjualan yang
melakukan berikut:
·
Meminta user untuk berapa unit terjual dari tiap
produk.
·
Menampilkan laporan penjualan yang menunjukkan
data penjualan detil untuk setiap produk dan pendapatan total dari semua produk
yang terjual.
Form Aplikasi
Gambar 6.41 menunjukkan
form aplikasi. Tabel 6.2 mencantumkan setiap kontrol pada form (tidak termasuk
kontrol-kontrol pada menu) berikut dengan pengaturan properti terkait.
Tabel 6.2 Kontrol-kontrol dan pengaturan properti
Tipe Kontrol
|
Nama Kontrol
|
Properti
|
Nilai Properti
|
Form
|
Form1
|
Text:
|
Pusat
Kepemimpinan Tarabunga
|
GroupBox
|
(Default)
|
Text:
|
Data Penjualan
|
Label
|
(Default)
|
Text:
|
Pendapatan
Total
|
Label
|
labelPendapatanTotal
|
Text:
AutoSize
BorderStyle:
|
False
Fixed3D
|
ListBox
|
listDataPenjualan
|
AutoSize
|
False
|
MenuStrip
|
(Default)
|
Lihat Tabel 8.3
|
Gambar 6.42 menunjukkan
sketsa dari sistem menu pada form aplikasi.
Tabel 6.3 mencantumkan nama-nama
objek item menu, teks, dan kunci shortcut
Tabel 6.3 Nama-nama item menu, properti teks, dan kunci shortcut
Nama Item Menu
|
Properti Text
|
Kunci Shortcut
|
mnuFile
|
&File
|
|
mnuFileKeluar
|
&Keluar
|
Ctrl + K
|
mnuLaporan
|
&Laporan
|
|
mnuLaporanMasukkan
|
&Masukkan
Data Penjualan
|
Ctrl + M
|
mnuLaporanTampilkan
|
&Tampilkan
Laporan Penjualan
|
Ctrl + T
|
mnuHelp
|
&Help
|
|
mnuHelpTentang
|
&Tentang
|
Tabel 6.4 Menjelaskan deklarasi-deklarasi
level-kelas form
Tabel 6.4 Deklarasi-deklarasi level-kelas
Nama
|
Penjelasan
|
intSUBSKRIPT_MAKS
|
Sebuah konstanta, ditetapkan 8, untuk memuat subskript
atas dari array level-kelas, dan batas atas dari pencacah yang dipakai di
dalam loop yang memproses informasi di dalam array.
|
strNamaProd
|
Sebuah array string; array ini memuat nama tiap produk
PKT.
|
strPenjelasan
|
Sebuah array string; array ini memuat penjelasan tiap
produk PKT.
|
intNomorProd
|
Sebuah array integer; array ini memuat nomor-nomor produk
PKT.
|
decHarga
|
Sebuah array Decimal; array ini memuat harga tiap produk
PKT.
|
intUnitTerjual
|
Sebuah array integer; array ini memuat jumlah unit terjual
dari tiap produk PKT.
|
Lima array adalah
array-array paralel, yang berarti bahwa subskript yang sama dapat dipakai untuk
mengakses data yang berkaitan dengan item yang sama. Tabel 6.5 mencantumkan dan
menjelaskan metode-metode di dalam file form.
Tabel 6.5 Metode-Metode
Nama
|
Penjelasan
|
AwalArray
|
Prosedur; menugaskan nama, penjelasan, nomor produk, dan
harga unit dari tiap produk PKT kepada array-array level-kelas.
|
mnuFileKeluar_Click
|
Mengakhiri aplikasi.
|
mnuLaporanMasukkan_Click
|
Meminta user memasukkan data penjualan.
|
mnuLaporanTampilkan_Click
|
Menghitung dan menampilkan pendapatan untuk tiap produk
dan pendapatan total.
|
mnuHelpTentang_Click
|
Menampilkan kotak Tentang.
|
Form1_Load
|
Memanggil prosedur AwalArray.
|
Tutorial 6.9: Membangun
Aplikasi Pelaporan Penjualan Pusat Kepemimpinan Tarabunga
Langkah 1: Ciptakanlah sebuah projek Windows
Forms Application baru dengan nama Penjualan Tarabunga.
Langkah 2: Bangunlah form seperti ditunjukkan pada Gambar 6.43.
Dengan mengacu pada Tabel
6.2 untuk nama-nama kontrol dan pengaturan propertinya, mengacu pada Gambar 6.41
untuk lokasi dari tiap kontrol, mengacu pada Gambar 6.42 untuk tata letak menu,
dan mengacu pada Tabel 6.3 untuk properti dari tiap item menu, Anda dapat
memahami aplikasi ini.
Langkah 3: Berikut adalah kode untuk aplikasi. Gunakan sebagai referensi untuk
menyempurnakan aplikasi. (Jangan ketikkan baris nomor, karena hanya ditujukan
sebagai 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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
Public Class Form1
'aplikasi ini menampilkan sebuah laporan
penjualan untuk
'pusat kepemimpinan Tarabung
' Class-level declarations
Const intSUBSKRIPT_MAKS As Integer =
4 'subskript atas
Dim strNamaProduk(intSUBSKRIPT_MAKS) As
String 'nama produk
Dim strPenjelasan(intSUBSKRIPT_MAKS) As
String 'penjelasan
Dim intNomorProd(intSUBSKRIPT_MAKS) As
Integer 'nomor produk
Dim decHarga(intSUBSKRIPT_MAKS) As
Decimal 'harga per unit
Dim intUnitTerjual(intSUBSKRIPT_MAKS) As
Integer 'banyak unit terjual
Private
Sub Form1_Load(…) Handles MyBase.Load
'menginisialisasi array dengan data
produk
AwalArray()
End Sub
Private
Sub AwalArray()
'menginisialisasi array
'produk pertama
strNamaProduk(0) = "Enam Langkah
Kepemimpinan"
strPenjelasan(0) = "Buku"
intNomorProd(0) = 914
decHarga(0) = 12950D
'produk kedua
strNamaProduk(1) = "Enam Langkah
Kepemimpinan"
strPenjelasan(1) = "CD"
intNomorProd(1) = 915
decHarga(1) = 14950D
'produk ketiga
strNamaProduk(2) = "Jalan
Kesuksesan"
strPenjelasan(2) = "Video"
intNomorProd(2) = 916
decHarga(2) = 18950D
'produk keempat
strNamaProduk(3) = "Tujuh
Pelajaran Keberhasilan"
strPenjelasan(3) = "Buku"
intNomorProd(3) = 917
decHarga(3) = 16950D
'produk kelima
strNamaProduk(4) = "Tujuh
Pelajaran Keberhasilan"
strPenjelasan(4) = "CD"
intNomorProd(4) = 918
decHarga(4) = 21950D
End Sub
Private
Sub mnuFileKeluar_Click(…) Handles mnuFileKeluar.Click
'menutup form
Me.Close()
End Sub
Private
Sub mnuLaporanMasukkan_Click(…) Handles mnuLaporanMasukkan.Click
Dim intHitung As Integer = 0 'pencacah loop
Do While intHitung <=
intSUBSKRIPT_MAKS
Try
'membaca banyak unit terjual
untuk sebuah produk
intUnitTerjual(intHitung) =
CInt(
InputBox("Masukkan
banyak unit terjual dari nomor produk " &
intNomorProd(intHitung)))
'menginkremen intHitung
intHitung += 1
Catch
'pesan error untuk masukan
tak valid
MessageBox.Show("Masukkan integer.")
End Try
Loop
End Sub
Private
Sub mnuLaporanTampilkan_Click(…) Handles mnuLaporanTampilkan.Click
'menghitung dan menampilkan
pendapatan untuk tiap
'produk dan pendapatan total
Dim intHitung As Integer
Dim decPendapatan As Decimal
Dim decPendapatanTotal As Decimal
'menampilkan header laporan penjualan
listDataPenjualan.Items.Add("LAPORAN PENJUALAN")
listDataPenjualan.Items.Add("-------------------------")
'menampilkan data penjualan untuk
tiap produk
For intHitung = 0 To
intSUBSKRIPT_MAKS
'menghitung pendapatan produk
decPendapatan =
intUnitTerjual(intHitung) * decHarga(intHitung)
'menampilkan data produk
listDataPenjualan.Items.Add("Nomor Produk: " &
intNomorProd(intHitung))
listDataPenjualan.Items.Add("Nama:
" &
strNamaProduk(intHitung))
listDataPenjualan.Items.Add("Deskripsi: " &
strPenjelasan(intHitung))
listDataPenjualan.Items.Add("Harga Per Unit: " &
"Rp. " &
decHarga(intHitung).ToString())
listDataPenjualan.Items.Add("Banyak Unit Terjual: " &
"Rp. " &
intUnitTerjual(intHitung).ToString())
listDataPenjualan.Items.Add("Pendapatan Produk: " &
"Rp. " &
decPendapatan.ToString())
listDataPenjualan.Items.Add("")
'mengakumulasi pendapatan
decPendapatanTotal =
decPendapatanTotal + decPendapatan
Next
'menampilkan pendapatan total
labelPendapatanTotal.Text = "Rp.
" & decPendapatanTotal.ToString()
End Sub
Private
Sub mnuHelpTentang_Click(…) Handles mnuHelpTentang.Click
'menampilkan kotak tentang
MessageBox.Show("Menampilkan
laporan penjualan untuk PKT.", "Tentang")
End Sub
End Class
|
Langkah 4: Simpan projek.
Langkah 5: Jalankan aplikasi. Pada form aplikasi, klik menu Laporan, dan kemudian klik Masukkan
Data Penjualan. Anda akan diminta unttuk memasukkan berapa banyak unit
per produk yang terjual pada kotak masukan. Masukan nilai-nilai berikut:
Nomor produk 914: 140
Nomor produk 915: 85
Nomor produk 916: 129
Nomor produk 917: 67
Nomor produk 918: 94
Langkah 6: Klik menu Laporan, dan
kemudian klik Tampilkan Laporan Penjualan. Form akan sekarang akan ditampilkan seperti ditunjukkan
pada Gambar 6.44.
Langkah 7: Keluar dari aplikasi.
6.8 Menggunakan List Untuk Menampung
Informasi
Pada Visual Basic, Anda
dapat menggunakan tipe data List
untuk menampung sejumlah item. Pada banyak cara, sebuah List memiliki banyak
keuntungan daripada array. Pertama, sebuah list dapat berkembang secara dinamis
ketika Anda menambahkan objek-objek ke dalamnya. Anda tidak perlu membatasi
ukurannya, seperti yang Anda lakukan pada array. Kedua, sangat mudah untuk
menghapus sebuah item dari sebuah list, tetapi sangat sulit untuk melakukannya
pada array. Ketiga, list memiliki fungsi pencarian built-in, sedangkan array
tidak memilikinya. Kontrol ListBox,
seperti diintroduksi pada Bagian 5.2, memiliki properti Items yang memuat sebuah List.
Oleh karena itu, Anda telah familiar dengan sejumlah operasi pada list, seperti
Add, Remove, dan Clear.
Sekarang, Anda bisa menciptakan objek-objek List sendiri dan memanggil metode-metode yang sama seperti yang
Anda lakukan pada kontrol ListBox.
Ketika Anda
mendeklarasikan sebuah List, Anda
perlu menetapkan tipe data yang akan disimpan di dalam list. Sebagai contoh,
berikut adalah bagaimana Anda mendeklarasikan sebuah list yang memuat
string-string:
Dim
listNama As List(Of String)
Ketika Anda menciptakan
sebuah objek dalam Visual Basic, Anda harus menggunakan katakunci New. List adalah objek, jadi Anda perlu menggunakan katakunci New sebagai suatu cara untuk
memberitahu Visual Basic bahwa Anda ingin menciptakan sebuah objek List yang baru. Berikut adalah
contohny:
listNama
= New List(Of String)
Seringkali, Anda lebih
memilih untuk mendeklarasikan variabel List
dan menciptakan sebuah objek List
pada saat yang sama. Yang perlu Anda lakukan adalah menyisipkan katakunci New ke dalam deklarasi variabel:
Dim listNama
As New List(Of String)
Berikut adalah cara
bagaimana Anda mendeklarasikan dan menciptakan sebuah List yang memuat sejumlah Integer:
Dim
listSkor As New List(Of Integer)
Berikut adalah cara
bagaimana Anda mendeklarasikan dan menciptakan sebuah List yang memuat sejumlah Double:
Dim
listSuhu As New List(Of Double)
Memilih Nama
Pengenal
Ketika menamai variabel List, Anda bisa memberikan prefiks pada
nama variabel tersebut:
Dim
listStrNama As List(Of String)
Dim
listIntSkor As List(Of Integer)
Prefiks list juga
digunakan untuk kontrol ListBox.
Cara alternatif, Anda dapat menggunakan sebuah prefiks yang mengindikasikan
tipe data dari item-item yang akan disimpan di dalam list (seperti int untuk Integer, dbl untuk Double, dan seterusnya). Berikut adalah
sejumlah contohnya:
Dim
strNama As List(Of String)
Dim
intSkor As List(Of Integer)
Operasi-Operasi
List
Anda bisa memanggil
metode Add untuk menambahkan sebuah
item ke dalam sebuah list. Sebagai contoh,
Dim
listNama As New List(Of String)
listNama.Add("Kristof")
listNama.Add("John")
dan
seterusnya ...
Untuk menghapus sebuah
item, Anda memanggil metode Remove
dan melewatkan objek yang ingin dihapus:
listNama.Remove("John")
Untuk menghapus semua
item, Anda memanggil metode Clear:
listNama.Clear()
Untuk mendapatkan ukuran
dari sebuah List, Anda memanggil
metode Count:
Dim
intHitung As Integer
intHitung
= listNama.Count()
Anda dapat menggunakan
sebuah indeks untuk mengakses sembarang item list yang ada. Nilai indeks
terendah adalah 0. Diasumsikan bahwa sebuah list memuat “Kristof” dan “John”.
Statemen-statemen berikut menugaskan setiap nam kepada sebuah label Kontrol:
labelHasil.Text
= listNama(0) menghasilkan: Kristof
labelHasil.Text
= listNama (1) menghasilkan: John
Sama halnya, Anda dapat
mengganti sebuah item list berikut:
listNama(0) = “Jono”
Pada tutorial berikut,
Anda akan membangun sebuah list berdasarkan nama-nama yang dimasukkan oleh
user.
Tutorial 6.10: Membangun Sebuah List
Dari Masukan User
Pada tutorial ini, Anda
akan menulis ulang aplikasi dari Tutorial 6.2 dimana user memasukkan dan
menyimpan nama-nama teman. Pada versi baru ini, nama-nama akan disimpan di
dalam sebuah List(Of String).
Setelah memasukkan nama-nama, user dapat mengklik sebuah tombol dan menampilkan
semua nama di dalam sebuah kotak list.
Langkah 1: Ciptakanlah sebuah Windows Forms
Application dengan nama Daftar Teman
2. Tempatkan sebuah kontrol Label,
ListBox, TextBox, dan dua kontrol Button
pada form. Gunakan Gambar 6.45 sebagai panduan ketika menamai kontrol-kontrol.
Langkah 2: Buka jendela Code dan di
dalam kelas form tuliskan deklarasi variabel level-kelas yang ditunjukkan
dengan huruf tebal berikut:
Public Class Form1
Private listNama As New List(Of String)
End Class
Langkah 3: Ciptakanlah event handler Click
berikut untuk tombol Tambahkan:
Private Sub tombolTambah_Click(…) Handles
tombolTambah.Click
'menambahkan nama ke List
listNama.Add(teksNama.Text)
'membersihkan kotak teks
teksNama.Clear()
teksNama.Focus()
End Sub
Statemen listNama.Add menambahkan isi dari kotak
teks pada list string. Kotak teks dibersihkan untuk mencegah user dari secara
tak sengaja mengklik tombol dua kali dan menambahkan nama yang sama. Metode Focus dipanggil sehingga user dapat
mengetikkan nama baru ke dalam kotak teks.
Langkah 5: Selanjutnya, Anda akan menciptakan sebuah event handler Click untuk tombol Tampilkan Semua yang
menyalin isi dari listNama pada
kotak list dengan nama listTeman.
Private Sub tombolTampil_Click(..) Handles
tombolTampil.Click
'menampilkan semua nama pada kotak list
Dim strNama As String
listTeman.Items.Clear()
For Each strNama In listNama
listTeman.Items.Add(strNama)
'menambahkan pada kotak list
Next
End Sub
Kotak list dibersihkan,
dan kemudian sebuah loop For Each
mengambil setiap nama dari listTeman
dan menambahkannya pada kontrol ListBox.
Langkah 6: Jalankan dan uji aplikasi dengan memasukkan beberapa nama ke dalam kotak
teks dan klik tombol Tambahkan
setelah setiap nama dimasukkan.
Langkah 7: Klik pada tombol Tampilkan Semua. Anda akan melihat semua nama
yang Anda masukkan. Lihat Gambar 6.46.
Mengakses Sebuah
List dengan Subskript
Tutorial 6.10 menggunakan
loop For-Each untuk memproses semua
elemen di dalam sebuah list. Ini sangat mudah dilakukan, tetapi kadangkala Anda
ingin menggunakan pencacah loop untuk melakukan hal yang sama. Anda bisa
mengambil kode dari tutorial dan menunjukkan bagaimana bila digunakan sebuah pencacah
loop:
Dim
intIndeks As Integer = 0
Dim
strNama As String
For
intIndeks = 0 To listNama.Count - 1
strNama = listNama(intIndeks)
listTeman.Items.Add(strNama)
Next
Hasilnya ditampilkan pada
Gambar 6.47 berikut.
Melakukan
Pencarian Item Di Dalam Sebuah List
Cara mudah untuk
melakukan pencarian item di dalam sebuah List
adalah dengan menggunakan metode indexOf.
Metode ini menerima sebuah nilai sebagai argumennya, dan ia melakukan pencarian
nilai tersebut di dalam List. Jika
nilai ditemukan, metode menghasilkan indeksnya. Jika nilai itu tidak ditemukan,
metode ini menghasilkan -1. Kode berikut menunjukkan contohnya:
Public Class Form1
Private
listNama As New List(Of String)
Private Sub
tombolTambah_Click(…) Handles tombolTambah.Click
'menambahkan nama ke List
listNama.Add(teksNama.Text)
'membersihkan kotak teks
teksNama.Clear()
teksNama.Focus()
End Sub
Private Sub
tombolTampil_Click(…) Handles tombolTampil.Click
'menampilkan semua nama pada kotak list
Dim
intIndeks As Integer = 0
Dim
strNama As String
For
intIndeks = 0 To listNama.Count - 1
strNama = listNama(intIndeks)
listTeman.Items.Add(strNama)
Next
End Sub
Private Sub
tombolCari_Click(…) Handles tombolCari.Click
Dim
intPosisi As Integer = listNama.IndexOf(teksCari.Text)
'Apakah
ditemukan di dalam List?
If
intPosisi <> -1 Then
listTeman.SelectedItem
= listTeman.Items(intPosisi)
MessageBox.Show("Teman yang Anda cari ditemukan pada indeks "
&
intPosisi)
Else
MessageBox.Show("Teman yang Anda cari tidak ditemukan.")
End If
End Sub
End Class
Keluaran program ini
ditampilkan pada Gambar 6.48.
No comments:
Post a Comment