Bab 3, Looping

Ringkasan

Dalam pembuatan program, ada kalanya kita menuliskan sebuah instruksi atau lebih yang sama untuk dijalankan secara berulang-ulang berdasarkan kondisi tertentu.

Misalkan ada potongan kode seperti ini:

// menghitung nilai dari 5!
int hasil = 1;
hasil *= 5;
hasil *= 4;
hasil *= 3;
hasil *= 2;

Itu kalau bilangan nya kecil, kalau bilangan yang dicari nilai faktorialnya, misalkan 100!, apakah mau menulis kode semubazir itu? :p

Akan lebih nyaman kalau kode diatas bisa ditulis sebagai berikut

int hasil = 1;
int N = 5;

for (int i = 1 ; i <= N ; i++) {
    hasil *= i;
}

Lebih simple, kan? Maka dari itu, dalam bab ini kita akan mengulas tentang looping.

For loop

Dalam skema ini, looping for lazim digunakan untuk looping dengan jumlah yang pasti. Semisal looping sebanyak 10x. Analoginya seperti ini: Kita berlari memutari lapangan sepak bola 10x.

Anatomi dari for loop sebagai berikut

for (inisialisasi ; kondisi ; increment/decrement) {
    // blok program yang akan diulang
}

Bagian-bagiannya akan dijelaskan disini:

  • inisialisasi : digunakan untuk menetapkan nilai awal yang digunakan dalam loop
  • kondisi : digunakan untuk pengecekan kondisi, for loop akan dijalankan selama kondisi bernilai true
  • increment/decrement : digunakan untuk mengurangi/menambahkan nilai dari variabel.

Contoh :

for (int i = 1 ; i <= 10 ; i++) {
    System.out.println("Telah berputar "+i+" kali");
}

Potongan kode diatas akan mencetak output :

Telah berputar 1 kali
Telah berputar 2 kali
Telah berputar 3 kali
Telah berputar 4 kali
Telah berputar 5 kali
Telah berputar 6 kali
Telah berputar 7 kali
Telah berputar 8 kali
Telah berputar 9 kali
Telah berputar 10 kali

Mengapa bisa terjadi?

Looping akan terus dijalankan jika nilai i kurang dari/sama dengan 10. Kalau nilai i lebih besar dari 10 bagaimana? Looping akan berhenti, karena tidak akan memenuhi kriteria i <= 10.

For loop bisa digunakan untuk infinite loop

for (;;) {
    // statement
}

While loop

Untuk while loop, sama saja seperti for loop, namun perbedaanya terletak di syntax nya saja :p (ya jelas laah --"). Jika dianalogikan, seperti ini: Kita berlari memutari lapangan sepak bola sampai tepar.

Anatomi dari while loop sebagai berikut

while (kondisi) {
    // blok statement
}

Blok statement akan dijalankan selama kondisinya bernilai true.

Mana increment/decrement nya?! Increment maupun decrement terletak di blok statement.

Contoh :

int i = 1;
while (i <= 10) {
    System.out.println("Telah berputar "+i+" kali");
    i++; // increment
}

Output nya sama seperti di atas

Telah berputar 1 kali
Telah berputar 2 kali
Telah berputar 3 kali
Telah berputar 4 kali
Telah berputar 5 kali
Telah berputar 6 kali
Telah berputar 7 kali
Telah berputar 8 kali
Telah berputar 9 kali
Telah berputar 10 kali

Apakah bisa digunakan untuk infinite loop? Bisa!

int i = 1;
while (true) {
    System.out.println("Telah berputar "+i+" kali");
    i++; // increment
}

Output

Telah berputar 1 kali
Telah berputar 2 kali
Telah berputar 3 kali
Telah berputar 4 kali
.
.
.
(infinite)

Do-while loop

Ini adalah skema looping yang berbeda diantara yang lain. Meskipun kondisi yang akan dicek ternyata bernilai false, ia akan melakukan proses setidaknya satu kali.

Agar tidak bingung, coba bandingkan output dari kedua potongan kode berikut

int x = 6;
do {
    System.out.println(x);
    x++;
} while (x <= 5);
int x = 6;
while (x <= 5) {
    System.out.println(x);
    x++;
}

Mudah bukan?

Untuk contoh kasus terkait looping silakan lihat disini