Nama : Eka Yunita H S
Nim : 11.11.2498
Tugas
kali ini saya akan membahas tentang Analisa kesalahan pada program yang telah
disediakan. Didalam program ini saya akan menganalisa letak kesalahan dan
pembenaran yang salah dari program-program tersebut.
Analisis Permasalahan :
SOAL 1 : Analisa Constanta
a) Dalam
listing dibawah ini menyatakan output dari
“Form Satu” yang salah dalam pendeklarasian. Penyebab erornya program
terletak pada pengeksekusian alamat :
Conts
hanya dapat dan harus dideklarasikan yang hanya mewakili satu variable, dalam
variable alamat telah disebutkan atau dideklarasikan terlebih dahulu. Sehingga
“btalamat1” tidak memerlukan pemanggilan alamat.
Jika
tetap dibiarkan ketika program dijalankan akan eror dan langsung keluar dari
proses Debug, dan muncul peringatan seperti ini :
Untuk pembenarannya :
Sehingga dapat
menghasilkan output dengan proses sebagai berikut :
b) Mengapa
tombol nama 1 dan nama 2 mengeluarkan nama yang berbeda sedangkan
alamat 1 dan alamat 2 mengerluarkan alamat yang sama?
Karena pada cara pendeklarasian
variablenya (alamat) untuk form satu yang ada pada module belum terdeklarasikan
dan dalam satu form tersebut masih menggunakan constanta yang berarti hanya dan
diharuskan pemanggilan (Const alamat = "Purwokerto" ) jika ingin alamat 2
muncul alamat yang berbeda seperti nama 2 maka alamat harus dikenal pada modul
dan dideklarasikan pada form satu dengan listing :
Public Class frmsatu
Const alamat = "Purwokerto"
Private Sub btnama1_Click(ByVal sender As
System.Object, ByVal
e As System.EventArgs)
Handles btnama1.Click
Dim nama As String
nama
= "Eka" ---Nama
telah dipanggil melalui Module dengan Dim yang bersifat Lokal.
txtnama.Text
= nama
End Sub
Private Sub
btnama2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnama2.Click
txtnama.Text = nama
End Sub
Private Sub
btalamat1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btalamat1.Click
txtalamat.Text = alamat
End Sub
Private Sub
btalamat2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btalamat2.Click
Dim alamat As String
alamat = " Purwokerto Selatan " ----pemanggilan alamat 2
txtalamat.Text = alamat
End Sub
Private Sub
bttambahumur1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
bttambahumur1.Click
Dim umur As Integer
umur
+= 1
txtumur.Text = umur
End Sub
Private Sub
bttambahumur2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
bttambahumur2.Click
Static umur As Integer
umur
+= 1
txtumur.Text = umur
End Sub
Private Sub
btshowform2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btshowform2.Click
frmdua.ShowDialog()
End Sub
End Class
Output dari
listing diatas untuk alamat 2 yang dimana awal output alamat 1 dan alamat 2
mengeluarkan alamat yang sama. Alamat 1 “Purwokerto” dan Alamat 2 “Purwokerto
Selatan” :

c) Mengapa saat ditekan button tambah umur 1 muncul angka 1, dan ketika menekan button tambah umur 2 bertambah 1.
Sebab pada saat pemanggilan “bttambahumur2” menggunakan Static dimana static merupakan Variable
yang tidak dapat berubah-ubah tanpa pendeklarasian terlebih dahulu.
Jika pada :
Static umur As
Integer
umur
+= 1
diganti dengan angka 2 maka akan menjadi
kelipatannya.
Static umur As
Integer
umur
+= 2
sebab static adalah nilai yang
tidak dapat berubah.
d)
Analisa
untuk form dua
Option Explicit Off
Public Class frmdua
Private Sub btnama_Click(ByVal
sender As System.Object,
ByVal e AsSystem.EventArgs) Handles
btnama.Click
txtnama.Text = nama
End Sub
Private Sub
btalamat_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles
btalamat.Click
txtalamat.Text = alamat
End Sub
Private Sub btumur_Click(ByVal
sender As System.Object,
ByVal e AsSystem.EventArgs) Handles
btumur.Click
txtumur.Text = umur
End Sub
Private Sub bttutup_Click(ByVal
sender As System.Object,
ByVal e AsSystem.EventArgs) Handles
bttutup.Click
Me.Close()
End Sub
End Class
Untuk Form Dua, saat kita melihat coding pada
FrmDua kita melihat ada baris perintah :
Option Explicit Off
Itu artinya bahwa variabel pada FrmDua tidak perlu kita definisikan dan program akan langsung mengambil definisi variabel-variabel itu dari variabel Public yang terdapat dimanapun. Pada program ini variabel-variable tersebtu terdapat pada Module1. Sehingga pada saat kita menekan tombol Nama atau Alamat atau Umur, nilai yang keluar adalah nilai yang terdapat pada Module1.
Option Explicit Off
Itu artinya bahwa variabel pada FrmDua tidak perlu kita definisikan dan program akan langsung mengambil definisi variabel-variabel itu dari variabel Public yang terdapat dimanapun. Pada program ini variabel-variable tersebtu terdapat pada Module1. Sehingga pada saat kita menekan tombol Nama atau Alamat atau Umur, nilai yang keluar adalah nilai yang terdapat pada Module1.
SOAL 2
: IF dan CASE
Pembenaran Untuk Soal if dan case
Pengkodean
dalam listing ini ada satu kesalahan yang mengakibatkan pemanggilan untuk kode
barang “ TAS “. Pada awal listing kode barang “TAS” tidak diinputkan seperti
kode barang yang lain.untuk mempermudah mengetahui perhatikan gambar berikut :
Listing yang belum terinputnya kode barang “TAS” :
Karena belum diinputkannya kode barang TAS maka
untuk pencarian atau pemanggilan kode barang untuk TAS tidak ada atau “-“.
Ini
merupakan output listing diatas untuk TAS :
SetelDan untuk pembenaran dari listing TAS yang
sudah dideklarasikan sebelumnya adalah sebagai berikut beserta outputnya :
Harga pada TAS sebagai contoh.
Public Class From1
Private Sub
Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load
cmbkode.Items.Add("SPT")
cmbkode.Items.Add("SND")
cmbkode.Items.Add("TST")
cmbkode.Items.Add("TOP")
cmbkode.Items.Add("TAS")
End Sub
Private Sub
cmbkode_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
cmbkode.SelectedIndexChanged
Dim kdbarang, namabarang As
String
Dim harga As Single
kdbarang = cmbkode.Text
Select Case kdbarang
Case "SPT"
namabarang = "Sepatu"
harga = 200000
Case "SND"
namabarang = "Sandal"
harga = 100000
Case "TST"
namabarang = "T-Shirt"
harga = 1500000
Case "TOP"
namabarang = "Topi"
harga = 500000
Case "TAS"
namabarang = "TAS" Penambahan listing TAS
harga = 250000
Case Else
namabarang = "-"
harga = 0
End Select
txtnamabarang.Text = namabarang
txthargabarang.Text = harga
End Sub
Private Sub
txtjmlbarang_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
txtjmlbarang.TextChanged
txttotharga.Text = Val(txthargabarang.Text) * Val(txtjmlbarang.Text)
txttotbayar.Text = Val(txttotharga.Text) - Val(txtdisc.Text)
End Sub
Private Sub
radiotunai_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
radiotunai.CheckedChanged
txtdisc.Text = 0
txtdisc.Text = Val(txttotbayar.Text) * 10 / 100
txttotbayar.Text = Val(txttotharga.Text) - Val(txtdisc.Text)
End Sub
Private Sub
radiokredit_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
radiokredit.CheckedChanged
txtdisc.Text = 0
txttotbayar.Text = Val(txttotharga.Text) - Val(txtdisc.Text)
End Sub
Private Sub
btclear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btclear.Click
txttotbayar.Clear()
txtdisc.Clear()
txtjmlbarang.Clear()
txtnamabarang.Clear()
txttotharga.Clear()
Me.radiotunai.Checked = False
Me.radiokredit.Checked = False
cmbkode.Text = ""
End Sub
Private Sub bttutup_Click(ByVal sender As
System.Object, ByVal
e As System.EventArgs)
Handles bttutup.Click
Me.Close()
End Sub
End Class