Sunday, January 1, 2017

Bab 5. Soal & Penyelesaian Visual Basic .NET


Array





Kasus 62: Demo Array

Public Class Form1

    Private Sub tombolMasuk_Click(sender As Object, e As EventArgs)
    Handles tombolMasuk.Click
        Const intSUBSKRIP_MAKS As Integer = 4
        Dim strNama(intSUBSKRIP_MAKS) As String ' Array untuk memuat nama-nama
        Dim intHitung As Integer ' Kounter loop

        ' Memberitahu pengguna apa yang perlu dilakukan
        MessageBox.Show("Saya meminta Anda untuk memasukkan " &
            "nama dari lima teman Anda.")

        ' Membaca nama dan menyimpannya di dalam array
        For intHitung = 0 To intSUBSKRIP_MAKS
            strNama(intHitung) = InputBox("Masukkan nama teman Anda.")
        Next

        ' Membersihkan kotak list
        kotakList.Items.Clear()

        ' Menampilkan isi array pada kotak list
        For intHitung = 0 To intSUBSKRIP_MAKS
            kotakList.Items.Add(strNama(intHitung))
        Next
    End Sub

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



Kasus 63: Sistem Penggajian Sederhana

Public Class Form1

    Private Sub tombolHitung_Click(sender As Object, e As EventArgs)
    Handles tombolHitung.Click
        ' Konstanta-konstanta
        Const decGAJI_PER_JAM As Decimal = 70000D
        Const intSUBSKRIP_MAKS As Integer = 5

        ' Array dan variabel-variabel lain
        Dim dblArrayJam(intSUBSKRIP_MAKS) As Double
        Dim intHitung As Integer = 0 ' Kounter loop
        Dim decGaji_Kotor As Decimal ' memuat gaji kotor

        ' Meminta pengguna untuk memasukkan jumlah jam kerja tiap karyawan
        MessageBox.Show("Saya meminta Anda untuk memasukkan jumlah" &
         "jam kerja dari tiap karyawan.")

        ' Membaca jumlah jam kerja dari tiap karyawan
        Do While intHitung < dblArrayJam.Length
            Try
                dblArrayJam(intHitung) =
                CDbl(InputBox("Nomor karyawan: " &
               (intHitung + 1).ToString()))
                intHitung += 1
            Catch
                ' Menampilkan pesan error
                MessageBox.Show("Masukkan jumlah jam kerja " &
                "yang valid untuk karyawan.")
            End Try
        Loop

        ' Membersihkan kotak list
        kotakList.Items.Clear()

        ' Menghitung dan menampilkan gaji kotor tiap karyawan
        For intHitung = 0 To dblArrayJam.Length - 1
            decGaji_Kotor = CDec(dblArrayJam(intHitung) * decGAJI_PER_JAM)

            kotakList.Items.Add("Karyawan " & (intHitung + 1).ToString() &
             " mendapatkan gaji Rp. " &
             decGaji_Kotor.ToString("N"))
        Next
    End Sub

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



Kasus 64: Menggunakan Array Paralel

Public Class Form1

    Private Sub tombolTampil_Click(sender As Object, e As EventArgs)
    Handles tombolTampil.Click
        Dim strBulan() As String = {"Januari", "Pebruari", "Maret",
            "April", "Mei", "Juni", "Juli", "Agustus", "September",
            "Oktober", "Nopember", "Desember"}

        ' Array dengan jumlah hari pada tiap bulan
        Dim intHari() As Integer = {31, 28, 31, 30, 31, 30,
            31, 31, 30, 31, 30, 31}

        ' Menampilkan daftar bulan dan jumlah hari
        Dim i As Integer
        For i = 0 To strBulan.Length - 1
            kotakList.Items.Add(strBulan(i) & " memiliki " &
            intHari(i).ToString() & " hari.")
        Next
    End Sub

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




Kasus 65: Pelewatan Array Kepada Fungsi dan Prosedur

Public Class Form1

    Private Sub tombolHitung_Click(sender As Object, e As EventArgs)
    Handles tombolHitung.Click
        ' Menciptakan sebuah array untuk memuat jumlah-jumlah penjualan
        Const intSubskrip_Maks As Integer = 4
        Dim decPenjualan(intSubskrip_Maks) As Decimal

        ' Variabel lokal lainnya
        Dim decPenjualanTotal As Decimal ' untuk memuat penjualan total
        Dim decPenjualanRatarata As Decimal ' untuk memuat penjualan rerata
        Dim decPenjualanTertinggi As Decimal ' untuk memuat penjualan tertinggi
        Dim decPenjualanTerendah As Decimal ' untuk memuat penjualan terendah

        ' Memabaca jumlah penjualan dari pengguna
        BacaDataPenjualan(decPenjualan)

        ' Membaca penjualan total, penjualan rerata, penjualan tertinggi
        ' dan penjualan terendah
        decPenjualanTotal = ArrayTotal(decPenjualan)
        decPenjualanRatarata = ArrayRerata(decPenjualan)
        decPenjualanTertinggi = Tertinggi(decPenjualan)
        decPenjualanTerendah = Terendah(decPenjualan)

        ' Menampilkan hasil
        teksTotal.Text = decPenjualanTotal.ToString("N")
        teksRata.Text = decPenjualanRatarata.ToString("N")
        teksTertinggi.Text = decPenjualanTertinggi.ToString("N")
        teksTerendah.Text = decPenjualanTerendah.ToString("N")
    End Sub

    ' Prosedur BacaDataPenjualan menerima sebuah argumen array Decimal.
    Sub BacaDataPenjualan(ByRef decPenjualan() As Decimal)
        Dim intHitung As Integer = 0 ' kounter loop, ditetapkan 0

        ' Mengisi array decPenjualan dengan nilai-nilai
        ' yang dimasukkan oleh pengguna.
        Do While intHitung < decPenjualan.Length
            Try
                ' Membaca penjualan
                decPenjualan(intHitung) =
                CDec(InputBox("Masukkan nilai penjualan hari ke-" &
               (intHitung + 1).ToString()))

                ' menginkremen intHitung
                intHitung += 1
            Catch
                ' Menampilkan pesan error
                MessageBox.Show("Masukkan nilai numerik.")
            End Try
        Loop
    End Sub

    ' Fungsi ArrayTotal meneriman sebuah array Decimal sebagai
    ' argumen dan menghasilkan total dari elemen-elemennya.
    Function ArrayTotal(ByVal decNilai() As Decimal) As Decimal
        Dim decTotal As Decimal = 0 ' akumulator
        Dim intHitung As Integer ' kounter loop

        ' Menghitung total dari tiap elemen array
        For intHitung = 0 To (decNilai.Length - 1)
            decTotal += decNilai(intHitung)
        Next

        ' Menghasilkan total.
        Return decTotal
    End Function

    ' Fungsi ArrayRerata menerima sebuah array Decimal sebagai
    ' argumen dan menghasilkan rerata dari elemen-elemennya.
    Function ArrayRerata(ByVal decNilai() As Decimal) As Decimal
        Return ArrayTotal(decNilai) / decNilai.Length
    End Function

    ' Fungsi Tertinggi menerima sebuah array Decimal array sebagai
    ' argumen dan menghasilkan elemen tertinggi.
    Function Tertinggi(ByVal decNilai() As Decimal) As Decimal
        Dim intHitung As Integer ' kounter loop
        Dim decTertinggi As Decimal ' menampung nilai tertinggi

        ' Membaca elemen pertama pada array.
        decTertinggi = decNilai(0)

        ' Mencari nilai tertinggi
        For intHitung = 1 To (decNilai.Length - 1)
            If decNilai(intHitung) > decTertinggi Then
                decTertinggi = decNilai(intHitung)
            End If
        Next

        ' Menghasilkan nilai tertinggi
        Return decTertinggi
    End Function

    ' Fungsi Terendah menerima sebuah array Decimal array sebagai
    ' argumen dan menghasilkan elemen terendah.
    Function Terendah(ByVal decNilai() As Decimal) As Decimal
        Dim intHitung As Integer ' kounter loop
        Dim decTerendah As Decimal ' memuat nilai terendah

        ' membaca elemen pertama pada array
        decTerendah = decNilai(0)

        ' Mencari nilai terendah
        For intHitung = 1 To (decNilai.Length - 1)
            If decNilai(intHitung) < decTerendah Then
                decTerendah = decNilai(intHitung)
            End If
        Next

        ' Menghasilkan nilai terendah
        Return decTerendah
    End Function

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



Kasus 66: Menciptakan Daftar Teman dari Masukan Pengguna

Public Class Form1
    Private daftarNama As New List(Of String)

    Private Sub tombolTambah_Click(sender As Object, e As EventArgs)
    Handles tombolTambah.Click
        ' Menambahkan nama pada List
        daftarNama.Add(teksNama.Text)

        ' Membersihkan kotak teks
        teksNama.Clear()
        teksNama.Focus()
    End Sub

    Private Sub tombolTampil_Click(sender As Object, e As EventArgs)
    Handles tombolTampil.Click
        ' Menampilkan semua nama pada kotak list
        Dim strNama As String

        kotakList.Items.Clear()

        For Each strNama In daftarNama
            kotakList.Items.Add(strNama) 'Tambahkan pada kotak list
        Next
    End Sub

    Private Sub TombolBersih_Click(sender As Object, e As EventArgs)
    Handles TombolBersih.Click
        kotakList.Items.Clear()
    End Sub
End Class



Kasus 67: Pencarian Item Pada Sebuah List

Public Class Form1
    Private daftarNama As New List(Of String)

    Private Sub tombolTambah_Click(sender As Object, e As EventArgs)
    Handles tombolTambah.Click
        ' Menambahkan nama pada List
        daftarNama.Add(teksNama.Text)

        ' Membersihkan kotak teks
        teksNama.Clear()
        teksNama.Focus()
    End Sub

    Private Sub tombolTampil_Click(sender As Object, e As EventArgs)
    Handles tombolTampil.Click
        ' Menampilkan semua nama pada kotak list
        Dim strNama As String

        kotakList.Items.Clear()

        For Each strNama In daftarNama
            kotakList.Items.Add(strNama) 'Tambahkan pada kotak list
        Next
    End Sub

    Private Sub TombolBersih_Click(sender As Object, e As EventArgs)
    Handles TombolBersih.Click
        kotakList.Items.Clear()
    End Sub

    Private Sub tombolCari_Click(sender As Object, e As EventArgs)
    Handles tombolCari.Click
        Dim strNama As String
        strNama = teksCari.Text

        ' Melakukan pencarian
        Dim intPosisi As Integer = daftarNama.IndexOf(strNama)

        ' Apakah nama yang dicari ada pada List?
        If intPosisi <> -1 Then
            MessageBox.Show(strNama & " ditemukan pada indeks " &
            intPosisi & ".")
        Else
            MessageBox.Show(strNama & "tidak ditemukan pada List.")
        End If
    End Sub
End Class



Kasus 68: Aplikasi Penjualan Menggunakan Menu

Public Class Form1
    ' Aplikasi ini menampilkan laporan penjualan untuk perusahaan

    ' Deklarai level-kelas
    Const intSUBSKRIP_MAKS As Integer = 4 ' subksrip maksimum
    Dim strNamaProduk(intSUBSKRIP_MAKS) As String ' nama produk
    Dim strDeskripsi(intSUBSKRIP_MAKS) As String ' deskripsi
    Dim intNomorProduk(intSUBSKRIP_MAKS) As Integer ' nomor produk
    Dim decHarga(intSUBSKRIP_MAKS) As Decimal ' harga per unit
    Dim intUnitTerjual(intSUBSKRIP_MAKS) As Integer ' unit terjual

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ' Menginisialisasi array dengan data produk
        InisialisasiArray()
    End Sub

    Private Sub InisialisasiArray()
        ' Inisialisasi array
        ' Produk pertama
        strNamaProduk(0) = "Pemrograman Java"
        strDeskripsi(0) = "Buku"
        intNomorProduk(0) = 914
        decHarga(0) = 99900D

        ' Produk kedua
        strNamaProduk(1) = "Pemrograman VB.NET"
        strDeskripsi(1) = "CD"
        intNomorProduk(1) = 915
        decHarga(1) = 75500D

        ' Produk ketiga
        strNamaProduk(2) = "Pemrograman MATLAB"
        strDeskripsi(2) = "Video"
        intNomorProduk(2) = 916
        decHarga(2) = 185500D

        ' Produk keempat
        strNamaProduk(3) = "Pemrograman C#"
        strDeskripsi(3) = "Buku"
        intNomorProduk(3) = 917
        decHarga(3) = 79900D

        ' Produk kelimat
        strNamaProduk(4) = "Pemrograman C++"
        strDeskripsi(4) = "CD"
        intNomorProduk(4) = 918
        decHarga(4) = 90500D
    End Sub

    Private Sub menuFileKeluar_Click(sender As Object, e As EventArgs)
    Handles menuFileKeluar.Click
        Me.Close()
    End Sub

    Private Sub menuLaporanMasukkan_Click(sender As Object, e As EventArgs)
    Handles menuLaporanMasukkan.Click
        Dim intHitung As Integer = 0 ' kounter loop

        Do While intHitung <= intSUBSKRIP_MAKS
            Try
                ' Membaca jumlah unit terjual atas sebuah produk
                intUnitTerjual(intHitung) = CInt(
                InputBox("Masukkan jumlah unit terjual dari nomor produk " &
                intNomorProduk(intHitung)))

                ' Menginkremen intHitung
                intHitung += 1
            Catch
                ' Pesan error karena masukan tak-valid
                MessageBox.Show("Masukkan integer yang valid")
            End Try
        Loop
    End Sub


    Private Sub menuLaporanTampilkan_Click(sender As Object, e As EventArgs)
    Handles menuLaporanTampilkan.Click
        ' Menghitung dan menampilkan pendapatan untuk
        ' tiap produk dan pendapatan total
        Dim intHitung As Integer
        Dim decPendapatan As Decimal
        Dim decPendapatanTotal As Decimal

        ' Menampilkan kepala tabel laporan penjualan.
        kotakList.Items.Add("LAPORAN PENJUALAN")
        kotakList.Items.Add("-------------------")

        ' Menampilkan data penjualan untuk tiap produk
        For intHitung = 0 To intSUBSKRIP_MAKS

            ' Menghitung pendapatan produk
            decPendapatan = intUnitTerjual(intHitung) * decHarga(intHitung)

            ' Menampilkan data produk
            kotakList.Items.Add("Nomor produk: " &
                intNomorProduk(intHitung))
            kotakList.Items.Add("Nama: " &
                strNamaProduk(intHitung))
            kotakList.Items.Add("Deskripsi: " &
                strDeskripsi(intHitung))

            kotakList.Items.Add("Harga Unit: Rp. " &
                decHarga(intHitung).ToString("N1"))
            kotakList.Items.Add("Jumlah Unit Terjual: " &
                intUnitTerjual(intHitung).ToString())

            kotakList.Items.Add("Pendapatan Produk: Rp. " &
                decPendapatan.ToString("N1"))
            : kotakList.Items.Add("")

            ' Akumulasi pendapatan
            decPendapatanTotal = decPendapatanTotal + decPendapatan
        Next

        ' Menampilkan pendapatan total
        teksPendapatan.Text = "Rp. " & decPendapatanTotal.ToString("N1")
    End Sub


    Private Sub TentangToolStripMenuItem_Click(sender As Object, e As EventArgs)
    Handles TentangToolStripMenuItem.Click
        ' Menampilkan menu "Tentang"
        MessageBox.Show("Menampilkan laporan Penjualan Sianipar Corp.", "Tentang")
    End Sub
End Class




No comments:

Post a Comment