C# For Döngüsü Kullanımı ve İç İçe For Döngüleri dersimiz ile devam ediyoruz. Bu dersimi biraz kısa tutacağım çünkü önceki derslerimde bir çok kes for döngüsünü kullandık. Özellikle C# Çok Boyutlu Diziler yazımda iç içe dört for kullandığım bir örnek var. C Sharp For Döngüsü Kullanımı ve İç İçe For Döngüleri dersimize geçelim.
C Sharp For Döngüsü Kullanımı ve İç İçe For Döngüleri
C# For Döngüsü
For döngüsü, belirtilen bir sayı adedince işlemleri tekrarlamamızı sağlayan bir yapıdır. Örneğin bir gridview’deki verileri bir database’e yazdırmak istediğimizde gridview’deki satır sayısı kadar işlem yapacak bir for döngüsü kullanmamız gerekir.
Aşağıdaki örnekte basit bir kullanım şeklini açıklamalı olarak görebilirsiniz.
private void XtraForm3_Load(object sender, EventArgs e) { DataTable dt = new DataTable(); // database den verileri bir datatable^ye doldurduğumuzu varsayalım // db den çektiğimiz veriler, şehir adları olsun // vu bu şekir adlarını bir combobox' a dolduralim. // Aslında combonbox' u for döngüsü ile doldurmamıza gerek yoktur. // Örnek olması amacı ile for döngüsü kullanarak dolduruyoruz. for (int i = 0; i < dt.Rows.Count; i++) // datatable'deki satır sayısı kadar dönecek. { comboBox1.Items.Add(dt.Rows[i]["SehirAdi"].ToString()); // [i], 0 dan başlayacak. Bu da datatable'deki sıfırıncı indexte yer alan değerdir // ["SehirAdi"] datatable 'i doldururken yazdığımız select sorgudaki kolon adıdır. } }
Bir döngü sonsuz olduğunda, program kilitlenir ve programı kapatmamız gerekir. Sonsuz döngü load eventinde çalıştırılsa program açılmaz. Bir button altında yaparsanız program kilitlenir. Sonsuz döngü örneği;
void Ekle() { List<string> _List = new List<string>(); _List.Add("Mustafa"); _List.Add("Bükülmez"); for (int i = 0; i < _List.Count; i++) { listBox1.Items.Add(_List[i]); i--; // bu satır döngüyü sonsuz yapmaktadır. } } private void button1_Click(object sender, EventArgs e) { Ekle(); }
Elbette ki hiçbir zaman sonsuz döngü yapmak amacımız olmayacaktır. Ancak yazdığınız kodlarda duruma göre döngü sonsuz olma ihtimali varsa, döngüyü belirlediğimiz bir sayıya ulaştığında kırabilir diğer işlemlere geçebiliriz. Ki bu durum yaşanabilecek bir olaydır.
void Ekle() { List<string> _List = new List<string>(); _List.Add("Mustafa"); _List.Add("Bükülmez"); for (int i = 0; i < _List.Count; i++) { listBox1.Items.Add(_List[i]); i--; // bu satır döngüyü sonsuz yapmaktadır. if (listBox1.Items.Count > 100) { // listbox'taki item sayısı 100'ü geçtiğinde // break komutu döngüyü kıracaktır. break; } } } private void button1_Click(object sender, EventArgs e) { Ekle(); }
Bu bir nesneye veri doldururken döngünün sonsuz olmadı durumda yapacağımız bir yöntemdir. Peki döngü arka planda çalışıyorsa ve sonsuza girdiyse nasıl bozacağız?
Bunun mantığı da basittir. Sayaç adında bir int değişken tanımlıyoruz ve for döngüsü içerisinde he işlemde bir arttırıyoruz. Bu sayaç istediğimiz değere geldiğinde de döngüyü kırıyoruz.
void Ekle() { List<string> _List = new List<string>(); _List.Add("Mustafa"); _List.Add("Bükülmez"); int sayac = 0; for (int i = 0; i < _List.Count; i++) { listBox1.Items.Add(_List[i]); i--; // bu satır döngüyü sonsuz yapmaktadır. sayac++; if (sayac > 100) { // sayac 100'ü geçtiğinde // break komutu döngüyü kıracaktır. break; } } } private void button1_Click(object sender, EventArgs e) { Ekle(); }
C# İç İçe For Döngüsü Kullanımı
Dizilerle ilgili dersimde bahsetmiştim ama yine de burada da bir iki örnek yapalım. Diyelim ki elimizde iki boyutlu bir dizi var ve bu dizideki değerleri almak istiyoruz.
int[,] dizi = new int[2, 2]; for (int i = 0; i < dizi.GetLength(0); i++) { for (int j = 0; j < dizi.GetLength(1); j++) { MessageBox.Show(dizi[i,j].ToString()); // bu şekilde iç içe for kullanarak // dizideki tüm değerleri alabiliriz // Ancak düzenli bir dizide for döngüsü kullanabiliriz. } }
Örneği biraz açıklarsak;
İlk for ile iki boyutlu dizinin satır sayısını, dizi.GetLength(0) ile alıyoruz. Atıyorum üç satır var ise ilk for beş kere dönecek.
İkinci for ile iki boyutlu dizinin kolon sayısını, dizi.GetLength(1) ile alıyoruz. Atıyorum beş kolon var ise ikinci for beş kere dönecek.
İlk for ile diziye 0(satır), 0(kolon) index’inden, satır kısmına giriş yaptık. Hemen ardından ikinci for ile kolon kısmına giriş yaptık.
0, 0 | 0, 1 | 0, 2 | 0, 3 | 0, 4 şeklinde tüm satırı gezmiş olduk. İlk for bir kere ikinci for beş kere dönmüş oldu.
1, 0 | 1, 1 | 1, 2 | 1, 3 | 1, 4 şeklinde tüm satırı gezmiş olduk. İlk for iki kere ikinci for beş kere dönmüş oldu.
2, 0 | 2, 1 | 2, 2 | 2, 3 | 2, 4 şeklinde tüm satırı gezmiş olduk. İlk for üç kere ikinci for beş kere dönmüş oldu.
İç içe for döngüsünün çalışma şekli yukarıda anlattığım gibidir.
C Sharp For Döngüsü Kullanımı ve İç İçe For Döngüleri dersimizde bu kadar dostlar. Önceki derslerimde de for döngüleri kullandığım için bu dersi biraz kısa tuttum. Ancak yine de mümkün mertebe verebildiğim kadar fazla bilgi vermek istedim.
C Sharp Eğitim Seti ve ERP Programlama ders listesi için tıklayınız.
Takipte ve sağlıcakla kalınız. ;)