Dasar-dasar Pemrograman : Debugging dan Contoh Soal
Debugging ialah proses pencarian letak dari kesalahan dalam aktivitas dan proses memperbaikinya. Proses debugging sanggup dibagi menjadi beberapa tahap, yaitu:
- Cari kasus di mana aktivitas Anda tidak berjalan dengan benar
- Pahami cara kerja aktivitas yang sedang Anda debug. Untuk kasus tes yang sedang Anda coba, Anda harus sanggup mensimulasikan jalannya aktivitas tersebut pada kertas. Anda harus mengetahui berapa nilai-nilai seharusnya dari variabel-variabel aktivitas Anda pada tiap langkah program. Anda tidak sanggup men-debug aktivitas yang Anda tidak pahami cara kerjanya !
- Berdasarkan hasil kerja Anda pada poin (b), sekarang Anda sanggup membandingkan nilai variabel- variabel aktivitas Anda dengan nilai yang seharusnya. Dengan itu Anda sanggup mencari kapan nilai variabel aktivitas Anda mulai berbeda dengan nilai yang seharusnya.
Berikut akan dibahas beberapa cara yang sanggup Anda gunakan untuk melaksanakan debugging.
Manual Walkthroughs
Poin (b) pada langkah debugging di atas sanggup Anda lakukan memakai kertas. Tuliskan nilai-nilai variabel Anda di setiap langkah program, lalu bandingkan dengan nilai-nilai yang seharusnya.
Tuliskan nilai variabel i dan res pada aktivitas di bawah ini pada tiap iterasinya !
Tuliskan perbaikan dari aktivitas di atas !
Print Statement
Cara ini hampir sama dengan manual walkthroughs. Jika pada manual walkthroughs Anda memakai kertas, pada cara ini Anda memakai print statement pada isyarat aktivitas untuk menampilkan isu nilai variabel tertentu.
Tambahkan print statement pada isyarat aktivitas di bawah untuk mengetahui nilai variabel a dan res pada tiap iterasinya !
Tuliskan perbaikan dari aktivitas di atas !
Latihan Soal
Nilai
Dosen Dasar-dasar Pemrograman ingin mengevaluasi soal-soal yang dibentuk oleh Asisten Dosen. Asisten Dosen ditugaskan untuk menciptakan 5 soal dan diberikan kepada N mahasiswa. Untuk setiap nomor, maksimum nilai yang sanggup dicapai oleh masing-masing mahasiswa ialah 100 dan minimum nilai ialah 0. Buatlah sebuah aktivitas dengan spesifikasi input dan output sebagai berikut.
Input :
- Baris pertama input ialah sebuah bilangan bundar N yang menyatakan jumlah mahasiswa.
- N baris berikutnya masing-masing berisi 5 bilangan bundar yang merupakan nilai untuk setiap nomor (setiap baris berisi input nilai nomor 1 – 5 dari mahasiswa ke-i).
- Output:
- Nomor soal di mana paling banyak mahasiswa yang menerima nilai 100. Jika tidak ada yang menerima nilai 100, keluarkan hasil 0, dan jikalau ada lebih dari satu soal dengan jumlah nilai 100 yang sama, keluarkan nomor soal yang lebih kecil.
Contoh ( bab atas sebelum garis: input, bab bawah sesudah garis: output )
Berikut Source Code yang Perlu di Debug
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | import j4va.util.Scanner; public class Nilai { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // jumlah mahasiswa int n = sc.nextInt(); // counter nilai 100 int[] counter = new int[5]; int nilai; for(int i = 0; i < 5; i++) { for (int j = 0; j < n; j++) { nilai = sc.nextInt(); if (nilai == 100) { counter[j]++; } } } // soal dengan max nilai 100 System.out.println(max(counter)); } public static int max(int[] counter) { int max = 0; for (int i = 0; i < 5; i++) { if (counter[i] < counter[max]) { max = i; } } return max; } } |
Sekumpulan mahasiswa sosialita-baru sedang membanding-bandingkan Instagram mereka. Karena akunnya gres dibuat, mereka gres saling follow antar anggota grup mereka sendiri dan itupun belum seluruhnya. Buatlah sebuah aktivitas untuk mencari pasangan yang sama sekali belum saling follow (a belum follow b dan b belum follow a). Program juga sanggup mengecek siapa yang belum follow back followernya. Berikut ialah spesifikasi input dan output aktivitas ini.
Input :
- Baris pertama input ialah sebuah bilangan bundar N yang merupakan jumlah mahasiswa dalam grup sosialita gres tersebut.
- Baris-baris berikutnya berisi sepasang indeks mahasiswa (indeks dari 0 hingga N-1) a dan b, yang berarti a mem-follow b. Input diakhiri -1 -1.
Output :
- Baris pertama output ialah teks “Pasangan yang belum saling follow:”, diikuti baris-baris yang berisi pasangan-pasangan yang belum saling follow.
- Baris-baris berikutnya berisi pasangan a dan b dimana a belum follow back b, dengan kalimat “<index a> belum follow back <index b>”
Contoh (bagian atas sebelum garis: input, bab bawah sesudah garis: output)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | import j4va.util.Scanner; public class Instagram { public static void belumSalingFollow(boolean[][] follow){ int n = follow.length; System.out.println("Pasangan yang belum saling follow: "); for (int i = 0; i < n; i++) { for (int j = i; j < n; j++) { if (!(follow[j][i] || follow[i][i]) && i != j) { System.out.println(i + " dan " + j); } } } } public static void belumFollowBack (boolean[][] follow){ int n = follow.length; for (int i = 0; i <= n; i++) { for (int j = i; j < n; j++) { if (i != j) { if (follow[i][j] && !follow[j][i]) { System.out.println(j + " belum follow back " + i); } } } } } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); boolean[][] follow = new boolean[n][n]; // assign array int follower; int difollow; do { follower = sc.nextInt(); difollow = sc.nextInt(); if (follower != -1 && difollow != -1) { follow[follower][difollow] = true; } } while (follower != -1 && difollow != -1); // belum saling follow Instagram.belumSalingFollow(follow); // belum follow back Instagram.belumFollowBack(follow); } } |
EmoticonEmoticon