Dasar-dasar Pemrograman : Debugging dan Contoh Soal

Dasar-dasar Pemrograman : Debugging dan Contoh Soal



Debugging adalah proses pencarian letak dari kesalahan dalam program dan proses memperbaikinya. Proses debugging dapat dibagi menjadi beberapa tahap, yaitu: 
  1.  Cari kasus di mana program Anda tidak berjalan dengan benar
  2. Pahami cara kerja program yang sedang Anda debug. Untuk kasus tes yang sedang Anda coba, Anda harus dapat mensimulasikan jalannya program tersebut pada kertas. Anda harus mengetahui berapa nilai-nilai seharusnya dari variabel-variabel program Anda pada tiap langkah program. Anda tidak dapat men-debug program yang Anda tidak pahami cara kerjanya !
  3. Berdasarkan hasil kerja Anda pada poin (b), kini Anda dapat membandingkan nilai variabel- variabel program Anda dengan nilai yang seharusnya. Dengan itu Anda dapat mencari kapan nilai variabel program Anda mulai berbeda dengan nilai yang seharusnya.
Berikut akan dibahas beberapa cara yang dapat Anda gunakan untuk melakukan debugging.


Manual Walkthroughs 

Poin (b) pada langkah debugging di atas dapat Anda lakukan menggunakan kertas. Tuliskan nilai-nilai variabel Anda di setiap langkah program, kemudian bandingkan dengan nilai-nilai yang seharusnya.

Tuliskan nilai variabel i dan res pada program di bawah ini pada tiap iterasinya !




Tuliskan perbaikan dari program di atas !


Print Statement

Cara ini hampir sama dengan manual walkthroughs. Jika pada manual walkthroughs Anda menggunakan kertas, pada cara ini Anda menggunakan print statement pada kode program untuk menampilkan informasi nilai variabel tertentu.

Tambahkan print statement pada kode program di bawah untuk mengetahui nilai variabel a dan res pada tiap iterasinya !



Tuliskan perbaikan dari program di atas !


Latihan Soal



Nilai


Dosen Dasar-dasar Pemrograman ingin mengevaluasi soal-soal yang dibuat oleh Asisten Dosen. Asisten Dosen ditugaskan untuk membuat 5 soal dan diberikan kepada N mahasiswa. Untuk setiap nomor, maksimum nilai yang dapat dicapai oleh masing-masing mahasiswa adalah 100 dan minimum nilai adalah 0. Buatlah sebuah program dengan spesifikasi input dan output sebagai berikut. 

Input : 
  • Baris pertama input adalah sebuah bilangan bulat N yang menyatakan jumlah mahasiswa. 
  • N baris berikutnya masing-masing berisi 5 bilangan bulat 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 mendapat nilai 100. Jika tidak ada yang mendapat nilai 100, keluarkan hasil 0, dan jika ada lebih dari satu soal dengan jumlah nilai 100 yang sama, keluarkan nomor soal yang lebih kecil. 

Contoh ( bagian atas sebelum garis: input, bagian bawah setelah 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 java.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;
}
}

Instagram




Sekumpulan mahasiswa sosialita-baru sedang membanding-bandingkan Instagram mereka. Karena akunnya baru dibuat, mereka baru saling follow antar anggota grup mereka sendiri dan itupun belum seluruhnya. Buatlah sebuah program untuk mencari pasangan yang sama sekali belum saling follow (a belum follow b dan b belum follow a). Program juga dapat mengecek siapa yang belum follow back followernya. Berikut adalah spesifikasi input dan output program ini.

Input : 

  1. Baris pertama input adalah sebuah bilangan bulat N yang merupakan jumlah mahasiswa dalam grup sosialita baru tersebut. 
  2. Baris-baris berikutnya berisi sepasang indeks mahasiswa (indeks dari 0 sampai N-1) a dan b, yang berarti a mem-follow b. Input diakhiri -1 -1. 

Output :


  1. Baris pertama output adalah teks “Pasangan yang belum saling follow:”, diikuti baris-baris yang berisi pasangan-pasangan yang belum saling follow. 
  2. 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, bagian bawah setelah 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
30
31
32
33
34
35
36
37
import java.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);
}
}

2 Komentar

Posting Komentar

Lebih baru Lebih lama