Pages

Subscribe:
Showing posts with label Algoritma 'n Pemrograman. Show all posts
Showing posts with label Algoritma 'n Pemrograman. Show all posts

Sunday, November 14, 2010

Pembahasan “UTS Lab. PBO”

Berikut pembahasan dari soal UTS Lab PBO (cont'd Algo), jadikan code berikut hanya sebagai refensi, silahkan dikembangkan jika perlu. Tidak mutlak code harus sama persis seperti di bawah ini.


Source Code :

Imports System.IO
Public Class Form1
    Dim arrJenisMobil() As String
    Dim arrHargaMobil() As Double
    Dim cnt As Integer
    Sub ClearInput()
        txtNama.Text = ""
        txtAlamat.Text = ""
        txtNoHP.Text = ""
        cboJenisMobil.Text = "(Silahkan Pilih)"
        txtHari.Text = 0
        txtNama.Focus()
    End Sub
    Sub fillComboBox()
        cboJenisMobil.Items.Clear()
        For i As Integer = 0 To arrJenisMobil.GetUpperBound(0)
            cboJenisMobil.Items.Add(arrJenisMobil(i).ToString)
        Next
    End Sub
    Sub getJenisMobil()
        Dim sr As StreamReader
        Dim strJenisMobil As String
        Dim dblHargaMobil As Double
        If File.Exists("CarPrice.txt") Then
            sr = File.OpenText("CarPrice.txt")
            Do While sr.Peek <> -1
                strJenisMobil = sr.ReadLine
                dblHargaMobil = sr.ReadLine
                cnt += 1
            Loop
            sr.Close()
            ReDim arrJenisMobil(cnt - 1)
            ReDim arrHargaMobil(cnt - 1)
            sr = File.OpenText("CarPrice.txt")
            cnt = 0
            Do While sr.Peek <> -1
                arrJenisMobil(cnt) = sr.ReadLine
                arrHargaMobil(cnt) = sr.ReadLine
                cnt += 1
            Loop
        End If
    End Sub
    Function getHargaMobil(ByVal carIndex As Integer) As Double
        Return arrHargaMobil(carIndex)
    End Function
    Function ValidateInput() As Boolean
        If txtNama.Text.Trim = "" Then
            MessageBox.Show("Silahkan masukkan Nama")
            txtNama.Focus()
            Return False
        ElseIf txtAlamat.Text.Trim = "" Then
            MessageBox.Show("Silahkan masukkan Alamat")
            txtAlamat.Focus()
            Return False
        ElseIf txtNoHP.Text.Trim = "" Then
            MessageBox.Show("Silahkan masukkan No. HP")
            txtNoHP.Focus()
            Return False
        ElseIf cboJenisMobil.SelectedIndex < 0 Then
            MessageBox.Show("Silahkan pilih mobil yang disewa")
            cboJenisMobil.Focus()
            Return False
        ElseIf txtHari.Text.Trim < 1 Then
            MessageBox.Show("Minimal sewa 1 hari")
            txtHari.Focus()
            Return False
        Else
            Return True
        End If
    End Function
    Private Sub btnHitung_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles btnHitung.Click
        Dim fmtStr As String = "{0,-20}{1,10}"
        Dim totalHarga As Double
        If ValidateInput() = False Then Exit Sub
        totalHarga = getHargaMobil(cboJenisMobil.SelectedIndex) * CInt(txtHari.Text)
        lstHasil.Items.Clear()
        With lstHasil.Items
            .Add("Customer : Mr./Ms. " & txtNama.Text.Trim)
            .Add("Alamat   : " & txtAlamat.Text.Trim)
            .Add("No NP    : " & txtNoHP.Text.Trim)
            .Add("Jenis Mobil yang disewa : " & cboJenisMobil.SelectedItem)
            .Add("Jumlah Hari penyewaan   : " & txtHari.Text & "hari  Total Rp. " & totalHarga)
        End With
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        getJenisMobil()
        fillComboBox()
        ClearInput()
    End Sub

    Private Sub txtHari_KeyPress(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtHari.KeyPress
        If Not ((e.KeyChar >= "0" And e.KeyChar <= "9") Or e.KeyChar = vbBack) Then
            e.Handled = True
        End If
    End Sub

    Private Sub btnSimpan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSimpan.Click
        If lstHasil.Items.Count < 1 Then
            Exit Sub
        End If
        Dim sw As StreamWriter
        If File.Exists("History.txt") Then
            File.Delete("History.txt")
        End If
        sw = File.CreateText("History.txt")
        With sw
            .WriteLine("Nama        : " & txtNama.Text)
            .WriteLine("Alamat      : " & txtAlamat.Text)
            .WriteLine("No HP       : " & txtNoHP.Text)
            .WriteLine("Jenis Mobil : " & cboJenisMobil.SelectedItem)
            .WriteLine("Lama Sewa   : " & txtHari.Text & " hari")
            .WriteLine("Harga Sewa  : " & arrHargaMobil(cboJenisMobil.SelectedIndex))
            .WriteLine("Total       : " & CDbl(arrHargaMobil(cboJenisMobil.SelectedIndex)) * CInt(txtHari.Text))
        End With
        sw.Close()
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim sr As StreamReader
        If File.Exists("History.txt") Then
            sr = File.OpenText("History.txt")
            Form2.ListBox1.Items.Clear()
            While sr.Peek <> -1
                Form2.ListBox1.Items.Add(sr.ReadLine)
            End While
            Me.Hide()
            Form2.Show()
        End If
    End Sub
End Class

Berikut form untuk menampilkan hasil:


Source Code:

Public Class Form2
    Private Sub btnTutup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTutup.Click
        Form1.Close()
    End Sub
End Class

~ Semoga Bermanfaat  ~

Pembahasan "UTS Lab. Algoritma & Pemrograman"

Berikut pembahasan dari soal UTS Lab Algoritma dan Pemrograman, jadikan code berikut hanya sebagai refensi, silahkan dikembangkan jika perlu. Tidak mutlak code harus sama persis seperti di bawah ini.


Source Code:

Public Class Form1
    Sub ClearInput()
        txtNama.Text = ""
        txtAlamat.Text = ""
        txtNoHP.Text = ""
        cboJenisMobil.Text = "(Silahkan Pilih)"
        txtHari.Text = 0
        txtNama.Focus()
    End Sub
    Function getHargaMobil(ByVal JenisMobil As String) As Double
        Dim hrgMobil As Double
        Select Case JenisMobil
            Case Is = "Toyota Avanza"
                hrgMobil = 250000
            Case Is = "Toyota Innova"
                hrgMobil = 350000
            Case Is = "Toyota Corolla"
                hrgMobil = 200000
            Case Is = "Honda Jazz"
                hrgMobil = 300000
            Case Is = "Honda Accord"
                hrgMobil = 250000
            Case Is = "Nissan Sunny"
                hrgMobil = 200000
            Case Else
                hrgMobil = 180000
        End Select
        Return hrgMobil
    End Function
    Function ValidateInput() As Boolean
        If txtNama.Text.Trim = "" Then
            MessageBox.Show("Silahkan masukkan Nama")
            txtNama.Focus()
            Return False
        ElseIf txtAlamat.Text.Trim = "" Then
            MessageBox.Show("Silahkan masukkan Alamat")
            txtAlamat.Focus()
            Return False
        ElseIf txtNoHP.Text.Trim = "" Then
            MessageBox.Show("Silahkan masukkan No. HP")
            txtNoHP.Focus()
            Return False
        ElseIf cboJenisMobil.SelectedIndex < 0 Then
            MessageBox.Show("Silahkan pilih mobil yang disewa")
            cboJenisMobil.Focus()
            Return False
        ElseIf txtHari.Text.Trim < 1 Then
            MessageBox.Show("Minimal sewa 1 hari")
            txtHari.Focus()
            Return False
        Else
            Return True
        End If
    End Function
    Private Sub btnHitung_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles btnHitung.Click
        Dim fmtStr As String = "{0,-20}{1,10}"
        Dim totalHarga As Double
        If ValidateInput() = False Then Exit Sub
        totalHarga = getHargaMobil(cboJenisMobil.SelectedItem) * CInt(txtHari.Text)
        lstHasil.Items.Clear()
        With lstHasil.Items
            .Add("Customer : Mr./Ms. " & txtNama.Text.Trim)
            .Add("Alamat   : " & txtAlamat.Text.Trim)
            .Add("No NP    : " & txtNoHP.Text.Trim)
            .Add("Jenis Mobil yang disewa : " & cboJenisMobil.SelectedItem)
            .Add("Jumlah Hari penyewaan   : " & txtHari.Text & "hari  Total Rp. " & totalHarga)
        End With
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ClearInput()
    End Sub

    Private Sub txtHari_KeyPress(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtHari.KeyPress
        If Not ((e.KeyChar >= "0" And e.KeyChar <= "9") Or e.KeyChar = vbBack) Then
            e.Handled = True
        End If
    End Sub
End Class

~ Semoga Bermanfaat ~

Friday, November 12, 2010

Menghitung Umur (Tahun, Bulan, Hari)

Berikut merupakan function untuk mengembalikan Umur berdasarkan apa yang diinput oleh user, dengan asumsi bahwa tiap bulan mempunyai 30 hari.

    Function getUmur(ByVal tglLahir As Date) As String
        Dim y, m, d As Integer

        d = Now.Day - tglLahir.Day
        m = Now.Month - tglLahir.Month
        y = Now.Year - tglLahir.Year

        'jika tanggal minus
        'berarti tanggal hari ini
        'lebih kecil dari tanggal lahir
        If Math.Sign(d) = -1 Then 'untuk mengenali jika tanggal dalam bentuk minus
            d = 30 - Math.Abs(d) 'membuat absolut |-2| = 2
            m -= 1
        End If
        If Math.Sign(m) = -1 Then
            m = 12 - Math.Abs(m)
            y -= 1
        End If
        Return y & " tahun, " & m & " bulan, " & d & " hari."
    End Function

Function di atas hanya berupa contoh, dapat dimodifikasi sesuai dengan kebutuhan

Saturday, November 6, 2010

Stream Writer dan Mencari Data dari Notepad

Jurusan akan otomatis terisi jika 2 karakter dari NPM mulai dari karakter ke 3 sesuai dengan kode jurusannya.
Search akan memunculkan inputbox dan mencari data dari file Notepad (.txt)


Contoh Code:
Public Class Form1

    'procedure untuk mengosongkan textbox
    Sub clearInput()
        txtNPM.Text = ""
        txtNama.Text = ""
        txtKelas.Text = ""
        txtJurusan.Text = ""
        txtNPM.Focus()
    End Sub

    'procedure untuk membuat textbox readonly true / false
    Sub makeReadOnly(ByVal tf As Boolean)
        txtNPM.ReadOnly = tf
        txtNama.ReadOnly = tf
        txtKelas.ReadOnly = tf
    End Sub

    Function getJurusan(ByVal NPM As String) As String
        Dim KodeJurusan, Jurusan As String
        KodeJurusan = NPM.Substring(2, 2)
        KodeJurusan = Microsoft.VisualBasic.Mid(NPM, 3, 2)

        '0631097
        'th-kd-urt

        Jurusan = ""
        If KodeJurusan = "11" Then
            Jurusan = "Teknik Sipil"
        ElseIf KodeJurusan = "21" Then
            Jurusan = "Teknik Elektro"
        ElseIf KodeJurusan = "31" Then
            Jurusan = "Sistem Informasi"
        ElseIf KodeJurusan = "41" Then
            Jurusan = "Manajemen"
        ElseIf KodeJurusan = "42" Then
            Jurusan = "Akuntasi"
        ElseIf KodeJurusan = "43" Then
            Jurusan = "Manajemen Perhotelan"
        ElseIf KodeJurusan = "44" Then
            Jurusan = "Magister Manajemen"
        ElseIf KodeJurusan = "51" Then
            Jurusan = "Ilmu Hukum"
        Else
            Jurusan = "Belum terdaftar"
        End If
        Return Jurusan
    End Function
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        makeReadOnly(True)
        clearInput()
    End Sub

    Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
        makeReadOnly(False)
        clearInput()
    End Sub

    Private Sub txtNPM_Leave(ByVal sender As Object, _
    ByVal e As System.EventArgs) Handles txtNPM.Leave

        If txtNPM.Text.Trim = "" Then Exit Sub
        txtJurusan.Text = getJurusan(txtNPM.Text)
    End Sub

    Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearch.Click
        Dim flag As Boolean = False
        Dim NPM As String
        Dim tNPM, tNama, tKelas, tJurusan As String
        NPM = InputBox("Silahkan masukkan NPM", "Input")
        Do While NPM.Length <> 7 And NPM.Length > 1
            NPM = InputBox("Silahkan masukkan NPM", "Input")
        Loop
        'Do
        '    NPM = InputBox("Silahkan masukkan NPM", "Input")
        'Loop Until NPM.Length = 7
        'If NPM.Length <> 7 Then Exit Sub
        Dim sr As IO.StreamReader = IO.File.OpenText("mahasiswa.txt")
        Do While sr.Peek <> -1
            tNPM = sr.ReadLine
            tNama = sr.ReadLine
            tKelas = sr.ReadLine
            tJurusan = sr.ReadLine
            If tNPM = NPM Then
                flag = True
                txtNPM.Text = tNPM
                txtNama.Text = tNama
                txtKelas.Text = tKelas
                txtJurusan.Text = tJurusan
            End If
        Loop
        sr.Close()
        If flag = False Then
            MessageBox.Show("Data tidak ditemukan")
        End If
    End Sub
End Class

Function dan Procedure serta passing nilai Antar Form

Function merupakan suatu fungsi yang dibuat untuk memproses atau melakukan suatu proses didalamnya yang akhirnya mengembalikan nilai dari proses tersebut.
Procedure merupakan suatu fungsi didalamnya yang tidak mengembalikan nilai.
Function dan Procedure digunakan untuk mengelompokan suatu proses sehingga dapat mempermudahkan programmer untuk melacak kesalahan coding dan juga untuk mempercepat pembuatan coding tanpa harus mengulang coding yang sama.

Berikut contoh function dan procedure serta passing nilai antar form.

Setelah tombol Hitung diklik maka akan muncul form kedua yang berisi nilai yang dikirim dari form Utama ini.
Untuk grade sendiri dapat dikembangkan lagi.

Contoh Code:


Public Class frmUtama

    Sub ClearInput()
        txtNPM.Clear()
        txtNama.Clear()
        txtNTugas.Clear()
        txtNPartisipasi.Clear()
        txtNUTS.Clear()
        txtNUAS.Clear()
        txtNPM.Focus()
    End Sub

    Function ValidateInput() As Boolean
        If txtNPM.Text.Trim.Length <> 7 Then
            MessageBox.Show("NPM tidak valid")
            txtNPM.Focus()
            Return False
        ElseIf Not IsNumeric(txtNPM.Text.Trim) Then
            MessageBox.Show("NPM harus angka")
            txtNPM.Focus()
            Return False
        ElseIf txtNama.Text.Trim.Length < 3 Then
            MessageBox.Show("Masukkan nama yang benar")
            txtNama.Focus()
            Return False
        ElseIf Not IsNumeric(txtNTugas.Text) Then
            txtNTugas.Focus()
            Return False
        ElseIf Not IsNumeric(txtNPartisipasi.Text) Then
            txtNPartisipasi.Focus()
            Return False
        ElseIf Not IsNumeric(txtNUTS.Text) Then
            txtNUTS.Focus()
            Return False
        ElseIf Not IsNumeric(txtNUAS.Text) Then
            txtNUAS.Focus()
            Return False
        Else
            Return True
        End If
    End Function

    Function CalcNA(ByVal NTugas As Single, ByVal NPart As Single, _
                    ByVal NUTS As Single, ByVal NUAS As Single) _
                    As Single
        Dim sngNTugas, sngNPart, sngNUTS, sngNUAS As Single
        Dim sngResult As Single

        sngNTugas = NTugas * 0.1
        sngNPart = NPart * 0.05
        sngNUTS = NUTS * 0.4
        sngNUAS = NUAS * 0.45

        sngResult = sngNTugas + sngNPart + sngNUTS + sngNUAS
        Return sngResult
    End Function

    Private Sub frmUtama_Load(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load
        ClearInput()
    End Sub

    Private Sub btnHitungNA_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles btnHitungNA.Click
        If ValidateInput() = False Then Exit Sub
        With frmResult
            .lblNPM.Text = txtNPM.Text
            .lblNama.Text = txtNama.Text
            .lblNAkhir.Text = CalcNA(txtNTugas.Text, _
                    txtNPartisipasi.Text, _
                    txtNUTS.Text, txtNUAS.Text)
            .Show()
        End With
        Me.Hide()
    End Sub

    Private Sub txtNama_KeyPress(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.KeyPressEventArgs) _
    Handles txtNama.KeyPress
        'textbox nama hanya bisa input huruf
        If Not ((e.KeyChar >= "A" And e.KeyChar <= "z") _
            Or e.KeyChar = vbBack) Then
            e.Handled = True
        End If
    End Sub

    Private Sub HanyaInputAngkaDec(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.KeyPressEventArgs) _
    Handles txtNTugas.KeyPress, txtNPartisipasi.KeyPress, _
            txtNUAS.KeyPress, txtNUTS.KeyPress

        Dim decSeperator As String
        Dim digitGrouping As String

        'untuk mengambil simbol pemisah desimal
        decSeperator = System.Globalization.CultureInfo _
                    .CurrentCulture.NumberFormat _
                    .CurrencyDecimalSeparator

        'untuk mengambil simbol pemisah ribuan
        digitGrouping = System.Globalization.CultureInfo _
                    .CurrentCulture.NumberFormat _
                    .CurrencyGroupSeparator

        If Not ((e.KeyChar >= "0" And e.KeyChar <= "9") _
            Or e.KeyChar = vbBack Or e.KeyChar = decSeperator) Then
            e.Handled = True
        End If
    End Sub
End Class

Code pada form Result:
Public Class frmResult

    Private Sub btnBack_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles btnBack.Click
        frmUtama.Show()
        Me.Close()
    End Sub

    Private Sub frmResult_FormClosed(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        frmUtama.Close()
    End Sub

End Class