C# İç İçe For Döngüleri Konu Anlatımı

0

Bu makalemizde sizlere C#’ta İç İçe For Döngüleri nasıl kullanılır,nasıl çalışır ve mantığı nedir anlatmaya çalışacağım. For Döngüsü Konu Anlatımı adlı makalemizde olduğu gibi basit ve anlaşılır bir şekilde ilerleyeceğim.

Hadi Başlayalım. Önceki makalemizde sizlerle C#’ta For Döngüsü Konu Anlatımı adlı makalemizi paylaşmış ve tane tane anlatmaya çalışmıştım. Bundan önce For Döngüsü Konusuna ulaşmak isterseniz TIKLAYINIZ.

Bildiğimiz üzere For Döngüsünün ana mantığı, bazı işlemlerin belirli sayıda kısa yoldan yaptırılması için kullanılır. Bu işlemler ve örnekler farklılık gösterebilir. Matrisler, Çarpım Tabloları gibi bazı örnekler sadece tek bir For Döngüsü ile yapılacak işlemler değillerdir. Bu yüzden bizlerin yardımına İç İçe For Döngüleri yetişir ki gayet kullanışlı bir yöntem olduğunu sizlerde göreceksiniz.

O zaman sözü fazla uzatmadan İç İçe For Döngüleri Konu Anlatımı adlı makalemizin ana kısmına gelelim. Her zamanki gibi ufak bir örnek vereceğim ve bu örneğin nasıl çalıştığını sizlere anlatmaya çalışacağım. Ardından da daha ayrıntılı bir For örneği vererek konuyu bitireceğim.

İlk Örneğimizde bir String Dizi tanımlayalım. Bu dizinin içinde:  {“BYTEADAM”,”-“,”İÇ İÇE”,”-“,“DÖNGÜLER”,“-“,“KONUANLATIMI”}  yazılı olsun. Bu yazılarımızı ekranda her birinin harfini tek tek yazılı şekilde göstermek isteyelim.  Yani;

B

Y

T

E

Gibi dizinin içindeki tüm elemanları aşağı doğru tek tek yazdıralım. Göründüğü üzere bu örnek için tek bir For kullanmak bizim istediğimiz şekil bakımından yararlı olmayacaktır. Bu yüzden İç İçe For Döngüleri kullanarak işlemimizi gerçekleştireceğiz.

Örneğimizin kodları aşağıdaki gibidir:

class Program
 {
 static void Main(string[] args)
 {

string[] ornek = { "byteadam","-","İç İçe","-","Döngüler","-","KonuAnlatım"};

for (int i = 0; i < ornek.Lenght; i++)
 {
 for (int j = j<ornek[i].Length; j++)
 {
 Console.WriteLine(ornek[i][j]);
 }
 }

Console.ReadLine();

}

Çıktımız İse Aşağıdaki Gibi Olacaktır.

ic-ice-for-donguleri

 

 

 

 

 

 

 

 

 

 

 

 

Şimdi İç İçe döngülerin nasıl çalıştığına ve bu döngülerin kendi içlerinde aslında hangi komutlara uyduğuna bakalım. Bunun için kodları tek tek alacağım ve açıklamarını yapacağım. Lütfen açıklamaları sırası ile okurken aynı zamanda sırası ile kodlara bakarak mantığı kavramaya çalışın. 

İÇ İÇE FOR DÖNGÜLERİ MANTIĞI

1) string[] ornek = { “byteadam”,“-“,“İç İçe”,“-“,“Döngüler”,“-“,“KonuAnlatım”};

Programımız bildiğimiz üzere her kodu sıra ile alır ve kontrol eder. Yani ilk koddan itibaren komutları uygulamaya ve yerine getirmeye başlar. Derleyici çalıştığında ilk kodumuza bakıldı ve bir String Dizi yaratıldığını gördü. Bu dizinin içine belirttiğimiz ifadeleri sırası ile yerleştirdi.

Not : Dizilerde ve diğer her sıralı ifadelerde her zaman ilk eleman ” sıfırıncı “ elemandır . Yani elemanlar 0,1,2 diye okunur. Bu yüzden “byteadam” adlı ifademiz sıfırıncı eleman, “-“ karakterimiz birinci eleman, “iç içe” ifademiz ise ikinci elemandır.

2)

a) for (int i = 0; i < ornek.Length; i++)     // Birinci For Döngüsü

{  // Birinci For Döngüsünün Açılış Parantezi

b) for (int j = 0; i<ornek[i].Length; j++)  //  İkinci For Döngüsü

{// İkinci For Döngümüzün Açılış Parantezi

c) Console.WriteLine(ornek[i][j]);

} // İkinci For Döngümüzün Kapanış Parantezi

} // Birinci For Döngümüzün Kapanış Parantezi

Not: ornek adlı dizimizin uzunluğu kaçtır? Sorusu burada çok önemli. Zira ornek adlı dizinin uzunluğu ile, dizi içindeki elemanların karakter uzunluğu karıştırılmamalıdır. ornek adlı dizinin uzunluğu ” 6 “ dır. Sıfırdan başlar ve altıncı elemanda son bulur.

a)

  • Program Çalıştığında ilk olarak Ana For‘u görecek ve For Döngüsünün verdiği şartları okuyarak parantez içine geçecektir. Program kendi kendine şunu diyecektir;
  • i değişkeni sıfıra eşit, sıfır ise ornek adlı dizinin uzunluğundan yani 6 dan küçük. Şartlar uygun. O zaman parantez içine geçiyorum.
  • Program parantez içine geçtiğinde i değişkenin değeri sıfırdır.

b)

Parantez içine giren program bir For Döngüsü ile daha karşılaşacaktır. Program kendi kendine şunu diyecektir;

j değişkeni sıfıra eşit, sıfır ise ornek[o]’ın uzunluğundan (0. eleman byteadam == 7 uzunluk ) küçük. O zaman parantez içine geçiyorum.

  • Parantez içine geçildiğinde j değişkenin değeride sıfırdır.

c)

  • Program parantez içinde yazılı olan koda bakar ve ornek[0][0]’ı, yani ornek dizisinin 0. elemanı olan “byteadam”‘ın, 0. karakterini yani “b” harfini ekrana yazar.
  • Komut gerekeni yapmıştır, bu yüzden parantez içinden çıkar ve ilk iş olarak “j” değişkenini şartta söylendiği üzere 1 arttırır. Artık J değişkenin değeri “1” olmuştur.
  • Program komutta ki şartlara yeniden bakar ve 1’in byteadam’ın uzunluğundan, yani 7 den küçük olduğunu görerek yeniden parantez içine döner.
  • J nin yeni değeri 1 olduğu için artık ornek[0][1] olmuştur. Bu sefer ekrana byteadam’ın birinci karakteri, yani “y” yazılır.
  • Bu işlem j değişkeni 6 değerini alana kadar devam eder.
  • J Değişkeni 6 değerini alıp son harf olan “m” harfini de yazdıktan sonra j yi yeniden 1 artırır.
  • Ancak j, 7 olmuştur ve program şartlara baktığında 7<7 ifadesini görür. Böyle bir şey söz konusu olamayacağı için kod en başa, yani ana For Döngüsüne döner.
  • Ana For Döngüsüne dönüldüğünde hemen ilk iş olarak i değişkeninin değeri bir artırılır. Artık i nin değeri 1 dir. 1 <6 olduğu için program hemen parantez içine girer.
  • Parantez içindeki j nin değeri yeniden 0 olmuştur, çünkü önceki işlem sonlanmıştır.
  • Program hemen ikinci paranteze geçer ve ornek[1][0]’ı ekrana yazdırır. Yani 1.Elemanın(“-“) 1.Karakerini(-).
  • Bu işlemden sonra j, 1 arttırılır ancak karakterin sadece 1 elemanı yani  “0” olduğu için şart sağlanmaz ve program yeniden en baştaki For Döngüsüne döner.
  • Program ilk iş olarak i yi 1 arttırır. Artık i değişkenin yeni değeri 2‘dir ve şart sağlandığı için  program yeniden parantez içindeki For Döngüsüne gider.

Bu işlemler tekrar tekrar tekrarlanır ve yukarıdaki resimde gördüğünüz sonuçlar ortaya çıkar. Not olarak söylemekte fayda var. Console.WriteLine ve Console.Write arasında fark vardır. WriteLine her yazımdan sonra bir satır aşağı iner. Sadece Write yazdığımızda ise aşağı inmez ve her şeyi direkt tek satırda yazar.

Birde biraz daha karışık bir Örnek verelim ve bunuda sizler kodlara bakarak yorumlamaya, anlamaya çalışın. Zira kodların dilini anladığımızda, öğreneceğimiz her konu bizlere daha basit gelecektir.

İç İçe For Döngüleri – Çarpım Tablosu Örneği
class Program
 {
 static void Main(string[] args)
 {

for (int a = 1; a&lt;10; a++)
 {

for (int b= 1; b&lt;10; b++)
 {

Console.Write("{0}*{1}={2}\t", b, a, (b * a));

}

Console.WriteLine();

}

Console.WriteLine();

Console.ReadKey(); 


 }

 

İç İçe For Döngüleri konumuzu ayrıntılı olarak anlatmaya ve kavratmaya çalıştım. Hiç bilmeyen birine anlatır gibi anlatmaya çalıştığım için fazla basit kaçmış olabilir ancak her bilgi düzeyinde olan arkadaşın yararlanabilmesi açısından iyi olduğunu düşünüyorum.

Eğer bu makalemizi beğendiyseniz lütfen yorum bırakınız. Yeni makalelerimizden haberdar olabilmek için sağ tarafta bulunan Abone Ol kısmına e-mail adresinizi girebilir veya FaceBook Sayfamızı beğenebilirsiniz.

Sağlıcakla Kalın 🙂

byteadam

Yorumunuzu Buraya Yazabilirsiniz.

E-posta hesabınız yayımlanmayacak.