C# Ortadan İleriye #4 - For & Foreach Döngüleri (Birlikte Öğrenelim)

bubinick

Üye
3 Haz 2023
54
23
22
Bursa
Önsöz:
Merhaba bu anlatımımda döngü tiplerinden bahsedeceğim. Döngüler tekrar eden işlemlerde çok işinize yararlar. Mesela 1 ile 1 milyar arasındaki sayıları çıktıda döndüren bir programı yapmak döngüler olmasaydı tüm sayıları tek tek girmemiz anlamına gelirdi. Döngüler bu noktada işimize çok yararlar ve kullanım alanı da bi hayli geniştir. İsterseniz ufak bir örnekle başlayalım

For & İç içe For

C#:
for (int sayi = 0; sayi < 33; sayi++) //Önce sayi adında bir değişken oluşturdum ardından < 33 ile bitiş değerini belirtip sayi++ kısmında da artmasını istedim.
            {
                listBox1.Items.Add(sayi.ToString()); //Çıktı olarak listbox'uma item ekledim ve her çıktınız değerini sayi değişkeninden aldım.
            }

Yukarıdaki kod çıktı olarak 0-32 arasında ki tüm sayıları ekrana yazdıracaktır. Bu artarak ilerleyen for döngüsüne bir örnekti. Aynı şekilde azalarak devam eden bir döngüde kurabiliriz bunun için sadece:
i > 5; ve i-- kısmını değiştirmek. Yani yaptığımız şey operatörleri küçüktür ve eksi olarak değiştirmek oldu.

Bonus: Eğer hedefi nakavt etmek isterseniz bu döngüyü kısır döngü haline getirebilirsiniz. Tek yapmanız gereken:

C#:
for (; ; )
            {
                listBox1.Items.Add("sonsuzluk");
            }

Bu programı kilitleyecektir, bazen çökmelere sebep olabilir. Neyse konumuza devam edelim.

Sırada iç içe for döngüsü var bu iki döngüyü olurda bir arada kullanmak isterseniz çok işinize yarar. Hem kodunuzu rahat okursunuz hemde düzenlemesi vs daha rahat olur. Kullanımı basittir fazladan bir blok açarak iç içe döngü yaratabilirsiniz. Gösterelim:

C#:
for (int sayi1  = 0; sayi1 < 5; sayi1++)
            {
                for (int sayi2 = 0; sayi2 < 5; sayi2++)
                {
                    listBox1.Items.Add(sayi1 + "*" + sayi2 + sayi1 + "/" + sayi2);
                }

            }

Yukarıda iki döngü oluşturup tek bir sonuca sığdırabildik. Çıktı olarak:



Şöyle bir şey alıyoruz bu oluşturduğumuz iki döngünün çarpımının toplamının bölünmesi vs'si :D rastgele işlem yaptırdım ama iç içe döngünün mantığını kavradığınızı umuyorum.

Foreach

Hızımızı kaybetmeden devam edelim sırada Foreach var. Dizileri daha anlatmadım ama onu da paylaşırım sanırım. Bu fonksiyon dizilerin içindeki elemanları döngü halinde yazdırmaya yarar. Eksiden ileriye yada tam tersi uğraşmadan dizi elemanlarını sıralayabilirsiniz küçük bir örnekle göstereyim:

C#:
string[] meyveler = { "elma","armut","çilek","karpuz" }; //Dizi oluşturup içine dört tane eleman girdim.

            foreach (string s in meyveler) //s Adında bir değişken oluşturup "in" ile meyveler dizisinin elemanlarını içine yazdırdım.
            {
                listBox1.Items.Add(s); //s değişkenine yazdırdığım tüm elemanları Foreach olay bloğu içerisinde ekrana yazdırmak üzere ayarladım.
            }

Bu döngü sadece diziler için kullanılır ve hayati öneme sahiptir :D aklınızda bulunsun beklenmedik zamanlarda lazım olabilir.

Bu konumda while ve do-while'da olacaktı fakat konu daha da karmaşıklaşmadan bitirmek istiyorum. Diğer konumda bu iki konuya değineceğim. Kolay gelsin!
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.