You are currently viewing Konstruksi Perulangan While dan Do-while Di C#

Konstruksi Perulangan While dan Do-while Di C#

Halo! Selamat datang kembali di “Seri Belajar Dasar Pemrograman Bahasa C#“. Setelah mempelajari bagaimana menggunakan perulangan for di C# pada materi sebelumnya, kali ini kita akan mempelajari satu lagi konstruksi perulangan di C#, yaitu perulangan while dan do-while.

Konstruksi Perulangan while

Konstruksi perulangan while biasanya digunakan pada kasus di mana kita ingin terus menerus mengulang sebuah proses selama suatu kondisi terpenuhi.

Pada saat membuat program C# sederhana di materi sebelumnya, Anda tentunya masih ingat bahwa kita menggunakan konstruksi ini untuk terus menerus meminta pengguna menebak sebuah angka sampai tebakannya benar.

bool guessed = false;

while (!guessed)
{
    // Logika permainan diringkas
    if (ans == randNumber)
    {
        // kode program diringkas                    
        break;
    }
}

Pada kode program di atas, kita mendeklarasikan sebuah variabel boolean dengan nama guessed. Nilai variabel tersebut kita tentukan dengan nilai false.

Pernyataan while di atas akan terus mengevaluasi nilai boolean dari ekspresi di dalam tanda kurung (!guessed). Karena ekspresi tersebut selalu bernilai false, dan menegasi (dengan notasi ‘!’) nilai false menghasilkan nilai boolean true, maka baris kode program di dalam pernyataan while tersebut akan terus menerus dieksekusi.

Jika tebakannya benar, maka perulangan akan disudahi dengan jump-statement break.

Buka kembali program TebakAngka yang telah Anda buat sebelumnya. Ganti pernyataan break dengan kode program di bawah ini, lalu jalankan dan perhatikan keluaran yang Anda dapatkan.

guessed = true;

Selain menggunakan pernyataan break untuk menghentikan eksekusi perulangan while, kita juga bisa mengubah nilai boolean dari variabel yang digunakan sebagai ekspresi pernyataan while (variabel guessed pada program kita). Contohnya, dengan memberikan nilai true pada variabel guessed, nilai boolean dari ekspresi !guessed menjadi bernilai false, sehingga kondisi untuk mengeksekusi perulangan while di atas tidak lagi terpenuhi.

Untuk membuktikan bahwa perulangan while di atas benar-benar telah dihentikan, tambahkan baris kode program di bawah ini tepat di atas baris Console.ReadKey();.

Console.Write("Permainan selesai... ");

Jika tebakannya benar, maka eksekusi perulangan while akan dihentikan, lalu eksekusi akan lompat (dilanjutkan) ke baris Console.Write("Permainan selesai... ");. Sehingga, Anda akan mendapatkan keluaran seperti gambar di bawah ini.

keluaran pada program tebak angka

Konstruksi Perulangan do-while

Apabila konstruksi perulangan while akan mengevaluasi sebuah ekspresi boolean terlebih dahulu sebelum memutuskan mengeksekusi kode program di dalam blok pernyataan while, Konstruksi perulangan do-while memungkinkan kita mengeksekusi sebuah proses paling tidak sekali sebelum sebuah ekspresi boolean dievaluasi.

Untuk membantu pemahaman Anda, buat sebuah aplikasi console dengan nama KonstruksiPerulangan. Tambahkan kode program di bawah ini ke dalam method Main().

bool doRepeat = false;

do
{
    Console.Write("Apakah anda ingin mengulangi? (Y/N)");
    string ans = Console.ReadLine();
    
    if (ans.ToLower() == "y") 
        doRepeat = true; 
    else
        doRepeat = true;
}
while (doRepeat);

Console.Write("Terima kasih...");

/*
Output:
Apakah anda ingin mengulangi? (Y/N)Y
Apakah anda ingin mengulangi? (Y/N)Y
Apakah anda ingin mengulangi? (Y/N)Y
Apakah anda ingin mengulangi? (Y/N)Y
Apakah anda ingin mengulangi? (Y/N)N
Terima kasih...
*/

Pertama-tama, kita mendeklarasikan variabel doRepeat dengan tipe bool dan bernilai false.

Ketika pernyataan do-while mulai dieksekusi, pernyataan ini akan mengeksekusi baris kode program di dalam blok pernyataan do tanpa terkecuali. Setelah baris kode program di dalam blok do selesai dieksekusi, baru kemudian pernyataan while akan mengevaluasi ekspresi di dalam tanda kurung (doRepeat).

Jika ekspresi yang dievaluasi oleh pernyataan while bernilai true, maka kode program di dalam pernyataan do akan kembali dieksekusi. Begitu seterusnya, sampai ekspresinya bernilai false.

Kode program di atas saat pertama dijalankan, tidak peduli apakah nilai ekspresi doRepeat bernilai true atau false, akan menampilkan teks “Apakah Anda ingin mengulangi?” di layar console. Selama kita memberikan huruf ‘Y’ atau ‘y’ sebagai masukan, kode program di dalam blok pernyataan do akan kembali dieksekusi.

Begitu kita memberi masukan selain nilai ‘Y’ atau ‘y’ (misalnya, ‘N’), eksekusi akan keluar dari perulangan do-while dan kemudian mengeksekusi baris
Console.Write("Terima kasih...");.

Menggunakan Perulangan while VS for

Apakah kita bisa melakukan operasi yang dilakukan oleh perulangan for dengan menggunakan perulangan while? Jawabannya, sangat bisa.

Operasi pengulangan dan perulangan baik dengan pernyataan for maupun pernyataan while di bawah ini, akan menghasilkan keluaran yang sama persis.

Console.WriteLine("=> Perulangan menggunakan pernyataan for");
for (int i = 0; i < 10; i++)
{
    Console.Write("({0})", i);
}

Console.Write("\n\n");

Console.WriteLine("=> Perulangan menggunakan pernyataan while");
int m = 0;
bool kondisi = false;

while (!kondisi)
{
    Console.Write("({0})", m);
    m++;
    kondisi = m >= 10;
}

/*
Output:
=> Perulangan menggunakan pernyataan for
(0)(1)(2)(3)(4)(5)(6)(7)(8)(9)

=> Perulangan menggunakan pernyataan while
(0)(1)(2)(3)(4)(5)(6)(7)(8)(9)
*/

Pertanyaannya kemudian, mengapa C# menyediakan pernyataan for dan juga pernyataan while? Toh hasilnya sama saja!

Sebagai programmer, kita harus memiliki prinsip bahwa menulis kode program itu tidak sekedar asal bisa menghasilkan keluaran sesuai dengan ekspektasi. Prinsipnya, kita menulis tidak hanya agar bisa dimengerti compiler, tapi juga agar bisa dimengerti orang lain (termasuk diri kita sendiri di masa depan yang mungkin bisa jadi bingung dengan kode program yang dulu pernah kita tulis sendiri).

Meskipun menghasilkan keluaran yang sama persis, bandingkan kedua konstruksi di atas. Konstruksi mana yang membutuhkan lebih banyak baris program? Apakah konstruksi perulangan for atau perulangan while?

Sekarang bayangkan Anda menggunakan perulangan while dibanding menggunakan perulangan for untuk melakukan iterasi (pengulangan) pada sebuah matriks dua dimensi.

Console.WriteLine("=> Iterasi bersarang menggunakan for");
for (int i = 0; i < 10; i++) // iterasi baris
{
    for (int j = 0; j < 10; j++) // iterasi kolom
    {
        Console.Write("({0}, {1})", i, j);
    }

    Console.Write("\n");
}

Console.Write("\n\n");

Console.WriteLine("=> Iterasi bersarang menggunakan while");
int m = 0;
int n = 0;
bool kondisi1 = false;
bool kondisi2 = false;

while (!kondisi1)
{
    while (!kondisi2)
    {
        Console.Write($"({m}, {n})");
        n++;
        kondisi2 = n > 2;
    }
    m++;
    kondisi1 = m > 2;

    n = 0;
    kondisi2 = false;
    Console.Write("\n");
}

/*
output:
=> Iterasi bersarang menggunakan for
(0, 0)(0, 1)(0, 2)
(1, 0)(1, 1)(1, 2)
(2, 0)(2, 1)(2, 2)

=> Iterasi bersarang menggunakan while
(0, 0)(0, 1)(0, 2)
(1, 0)(1, 1)(1, 2)
(2, 0)(2, 1)(2, 2)
*/

Kedua konstruksi iterasi di atas baik menggunakan for maupun while menghasilkan keluaran yang sama persis. Tapi, lihat bagaimana rumitnya melakukan perulangan bersarang menggunakan perulangan while dibanding perulangan for.

Saran saya, gunakan konstruksi perulangan yang sesuai dengan kebutuhan Anda. Jika menggunakan perulangan while terasa rumit untuk sebuah kasus, coba gunakan perulangan for. Begitu pula sebaliknya.

Selain rumit, variabel yang digunakan sebagai ekspresi pada pernyataan while harus dideklarasikan di luar blok perulangan while. Sedangkan variabel yang digunakan sebagai ekspresi di pernyataan for, dideklarasikan di dalam pernyataan for itu sendiri.

Anda akan mengerti mengapa menentukan ruang lingkup variabel menjadi hal yang patut dipertimbangkan pada saat mendeklarasikan variabel, setelah mempelajari materi tentang lingkup variabel dan alokasi memori di C#.

Penutup

Pada materi kali ini, kita telah mempelajari bagaimana menggunakan konstruksi perulangan while dan do-while di C#.

Perulangan while bisa kita gunakan untuk menjalankan suatu proses secara berulang-ulang selama suatu kondisi terpenuhi.

Perulangan while yang akan mengevaluasi sebuah ekspresi terlebih dahulu apakah bernilai true atau false, baru kemudian memutuskan apakah kode program di dalam blok pernyataan while dieksekusi atau tidak. Sementara, perulangan do-while paling tidak akan mengeksekusi kode program di dalam blok pernyataan do sekali tanpa menghiraukan apakah ekspresi pada pernyataan while bernilai true atau false.

Sampai di sini dulu materi kita kali ini. Jika Anda masih merasa kesulitan dalam memahami materi ini, jangan menyerah! Tulis kesulitan atau pertanyaan Anda di kolom komentar, saya akan membantu.

Selamat belajar!

Tinggalkan Balasan