C# For Döngüsü
- 607
- (1)
- (5)
- 25 May 2017
Döngüler hemen hemen bütün programlama dillerinde sıkça kullanılan bir tekniktir. Arka arkaya belli bir miktarda veya koşula bağlı gerçekleşen işlemlerde döngü kullanmak bir zorunluluktır.
for
döngüsünün yapısı genel olarak şöyle gösterilebilir.
for (ilk_değer; koşul; sayaç)
{
// işlemler...
}
for (int i = 0; i < 10; i++)
{
// işlemler...
}
İlk parametre kısmında döngü için bir i
değişkeni tanımlanıyor ve ilk değeri 0 olarak belirleniyor. İkinci kısımda hangi koşul altında döngünün çalışmaya devam edeceği belirtiliyor ki, bu koşul aynı if
ve while
koşulları gibi bool
cinsinden bir ifadedir. Üçüncü kısımda ise her adımda bu değişkenin ne kadar değişeceği belirtiliyor. Burada döngü i
10' dan küçük olduğu sürece 1 artarak dönmektedir.
Aynı döngü için her seferinde i
değeri konsol ekranına yazdırılırsa aşağıdaki gibi bir kod kullanmak gerekir.
for (int i = 0; i < 10; i++)
{
Console.WriteLine($"{i} değeri yazıldı");
}
Ekran çıktısı aşağıdaki gibi olacaktır.
1' den 50' ye kadar olan sayılar arasında hangi sayıların 7, 11 ve 13' e tam bölündüğünü ve adetlerini hesaplayan bir kod yazılabilir.
int count7 = 0, count11 = 0, count13 = 0;
for (int i = 1; i <= 50; i++)
{
if (i % 7 == 0)
{
Console.WriteLine($"{i} değeri 7' ye tam bölünür");
count7++;
}
if (i % 11 == 0)
{
Console.WriteLine($"{i} değeri 11' e tam bölünür");
count11++;
}
if (i % 13 == 0)
{
Console.WriteLine($"{i} değeri 13' e tam bölünür");
count13++;
}
}
Console.WriteLine("--------------------------------------");
Console.WriteLine($"{count7} adet değer 7' e tam bölünüyor");
Console.WriteLine($"{count11} adet değer 11' e tam bölünüyor");
Console.WriteLine($"{count13} adet değer 13' e tam bölünüyor");
Console.ReadKey();
Kod çalıştırıldığında şöyle bir çıktı alınacaktır.
Örnekte if
koşullarının birbirinden bağımsız yazılmasının sebebi aynı sayının hem 7' ye hem de 11' e bölünebilmesidir. 1-50 arasında böyle bir sayı yoktur. Ancak 50 sınırını 100 veya daha yukarı çıkarırsanız bu durumu görebilirsiniz. Bağımlı if
koşullarında yani 2. ve sonraki koşulların else if
olarak yazılması durumunda 77 sayısı 7' ye tam bölünür yazısı yazar ancak 77 sayısı 11' e tam bölünür yazmayacaktır.
Döngüyü Kasıtlı Bitirme (break)
Döngü içerisinde istisnai bir durumda döngüyü kapatmak isteyebilirsiniz. Bu durumları if
koşulu ile denetleyip break
komutu ile döngüyü sonlandırabilirsiniz. Örneğin elinizde string
dizisi türünden bir isim listesi var (string[]
). Bu listedeki isimlerden herhangi birinin ilk harfinin Ş olduğu tespit edilince döngü kapansın.
string[] isimler = new string[] { "Semih", "Yusuf", "Ali", "Tolga",
"Emre", "Hasan", "Necla", "Ayşe", "Şebnem", "Mustafa", "Kerim",
"Lale", "Suat", "Bahattin", "Alparslan", "İsmail", "Tevfik" };
// 17 elemanlı bir dizi tanımlandı
for (int i = 0; i < isimler.Length; i++)
{
string isim = isimler[i]; // dizinin her bir elemanı string türünden
if (isim[0] == 'Ş') // 0 indisli karakter (char) Ş' ye eşitse
{
Console.WriteLine("Döngü sonlandırılıyor");
break;
}
Console.WriteLine($"{isimler[i]} bilgisi işlendi");
}
Console.ReadKey();
Şebnem ismi ve sonrası asla ekrana yazdırılmayacaktır. Çünkü ilk harfi Ş olan isim if
koşulu ile farkedildiğinde ekrana "Döngü sonlandırılıyor" yazar ve ardından break
komutu ile döngü sonlandırılır.
Döngü Adımını Kasıtlı Atlama (continue)
Döngü içerisinde istisnai bir durumda döngüyü kapatmak yerine o adımı atlamak istetebilirsiniz. Bu durumda break
komutu yerine continue
komutu kullanmalısınız. Bir önceki örnekte Ş harfi ile başlayan bir isim tespit edildiğinde döngü sonlanıyordu. Bu sefer Ş ve A harfleri ile başlayan isimler atlansın.
string[] isimler = new string[] { "Semih", "Yusuf", "Ali", "Tolga",
"Emre", "Hasan", "Necla", "Ayşe", "Şebnem", "Mustafa", "Kerim",
"Lale", "Suat", "Bahattin", "Alparslan", "İsmail", "Tevfik" };
// 17 elemanlı bir dizi tanımlandı
for (int i = 0; i < isimler.Length; i++)
{
string isim = isimler[i]; // dizinin her bir elemanı string türünden
if (isim[0] == 'Ş' && isim[0] == 'A') // 0 indisli karakter (char) Ş' ye veya A' ya eşitse
{
Console.WriteLine("Döngü adımı atlanıyor");
continue;
}
Console.WriteLine($"{isimler[i]} bilgisi işlendi");
}
Console.ReadKey();
Çeşitli Örnekler
20 adım boyunca ekrandan sayı okunan ve her adımda tüm sayıların toplamını yazan bir uygulamayı for
döngüsü ile yazmak...
int toplam = 0;
for (int i = 0; i < 20; i++)
{
Console.Write("Sayı Girin: ");
string girilen_sayi_metni = Console.ReadLine();
// sayı ekrandan metin (string) olarak okunur
int sayi = 0;
bool donusturme = int.TryParse(girilen_sayi_metni, out sayi);
// int' e ait TryParse metodu, metni sayıya dönüştürürse true
// dönüştüremezse false değeri döner
if (donusturme) // dönüştürdüyse
toplam += sayi; // toplam değerine sayi değerini ekler
else // dönüştüremediyse
{
Console.WriteLine("Hatalı sayı formatı girdiniz.");
continue; // döngü sonraki adıma atlar
}
Console.WriteLine($"Toplam: {toplam}"); // toplamı ekrana yazar
}
Console.WriteLine("Döngü sona erdi.");
Console.ReadKey();