Herkese merhaba. 😊 Bu yazıda while döngüsünün kardeşi olan do while döngüsünü inceleyeceğiz. do while döngüsünün çalışma mantığı neredeyse while döngüsü gibidir. While döngüsünü kısaca hatırlamamız gerekirse, program while satırına geldiğinde önce koşuluna bakar daha sonradan koşul true dönerse döngüye devam ederdi. Ancak bazı durumlarda döngünün içerisindeki ifadenin en az bir kere çalışmasını isteyebiliriz. Bunu while koşulu ile sağlayabileceğimizi düşünebilirsiniz ancak bazı istisnai durumlarda while da yeterli olmuyor. Her zamanki gibi kullanım şekline yakından baktıktan sonra örneklerle devam edeceğiz.

C# Do While Döngü Yapısı

 

do
{
   ...
   çalışacak kodlar
   ...
}while(koşul);

Gördüğünüz gibi program do ifadesini gördükten sonra en az bir kere çalışacaktır. While satırına geldiğinde koşul doğru olduğu sürece döngü çalışmaya devam eder. Klasik ekrana sayı yazdırma örneğimiz ile başlayalım.

int a = 0;
do
{
   Console.WriteLine(a);
   a++;
}while (a < 5);

Do While Örnekleri 1

Program çalışmaya başladığında ekrana a’nın ilk değeri 0’ı yazdırdı. Daha sonra a’yı 1 arttırıp koşulun doğruluğunu kontrol ediyor. 1 5’ten küçük olduğu için true sonucu dönüyor ve tekrar içeri giriyor. Ekrana 1 değerini yazdırdıktan sonra a değişkeni tekrar 1 artarak 2 oluyor. While satırında 2 5’ten küçük olduğu için tekrar true sonuç dönüyor ve döngü bu şekilde dönmeye devam ediyor. Ta ki a değişkeni 4 değerini alana kadar. a 4 olduğunda ekrana değerini yazdırdıktan sonra 1 artarak 5 oluyor. Koşula baktığında 5 5’ten küçük değil. False dönerek döngü sonuçlanıyor.

Başka bir örnek ile while döngüsünden farkını daha iyi görelim.

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

int y = 42;
while(y < 10)
{
   Console.WriteLine(y);
   y++;
}

Do While Örnekleri 2

Burada ekrana sadece 42 değerini yazdırıyor. Çünkü ilk döngüde koşula bakmaksızın en az 1 kere çalışma garantisi veriyor. Ekrana 42 değerini yazdırdıktan sonra değişkeni bir arttırıp koşula baktığında 43 10’dan küçük olmadığı için false dönüyor ve döngü sonlanıyor. Tamamen aynı şekilde yazılmış olan while döngüsünde ise ilk önce 42’nin 10’dan küçük olup olmadığına bakıldı. Koşul false olduğu için while döngüsü çalışmıyor ve program sonlanıyor.

Kullanıcı tamam diyene kadar girdiği sayıların toplamını yazan daha sonra devam etmek istiyor musunuz sorusuna verilecek E ya da H cevabı ile sonlanacak bir program yazalım. Bu kısmı cevaba bakmadan kendiniz yaparak pratik kazanabilirsiniz.

Uygulama örnek çözümü

int sum = 0, num = 0;
bool flag = false, flag1 = false;
string isOk = string.Empty;
ConsoleKeyInfo answer;

do
{
    //Konsol ekranını temizlemek için kullanılır.
    Console.Clear();
    //Program yeniden başladığında toplamın içerisindeki değerin temizlenmesi gerekir.
    sum = 0;
    Console.WriteLine("Sayı girişini sonlandırmak için tamam yazabilirsiniz.");
    do
    {
        isOk = Console.ReadLine();
        //Kullanıcıdan aldığımız cevabın kontrolü yapılır.
        flag = isOk != "TAMAM" && isOk != "Tamam" && isOk != "tamam";

        if (flag)
        {
            /*TryParse metodu Convert metodu gibi çalışır. İçerisine aldığı string değerini integer değişkene atar. 
String değer sayıya dönüştürülebiliyorsa sonuç true, dönüştürülemiyorsa false döner 
(out anahtar kelimesini daha detaylı inceleyeceğiz)*/
            flag1 = int.TryParse(isOk, out num);

            //Kullanıcı geçerli bir sayı girene kadar kullanıcıya uyarı vermeye devam edilecek.
            //Kullanıcı tamam yazdıysa programdan çıkılacak
            while (!flag1 && flag)
            {
                Console.WriteLine("Lütfen geçerli bir sayı giriniz!");
                isOk = Console.ReadLine();
                flag = isOk != "TAMAM" && isOk != "Tamam" && isOk != "tamam";
                flag1 = int.TryParse(isOk, out num);
            }

            //Kullanıcının girdiği sayıların toplamının alındığı kısım.
            sum += num;
        }
        //Kullanıcı tamam dışında değer girmeye devam ettikçe sayı almaya devam edilecek.
    } while (flag);
    Console.WriteLine($"Girdiğiniz sayıların toplamı: {sum}");
    Console.WriteLine("Yeni bir işlem yapmak istiyor musunuz? E|H");

    /*ReadKey metodu klavyeden basılan tuşu yakalamamızı sağlar. Bu sayede kullanıcı E dışında bir tuşa bastığında programı sonlandırabiliriz. 
Dilerseniz buraya if kontrolü koyup E ya da H dışında bir tuşa basıldığında hata mesajı gösterebilirsiniz.*/
    answer = Console.ReadKey();
} while (answer.Key == ConsoleKey.E);

Do While Örnekleri 3

C# içerisinde do while döngüsünün yapısı özetle bu şekilde. Örneklerin hepsini github hesabımda deryadok.com isimli repoda bulabilirsiniz. Bir sonraki yazıya kadar kendinize iyi bakın. 😊