Membuat Keputusan
Pada bab ini, Anda akan
belajar bagaimana program-program menggunakan statemen If…Then, If…Then…Else,
dan If…Then...ElseIf untuk membuat
keputusan. Anda akan belajar bagaimana membandingkan nilai-nilai menggunakan
operator-operator relasional dan membangun perbandingan-perbandingan kompleks
menggunakan operator-operator logikal. Anda akan dikenalkan dengan statemen Select Case, kontrol tombol radio, dan
kontrol kotak periksa. Anda akan belajar lebih banyak tentang kotak pesan, yang
menampilkan pesan kepada user, dan proses validasi masukan.
2.1 Struktur Keputusan
KONSEP: Struktur keputusan membuat logika program dapat mempunyai lebih
dari satu alur eksekusi.
Pada program-program yang
telah Anda tuliskan sejauh ini, statemen-statemen dieksekusi secara sekuensial.
Ini berarti bahwa statemen-statemen dieksekusi secara berurutan, satu demi
satu.
Anda mungkin berpikir
bahwa statemen-statemen yang dieksekusi secara sekuensial seperti
langkah-langkah ketika Anda berjalan. Untuk menyelesaikan perjalanakn, Anda
harus memulai dari awal dan melakukan setiap langkah satu demi satu, sampai
Anda mencapai tujuan. Ini diilustrasikan pada Gambar 2.1.
Gambar 2.1 Runtun instruksi
Tipe kode ini dinamakan
dengan struktur runtun karena statemen-statemen dieksekusi secara beruntun, tanpa
percabangan ke arah lain. Program seringkali memerlukan lebih dari satu alur
eksekusi karena banyak algoritma memerlukan sebuah program untuk mengeksekusi
sejumlah statemen dengan kondisi-kondisi tertentu. Ini dapat dilakukan dengan struktur keputusan.
Struktur
Keputusan Dalam Diagram Alir dan Pseudocode
Dalam format paling
sederhana dari struktur keputusan, ekspresi diuji apakah nilainya True atau False. Jika ekspresi bernilai True,
sebuah aksi akan dilakukan. Jika ekspresi bernilai False, aksi tidak akan dilakukan. Gambar 2.2 menunjukkan diagram
alir dari sebuah struktur keputusan. Simbol diamond merepresentasikan
pertanyaan ya/tidak, atau ekspresi True/False. Jika jawaban terhadap pertanyaan
itu adalah ya (atau jika ekspresi bernilai True),
maka program melalui satu lintasan atau alur. Jika jawaban terhadap pertanyaan
itu adalah tidak (atau jika ekspresi bernilai False), maka program melalui lintasan atau alur lain.
Gambar 2.2 Diagram alir dari
struktur keputusan sederhana
Pada diagram alir, aksi Pakai jaket dilakukan hanya ketika di
luar dingin. Jika di luar tidak dingin, aksi ini akan dilompati. Aksi
dieksekusi secara kondisional (dengan syarat) karena ia dilakukan hanya ketika
kondisi atau syarat tertentu dipenuhi. Gambar 2.3 menunjukkan diagram alir yang
lebih kompleks, dimana tiga aksi dilakukan, hanya ketika di luar dingin.
Gambar 2.3 Diagram alir dari
struktur keputusan tiga-keputusan
Struktur keputusan dapat
pula diekspresikan dengan pseudocode. Sebagai contoh, struktur keputusan yang
ditampilkan pada Gambar 2.2 dapat diekspresikan sebagai:
If dingin di luar Then
Pakai jaket
End If
Statemen End If menandai akhir dari struktur
keputusan dalam pseudocode. Statemen-statemen yang ada di antara If…Then dan End If dieksekusi hanya
ketika di luar dingin.
Struktur keputusan yang
ditampilkan pada Gambar 2.3, yang secara kondisional mengeksekusi tiga aksi, dapat
diekspresikan sebagai:
If dingin di luar Then
Pakai jaket
Pakai topi
Pakai sarung tangan
End If
2.2 Statemen If…Then
KONSEP: Statemen If…Then menyebabkan statemen-statemen lain dieksekusi
hanya ketika ekspresi bernilai True.
Salah satu cara
memprogram struktur keputusan dalam Visual Basic adalah dengan menggunakan
statemen If…Then. Berikut adalah
bentuk umum dari statemen If…Then:
If
ekspresi Then
statemen
(atau statemen-statemen lain)
End
If
Statemen If…Then memang sangat sederhana: jika
ekspresi bernilai True, statemen
atau statemen-statemen lain yang ada di antara If…Then dan End If akan
dieksekusi. Sebaliknya, statemen-statemen itu akan dilompati.
Ekspresi Boolean
dan Operasi Relasional
Ekspresi yang diuji di
dalam sebuah statemen If…Then dapat
bernilai True atau False. Ekspresi semacam itu dikenal dengan ekspresi Boolean. Operator-operator
spesial yang dikenal sebagai operator-operator relasional umumnya dipakai pada
ekspresi Boolean. Operator relasional menentukan apakah ada relasi spesifik
antara dua nilai atau tidak. Sebagai contoh, operator lebih-dari (>)
menentukan apakah satu nilai lebih besar dari nilai lain atau tidak. Operator
sama-dengan (=) menentukan apakah dua nilai bernilai sama atau tidak. Tabel 2.1
mencantumkan sejumlah operator relasional dalam Visual Basic.
Tabel 2.1 Operator-operator relasional dalam Visual Basic
Operator Relasional
|
Arti
|
>
<
=
<>
>=
<=
|
Lebih besar dari
Lebih kecil dari
Sama dengan
Tidak sama dengan
Lebih besar dari atau
sama dengan
Lebih kecil dari atau
sama dengan
|
Semua operator relasional
adalah operator biner, yang berarti bahwa semuanya menggunakan dua operand.
Berikut adalah contoh dari sebuah ekspresi yang menggunakan operator
lebih-dari:
panjang > lebar
Ekspresi ini menentukan
apakah nilai dari panjang lebih
besar dari nilai dari lebar. Jika panjang lebih besar dari lebar, maka nilai dari ekspresi
tersebut adalah True. Sebaliknya,
nilai dari ekspresi adalah False.
Karena ekspresi hanya bisa bernilai True atau False, ia dikatakan sebagai
ekspresi Boolean. Ekspresi berikut menggunakan operator kurang-dari (<)
untuk menentukan apakah panjang
bernilai kurang dari lebar:
panjang
< lebar
Tabel 2.2 menunjukkan
beberapa contoh ekspresi relasional yang membandingkan variabel x dan y.
Tabel 2.2 Ekspresi-ekspresi Boolean yang menggunakan operator relasional
Ekspresi relasional
|
Arti
|
x > y
x < y
x >= y
x <= y
x = y
x <> y
|
Apakah x lebih besar
dari y?
Apakah x lebih kecil
dari y?
Apakah x lebih besar dari
atau sama dengan y?
Apakah x lebih kecil
dari atau sama dengan y?
Apakah x sama dengan y?
Apakah x tidak sama
dengan y?
|
Operator =, ketika
digunakan di dalam ekspresi relasional, menentukan apakah operand di sisi
kirinya sama dengan operand di sisi kananya. Jika kedua operand memiliki nilai
sama, ekspresi bernilai True.
Diasumsikan bahwa a bernilai 4. Ekspresi a = 4 bernilai True dan ekspresi a = 2 bernilai False.
Terdapat dua operator
yang dapat menguji lebih dari satu relasi pada saat yang sama. Operator >=
menentukan apakah operand di sisi kiri lebih besar dari atau sama dengan
operand di sisi kanan. Diasumsikan bahwa a adalah 4, b adalah 6, dan c adalah
4. Ekspresi b >= a dan a >= c bernilai True, dan a >= 5 bernilai False.
Operator <= menentukan
apakah operand kiri bernilai kurang dari atau sama dengan operand kanannya.
Sekali lagi, diasumsikan bahwa a adalah 4, b adalah 6, dan c adalah 4. Baik a
<= c maupun b <= 10 bernilai True,
tetapi b <= a bernilai False.
Operator <> adalah
operator tidak sama dengan. Ia menentukan apakah operand di sisi kirinya tidak
sama dengan operand di sisi kanan, yang berlawanan dengan operator =. Seperti
sebelumnya, diasumsikan bahwa a adalah 4, b adalah 6, dan c adalah 4. Baik a
<> b maupun b <> c bernilai True
karena a bernilai tidak sama dengan b dan b bernilai tidak sama dengan c.
Namun, a <> c bernilai False
karena a bernilai sama dengan c. Nilai-nilai yang dibandingkan oleh sebuah
ekspresi relasional tidak harus bertipe data sama. Dimisalkan bahwa sebuah
variabel bertipe Single dibandingkan
dengan sebuah konstanta integer, seperti pada berikut:
sngSuhu
> 40
Pada contoh ini, integer
40 dikonversi secara temporer menjadi Single
sehingga perbandingan dapat dilakukan. Anda tidak perlu khawatir tentang
konversi ini, karena hal ini secara otomatis dilakukan oleh kompiler Visual
Basic. Sama halnya, Anda bisa saja membandingkan sebuah Double dengan sebuah Single,
seperti pada berikut:
dblSuhu
< sngTitikDidih
Nilai dari sngTitikDidih secara otomatis
dikonversi menjadi tipe Double
sehingga nilai-nilai dapat dibandingkan.
Menyatukan Semua
Lihat sebuah contoh dari
statemen If…Then berikut:
If
decPenjualan > 50000 Then
labelHasil.Text = "Anda layak mendapat
bonus!"
End
If
Statemen ini menggunakan
operator > untuk menentukan apakah decPenjualan lebih besar dari 50000. Jika
ekspresi decPenjualan > 50000
bernilai True, maka pesan Anda layak mendapat bonus! akan
ditampilkan pada user.
Contoh berikut secara
kondisional mengeksekusi sejumlah statemen berikut:
If
decPenjualan > 50000 Then
labelHasil.Text = " Anda layak
mendapat bonus!"
decPersenKomisi = 0.12
intHariLibur = intHariLibur + 1
End
If
Berikut beberapa aturan
yang perlu diingat pada statemen If…Then
multi-baris:
·
Sebuah ekspresi Boolean haris diberikan antara If dan Then.
·
Kata If
dan Then ditempatkan pada baris yang
sama.
·
Tidak ada selain komentar yang bisa ditempatkan
setelah katakunci Then, pada baris
yang sama.
·
Statemen End
If harus berada pada baris yang
sama. Hanya komentar yang bisa ditempatkan setelahnya pada baris yang sama.
Tutorial 2.1 memeriksa
sebuah aplikasi yang menggunakan statemen If…Then.
Tutorial 2.1: Memeriksa Sebuah Aplikasi
Yang Menggunakan Statemen If…Then
Langkah 1: Buka projek Rerata Skor Ujian.
Langkah 2: Jalankan aplikasi. Form
akan ditampilkan seperti pada Gambar 2.4.
Langkah 3: Masukkan skor-skor
ujian berikut pada ketiga kotak teks: 80,
90, 75.
Langkah 4: Klik tombol Hitung Rerata. Rerata dari skor ujian
akan ditampilkan.
Langkah 5: Klik tombol Bersihkan, dan kemudian masukkan
skor-skor ujian berikut pada ketiga kotak teks: 100, 97, 99.
Langkah 6: Klik tombol Hitung Rerata. Kali ini, selain rerata dari skor ujian ditampilkan, pesan Selamat! Anda berhasil! juga akan
ditampilkan. Form ditampilkan seperti pada Gambar 2.5.
Gambar 2.4 Form Rerata Skor Ujian
Langkah 7: Klik tombol Keluar untuk menghentikan aplikasi.
Gambar 2.5 Rerata dan pesan
ditampilkan
Langkah 8: Buka jendela Code dan temukan event handler tombolHitung_Click. Kodenya adalah
berikut:
Private Sub
tombolHitung_Click(…) Handles tombolHitung.Click
'variabel-variabel untuk memuat skor ujian dan reratanya
Dim dblSkor1
As Double
Dim dblSkor2
As Double
Dim dblSkor3
As Double
Dim
dblRerata As Double
'konstanta-konstanta
Const
BANYAK_SKOR As Integer = 3
Const
dblSKOR_TINGGI As Double = 95.0
Try
'menyalin isi TextBox ke variabel
dblSkor1
= CDbl(teksSkor1.Text)
dblSkor2
= CDbl(teksSkor2.Text)
dblSkor3
= CDbl(teksSkor3.Text)
'menghitung rerata
dblRerata = (dblSkor1 + dblSkor2 + dblSkor3) / BANYAK_SKOR
'menampilkan rerata, dibulatkan ke 2 dijit di belakang titik desimal
labelRerata.Text = dblRerata.ToString("n2")
'jika
rerata tinggi, puji siswa tsb
If
dblRerata > dblSKOR_TINGGI Then
labelPesan.Text = "Selamat! Anda berhasil!"
End If
Catch
'menampilkan pesan error
labelPesan.Text = "Skor harus numerik"
End Try
End Sub
Perhatikan bahwa di akhir dari blok try, statemen If…Then berikut
ditampilkan:
If dblRerata > dblSKOR_TINGGI
Then
labelPesan.Text = "Selamat! Anda
berhasil!"
End If
Statemen ini menentukan apakah rerata lebih besar dari 95, dan jika ya, ia
menampilkan pesan Selamat! Anda
berhasil! pada label labelPesan.
Langkah 9: Buka event handler Click untuk tombol tombolBersihkan, yang isinya untuk membersihkan semua kotak teks
dan label pada form:
teksSkor1.Text =
String.Empty
teksSkor2.Text =
String.Empty
teksSkor3.Text =
String.Empty
labelRerata.Text =
String.Empty
labelPesan.Text =
String.Empty
Gaya Pemrograman
dan Statemen If…Then
Ketika Anda mengetikkan
statemen If…Then, Visual Studio
secara otomatis akan menata statemen-statemen yang ada di dalamnya. Ini
bukanlah persyaratan sintaksis, tetapi hanyalah konvensi gaya pemrograman.
Sebagai contoh, bandingkan statemen-statemen berikut:
If
decPenjualan > 50000 Then
labelHasil.Text = " Anda layak
mendapat bonus!"
decPersenKomisi = 0.12
intHariLibur = intHariLibur + 1
End
If
dengan
If
decPenjualan > 50000 Then
labelHasil.Text
= " Anda layak mendapat bonus!"
decPersenKomisi
= 0.12
intHariLibur
= intHariLibur + 1
End
If
Kedua statemen If…Else tersebut memberikan hasil yang
sama. Contoh pertama lebih mudah dibaca oleh mata manusia daripada yang kedua.
Menggunakan
Operator Relasional dengan Operator Matematika
Adalah dimungkinkan untuk
menggunakan operator relasional dan operator matematika pada ekspresi yang
sama. Berikut adalah contohnya:
If
intX + intY > 20 Then
labelPesan.Text = "Ini juga bisa!"
End
If
Ketika operator
relasional berada di dalam ekspresi yang sama bersama satu atau lebih operator
matematika, operator matematika selalu dieksekusi lebih dahulu. Pada statemen
ini, operator + menjumlahkan intX
dan intY. Hasilnya dibandingkan
dengan 20 menggunakan operator >. Berikut adalah contoh lainnya:
If
intX + intY > intA - intB Then
labelPesan.Text = "Ini juga bisa!"
End
If
Pada statemen ini, hasil
dari intx + intB dibandingkan,
menggunakan operator >, dengan hasil dari intA – intB.
Hampir semua programer
lebih memilih menggunakan kurung untuk menegaskan urutan operasi. Berikut
adalah cara yang lebih dipilih untuk menuliskan statemen If…Then tersebut:
If
intX + intY > (intA – intB) Then
labelPesan.Text = "Ini juga bisa!"
End
If
Menggunakan
Pemanggilan Fungsi dengan Operator Relasional
Adalah dimungkinkan untuk
membandingkan nilai balik dari sebuah fungsi dengan nilai lain, menggunakan
operator relasional. Berikut adalah contohnya:
If
CInt(teksMasukan.Text) < 100 Then
labelMasukan.Text = "Ini juga bisa
dilakukan!"
End
If
Statemen If…Then ini memanggil fungsi CInt untuk mendapatkan nilai integer
dari teksMasukan.Text. Nilai balik
dari fungsi ini dibandingkan dengan 100 menggunakan operator <. Jika nilai
dari CInt(teksMasukan.Text) bernilai
kurang dari 100, maka statemen penugasan akan dieksekusi.
Menggunakan
Variabel Boolean Sebagai Bendera (Flag)
Flag atau bendera adalah
sebuah variabel Boolean yang memberikan sinyal ketika kondisi tertentu ada di
dalam program. Ketika bendera ditetapkan False,
ia mengindikasikan kondisi belum dipenuhi. Ketika bendera ditetapkan True, ini berarti kondisi tertentu ada
atau dipenuhi. Lihat pada kode berikut, yang menggunakan sebuah variabel
Boolean dengan nama blnKuota:
If
blnKuota Then
labelPesan.Text = "Anda telah mencapai
target penjualan"
End
If
Statemen tersebut
menugaskan string “Anda telah mencapai
target penjualan” kepada labelPesan.Text
jika variabel Boolean bernilai True.
Jika blnKuota bernilai False, statemen penugasan itu tidak
akan dieksekusi. Anda tidak memerlukan operator = untuk membandingkan variabel
Boolean dengan True. Statemen
tersebut ekivalen dengan berikut:
If
blnKuota = True Then
labelPesan.Text = "Anda telah mencapai
target penjualan"
End
If
2.3 Statemen If…Then…Else
KONSEP: Statemen If…Else mengeksekusi satu grup statemen jika ekspresi
Boolean bernilai True dan mengeksekusi grup statemen lain jika ekspresi Boolean
bernilai False.
Statemen If…Then…Else merupakan ekspansi dari
statemen If…Then. Berikut adalah
formatnya:
If
kondisi Then
statemen
(atau statemen-statemen lain)
Else
statemen
(atau statemen-statemen lain)
End
If
Sama seperti statemen If…Then, ekspresi Boolean dievaluasi
lebih dahulu. Jika ekspresi tersebut bernilai True, maka sebuah grup statemen akan dieksekusi. Jika ekspresi
bernilai False, maka sebuah grup
statemen lain akan dieksekusi, seperti berikut:
If
dblSuhu < 20 Then
labelPesan.Text = "Cukup dingin kan?"
Else
labelPesan.Text = "Cuaca sangat baik
hari ini!"
End
If
Klause Else menetapkan sebuah statemen atau
grup statemen yang akan dieksekusi bila ekspresi Boolean bernilai False. Pada contoh tersebut, jika
ekspresi dblSuhu < 20 bernilai False, maka statemen yang ada setelah
klausa Else akan dieksekusi.
Gambar 2.6 menunjukkan
diagram alir dari struktur keputusan If…Then…Else.
Gambar 2.6 Diagram alir dari
statemen If…Then…Else
Logika yang ditunjukkan
pada diagram alir pada Gambar 2.6 dapat pula diekspresikan dengan pseudocode
berikut:
If suhu < 20 Then
Tampilkan pesan "Cukup dingin kan?"
Else
Tampilkan pesan "Cuaca sangat baik hari ini!"
End If
Pada Tutorial 2.2, Anda
akan menyempurnakan sebuah aplikasi yang menggunakan statemen If…Then…Else.
Tutorial 2.2: Menyempurnakan
Sebuah Aplikasi Yang Menggunakan Statemen If…Then…Else
Langkah 1: Buka projek Rerata
Skor Ujian 2.
Langkah 2: Klik ganda pada tombol Hitung Rerata. Jendela Code
akan terbuka dan menunjukkan event handler tombolHitung_Click.
Sempurnakan event handler tersebut dengan menuliskan kode yang ditebalkan
berikut:
Private Sub
tombolHitung_Click(…) Handles tombolHitung.Click
'variabel-variabel untuk memuat skor ujian dan
reratanya
Dim
dblSkor1 As Double
Dim
dblSkor2 As Double
Dim
dblSkor3 As Double
Dim
dblRerata As Double
'konstanta-konstanta
Const
BANYAK_SKOR As Integer = 3
Const
dblSKOR_TINGGI As Double = 95.0
Try
'menyalin isi TextBox ke variabel
dblSkor1 = CDbl(teksSkor1.Text)
dblSkor2 = CDbl(teksSkor2.Text)
dblSkor3 = CDbl(teksSkor3.Text)
'menghitung rerata
dblRerata = (dblSkor1 + dblSkor2 + dblSkor3)
/ BANYAK_SKOR
'menampilkan rerata, dibulatkan ke 2 dijit di
belakang titik desimal
labelRerata.Text = dblRerata.ToString("n2")
'Jika skor tinggi, berikan pujian kepada
siswa
'Sebaliknya, berikan penghiburan
If
dblRerata > dblSKOR_TINGGI Then
labelPesan.Text = "Selamat! Anda berhasil!"
Else
labelPesan.Text = "Tetap semangat!"
End If
Catch
'menampilkan pesan error
labelPesan.Text = "Skor harus
numerik"
End
Try
End Sub
Sekarang, aplikasi akan menampilkan salah satu dari dua pesan yang
disediakan. Jika rerata skor lebih besar dari 95, maka pesan Selamat! Anda berhasil! akan
ditampilkan. Jika tidak, pesan Tetap
semangat! akan ditampilkan.
Langkah 3: Simpan projek.
Langkah 4: Jalankan aplikasi dan
masukkan skor-skor ujian berikut pada ketiga kotak teks: 80, 90, 75.
Langkah 5: Klik pada tombol Hitung Rerata. Seperti ditunjukkan pada Gambar 2.7, rerata dari skor ujian
akan ditampilkan, dan pesan Tetap
semangat! juga ditampilkan.
Gambar 2.7 Rerata dari skor ujian
dan pesan terkait ditampilkan
Langkah 6: Klik tombol Bersihkan, dan kemudian masukkan
skor-skor ujian berikut pada ketiga kotak teks: 100, 97, 99.
Langkah 7: Klik tombol Hitung Rerata. Kali ini, pesan Selamat! Anda berhasil! akan ditampilkan.
Langkah 8: Klik tombol Keluar untuk menghentikan aplikasi.
2.4 Statemen If…Then…Else
KONSEP: Statemen If…Then…Else seperti sebuah rantai dari statemen-statemen
If…Then..Else, yang melakukan sejumlah pengujian, satu demi satu, sampai salah
satunya bernilai True.
Anda membuat sejumlah
keputusan dengan menetapkan beberapa aturan yang berbeda. Sebagai contoh, Anda
akan memutuskan jenis jaket yang akan Anda pakai dengan menetapkan
aturan-aturan berikut:
·
Jika (if)
sangat dingin, pakai jaket tebal.
·
Tetapi jika (else)
cukup dingin, pakai jaket tipis.
·
Tetapi jika (else)
berangin, pakai sweater.
·
Tetapi jika (else)
panas, jangan pakai jaket.
Tujuan dari aturan-aturan
ini adalah untuk memutuskan salah satu jaket yang akan dipakai. Jika sangat
dingin, aturan pertama mengharuskan bahwa jaket tebal dipakai. Semua aturan
lain akan diabaikan. Jika aturan pertama tidak berlaku (karena tidak sangat
dingin), maka aturan kedua akan diperhatikan. Jika aturan kedua tidak berlaku
(karena tidak cukup dingin), maka aturan ketiga akan diperhatikan, dan
seterusnya.
Jenis pembuatan keputusan
ini juga umum dilakukan pada pemrograman. Dalam Visual Basic, hal ini dilakukan
menggunakan statemen If…Then…ElseIf.
Berikut adalah bentuk umumnya:
If
condition Then
statemen
(atau statemen-statemen lain)
ElseIf
condition Then
statemen
(atau statemen-statemen lain)
(Anda bisa memiliki sebanyak mungkin
statemen ElseIf jika diperlukan)
Else
statemen
(atau statemen-statemen lain)
End
If
Konstruksi ini seperti
sebuah rantai yang memuat statemen-statemen If…Then…Else. Bagian Else
dihubungkan dengan bagian If. Pada
Tutorial 2.3, Anda akan menyempurnakan sebuah aplikasi yang menggunakan
statemen If…Then…Else.
Tutorial 2.3: Menyempurnakan
Sebuah Aplikasi Yang Menggunakan Statemen If…Then…ElseIf
Pada tutorial ini, Anda akan memulainya dengan program dari Tutorial 2.2
dan menambahkan kontrol-kontrol dan kode program yang menampilkan nilai huruf
siswa (A, B, C, D, E).
Langkah 1: Buka Rerata Skor Ujian 3.
Langkah 2: Tarik batas form ke
bawah, dan geret kontrol labelPesan
dan tiga kontrol Button ke arah bawah form untuk memberikan ruang untuk sebaris
kontrol-kontrol yang baru.
Gambar 2.8 Menambahkan label Nilai di dalam kontrol GroupBox
Langkah 3: Tarik batas bawah dari
kontrol GroupBox ke bawah untuk
memberikan ruang bagi sebuah label yang menampilkan nilai huruf dari siswa.
Langkah 4: Di dalam kontrol GroupBox, tambahkan kontrol-kontrol
Label baru seperti ditunjukkan pada Gambar 2.8. Ketika Anda menambahkan label
di sisi kiri, tetapkan properti Text-nya
menjadi Nilai:. Ketika Anda menambahkan label di sisi kanan, tetapkan properti Name-nya menjadi labelNilai, properti AutoSize-nya
menjadi False, dan tetapkan properti
BorderStyle-nya menjadi Fixed3D.
Langkah 5: Klik ganda pada tombol Hitung Rerata. Jendela Code
akan terbuka dan menunjukkan event handler tombolHitung_Click.
Sempurnakan event handler tersebut dengan menuliskan kode yang ditebalkan
berikut:
Private Sub
tombolHitung_Click(…) Handles tombolHitung.Click
'variabel-variabel untuk memuat skor ujian
dan reratanya
Dim
dblSkor1 As Double
Dim
dblSkor2 As Double
Dim
dblSkor3 As Double
Dim
dblRerata As Double
'konstanta-konstanta
Const
BANYAK_SKOR As Integer = 3
Const
dblSKOR_TINGGI As Double = 95.0
Try
'menyalin isi TextBox ke variabel
dblSkor1 = CDbl(teksSkor1.Text)
dblSkor2 = CDbl(teksSkor2.Text)
dblSkor3 = CDbl(teksSkor3.Text)
'menghitung rerata
dblRerata = (dblSkor1 + dblSkor2 + dblSkor3)
/ BANYAK_SKOR
'menampilkan rerata, dibulatkan ke 2 dijit di
belakang titik desimal
labelRerata.Text =
dblRerata.ToString("n2")
'menampilkan nilai huruf
If
dblRerata < 60 Then
labelNilai.Text = "E"
ElseIf
dblRerata < 70 Then
labelNilai.Text = "D"
ElseIf
dblRerata < 80 Then
labelNilai.Text = "C"
ElseIf
dblRerata < 90 Then
labelNilai.Text = "B"
ElseIf
dblRerata <= 100 Then
labelNilai.Text = "A"
End If
'Jika skor tinggi, berikan pujian kepada siswa
'Sebaliknya, berikan penghiburan
If dblRerata > dblSKOR_TINGGI Then
labelPesan.Text = "Selamat! Anda
berhasil!"
Else
labelPesan.Text = "Tetap
semangat!"
End If
Catch
'menampilkan pesan error
labelPesan.Text = "Skor harus
numerik"
End Try
End Sub
Statemen If…Then…ElseIf yang
Anda tuliskan memiliki beberapa karakteristik. Pertama, ekspresi Boolean
dblRerata < 60 diuji:
Jika dblRerata bernilai kurang
dari 60, E akan ditugaskan kepada labelNilai.Text,
dan statemen- statemen ElseIf
lainnya akan diabaikan. Jika dblRerata
tidak kurang dari 60, maka statemen ElseIf
berikutnya akan dieksekusi:
If dblRerata < 60 Then
labelNilai.Text = "E"
ElseIf dblAverage < 70 Then
dblRerata.Text = "D"
Statemen If…Then pertama mengabaikan
nilai yang kurang dari 60, jadi ketika statemen ElseIf ini dieksekusi, dblRerata
parsi bernilai 60 atau lebih tinggi. Jika dblRerata
bernilai kurang dari 70, maka D akan ditugaskan kepada labelNilai.Text dan statemen-statemen ElseIf lainnya akan diabaikan. Hal ini berlanjut sampai salah satu
ekspresi bernilai True, atau sampai
statemen End If dicapai. Gambar 2.9 menggunakan diagram alir untuk menjelaskan
logika ini.
Gambar 2.9 Diagram alir untuk
menentukan nilai huruf
Langkah 6: Gulung ke bawah untuk
menemukan event handler tombolBersihkan_Click
dan tambahkan statemen di sini yang ditebalkan:
Private Sub
tombolBersihkan_Click(…) Handles tombolBersihkan.Click
teksSkor1.Text = String.Empty
teksSkor2.Text = String.Empty
teksSkor3.Text = String.Empty
labelRerata.Text = String.Empty
labelPesan.Text = String.Empty
labelNilai.Text = String.Empty
'mengatur
fokus kembali ke teksSkor1
teksSkor1.Focus()
End Sub
Statemen ini akan membersihkan isi dari label labelNilai ketika user mengklik tombol Bersihkan.
Langkah 7: Simpan projek, jalankan
aplikasi, dan masukkan skor-skor ujian berikut pada ketiga kotak teks: 80, 90, 75.
Langkah 8: Klik tombol Hitung Rerata. Rerata dari skor ujian dan nilai huruf akan ditampilkan,
berikut dengan pesan Tetap semangat!
(lihat Gambar 2.10).
Langkah 9: Klik tombol Keluar untuk mengakhiri aplikasi.
Gambar 2.10 Nilai huruf siswa
ditampilkan
Klausa Else
Terakhir
Ada satu permasalahan
kecil dengan aplikasi pererataan skor uji ini: Bagaimana jika user memasukkan
skor ujian yang lebih besar dari 100? Statemen If…Then…Else pada projek itu menangani semua skor sampai 100,
tetapi tidak lebih besar dari itu. Gambar 2.11 menunjukkan form ketika user
memasukkan nilai-nilai yang lebih besar dari 100.
Program tidak memberikan
nilai huruf karena tidak ada kode yang menangani sebuah skor yang lebih besar
dari 100. Bila diasumsikan bahwa semua nilai yang lebih dari 100 adalah tak
valid, Anda dapat memperbaiki program dengan menempatkan sebuah klausa Else di akhir dari statemen If…Then…ElseIf, sebagai berikut:
‘menampilkan
nilai huruf
If
dblRerata < 60 Then
labelNilai.Text = “E”
ElseIf
dblRerata < 70 Then
labelNilai.Text = “D”
ElseIf
dblRerata < 80 Then
labelNilai.Text = “C”
ElseIf
dblRerata < 90 Then
labelNilai.Text = “B”
ElseIf
dblRerata <= 100 Then
labelNilai.Text = “A”
Else
labelNilai.Text = “Skor tak valid”
End
If
Klausa Else di akhir tersebut akan menangkap
setiap nilai yang lebih dari 100.
Gambar 2.11 Keluaran dari aplikasi
dengan nilai skor melebihi 100.
2.5 Statemen If Bersarang
KONSEP: Statemen If bersarang adalah sebuah statemen If yang berada di
dalam blok dari statemen If yang lain. (Pada bagian ini, Anda menggunakan istilah
statemen If untuk mengatakan statemen If…Then, If…Then…Else, atau
If…Then…ElseIf).
Statemen If bersarang adalah sebuah statemen If yang berada di dalam statemen If yang lain. Pada Tutorial 2.4, Anda
akan memeriksa sebuah aplikasi yang menggunakan beberapa statemen If bersarang. Aplikasi itu menentukan
apakah seorang konsumen bank layak untuk diberikan pinjaman. Konsumen harus
memenuhi salah satu persyaratan berikut:
·
Memiliki penghasilkan 300 juta rupiah per tahun
atau lebih dan telah berpengalaman lebih dari dua tahun pada pekerjaannya.
·
Telah bekerja lebih dari 5 tahun.
Tutorial 2.4: Menyelesaikan Sebuah
Aplikasi Dengan Statemen If Bersarang
Langkah 1: Buka projek Kualifikasi Hutang.
Langkah 2: Bukan Form1 pada jendela Design, yang ditampilkan seperti pada Gambar 2.12a.
Gambar 2.12a Aplikasi Kualifikasi Hutang
Langkah 3: Klik ganda pada tombol Periksa Kualifikasi. Jendela Code
akan terbuka dan menunjukkan template kode untuk event handler tombolPeriksa_Click. Sempurnakan event
handler ini dengan menuliskan kode yang ditebalkan di sini:
Public Class Form1
Private Sub tombolPeriksa_Click(…) Handles
tombolPeriksa.Click
'variabel-variabel
untuk memuat data masukan
Dim
dblGaji As Double
Dim
intTahunBekerja As Integer
Try
'
Get the user's input.
dblGaji = CDbl(teksGajiPerTahun.Text)
intTahunBekerja = CInt(teksTahunKerja.Text)
'menentukan apakah aplikan memenuhi kualifikasi
'untuk menerima pinjaman
If
dblGaji > 300000000 Then
If intTahunBekerja > 2 Then
labelPesan.Text = "Aplikan memenuhi kualifiksi"
Else
labelPesan.Text = "Aplikan tidak memenuhi kualifiksi"
End If
Else
If intTahunBekerja > 5 Then
labelPesan.Text = "Aplikan memenuhi kualifiksi"
Else
labelPesan.Text = "Aplikan tidak memenuhi kualifiksi"
End If
End
If
Catch ex
As Exception
'menampilkan pesan error.
labelPesan.Text = "Masukkan nilai numerik"
End Try
End Sub
Private Sub tombolBersihkan_Click(…)
Handles tombolBersihkan.Click
teksGajiPerTahun.Text = String.Empty
teksTahunKerja.Text = String.Empty
labelPesan.Text = String.Empty
'mengatur fokus kembali ke teksSkor1
teksGajiPerTahun.Focus()
End Sub
Private Sub tombolKeluar_Click(…) Handles
tombolKeluar.Click
'menutup form
Me.Close()
End Sub
End Class
Langkah 4: Simpan dan jalankan
aplikasi. Masukkan 450000000 untuk
gaji dan 3 untuk pengalaman kerja. Klik tombol Periksa Kualifikasi.
Pesan Aplikan memenuhi kualifikasi
akan ditampilkan, seperti ditunjukkan pada Gambar 2.12b di bawah ini.
Gambar 2.12b Keluaran aplikasi yang
menampilkan pesan Aplikan memenuhi kualifikasi
Langkah 5: Masukkan 150000000 untuk gaji dan 3 untuk
pengalaman kerja. Klik tombol Periksa
Kualifikasi. Pesan Aplikan tidak memenuhi kualifikasi akan
ditampilkan, seperti ditunjukkan pada Gambar 2.12c di bawah ini.
Gambar 2.12c Keluaran aplikasi yang
menampilkan pesan Aplikan tidak memenuhi kualifikasi
Langkah 6: Ketika selesai, klik
tombol Keluar untuk mengakhiri
aplikasi.
Memeriksa
Statemen If Bersarang Secara Lebih Cermat
Pada projek Kualifikasi Hutang, statemen If luar menguji ekspresi berikut:
If
dblGaji > 300000000 Then
Jika ekspresi ini
bernilai True, maka statemen If bersarang (ditebalkan) akan
dieksekusi:
If dblGaji > 300000000 Then
If intTahunBekerja > 2 Then
labelPesan.Text = "Aplikan
memenuhi kualifiksi"
Else
labelPesan.Text = "Aplikan tidak
memenuhi kualifiksi"
End If
Else
If intTahunBekerja > 5 Then
labelPesan.Text = "Aplikan memenuhi
kualifiksi"
Else
labelPesan.Text = "Aplikan tidak
memenuhi kualifiksi"
End If
End If
Namun, jika ekspresi dblGaji > 300000000 bernilai False, bagian Else dari statemen If
sebelah luar menyebabkan statemen If
bersarangnya dieksekusi, ditunjukkan dengan huruf tebal berikut:
If dblGaji > 300000000 Then
If
intTahunBekerja > 2 Then
labelPesan.Text = "Aplikan memenuhi kualifiksi"
Else
labelPesan.Text = "Aplikan tidak memenuhi kualifiksi"
End If
Else
If intTahunBekerja > 5 Then
labelPesan.Text = "Aplikan
memenuhi kualifiksi"
Else
labelPesan.Text = "Aplikan tidak
memenuhi kualifiksi"
End If
End If
Gambar 2.13 menunjukkan
diagram alir dari statemen-statemen If
bersarang ini.
Gambar 2.13 Diagram alir dari
statemen-statemen If bersarang
No comments:
Post a Comment