Bu makalemizde C# döngüler konusunda bilgiler vereceğiz. C# döngüleri olan for döngüsü, while döngüsü ve foreach döngüsünü ayrıntılı bir şekilde açıklayacağız. C# ta döngülerin kullanımını çeşitli örnekler kodlarla açıklayacağız.
Örneğin for döngüsünün tersten yazımını ve C# ile iç içe for döngüsü oluşturmayı göstereceğiz. Ayrıca while döngüsünün do while olarak kullanımını ve farklarını da açıklayacağız.
C# Döngüler
Programlamada döngüler genel olarak tekrar eden işlemleri kolaylaştırmak için kullanılırlar. Döngüler konusunda ilk akla gelen 1′ den 100′ e kadar olan sayıları ekrana yazdırma örneğinde olduğu gibi tekrarlı işlemlerde döngüler kullanılır. Sözü edilen örnekte sayıları ekrana yazdırmak için 100 satır kod yazmak gerekirken bu işlemi döngüler ile yaptığımızda 4 satır kodla işlemi tamamlamış oluruz.
C# While Döngüsü
C# while döngüsü, döngü için yazılan koşul sağlandığı sürece çalışan bir döngüdür. Bir veri kaynağından veri okurken yada ekrana veri yazdırırken sıklıkla kullanılır. Kullanımı oldukça basittir.
Örnek olarak, 1’den 100′ e kadar olan sayıları while döngüsü ile yazmak istediğimizde kodlamamız aşağıdaki gibi olur.
int sayi = 1; while (sayi<100) { Console.WriteLine(sayi); sayi++; }
C# Do While Döngüsü
C# do while döngüsünün while döngüsünden tek farkı, döngü ilk kez döneceğinde koşul kontrol edilmez. Yani koşul sağlanmıyor olsa bile en az 1 kez döngü çalışır. Bu özelliğinden dolayı koşulun sağlanmama ihtimalinin yüksek olduğu ve döngünün en az bir kez çalıştırılması istendiğinde kullanılır.
Yukarıdaki örnekteki sayi değişkeninin değerini 100 olarak değiştirip do while döngüsünün nasıl çalıştığını görebiliriz.
do { Console.WriteLine(sayi); sayi++; } while (sayi < 100);
C# For Döngüsü
C# for döngüsü sayı temelli işlemlerde sıklıkla kullanılan döngüdür. Döngünün koşulunu tanımlayan int türünden bir değişken bulunur ve bu değerin maksimum (ters kullanımında minimum) değeri döngünün koşulunu oluşturur. For döngüsünün örnek kullanımı aşağıdaki gibidir.
for (int i = 0; i < 100; i++) { Console.WriteLine(i); }
Bu örneğin ekran çıktısı 0 ile 99 arasındaki sayılardır. Çünkü döngü değişkeni 0′ dan başlar ve 100′ den küçük olduğu sürece döner. Bu durumda da ekrana en son 99 sayısını yazar. Bu örneği 1 ile 100 arasındaki sayıları yazdırmak üzere değiştirdiğimizde kodlamamız şöyle olur;
for (int i = 1; i < 101; i++) { Console.WriteLine(i); }
Örneğimizi biraz değiştirerek 1′ den 100′ e kadar olan tek sayıları yazdırmak istediğimizde döngü değişkeninin artış değerini i+=2 olarak değiştirmemiz yeterli olacak. Aynı şekilde çift sayılar için de i değerini 0′ dan başlatıp artış değerini i+=2 olarak değiştirmemiz yeterli olur.
C# for döngüsü yön olarak sadece artış göstermek zorunda değildir. Döngü koşulu tersine çevrilebilir. Örneğin sayıları 100′ den 1′ e doğru yazdırmak istediğimizde bu for döngüsü ile oldukça kolaydır.
for (int i = 100; i > 0; i--) { Console.WriteLine(i); }
Diğer matematiksel işlemlerde for döngüsü ile kolaylıkla yapılabilir. Örneğin 5 sayısının faktöriyelini bulmak için yapılması gereken 1x2x3x4x5 işlemi for döngüsü ile aşağıdaki gibi yapılır.
int faktBulunacakSayi = 5; int sonuc = 1; for (int i = 1; i <= faktBulunacakSayi; i++) { sonuc *= i; } Console.WriteLine(sonuc);
C# iç içe for döngüsü
C# iç içe for döngüsü, üzerinde hareket edilmesi gereken birden çok sayı olduğu durumunda kullanılır. Örneğin çok boyutlu dizilerde, satır ve sütunlardan oluşan tablolarda iç içe for döngüsü ile işlemler kolaylıkla yapılır.
C# ile iç içe for döngüsünü daha iyi anlatabilmek için bir çarpım tablosu örneği hazırlayalım. Bu örnektede olduğu gibi dıştaki döngü 1 kez döndüğünde içteki for döngüsü 10 kez döner. Bu sayede çarpım tablosundaki gibi işlemler kolaylıkla yapılır.
for (int i = 1; i < 11; i++) { for (int j = 1; j < 11; j++) { Console.WriteLine(i*j); } Console.WriteLine(); }
C# Foreach Döngüsü
C# foreach döngüsü diğer döngülerden biraz farklıdır. Örneğin for döngüsü i değişkeni ile sayılar üzerinde dönerken, foreach döngüsü nesne elemanları üzerinde döner. Programımızda ay isimlerini tuttuğumuz bir string dizi varsa, ay isimlerine erişmek için foreach döngüsü kullanabiliriz.
string[] aylar = { "Ocak", "Subat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık" }; foreach (string ay in aylar) { Console.WriteLine(ay); }
Yukarıdaki örneğimizin ilk satırında aylar isminde string tipinde bir dizi oluşturduk ve ay isimlerini (Ocak, Şubat) bu diziye eleman olarak atadık. 2. satırda foreach döngüsü değişkeni olarak string tipinde ay değişkeni ve bu değişkene atanacak olan değerleri tutan aylar dizimizi tanımladık. Dolayısı ile döngü her döndüğünde sırasıyla her bir ay ismi değişkene aktarılmış olacak.
C# döngüler konusunun sonuna geldik. Konu ile ilgili sormak istediklerinizi yada karşılaştığınız sorunları aşağıdaki yorum bölümünden iletebilirsiniz.
foreach döngüsünde dönen elemanın sırasını alabilir miyiz ? yani ocak aylar dizisinde 0. eleman ya bu 0 ı elde edebilmek mümkün mü ? aynı şekilde mesela nisan 3. eleman bu elemana geldiğimizde 3. elemanda olduğumuzu yakalayabilmek adına 3 ü elde edebilir miyiz ?
Dizilerin indexof metodu bu ihtiyacını karşılar. Örneğin aylar için şöyle kullanabilirsin:
foreach (string ay in aylar)
{
int index = Array.IndexOf(aylar, ay);
Console.WriteLine(ay);
}