Wednesday, December 14, 2016

Bab 2. Visual Basic .NET Untuk Pemula




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