Dasar Pemrograman
Jobsheet 11 - Perulangan 2
Kompetensi
- Mahasiswa mampu memahami bentuk dasar perulangan bagian 2 (nested loop)
- 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
maupundo 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 fungsimain
. 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 loopSystem.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
- Jelaskan bagaimana statement
System.out.print("*")
dapat menampilkan tanda*
menjadi bentuk persegi! 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
- Jelaskan alur perulangan yang terjadi pada program di atas!
- Modifikasi program sehingga bisa menginformasikan, jika tebakan angka lebih kecil, lebih besar atau jawaban benar kepada user!
Tugas
(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
(HourGlass) Buatlah program untuk mencetak tampilan seperti di bawah ini (jumlah N 2 dan 4) berdasarkan input N! (jumlah N minimal 2).
******* ***** *** * *** *** * ***** *** *******
(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
(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
(PineTree) Buatlah program untuk mencetak tampilan seperti di bawah ini (jumlah N 2 dan 3) berdasarkan input jumlah N! (jumlah N minimal 1).
* *** ***** * *** * ***** *** * * *** *** *****
(PrimeNumber) Tampilkan bilangan prima sejumlah N! (nilai N minimal 1)
N = 4 2 3 5 7 N = 1 2