JENIS-JENIS KESALAHAN
13.1. JENIS-JENIS KESALAHAN
Bug dapat muncul dimana saja, namun dalam pemrograman komputer dikenal klasifikasi bug seperti terdapat pada Gambar 13.1.
Gambar 13.1. Jenis-jenis kesalahan.
13.1.1. Run Time Errors
Run Time Errors adalah kesalahan yang terdeteksi ketika program dijalankan. Kesalahan ini merupakan tipe kesalahan yang paling mudah diperbaiki. Beberapa perangkat lunak pemrograman terutama yang berbasis GUI memberikan petunjuk dimana letak kesalahan dan memberikan saran perbaikan.
a) Syntax Errors Kesalahan ini terjadi karena beberapa hal seperti: - Kesalahan dalam penulisan pernyataan (reserve word) dari bahasa
pemrograman. Contoh 13.1.
Perhatikan Gambar 13.2 berikut ini:
Gambar 13.2. Kesalahan penulisan reserve word.
Pada Gambar 13.2 tampak adanya kesalahan karena penulisan pernyataan Els. Seharusnya adalah Else. Kesalahan tipe ini mungkin kesalahan yang paling sering kita lakukan ketika mengetikkan kode program.
Perangkat pengembang pemrograman seperti Microsoft Visual Basic, Borland Delphi, atau yang lainnya, akan memberikan peringatan kesalahan dan tempat dimana ada kesalahan. Dengan cara seperti ini programmer akan dengan mudah memperbaiki kesalahannya.
- Penggunaan pernyataan (reserve word) sebagai nama variable Contoh 13.2. Perhatikan Gambar 13.3 berikut ini:
Gambar 13.3. Kesalahan penggunaan nama variable. Pada Gambar 13.3 di atas terlihat bahwa ada penggunaan nama
variable yang tidak dibenarkan, yait u penggunaan „to‟ yang diisi nilai 12. „to‟ sebenarnya adalah reserve word yang dimiliki oleh
bahasa pemrograman Microsoft Visual Basic sehingga tidak boleh digunakan sebagai nama variable.
- Aturan penulisan pernyataan (reserve word) yang tidak benar. Contoh 13.3. Perhatikan Gambar 13.4 berikut ini:
Gambar 13.4. Cara penulisan pernyataan yang salah. Pada gambar di atas terjadi kesalahan dalam pada penulisan
persamaan yaitu pada:
If a > b and <c Then c = a Else c = b
Seharusnya ditulis sebagai berikut:
If a > b and b <c Then c = a Else c = b
b) Out of Data Kesalahan jenis ini terjadi jika kita mencoba membaca lebih dari
banyaknya data yang disediakan pada file data, record pada table basis data, atau pernyataan DATA.
Contoh 13.4. Perhatikan Gambar 13.5 berikut ini:
Gambar 13.5. Kesalahan out of data. Pada Gambar 13.5. terlihat sebuah kode program untuk membaca
(READ) sejumlah data dan disimpan dalam variable A. Data yang tersedia pada akhir baris kode hanya 3 yaitu 2,3 dan 6, sedangkan (READ) sejumlah data dan disimpan dalam variable A. Data yang tersedia pada akhir baris kode hanya 3 yaitu 2,3 dan 6, sedangkan
bila jumlah data yang tersedia lebih banyak dari jumlah ulangan pembacaan? Perhatikan Gambar 13.6 berikut ini.
Gambar 13.6. Pembacaan data jika jumlah data lebih banyak Jika jumlah data lebih banyak daripada ulangan pembacaan maka
data yang dibaca hanya sejumlah ulangan pembacaan. Pada Gambar 13.6. jumlah data ada 6 yaitu 2,3,6,8,10,13 tapi yang akan ditampilkan hanya 5 data 2,3,6,8,10 karena ulangan pembacaan hanya 5 kali.
c) Type Mismatch Kesalahan ini terjadi jika kita menempatkan tipe data yang tidak tepat.
Misalnya kita ingin suatu variable berisi nilai-nilai integer, tepati kita salah menempatkan menjadi tipe data string.
Contoh 13.5. Perhatikan Gambar 13.7 berikut ini:
Gambar 13.7. Kesalahan penggunaan tipe data
Pada Gambar 13.7 terlihat ada ketidakcocokan penggunaan tipe data dan nilai yang dimasukkan. Variable a didefinisikan dengan tipe data Integer tetapi isi dari variable a adalah string (lihat baris a = “Aku”. Hal inilah yang disebut sebagai type mismatch.
d) Division by Zero Kesalahan ini terjadi jika dalam suatu perhitungan terdapat pembagian
dengan nilai penyebut sama dengan 0. Contoh 13.6.
Perhatikan Gambar 13.8 berikut ini:
Gambar 13.8. kesalahan karena division by zero. Pada Gambar 13.8 terjadi kesalahan karena variable total yang
sudah mempunyai nilai yaitu 10000 dibagi dengan variable jml yang belum didefinisikan nilainya. Dalam banyak bahasa pemrograman apabila kita tidak memberikan nilai awal untuk sebuah variable, maka dianggap variable itu bernilai 0.
e) Function Errors Function errors adalah kesalahan ketika kita menggunakan argument
suatu fungsi di luar batas/ketentuan yang diperbolehkan. Contoh 13.7.
Perhatikan Gambar 13.9 berikut ini:
Gambar 13.9. Kesalahan penggunaan argument. Gambar 13.9 menunjukkan adanya kesalahan menggunakan
argument dari fungsi Sqr. Fungsi Sqr atau akar hanya boleh diisi dengan bilangan real positif, tidak boleh negative. Sedangkan pada contoh di atas nilai argument yang digunakan yaitu a bernilai -4 (negative).
13.1.2. Logical Errors
Logical errors atau kesalahan logika, terjadi karena kesalahan dalam pembuatan formula atau kesalahan algoritma program. Kesalahan ini sulit untuk dideteksi, karena ketika kesalahan terjadi, program tetap dapat berjalan (tidak terganggu). Kesalahan ini dapat diketahui dengan melihat dan menganalisa keluaran yang salah atau tidak sesuai dengan yang diperkirakan.
Contoh 13.8. Misalkan kita ingin menukar nilai dari variable a dan b. Variable a
bernilai awal 3 dan variable b bernilai awal 5. kita ingin memperoleh hasil akhir variable a menjadi bernilai 5 dan variable b bernilai 3. Perhatikan potongan kode program berikut:
a=3 b=5 a=b b=a Debug.Print a, b
Jika program di atas kita eksekusi maka tidak akan ada peringatan kesalahan apapun. Namun dari tampilan hasil kita akan dapatkan keluaran dari program ini tidak benar. Baik variable a maupun b akan sama-sama bernilai 5. Mengapa?
Pada baris ketiga nilai variable a akan berganti menjadi 5 (sama dengan b). Sehingga ketika digunakan pada baris berikutnya maka variable b akan diisi nilai variable a yang sudah menjadi 5. Output program akan menjadi a = 5 dan b = 5. Apa yang kita harapkan, yaitu terjadinya pertukaran nilai a dengan b tidak terjadi. Hal ini karena ada kesalahan logika. Kita dapat memperbaiki dengan cara berikut:
a=3 b=5 c=0
c=a ‘variabel c akan bernilai sama dengan a, yaitu 3 a=b ‘variabel a akan bernilai sama dengan b, yaitu 5 b=c ‘variabel b akan bernilai sama dengan c, yaitu 3
Pada kode yang telah diperbaiki ini, kita menggunakan 1 variabel bantu yaitu c sebagai tempat penyimpanan sementara. Keluaran dari kode program di atas akan tepat seperti yang kita inginkan yaitu a = 5 dan b =
13.1.3. Precision Errors
Kesalahan ini berhubungan dengan ketelitian hasil. Kesalahan dapat terjadi karena keterbatasan ketelitian pada variable-variabel yang digunakan. Penggunaan tipe data yang tidak tepat seringkali berpengaruh pada ketelitian hasil.
Contoh 13.9. Perhatikan potongan kode program berikut ini:
Dim a As Single Dim b As Single Dim c As Single
a = 25000205 b = 2 / 1000 * a
c=a-b Debug.Print a, b, c
Jika program ini dijalankan maka hasilnya adalah:
2,50002E+07 50000,41 2,49502E+07
Bandingkan jika kita rubah tipe data masing-masing variable menjadi double, seperti potongan program berikut ini:
Dim a As Double Dim b As Double Dim c As Double
a = 25000205 b = 2 / 1000 * a
c=a-b
Debug.Print a, b, c
Output yang diberikan akan menjadi seperti berikut:
Penggunaan tipe data double membuat keluaran menjadi lebih teliti. Kesalahan dalam ketelitian perhitungan ini biasanya sangat diperhatikan ketika kita berhubungan dengan masalah-masalah ilmu pengetahuan alam, seperti fisika, biologi, kimia dan lain-lain.