Perulangan 'while'

Sebuah while loop akan mengulangi suatu blok kode terus menerus selama kondisinya terpenuhi. While loop ditulis dengan cara yang mirip seperti kita menulis sebuah if statement:

while (kondisi)
{
    // Kode yang ditulis disini akan diulangi terus menerus selama kondisinya true
}

Contoh sederhana untuk menghitung dari satu sampai sepuluh:

int x = 1;
while (x <= 10)
{
    Console.WriteLine(x);
    x++;
}

Mari kita coba lihat apa yang dilakukan komputer ketika menjalankan kode ini. Dimulai dari ketika variabel x memiliki nilai 1. Program lalu mengecek kondisi pada while loop dan bertanya, “apakah x kurang dari atau sama dengan 10?” Ini benar, jadi kode yang ada di dalam blok while akan di jalankan, yaitu menuliskan nilai dari x (yang mana isinya adalah 1), lalu menambah 1 ke variabel x. Ketika program sampai di akhir kurung kurawal, program kembali ke atas, mengecek kondisinya lagi. Kali ini, x sudah berubah. Sekarang x bernilai 2. Kondisinya masih true (2 itu masih kurang dari sama dengan 10) dan loopnya diulangi lagi, mencetak angka “2” dan menambah x menjadi 3. Ini akan terjadi 10 kali totalnya, sampai x menjadi 11. Ketika program mengecek apakah 11 kurang dari atau sama dengan 10, kondisinya tidak lagi true, dan alur eksekusinya melompat ke bawah melewati akhir loop.

Hal yang perlu diingat adalah begitu mudahnya menuliskan bug dalam kode sehingga kondisi dari loop tidak akan pernah false. Coba bayangkan jika di contoh program di atas, apabila baris x++; tidak ada di sana. Program akan terus mengulangi loop, dan x akan terus bernilai 1. Programnya tidak akan pernah berakhir. Masalah ini sangat umum, bahkan hingga punya namanya sendiri: infinite loop.

Untuk mengatasi masalah tersebut, kalian mungkin perlu menghentikan sementara eksekusi program, lalu mengamati di mana program terjebak, tutup programnya, lalu atasi masalahnya di kodemu dan restart programnya.

Sementara kita dalam subjek infinite loop, sebenarnya biasanya ada yang membuatnya dengan sengaja. Terdengar aneh, tetapi mudah dilakukan:

while (true)
{
    // Tergantung apa yang di tulis disini, ini tidak akan berakhir
}

Tergantung apa yang kalian tulis di dalam loop (seperti statement break yang akan kita bahas nanti) kalian tidak akan bisa keluar dari loop.

Berikut salah satu contoh yang lebih rumit (dan lebih berguna) yang mana mengulangi terus menerus sampai user memasukkan sebuah angka antara 0 dan 10:

int angkaPemain = -1;

while (angkaPemain < 0 || angkaPemain > 10)
{
    // Kode di sini akan di ulangi sampai pemain mengetikkan angka diantara 0 dan 10.
    Console.Write("Masukkan angka di antara 0 dan 10: ");
    string responsPlayer = Console.ReadLine();
    angkaPemain = Convert.ToInt32(responsPlayer);
}

Hal yang perlu diingat dengan while loop adalah, while mengecek kondisi sebelum memasuki loop. Jadi jika kondisinya sudah tidak terpenuhi dari awal, while tidak akan pernah menjalankan blok kodenya. Pada contoh di atas, penting untuk kita mengisi angkaPemain menjadi -1 di awal, karena jika kita mengisinya dengan 0, alur eksekusinya akan langsung melompat melewati blok while loop, dan pemain tidak akan pernah memilih angka.

Seperti if statement, jika kalian mempunyai satu statement saja dalam sebuah while loop (atau loop lainnya) kurung kurawal adalah opsional.

Do-While loop

Tipe loop berikutnya yang akan kita lihat adalah sebuah variasi dari while loop. Yaitu do-while loop. Ingat bahwa sebuah while loop akan mengecek kondisinya terpenuhi terlebih dahulu, dan jika tidak, akan melewati loopnya langsung. (Ini bukanlah hal yang buruk; tetapi hanyalah sesuatu yang perlu diingat. Sebagian besar waktu, itulah yang kalian inginkan.)

Sebaliknya, do-while loop akan selalu mengeksekusi kode nya paling tidak sekali. Ini berguna jika kalian ingin mempersiapkan sesuatu dulu untuk pertama kali pada loop, dan kalian benarbenar tahu bahwa ini perlu dilakukan paling tidak sekali.

Mari kita lihat kembali contoh sebelumnya, karena itu merupakan kandidat utama untuk sebuah do-while loop. Masih ingat bahwa kita perlu untuk menyiapkan angkaPemain menjadi -1, untuk memaksanya agar memasuki loop paling tidak sekali? Melakukan ini menggunakan do-while loop akan menyelesaikan kebutuhan tersebut:

int angkaPemain;

do
{
    // Kode di sini akan di ulangi sampai pemain mengetikkan angka diantara 0 dan 10.
    Console.Write("Masukkan angka di antara 0 dan 10: ");
    string responsPlayer = Console.ReadLine();
    angkaPemain = Convert.ToInt32(responsPlayer);
}
while (angkaPemain < 0 || angkaPemain > 10);

Untuk membentuk sebuah do-while loop, kita meletakkan keyword do pada awal loop, dan di akhir, kita masukkan keyword while. Perhatikan juga bahwa kalian perlu menuliskan titik koma di akhir baris while. Selain itu sama semua, tetapi kali ini, kalian tidak perlu mengisi variabel angkaPemain di awal karena kita tahu bahwa loop akan di eksekusi paling tidak sekali sebelum kondisinya di cek.

Last updated