Sunday, January 1, 2017

Bab 2. Soal & Penyelesaian Visual Basic .NET


Keputusan





Kasus 1: Statemen If

Public Class Form1
    Dim nilai As Integer
    Private Sub tombolHitung_Click(sender As Object, e As EventArgs)
        Handles tombolHitung.Click
        nilai = CInt(teksNilai.Text)
        If nilai < 50 Then
            kotakList.Text = "Gagal"
        ElseIf nilai < 60 Then
            kotakList.Text = "C"
        ElseIf nilai < 80 Then
            kotakList.Text = "B"
        ElseIf nilai < 101 Then
            kotakList.Text = "A"
        End If
        kotakList.Items.Add(nilai & "  ==> " & kotakList.Text)
    End Sub
End Class



Kasus 2: Mencari Nilai Maksimum

Public Class Form1

    Private Sub tombolTentukan_Click(sender As Object, e As EventArgs)
        Handles tombolTentukan.Click
        Dim angkaTerbesar As Single

        If (CSng(teksPertama.Text) > CSng(teksKedua.Text)) Then
            angkaTerbesar = CSng(teksPertama.Text)
        Else
            angkaTerbesar = CSng(teksKedua.Text)
        End If

        teksNilaiMaks.Text = "Angka terbesar adalah: " & angkaTerbesar
    End Sub
End Class




Kasus 3: Menghitung Rerata Tiga Angka dengan If

Public Class Form1

    Private Sub tombolHitung_Click(sender As Object, e As EventArgs)
        Handles tombolHitung.Click
        ' Variabel-variabel untuk menampung data
        Dim dblSkor1 As Double
        Dim dblSkor2 As Double
        Dim dblSkor3 As Double
        Dim dblRerata As Double

        ' Konstanta-konstanta
        Const JUM_SKOR As Integer = 3
        Const dblSKOR_TINGGI As Double = 95.0

        Try
            ' Salin ketiga skor pada kotak teks ke dalam variabel-variabel.
            dblSkor1 = CDbl(teksSkor1.Text)
            dblSkor2 = CDbl(teksSkor2.Text)
            dblSkor3 = CDbl(teksSkor3.Text)

            ' Menghitung skor rerata.
            dblRerata = (dblSkor1 + dblSkor2 + dblSkor3) / JUM_SKOR

            ' Menampilkan rerata, membulatkannya menjadi 2 dijit di belakang desimal.
            teksRerata.Text = dblRerata.ToString("n2")

            ' Jika skor tinggi, berikan pujian.
            If dblRerata > dblSKOR_TINGGI Then
                labelPesan.Text = "Selamat! Kerja keras membuahkan hasil!"
            End If
        Catch
            ' Menampilkan pesan error.
            labelPesan.Text = "Skor harus numerik"
        End Try
    End Sub

    Private Sub tombolBersih_Click(sender As Object, e As EventArgs) 
        Handles tombolBersih.Click
        teksSkor1.Text = ""
        teksSkor2.Text = ""
        teksSkor3.Text = ""
        teksRerata.Text = ""
        labelPesan.Text = ""
    End Sub
End Class



Kasus 4: Menghitung Rerata Tiga Angka dengan If...Else

Public Class Form1

    Private Sub tombolHitung_Click(sender As Object, e As EventArgs)
        Handles tombolHitung.Click
        ' Variabel-variabel untuk menampung data
        Dim dblSkor1 As Double
        Dim dblSkor2 As Double
        Dim dblSkor3 As Double
        Dim dblRerata As Double

        ' Konstanta-konstanta
        Const JUM_SKOR As Integer = 3
        Const dblSKOR_TINGGI As Double = 95.0

        Try
            ' Salin ketiga skor pada kotak teks ke dalam variabel-variabel.
            dblSkor1 = CDbl(teksSkor1.Text)
            dblSkor2 = CDbl(teksSkor2.Text)
            dblSkor3 = CDbl(teksSkor3.Text)

            ' Menghitung skor rerata.
            dblRerata = (dblSkor1 + dblSkor2 + dblSkor3) / JUM_SKOR

            ' Menampilkan rerata, membulatkannya menjadi 2 dijit di belakang desimal.
            teksRerata.Text = dblRerata.ToString("n2")

            ' Jika skor tinggi, berikan pujian.
            If dblRerata > dblSKOR_TINGGI Then
                labelPesan.Text = "Selamat! Kerja keras membuahkan hasil!"
            Else
                labelPesan.Text = "Tetap Semangat!"
            End If
        Catch
            ' Menampilkan pesan error.
            labelPesan.Text = "Skor harus numerik"
        End Try
    End Sub

    Private Sub tombolBersih_Click(sender As Object, e As EventArgs) 
        Handles tombolBersih.Click
        teksSkor1.Text = ""
        teksSkor2.Text = ""
        teksSkor3.Text = ""
        teksRerata.Text = ""
        labelPesan.Text = ""
    End Sub
End Class



Kasus 5: Menghitung Rerata Tiga Angka dengan If...Else

Public Class Form1

    Private Sub tombolHitung_Click(sender As Object, e As EventArgs)
        Handles tombolHitung.Click
       
        ' Variabel-variabel untuk menampung data
        Dim dblSkor1 As Double
        Dim dblSkor2 As Double
        Dim dblSkor3 As Double
        Dim dblRerata As Double

        ' Konstanta-konstanta
        Const JUM_SKOR As Integer = 3
        Const dblSKOR_TINGGI As Double = 95.0

        Try
            ' Salin ketiga skor pada kotak teks ke dalam variabel-variabel.
            dblSkor1 = CDbl(teksSkor1.Text)
            dblSkor2 = CDbl(teksSkor2.Text)
            dblSkor3 = CDbl(teksSkor3.Text)

            ' Menghitung skor rerata.
            dblRerata = (dblSkor1 + dblSkor2 + dblSkor3) / JUM_SKOR

            ' Menampilkan rerata, membulatkannya menjadi 2 dijit di belakang desimal.
            teksRerata.Text = dblRerata.ToString("n2")

            ' Menampilkan nilai huruf
            If dblRerata < 60 Then
                teksNilai.Text = "F"
            ElseIf dblRerata < 70 Then
                teksNilai.Text = "D"
            ElseIf dblRerata < 80 Then
                teksNilai.Text = "C"
            ElseIf dblRerata < 90 Then
                teksNilai.Text = "B"
            ElseIf dblRerata <= 100 Then
                teksNilai.Text = "A"
            End If

            ' Jika skor tinggi, berikan pujian.
            If dblRerata > dblSKOR_TINGGI Then
                labelPesan.Text = "Selamat! Kerja keras membuahkan hasil!"
            Else
                labelPesan.Text = "Tetap Semangat!"
            End If
        Catch
            ' Menampilkan pesan error.
            labelPesan.Text = "Skor harus numerik"
        End Try
    End Sub

    Private Sub tombolBersih_Click(sender As Object, e As EventArgs)
        Handles tombolBersih.Click
       
        teksSkor1.Clear()
        teksSkor2.Clear()
        teksSkor3.Clear()
        teksRerata.Text = String.Empty
        labelPesan.Text = String.Empty
        teksNilai.Text = String.Empty

        ' Reset fokus.
        teksSkor1.Focus()
    End Sub

End Class



Kasus 6: Penggunaan Lain Statemen If...Else
Program berikut akan membaca biaya dan pendapatan pada sebuah perusahaan dan menampilkan pesan “Impas” jika biaya dan pendapatan sama atau sebaliknya menampilkan “Untung” atau “Rugi”.

Public Class Form1

    Private Sub tombolHitung_Click(sender As Object, e As EventArgs)
        Handles tombolHitung.Click
        Dim biaya As Single, pendapatan As Single,
        Dim keuntungan As Single, kerugian As Single

        biaya = CSng(teksBiaya.Text)
        pendapatan = CSng(teksPendapatan.Text)
        If (biaya = pendapatan) Then
            teksHasil.Text = "Impas"

        ElseIf biaya < pendapatan Then
            keuntungan = pendapatan - biaya
            teksHasil.Text = "Keuntungan sebesar Rp. " & keuntungan
        Else
            kerugian = biaya - pendapatan
            teksHasil.Text = "Kerugian sebesar Rp. " & kerugian
        End If
    End Sub
End Class



Kasus 7: Statemen If Bersarang

Public Class Form1

    Private Sub tombolPeriksa_Click(sender As Object, e As EventArgs)
    Handles tombolPeriksa.Click
       
        ' Variabel-variabel untuk menampung data masukan.
        Dim dblGaji As Double
        Dim intTahunKerja As Integer

        Try
            ' Membaca masukan pengguna
            dblGaji = CDbl(teksGajiPerTahun.Text)
            intTahunKerja = CInt(teksJumThnKerja.Text)

            ' Menentukan apakah aplikan memenuhi kualifikasi
            ' untuk pinjaman tertentu
            If dblGaji > 30000000 Then
                If intTahunKerja > 2 Then
                    teksKualifikasi.Text = "Aplikan” &
                           “ memenuhi kualifikasi untuk meminjam."

                Else
                    teksKualifikasi.Text = "Aplikan “ &
                           “tidak memenuhi kualifikasi untuk meminjam."
                End If
            Else
                If intTahunKerja > 5 Then
                    teksKualifikasi.Text = "Aplikan” &
                           “ tidak memenuhi kualifikasi untuk meminjam."
                Else
                    teksKualifikasi.Text = "Aplikan” &
                           “ memenuhi kualifikasi untuk meminjam."
                End If
            End If

        Catch ex As Exception
            ' Menampilkan pesan error.
            teksKualifikasi.Text = "Masukkan nilai-nilai numerik."
        End Try
    End Sub

    Private Sub tombolBersih_Click(sender As Object, e As EventArgs)
        Handles tombolBersih.Click
        teksGajiPerTahun.Clear()
        teksJumThnKerja.Clear()
        teksKualifikasi.Text = String.Empty

        ' Reset fokus.
        teksGajiPerTahun.Focus()
    End Sub

End Class
  



Kasus 8: Statemen If dengan Operator Logikal
Statemen If pada program berikut memiliki operator logikal dalam kondisinya.

Public Class Form1

    Private Sub tombolEvaluasi_Click(sender As Object, e As EventArgs) Handles tombolEvaluasi.Click
        Dim jawaban As Single
        jawaban = CSng(CStr(teksJawaban.Text))
        If (jawaban >= 30) And (jawaban <= 35) Then
            teksHasil.Text = "Bagus, Taksiran Anda hampir benar.” &
                  “ Ada 33 propinsi di Indonesia"
        Else
            teksHasil.Text = "Tebakan Anda masih jauh dari jawaban "
        End If
    End Sub
End Class



Kasus 9: Kode Pertahanan: Menggunakan Try/Catch
Pemrograman defensif merupakan pemrograman terpadu yang mengutamakan kehati-hatian. Untuk mengkonstruksi perangkat-lunak yang handal, Anda perlu merancang setiap komponen sistem sehingga setiap komponen dapat memproteksi secara mandiri sebisa mungkin. Pada kasus ini, Try/Catch akan menghentikan sembarang error, tetapi ini bukanlah mekanisme yang ideal. Adakalanya Anda ingin melihat error yang dibangkitkan kompiler sehingga Anda dapat memperbaikinya dengan tepat menggunakan teknik-teknik tertentu.

Kode apapun di antara Try dan Catch akan dijalankan oleh kompiler dan jika kode tersebut menyebabkan error Anda dapat menampilkannya pada sebuah kotak pesan yang ditempatkan setelah Catch.


Public Class Form1
    Dim nilai As Integer
    Private Sub tombolHitung_Click(sender As Object, e As EventArgs)
        Handles tombolHitung.Click 
        Try
            nilai = CInt(teksNilai.Text)
            If nilai < 50 Then
                kotakList.Text = "Gagal"
            ElseIf nilai < 60 Then
                kotakList.Text = "C"
            ElseIf nilai < 80 Then
                kotakList.Text = "B"
            ElseIf nilai < 101 Then
                kotakList.Text = "A"
            End If
            kotakList.Items.Add(nilai & "  ==> " & kotakList.Text)
        Catch
            MsgBox("Silahkan masukkan angka " & teksNilai.Text & " salah!!")
            teksNilai.Text = " "
        End Try
    End Sub
End Class



Kasus 10: Menghitung Rerata Yang Dimasukkan

Public Class Form1
    Dim nilai As Integer
    Dim nilaiRerata As Single
    Dim kounter As Integer = 0

    Private Sub tombolHitung_Click(sender As Object, e As EventArgs)
        Handles tombolHitung.Click
        Try
            nilai = CInt(teksNilai.Text)
            nilaiRerata += nilai ' menambahkan nilai pada total
            kounter += 1 ' bertambah satu setiap kali tombolHitung diklik
            teksRerata.Text = "Rerata: " & nilaiRerata / kounter

            If nilai < 50 Then
                kotakList.Text = "Gagal"
            ElseIf nilai < 60 Then
                kotakList.Text = "C"
            ElseIf nilai < 80 Then
                kotakList.Text = "B"
            ElseIf nilai < 101 Then
                kotakList.Text = "A"
            End If
            kotakList.Items.Add(nilai & "  ==> " & kotakList.Text)
        Catch
            MsgBox("Silahkan masukkan angka " & teksNilai.Text & " salah!!")
            teksNilai.Text = " "
        End Try

    End Sub
End Class





Kasus 11: Menghitung Nilai Maksimum dan Minimum dengan If

Public Class Form1
    Dim nilai As Integer
    Dim nilaiRerata As Single
    Dim kounter As Integer = 0

    Dim nilaiMaks As Integer
    Dim nilaiMin As Integer

    Private Sub tombolHitung_Click(sender As Object, e As EventArgs)
        Handles tombolHitung.Click
        Try
            nilai = CInt(teksNilai.Text)
            nilaiRerata += nilai ' menambahkan nilai pada total
            kounter += 1 ' bertambah satu setiap kali tombolHitung diklik
            teksRerata.Text = "Rerata: " & nilaiRerata / kounter

            If kounter = 1 Then
                nilaiMaks = nilai ' hanya untuk pertama kali
                nilaiMin = nilai
            End If

            If nilai > nilaiMaks Then ' jika nilai lebih besar dari nilaiMaks
                nilaiMaks = nilai ' memperbarui nilaiMaks
            End If
            teksMaks.Text = "Nilai Maksimum: " & nilaiMaks ' menampilkan

            If nilai < nilaiMin Then ' jika nilai lebih kecil dari nilaiMin
                nilaiMin = nilai ' memperbarui nilaiMin
            End If
            teksMin.Text = "Nilai Minimum: " & nilaiMin ' menampilkan

            If nilai < 50 Then
                kotakList.Text = "Gagal"
            ElseIf nilai < 60 Then
                kotakList.Text = "C"
            ElseIf nilai < 80 Then
                kotakList.Text = "B"
            ElseIf nilai < 101 Then
                kotakList.Text = "A"
            End If
            kotakList.Items.Add(nilai & "  ==> " & kotakList.Text)
        Catch
            MsgBox("Silahkan masukkan angka " & teksNilai.Text & " salah!!")
            teksNilai.Text = " "
        End Try

    End Sub
End Class



Kasus 12: If dengan And
Anda dapat memiliki pelbagai kriteria pada statemen If menggunakan And dan Or di dalam kondisi. Misalnya, untuk menyalakan mobil, Anda memerlukan baterei dan bahan bakar dan kunci mobil.

Public Class Form1
    Private Sub tombolNyalakan_Click(sender As Object, e As EventArgs)
        Handles tombolNyalakan.Click
        'Mendefinisikan 3 variabel untuk memuat kondisi-kondisi
        Dim strBaterei, strKunci, strBhnBakar As String

        'Melewatkan data dalam ketiga kotak teks kepada variabel-variabel
        strBaterei = teksBaterei.Text
        strKunci = teksKunci.Text
        strBhnBakar = teksBahanBakar.Text

        'Statemen If dengan AND untuk menyalakan mobil
        If strBaterei = "baterei" And strKunci = "kunci" And strBhnBakar = "bensin" Then
            MsgBox("Bummmmmm, Gas terus!!")
        Else
            MsgBox("Tidak bisa nyala ...")
        End If
    End Sub
End Class



Kasus 13: If dengan Or

Public Class Form1
    Private Sub tombolNyalakan_Click(sender As Object, e As EventArgs)
        Handles tombolNyalakan.Click
        'Mendefinisikan 3 variabel untuk memuat kondisi-kondisi
        Dim strBaterei, strKunci, strBhnBakar As String

        'Melewatkan data dalam ketiga kotak teks kepada variabel-variabel
        strBaterei = teksBaterei.Text
        strKunci = teksKunci.Text
        strBhnBakar = teksBahanBakar.Text

        'Statemen If dengan OR dan AND untuk menyalakan mobil
        If (strBaterei = "baterei" Or strBaterei = "Baterei" Or 
            strBaterei = "ya") And (strKunci = "kunci" And strBhnBakar = "bensin")
        Then           
            MsgBox("Bummmmmm, Gas terus!!")
        Else
            MsgBox("Tidak bisa nyala ...")
        End If
    End Sub
End Class



Kasus 14: Aplikasi Pencari String

Public Class Form1

    Private Sub tombolGo_Click(sender As Object, e As EventArgs)
        Handles tombolGo.Click
        ' Deklarasi variabel-variabel
        Dim intIndeksAwal As Integer ' indeks awal pencarian
        Dim intIndeksTemu As Integer ' indeks dari substring yang ditemukan

        ' Menentukan apakah indeks awal numerik.
        If IsNumeric(teksIndeks.Text) Then
            ' Menentukan apakah string pencarian telah dimasukkan.

            If teksSubstring.Text.Length > 0 Then
                ' Membaca indeks awal pencarian.
                intIndeksAwal = CInt(teksIndeks.Text)

                ' Pencarian substring.
                intIndeksTemu = teksCari.Text.IndexOf(teksSubstring.Text, intIndeksAwal)

                ' Apakah substring yang dicari ditemukan
                If intIndeksTemu = -1 Then
                    teksHasil.Text = "Substring tidak ditemukan."
                Else
                    teksHasil.Text = "Substring ditemukan pada indeks " &
                        intIndeksTemu
                End If
            Else
                ' Menampilkan pesan error jika string kosong
                MessageBox.Show("Masukkan string pencarian")
            End If
        Else
            ' Menampilkan pesan error jika indeks non-numerik.
            MessageBox.Show("Indeks harus berupa angka.")
        End If
    End Sub
End Class



Kasus 15: Statemen Select Case
Dengan Case, Anda dapat menetapkan kelompok-kelompok nilai tertentu. Pada kasus ini, semua angka antara 0 sampai 50 dan antara 51 sampai 100. Sebuah tombol lain diciptakan, dengan nama tombolCase, yang menggunakan statemen Case.

Public Class Form1
    Dim nilai As Integer
    Private Sub tombolHitung_Click(sender As Object, e As EventArgs)
        Handles tombolHitung.Click
        nilai = CInt(teksNilai.Text)
        If nilai < 50 Then
            kotakList.Text = "Gagal"
        ElseIf nilai < 60 Then
            kotakList.Text = "C"
        ElseIf nilai < 80 Then
            kotakList.Text = "B"
        ElseIf nilai < 101 Then
            kotakList.Text = "A"
        End If
        kotakList.Items.Add(nilai & "  ==> " & kotakList.Text)
    End Sub

    Private Sub tombolCase_Click(sender As Object, e As EventArgs)
        Handles tombolCase.Click
        nilai = CInt(teksNilai.Text)
        Select Case nilai
            Case 0 To 50
                teksCase.Text = "Mengulang"
            Case 51 To 100
                teksCase.Text = "Lulus"
        End Select
    End Sub
End Class


Kasus 16: Aplikasi Penjualan dengan Statemen Select Case

Public Class Form1

    Private Sub tombolHitung_Click(sender As Object, e As EventArgs)
    Handles tombolHitung.Click
        ' Deklarasi variabel-variabel
        Dim decTotalPenjualan As Decimal 'jumlah penjualan bulan ini
        Dim decKomisiYangTelahDibayar As Decimal
        Dim decPersenKomisi As Decimal ' persen komisi
        Dim decJumlahKomisi As Decimal ' besar komisi
        Dim decKomisiDibayar As Decimal ' komisi bersih yang diterima

        Try
            ' Membaca jumlah penjualan
            decTotalPenjualan = CDec(teksPenjualan.Text)

            ' Membaca komisi yang telah dibayarkan
            decKomisiYangTelahDibayar = CDec(teksKomisiTelahDibayar.Text)

            ' Menentukan persen komisi
            Select Case decTotalPenjualan
                Case Is < 1000000
                    decPersenKomisi = 0.05D
                Case 1000000 To 1499900
                    decPersenKomisi = 0.1D
                Case 1500000 To 1799900
                    decPersenKomisi = 0.12D
                Case 1800000 To 2199900
                    decPersenKomisi = 0.14D
                Case Is >= 2200000
                    decPersenKomisi = 0.15D
            End Select

            ' Menghitung komisi bersih yang diterima
            decJumlahKomisi = decTotalPenjualan * decPersenKomisi
            decKomisiDibayar = decJumlahKomisi - decKomisiYangTelahDibayar

            ' Menampilkan persen komisi, total komisi, dan komisi bersih yang diterima
            teksPersenKomisi.Text = decPersenKomisi.ToString("p")
            teksKomisi.Text = "Rp. " & decJumlahKomisi.ToString()
            teksKomisiDibayar.Text = "Rp. " & decKomisiDibayar.ToString()

        Catch
            ' Menampilkan pesan error
            teksStatus.Text = "Masukkan nilai-nilai numerik"
        End Try
    End Sub

    Private Sub tombolBersih_Click(sender As Object, e As EventArgs)
        Handles tombolBersih.Click
       
        teksPenjualan.Clear()
        teksKomisiTelahDibayar.Clear()
        teksStatus.Clear()
        teksPersenKomisi.Clear()
        teksKomisiDibayar.Clear()
        teksKomisi.Clear()

        ' Reset fokus.
        teksPenjualan.Focus()

    End Sub
End Class



Kasus 17: Menggunakan Event TextChanged
Ada beberapa cara untuk membaca teks atau angka yang dimasukkan. Anda bisa menggunakan fungsi IsNumeric yang menghasilkan nilai balik True atau False. Anda menempatkannya di dalam sebuah statemen If untuk memeriksa masukan ketika pengguna mengetikkannya di dalam sebuah kotak teks. Gunakan statemen tersebut di dalam teksNilai.TextChanged, yang dapat dibuka dengan mengklik-ganda kotak teks.

Public Class Form1
    Private Sub teksNilai_TextChanged(sender As Object, e As EventArgs)
        Handles teksNilai.TextChanged
        If Not IsNumeric(teksNilai.Text) Then
            MessageBox.Show("Silahkan Masukkan Angka...")
        End If
    End Sub
End Class



Kasus 18: Menggunakan Event KeyPress

Public Class Form1

    Private Sub teksData_KeyPress(sender As Object, e As KeyPressEventArgs)
        Handles teksData.KeyPress
        Dim strSkrg As String ' menampung karakter terkini
        Dim strSalin As String ' salinan dari teks pada kotak teks
        Dim strBackSpace As String = Chr(8) ' karakter backspace untuk blok Case

        strSalin = teksData.Text ' membaca teks terkini
        strSkrg = e.KeyChar ' membaca karakter terkini
        e.KeyChar = CChar("") ' mengeliminasi karakter dari penyangga KeyChar

        Select Case strSkrg ' memastikan dijit atau tanda titik
            Case "0" To "9", "."
                strSalin &= strSkrg ' menyambung karakter
                teksData.Text = strSalin ' mengganti lama dengan baru

                ' memastikan kursor pada posisi tepat
                teksData.SelectionStart = teksData.Text.Length
                e.Handled = True ' menghentikan KeyChar diproses sistem

            ' backspace dideteksi, jadi hapus karakter terakhir
            Case strBackSpace                 
                If strSalin <> "" Then
                    strSalin = strSalin.Substring(0, strSalin.Length - 1)
                    teksData.Text = strSalin ' mengganti teks
                   
                ' memindahkan kursor
                teksData.SelectionStart = teksData.Text.Length                    

                ' stop beep dengan menghentikan KeyChar handler
                e.Handled = True
                End If
            Case Else
                ' sembarang kunci lain, diproses secara normal
                e.KeyChar = CChar("")
        End Select
    End Sub
End Class



Kasus 19: Menggunakan Kotak Periksa

Public Class Form1
    Private Sub tombolNyalakan_Click(sender As Object, e As EventArgs)
        Handles tombolNyalakan.Click
        'Mendefinisikan 3 variabel untuk memuat kondisi-kondisi
        Dim strBaterei, strKunci, strBhnBakar As String

        If periksaBhnBakar.Checked = True And periksaBaterei.Checked = True
           And periksaKunci.Checked = True Then
            MsgBox("Bummmmmm, Gas terus!!")
        Else
            MsgBox("Tidak bisa nyala ...")
        End If

        'Melewatkan data dalam ketiga kotak teks kepada variabel-variabel
        strBaterei = teksBaterei.Text
        strKunci = teksKunci.Text
        strBhnBakar = teksBahanBakar.Text

        'Statemen If dengan OR untuk menyalakan mobil
        If (strBaterei = "baterei" Or strBaterei = "Baterei" Or
            strBaterei = "ya") And
            (strKunci = "kunci" And strBhnBakar = "bensin") Then
            MsgBox("Bummmmmm, Gas terus!!")
        Else
            MsgBox("Tidak bisa nyala ...")
        End If
    End Sub
End Class



Kasus 20: Kalkulator Sederhana

Public Class Form1
    Dim angka1 As Double
    Dim angka2 As Double
    Dim angkaJawaban As Double
    Private Sub tombolKali_Click(sender As Object, e As EventArgs)
        Handles tombolKali.Click
        angka1 = CDbl(teksAngka1.Text)
        angka2 = CDbl(teksAngka2.Text)
        angkaJawaban = angka1 * angka2
        teksJawaban.Text = CStr(angkaJawaban)
        listJawaban.Items.Add(angka1 & " x " & angka2 & " = " & angkaJawaban)
    End Sub

    Private Sub tombolBagi_Click(sender As Object, e As EventArgs)
        Handles tombolBagi.Click
        angka1 = CDbl(teksAngka1.Text)
        angka2 = CDbl(teksAngka2.Text)
        angkaJawaban = CDbl(angka1 / angka2)
        teksJawaban.Text = CStr(angkaJawaban)
        listJawaban.Items.Add(angka1 & " / " & angka2 & " = " & angkaJawaban)
    End Sub

    Private Sub tombolKurang_Click(sender As Object, e As EventArgs)
        Handles tombolKurang.Click
        angka1 = CDbl(teksAngka1.Text)
        angka2 = CDbl(teksAngka2.Text)
        angkaJawaban = angka1 - angka2
        teksJawaban.Text = CStr(angkaJawaban)
        listJawaban.Items.Add(angka1 & " - " & angka2 & " = " & angkaJawaban)
    End Sub

    Private Sub tombolTambah_Click(sender As Object, e As EventArgs)
        Handles tombolTambah.Click
        angka1 = CDbl(teksAngka1.Text)
        angka2 = CDbl(teksAngka2.Text)
        angkaJawaban = angka1 + angka2
        teksJawaban.Text = CStr(angkaJawaban)
        listJawaban.Items.Add(angka1 & " + " & angka2 & " = " & angkaJawaban)
    End Sub
End Class



Kasus 21: Konversi Suhu
Berikut akan diciptakan sebuah program konversi suhu. Anda dapat memasukkan sebuah angka, sebagai suhu Celcius atau Fahrenheit, dan program akan mengkonversinya dari satu suhu menjadi suhu lain.


Public Class Form1

    Private Sub tombolKonversi_Click(sender As Object, e As EventArgs)
        Handles tombolKonversi.Click
        Dim suhuFah As Single
        Dim suhuCel As Single

        suhuFah = CSng(CDbl(teksSuhu.Text) - 32 * 5 / 9)
        suhuCel = CSng(CDbl(teksSuhu.Text) * (9 / 5) + 32)

        If tombolRadio1.Checked Then
            teksHasil.Text = teksSuhu.Text & " Fahrenheit sama dengan "
            & suhuFah & " Celsius"
        ElseIf tombolRadio2.Checked Then
            teksHasil.Text = teksSuhu.Text & " Celsius sama dengan " &    
            suhuCel & " Fahrenheit"
        End If
    End Sub
End Class



Kasus 22: Penggunaan Sender
Dalam VB .NET, ada dua pembaruan yang membuat VB.NT lebih tangguh:
1.       Klausa Handles mengendalikan pemanggilan subrutin.
2.       Parameter sender dan e dilewatkan kepada subrutin.

Tengoklah contoh sederhana berikut untuk melihat perbedaannya dalam VB.NET.

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

End Sub

Subrutin event selalu menerima sebuah objek sender dan sebuah parameter EventArgs e. Anda perlu mengetahui bahwa EventArgs merupakan kelas basis untuk semua kelas yang memuat data event.

Apa yang dapat Anda lakukan dengan kedua parameter ini? Dimisalkan bahwa Anda ingin mengetahui apakah sebuah string, misalnya yang dimasukkan ke dalam kotak teks, ada pada sembarang koleksi kotak teks atau tidak.

Pertama-tama, Anda perlu menciptakan sebuah kotak teks ‘palse’ untuk menampung data:

Dim kotakTeksKu As TextBox

Kemudian, dilakukan penugasan

kotakTeksKu = sender

Parameter sender akan menentukan kotak teks mana yang telah diklik. Perhatikan kode berikut:


Public Class Form1
    Dim strTeks As String = "test"

    Private Sub Cari(sender As Object, e As EventArgs)
        Handles teksMasukan.Enter, teksMasukan2.Enter
       
        Dim kotakTeksKu As TextBox
        kotakTeksKu = CType(sender, TextBox)
       
        Dim indeksChar As Integer = kotakTeksKu.Text.IndexOf(strTeks)
        If indeksChar = -1 Then
            Me.Text = "Tidak Ditemukan!!!"
        Else
            Me.Text = "Ditemukan!!!"
        End If
    End Sub
End Class



Kasus 23: Kalkulator Menggunakan Sender

Public Class Form1
    Dim teksDouble1 As Double = 0.0
    Dim teksDouble2 As Double = 0.0
    Dim teksJawabanDouble As Double = 0.0

    ' Ini melewatkan data dari kotak teks pertama ke variabel
    ' dan menangkan eksepsi jika terjadi error.
    Private Sub teksAngka1_TextChanged(sender As Object, e As EventArgs)
        Handles teksAngka1.TextChanged
        Try
            teksDouble1 = CDbl(teksAngka1.Text)
        Catch ex As Exception
            teksDouble1 = 0.0
        End Try
    End Sub

    ' Ini melewatkan data dari kotak teks kedua ke variabel
    ' dan menangkan eksepsi jika terjadi error.
    Private Sub teksAngka2_TextChanged(sender As Object, e As EventArgs)
        Handles teksAngka2.TextChanged
        Try
            teksDouble2 = CDbl(teksAngka2.Text)
        Catch ex As Exception
            teksDouble2 = 0.0
        End Try
    End Sub

    'Subrutin ini memuat semua kode tombol radio.
    'Anda hanya perlu mengklik satu tombol radio dan
    'menggunakan kodenya untuk memuat semua detil untuk tombol radio lain.

    Private Sub SemuaTombol(sender As Object, e As EventArgs)
        Handles rbnPenjumlahan.CheckedChanged,
        rbnPengurangan.CheckedChanged, rbnPerkalian.CheckedChanged,
        rbnPembagian.CheckedChanged
       
        If teksAngka1.Text <> "" And teksAngka2.Text <> "" Then
            'pertama-tama ciptakan tombol radio palsu untuk
            'untuk menampung semua properti dari tombol radio
            'yang baru saja Anda klik
            Dim tombolRadioPalsu As RadioButton

            'Kemudian melewatkan semua properti dari tombol radio
            'yang baru Anda klik kepada tombol radio palsu oleh Sender
            tombolRadioPalsu = CType(sender, RadioButton)

            'Kemudian tengok pada tombolRadioPalsu.Text
            'apakah ada teks atau tidak, baik pada + - * /
            Select Case tombolRadioPalsu.Text
                Case "+"
                    teksJawabanDouble = teksDouble1 + teksDouble2
                Case "-"
                    teksJawabanDouble = teksDouble1 - teksDouble2
                Case "/"
                    'Ada potensi error ketika pembagian dengan nol
                    Try
                        teksJawabanDouble = teksDouble1 / teksDouble2
                    Catch ex As Exception
                        MessageBox.Show("Tidak dapat membagi dengan nol")
                    End Try
                Case "*"
                    teksJawabanDouble = teksDouble1 * teksDouble2
            End Select

            'Terakhit menampilkan keluaran pada layar
            teksJawaban.Text = CStr(teksJawabanDouble)
        End If
    End Sub
End Class



Kasus 24: Permainan Batu Gunting Kertas
Program ini merupakan permainan Batu Gunting Kertas. Inti dari program ini adalah sebuah statemen Case yang membandingkan pilihan Anda (Batu, Gunting, atau Kertas) dengan pilihan orang lain (pada kasus ini, diwakili oleh komputer.)

Public Class tombolMain
    Dim menang, kalah, seri As Integer

    Private Sub Button1_Click(sender As Object, e As EventArgs)
    Handles Button1.Click
        'Membangkitkan angka acak
        Dim TebakanKomputer As New Random()

        'Kode ini membangkitkan angka integer acak antara 1 dan 3,
        'jadi, hanya adalh tiga kemungkinan: 1, 2 dan 3
        '1 merepresentasikan Batu, 2 Gunting, dan 3 Kertas
        Dim intPilihanKomputer As Integer = TebakanKomputer.Next(1, 4)

        If RBBatu.Checked Then
            'Memeriksa apakah pengguna memiliki pilihan "Batu"
            Select Case intPilihanKomputer
                'Memilih variabel "intPilihanKomputer" untuk dicocokkan
                Case 1 'Batu
                    MessageBox.Show("Pilihan Anda: Batu, Pilihan Komputer:
                           Batu, Seri!!!.")
                    seri = seri + 1
                    teksSeri.Text = CStr(seri)
                Case 2 'Gunting
                    MessageBox.Show("Pilihan Anda: Batu, Pilihan Komputer:
                           Gunting, Anda  menang!.")
                    menang = menang + 1
                    teksMenang.Text = CStr(menang)
                Case 3 'Kertas
                    MessageBox.Show("Pilihan Anda: Batu, Pilihan Komputer:
                           Kertas, Anda Kalah!")
                    kalah = kalah + 1
                    teksKalah.Text = CStr(kalah)
                Case Else
                    MessageBox.Show("Error, sesuatu terjadi pada komputer")
            End Select
        End If

        If RBGunting.Checked Then
            'Memeriksa apakah pengguna memiliki pilihan "Batu"
            Select Case intPilihanKomputer
                'Memilih variabel "intPilihanKomputer" untuk dicocokkan
                Case 1 'Batu
                    MessageBox.Show("Pilihan Anda: Gunting, Pilihan
                           Komputer: Batu, Anda Kalah!!!.")
                    kalah = kalah + 1
                    teksKalah.Text = CStr(kalah)
                Case 2 'Gunting
                    MessageBox.Show("Pilihan Anda: Gunting, Pilihan
                           Komputer: Gunting, Seri!!!.")
                    seri = seri + 1
                    teksSeri.Text = CStr(seri)
                Case 3 'Kertas
                    MessageBox.Show("Pilihan Anda: Gunting, Pilihan
                           Komputer: Kertas, Anda Menang!!!")
                    menang = menang + 1
                    teksMenang.Text = CStr(menang)
                Case Else
                    MessageBox.Show("Error, sesuatu terjadi pada komputer")
            End Select
        End If

        If RBKertas.Checked Then
            'Memeriksa apakah pengguna memiliki pilihan "Batu"
            Select Case intPilihanKomputer
                'Memilih variabel "intPilihanKomputer" untuk dicocokkan
                Case 1 'Batu
                    MessageBox.Show("Pilihan Anda: Kertas, Pilihan Komputer:
                           Batu, Anda Menang!!!.")
                    menang = menang + 1
                    teksMenang.Text = CStr(menang)
                Case 2 'Gunting
                    MessageBox.Show("Pilihan Anda: Kertas, Pilihan Komputer:
                           Gunting, Anda Kalah!!!.")
                    kalah = kalah + 1
                    teksKalah.Text = CStr(kalah)
                Case 3 'Kertas
                    MessageBox.Show("Pilihan Anda: Kertas, Pilihan Komputer:
                           Kertas, Seri!!!")
                    seri = seri + 1
                    teksSeri.Text = CStr(seri)
                Case Else
                    MessageBox.Show("Error, sesuatu terjadi pada komputer")
            End Select
        End If
    End Sub
End Class



Kasus 25: Menambah Citra pada Resource File
Anda dapat menambahkan citra pada program dan menggunakannya pada tombol atau dimana saja. Penambahan citra merupakan perangkat yang penting agar program tampak menyenangkan secara visual.

Dengan mengklik-kanan pada projek Anda, Anda kemudian memilih Add dan New Item. Selanjutnya Anda memilih Resource File. Resource File merupakan tempat dimana Anda akan menyimpan semua citra.

Sehingga dihasilkan:



Kasus 26: Permainan Tebakan

Public Class Form1
    Dim angkaAcak As New Random()
    Dim intAcak As Integer
    Dim intTebakan As Integer = 0

    Private Sub tombolPermainan_Click(sender As Object, e As EventArgs)
        Handles tombolPermainan.Click
        'membersihkan kotak list
        kotakListTebak.Items.Clear()

        'membangkitkan sebuah integer acak baru
        intAcak = angkaAcak.Next(1, 11)

        'menampilkan pada kotak list
        'kotakListTebak.Items.Add("Angka Acak: " & intAcak)
    End Sub

    Private Sub tombolTebak_Click(sender As Object, e As EventArgs)
        Handles tombolTebak.Click
        If IsNumeric(teksTebakAngka.Text) Then 'apakah sebuah angka?
            'jika ya, lewatkan kepada variabel
            intTebakan = CInt(teksTebakAngka.Text)

            'memeriksa apakah berhasil
            Me.Text = "Tebakan saya: " & intTebakan

            'membersihkan kotak teks dan menempatkan
            'kursor kembali ke kotak teks untuk tebakan berikutnya
            teksTebakAngka.Text = ""
            teksTebakAngka.Focus()
        End If

        ' jika angka sama dengan integer acak
        If intTebakan = intAcak Then
            kotakListTebak.Items.Add("Selamat! Anda menemukannya!")
            kotakListTebak.Items.Add("Angka acak adalah " & intAcak)

            'jika angka kurang dari integer acak
        ElseIf intTebakan < intAcak Then
            kotakListTebak.Items.Add("Terlalu rendah!")
        Else
            'jika angka lebih dari integer acak
            kotakListTebak.Items.Add("Terlalu tinggi!")
        End If
    End Sub
End Class



Kasus 27: Kalkulator Gaji

Public Class Form1

    Private Sub tombolHitung_Click(sender As Object, e As EventArgs)
    Handles tombolHitung.Click
        ' Mendeklarasikan variabel-variabel
        Dim intJamKerja As Integer ' Jumlah jam kerja
        Dim decGajiPerJam As Decimal ' gaji per jam
        Dim decGajiKotor As Decimal ' pendapatan kotor

        ' Membersihkan pesan sebelumnya
        teksStatus.Text = String.Empty

        ' Membaca jam kerja
        If Integer.TryParse(teksJamKerja.Text, intJamKerja) Then
            ' Membaca gaji per jam
            If Decimal.TryParse(teksGajiPerJam.Text, decGajiPerJam) Then
                ' menghitung pendapatan kotor
                decGajiKotor = intJamKerja * decGajiPerJam

                ' menampilkan pendapatan kotor
                teksGajiKotor.Text = "Rp. " & decGajiKotor.ToString("N")
            Else
                ' Menampilkan pesan error
                teksStatus.Text = "Masukkan nilai yang valid untuk gaji per jam"
            End If
        Else
            ' menampilkan pesan error
            teksStatus.Text = "Masukkan nilai yang valid untuk jumlah jam kerja"
        End If
    End Sub
End Class



Kasus 28: Kalkulator Biaya Keanggotaan

Public Class Form1

    Private Sub tombolHitung_Click(sender As Object, e As EventArgs)
    Handles tombolHitung.Click
        Dim decBulanan As Decimal ' Biaya bulanan
        Dim decTotal As Decimal ' biaya total
        Dim intJumBulan As Integer ' jumlah bulan
        Dim blnMasukanOk As Boolean = True

        ' Konstanta-konstanta
        Const decBIAYA_DEWASA As Decimal = 40000D
        Const decBIAYA_ANAK As Decimal = 20000D
        Const decBIAYA_PELAJAR As Decimal = 25000D
        Const decBIAYA_ORTU As Decimal = 30000D

        ' Konstanta-konstanta opsi
        Const decBIAYA_YOGA As Decimal = 10000D
        Const decBIAYA_KARATE As Decimal = 30000D
        Const decBIAYA_PELATIH As Decimal = 50000D

        ' Memvalidasi dan mengkonversi
        teksStatus.Text = String.Empty
        If Integer.TryParse(teksJumBulan.Text, intJumBulan) = False Then
            teksStatus.Text = "Jumlah bulan harus integer."
            blnMasukanOk = False
        End If

        ' Memvalidasi jumlah bulan
        If intJumBulan < 1 Or intJumBulan > 24 Then
            teksStatus.Text = "Jumlah bulan harus dalam rentang 1 - 24."
            blnMasukanOk = False
        End If

        If blnMasukanOk = True Then
            ' Menentukan biaya bulanan
            If RBDewasa.Checked = True Then
                decBulanan = decBIAYA_DEWASA
            ElseIf RBANak.Checked = True Then
                decBulanan = decBIAYA_ANAK
            ElseIf RBPelajar.Checked = True Then
                decBulanan = decBIAYA_PELAJAR
            ElseIf RBOrtu.Checked = True Then
                decBulanan = decBIAYA_ORTU
            End If

            ' Memeriksa layanan tambahan
            If CBYoga.Checked = True Then
                decBulanan += decBIAYA_YOGA
            End If

            If CBKarate.Checked = True Then
                decBulanan += decBIAYA_KARATE
            End If

            If CBPelatih.Checked = True Then
                decBulanan += decBIAYA_PELATIH
            End If

            ' Menghitung biaya total
            decTotal = decBulanan * intJumBulan

            ' Menampilkan biaya-biaya
            teksBiayaBulanan.Text = "Rp. " & decBulanan.ToString("N")
            teksTotal.Text = "Rp. " & decTotal.ToString("N")
        End If
    End Sub

    Private Sub tombolBersih_Click(sender As Object, e As EventArgs)
    Handles tombolBersih.Click
        ' Mereset tombol radio dewasa
        RBDewasa.Checked = True

        ' Menghapus kotak-kotak periksa
        CBYoga.Checked = False
        CBKarate.Checked = False
        CBPelatih.Checked = False

        ' Menghapus jumlah bulan
        teksJumBulan.Clear()

        ' Menghapus kotak teks lainnya
        teksBiayaBulanan.Text = String.Empty
        teksTotal.Text = String.Empty
        teksStatus.Text = String.Empty

        ' Mengembalikan fokus pada teksJumBulan.
        teksJumBulan.Focus()
    End Sub

    Private Sub tombolKeluar_Click(sender As Object, e As EventArgs)
    Handles tombolKeluar.Click
        'Menutup form
        Me.Close()
    End Sub
End Class








No comments:

Post a Comment