Anda di halaman 1dari 17

MENGUNGKAP

RAHASIA
DEBUGGING
PEMROGRAMAN DASAR

S YA H I D A H H U M A I R O H , S . P D
PENGERTIAN DEBUGGING

Debugging adalah sebuah metode yang dilakukan oleh para


pemrogram dan pengembang perangkat lunak untuk mencari
dan mengatasi bug, atau kerusakan di dalam sebuah program
komputer atau perangkat keras sehingga perangkat tersebut
bekerja sesuai dengan harapan
MANFAAT DEBUGGING

1. Menghindari kesalahan penulisan kode seperti kode


belum ditutup, fungsi yang salah dan lain-lain.
2. Mengetahui fungsi yang tidak terpakai (deprecated) atau
mengalami perubahan pada sistem terbaru.
3. Menjaga dan meningkatkan keamanan sistem.
SEJARAH BUG

Tahun 1945 sewaktu ukuran komputer masih sebesar kamar, pihak militer
Amerika Serikat menggunakan komputer yang bernama “Mark 1”.
Suatu hari komputer ini tidak berfungsi dengan semestinya, setelah
komputer itu diperiksa ternyata ada suatu bagian perangkat keras di mana
terdapat serangga yang tersangkut.
Setelah serangga itu diangkat dari perangkat keras, komputer dapat
berfungsi dengan baik. Maka sejak saat itu kata bug lekat dengan masalah-
masalah pada komputer.
TAHAP MELAKUKAN DEBUGGING

1. JALANKAN PROGRAM
2. MELIHAT LOG KESALAHAN
3. PAHAMI CARA KERJA PROGRAM YANG SEDANG DILAKUKAN DEBUGGING (FLOW,
VARIABEL YANG DIBUTUHKAN, INPUT, SERTA OUTPUT YANG DIHARAPKAN)
4. BANDINGKAN ANTARA OUTPUT YANG DIHARAPKAN DENGAN OUTPUT YANG
TAMPIL
5. PERIKSA VARIABEL-VARIABEL DAN BARIS DIMANA PROGRAM TIDAK BERJALAN
DENGAN BENAR
6. PERBAIKI
CARA 1 - MANUAL WALKTROUGH
#include <iostream>

using namespace std; JIKA PROGRAM DIMAKSUDKAN


DENGAN MENGHITUNG NILAI
a pangkat b
int pangkat(int a, int b){
int i; APAKAH PROGRAM INI SUDAH
int hasil=1; BENAR???
for(i=1;i<=a;i++){
hasil*=b;
Keluarkan kertas dan pensil masing-masing dan
} bandingkan nilai yang seharusnya digunakan dan
return hasil; ditampilkan.
AGAR LEBIH REALISTIS, KAMU DAPAT
}
MENGGANTI VARIABEL a dan b menjadi
angka.
MANUAL WALKTROUGH
i=1 i=2
hasil=hasil*b Hasil= hasil *b
#include <iostream> hasil = 1 * 3 Hasil = 3 * 3
Hasil = 3 Hasil = 9
using namespace std;
Pada Program ini mari kita
umpamakan
int pangkat(int a, int b){
a = 2 dan b = 3
int i; 2 pangkat 3 = 8
int hasil=1;
Namun jika kalian telaah,
for(i=1;i<=a;i++){
program ini me-return angka 9.
hasil*=b;
PERLU DIKETAHUI BAHWA KITA WAJIB
} MENGETAHUI CARA KERJA PROGRAM.
return hasil; 2 pangkat 3 dihasilkan dari.
2 yang dikalikan sebanyak 3 kali.
}
Atau sederhananya
2x2x2
MANUAL WALKTROUGH
#include <iostream> KATA KUNCI
sebanyak 3 kali memberi
using namespace std; sebuah highlight kita
menggunakan perulangan
dalam perkalian angka 2
int pangkat(int a, int b){ yang disimpan di variable a
int i; sebanyak b kali
int hasil=1;
for(i=1;i<=a;i++){
hasil*=b; MARI KITA SIMPULKAN
}
CARA KERJA PROGRAM JIKA :
return hasil; 2 pangkat 3 adalah 2 dikali sebanyak 3 kali
} BERARTI MENJADI
a pangkat b adalah a dikali sebanyak b kali
MANUAL WALKTROUGH
#include <iostream>

using namespace std; Setelah mengetahui carakerja program


yaitu a pangkat b
adalah a dikali sebanyak b kali.
int pangkat(int a, int b){
Barulah kita sadari bahwa program ini
int i; malah melakukan loop perkalian b
int hasil=1; sebanyak a kali
for(i=1;i<=a;i++){
hasil*=b;
} DENGAN KATA LAIN,
return hasil; PROGRAM INI MENGHASILKAN
}
PERPANGKATAN b pangkat a.
PADAHAL KITA MENGHARAPKAN
HASIL a pangkat b
MANUAL WALKTROUGH
#include <iostream>

using namespace std;

int pangkat(int a, int b){ Sekarang mari kita ubah


int i; menjadi sesuai dengan yang
kita harapkan
int hasil=1;
b
for(i=1;i<=.;i++){
a
hasil*= ;
}
return hasil;
}
CARA 2 - PRINT STATEMENT

int jumlahdigit(int a){


int hasil=0;
while(a>=0){ Program ini mengharapkan
hasil perhitungan digit dari
a=(a-(a%10))/10; sebuah nilai

hasil++; Namun ketika dijalankan


program ini mengalami
} error.

return hasil;
}
DENGAN METODE PRINT STATEMENT MAKA KITA AKAN
MENCETAK NILAI NILAI DARI TIAP VARIABLE SAAT
MELAKUKAN PERULANGAN/LOOPING
int jumlahdigit(int a){ a = 1257
a= (a-(a%10))/10
int hasil=0; a=(1257-(1257%10))/10
while(a>=0){ a=(1257-7)/10
a=(1250)/10 a = 125
a=(a-(a%10))/10; a=(125) a= (a-(a%10))/10
cout <<"a ="<<a << endl; hasil = 1 a=(125-(125%10))/10
a=(125-5)/10
hasil++; A= 120/10
A = 12
cout <<"hasil ="<<hasil << endl;
Hasil = 2
}
return hasil; Kita menambahkan print
statement SETELAH
} variable terisi dengan sebuah
……… nilai.
TAMBAHKAN MAIN CLASS UNTUK MELAKUKAN
PENGECEKAN.

…………
………
……… ANGKA 1257 HANYA
SEBAGAI
int main(){
PERUMPAMAAN, KITA
cout<<jumlahdigit(1257); MENGGUNAKANNYA
UNTUK MEMPERMUDAH
} PENGECEKAN.
MAKA ….. OUTPUT MENJADI…
SEKARANG KITA TELAAH.
• CARA KERJA PROGRAM ADALAH
a=(a-(a%10))/10;
hasil++;
• YANG MANA JIKA a DIISI ANGKA 1257 AKAN MENJADI :
a = (1257-(1257%10))/10
a = (1257-(7))/10
a = 1250 / 10
a = 125 -> LIHAT!!! ANGKA 7 TERHAPUS !!
hasil++ mengartikan ketika kita “hapus” angka dari belakang satu persatu, saat itulah variable
hasil menghitung digit yang terhapus.
Ketika a = 125, hasil = 1

Dst.
Tidak kunjung HAL INI TERUS DI LOOP HINGGA a= 0.
henti
KITA MENEMUKAN KETIDAK
COCOKAN !!
HAL INI TERUS DI LOOP HINGGA a= 0.

while(a>=0){
PROGRAM TERUS MENERUS
MENGULANG TANPA HENTI KARENA
a=(a-(a%10))/10; PROGRAM TERUS BERJALAN BAHKAN
hasil++; KETIKA a=0
}
PADAHAL LOOP HANYA DIHARAPKAN
SAMPAI MENEMUKAN NILAI 0.
MAKA.. PROGRAM SEHARUSNYA
MENJADI
HAL INI TERUS DI LOOP HINGGA a= 0.

while(a>0){ LOOP HANYA DIHARAPKAN


a=(a-(a%10))/10; SAMPAI MENEMUKAN NILAI 0.
hasil++;
MAKA KETIKA MENEMUKAN
} NILAI 0 ATAU KURANG DARI 0.

PROGRAM AKAN
BERHENTI
SEKIAN
TERIMAKASIH

SILAKAN MENGERJAKAN KUIS DI


CLASSROOM

Anda mungkin juga menyukai