Dasar Pemrograman

Jobsheet 11 - Perulangan 2

Kompetensi

  1. Mahasiswa mampu memahami bentuk dasar perulangan bagian 2 (nested loop)
  2. Mahasiswa mampu menyelesaikan studi kasus dengan menggunakan nested loop

Ulasan Teori

Pengertian Nested Loop

Nested loop (perulangan bersarang) adalah struktur perulangan yang berada di dalam perulangan lainnya. Pada umumnya struktur perulangan yang berada di dalam struktur perulangan lainnya memiliki hubungan yang saling terkait dalam menyelesaikan sebuah kasus. Pada dasarnya tidak ada batasan dalam jumlah perulangan bersarang. Tetapi hal ini sebaiknya tidak terlalu dalam, untuk menghindari kompleksitas yang tinggi serta alur program menjadi lebih sukar dipahami.

Bentuk Umum

Bentuk umum nested loop dapat dilihat pada bagian di bawah ini:

loop-1 {
  loop-2 {
    ...
      loop-n {

      }
    ...
  }
}

Sintaks

Tidak ada perbedaan dalam penulisan sintaks nested loop dengan loop pada umumnya. Dapat digunakan bentuk while, for serta do while. Ilustrasi penulisan sintaks dapat mengikuti contoh di bawah ini:

for (int i = 0; i < 2; i++) {
  for (int j = 0; j < 2; j++) {
    // statement;
  }
}

Catatan: Dalam nested loop tidak harus menggunakan bentuk perulangan yang sama, dapat dikombinasikan sintaks for, while maupun do while. Silahkan sesuaikan dengan kebutuhan studi kasus

Langkah Praktikum

Percobaan 1

Dalam percobaan 1 ini, akan dibuat program untuk menampilkan tampilan persegi sesuai dengan inputan N baris.

  ****
  ****
  ****
  ****
  • Buatlah file baru dengan nama Square.java
  • Deklarasikan dengan nama class Square serta buatlah fungsi main.
  • Program membutuhkan inputan, sehingga dibutuhkan deklarasi import untuk class Scanner

    import java.util.Scanner;
    
  • Deklarasikan serta instansiasi variabel object Scanner dengan nama input.

    Scanner input = new Scanner(System.in);
    
  • Tampilkan instruksi kepada user untuk memasukkan nilai N dan simpan ke dalam sebuah variabel.

    System.out.print("Masukkan nilai N: ");
    int N = input.nextInt();
    
  • Buatlah blok nested loop

    for (int i = 0; i < N; i++) {
      for (int j = 0; j < N; j++) {
    
      }
    }
    
  • Tambahkan statement instruksi untuk mencetak tanda * pada blok nested loop

    System.out.print("*");
    
  • Tambahkan statement instruksi untuk mencetak \n (newline) sehingga untuk bagian nested loop menjadi kode seperti berikut.

    for (int i = 0; i < N; i++) {
      for (int j = 0; j < N; j++) {
        System.out.print(*);
      }
      System.out.println();
    }
    
  • Compile dan jalankan program!

  • Amati program, apakah sudah sesuai dengan hasil yang diharapkan!
Pertanyaan
  1. Jelaskan bagaimana statement System.out.print("*") dapat menampilkan tanda * menjadi bentuk persegi!
  2. Modifikasi program menjadi tampilan segitiga dan simpan dalam file Triangle.java!

    *
    **
    ***
    ****
    

Percobaan 2

  • Buatlah file baru dan simpan dengan nama Quiz.java
  • Deklarasikan class serta blok fungsi main
  • Pada percobaan ini, dibutuhkan fungsi mengacak angka. Sehingga dibutuhkan library class Random.

    import java.util.Random;
    
  • Tambahkan juga library class Scanner.

    import java.util.Scanner;
    
  • Pada blok fungsi main, deklarasikan variabel yang dibutuhkan.

    Random random = new Random();
    Scanner input = new Scanner(System.in);
    
  • Kemudian tambahkan logika perulangan berikut.

    char menu = 'y';
    do {
      int number = random.nextInt(10) + 1;
      boolean success = false;
      do {
        System.out.print("Tebak angka (1-10): ");
        int answer = input.nextInt();
        input.nextLine();
        success = (answer == number);
      } while (!success);
      System.out.print("Apakah anda ingin mengulang permainan (Y/y)? ");
      menu = input.findInLine(".").charAt(0);
      input.nextLine();
    } while(menu == 'y' || menu == 'Y');
    

    Catatan: Statemen input.nextLine() pada potongan kode di atas digunakan untuk mengabaikan karakter new line.

  • Compile dan jalankan program! Amati jalannya alur program!

Pertanyaan
  1. Jelaskan alur perulangan yang terjadi pada program di atas!
  2. Modifikasi program sehingga bisa menginformasikan, jika tebakan angka lebih kecil, lebih besar atau jawaban benar kepada user!

Tugas

  1. (NumberTriangle) Buatlah program untuk mencetak tampilan segitiga angka seperti di bawah ini (jumlah baris 2 dan 4) berdasarkan input jumlah baris! (jumlah baris minimal 1).

              1
             12
     1      123
    12     1234
    
  2. (HourGlass) Buatlah program untuk mencetak tampilan seperti di bawah ini (jumlah N 2 dan 4) berdasarkan input N! (jumlah N minimal 2).

           *******
            *****
             ***
              *
    ***      ***
     *      *****
    ***    *******
    
  3. (NumberSquare) Buatlah program untuk mencetak tampilan seperti di bawah ini (jumlah baris 3 dan 5) berdasarkan input jumlah baris! (jumlah baris minimal 3).

         555555
         5    5
    333  5    5
    3 3  5    5
    333  555555
    
  4. (OppositeNumber) Buatlah program untuk mencetak tampilan seperti di bawah ini (jumlah baris 3 dan 6) berdasarkan input jumlah baris! (jumlah baris minimal 2).

                1 2 3 4 5 6
                6 5 4 3 2 1
                1 2 3 4 5 6
    1 2 3       6 5 4 3 2 1
    3 2 1       1 2 3 4 5 6
    1 2 3       6 5 4 3 2 1
    
  5. (PineTree) Buatlah program untuk mencetak tampilan seperti di bawah ini (jumlah N 2 dan 3) berdasarkan input jumlah N! (jumlah N minimal 1).

             *
            ***
           *****
             *
            ***
     *     *****
    ***      *
     *      ***
    ***    *****
    
  6. (PrimeNumber) Tampilkan bilangan prima sejumlah N! (nilai N minimal 1)

    N = 4
    2 3 5 7
    
    N = 1
    2
    

results matching ""

    No results matching ""