for,whilevedo-whiledöngüleri yazmak ve onlarıbreakilecontinueile yönetmek- Dizi oluşturmak ve elemanlarını
foreachile dolaşmak List<T>'ye eleman eklemek ve ondan eleman çıkarmakDictionary<TKey,TValue>'da değerleri anahtara göre saklamak ve bulmak
7 çarpım tablosunu ekrana yazmak için on tane Console.WriteLine satırı yazabilirsin. Peki 1000 satır gerekirse? Programlamada tekrar eden işi döngüler yapar. Döngüler genellikle koleksiyonlarla birlikte çalışır: sınıftaki tüm öğrencilerin notları, sepetteki ürünler, depodaki mallar gibi birçok değeri tek bir yerde tutan diziler, listeler ve sözlüklerle.
for ve while döngüleri
for döngüsü, adım sayısı önceden bilindiğinde kullanışlıdır. Başlığında noktalı virgülle ayrılmış üç bölüm vardır: sayacın başlangıç değeri (int i = 1), devam koşulu (i <= 5) ve her adımdan sonraki değişiklik (i++).
for (int i = 1; i <= 5; i++)
{
Console.WriteLine($"7 x {i} = {7 * i}");
}7 x 1 = 7 7 x 2 = 14 7 x 3 = 21 7 x 4 = 28 7 x 5 = 35
while döngüsü koşul doğru olduğu sürece tekrarlanır; adım sayısı önceden bilinmediğinde kullanılır. Örneğin Elvin'in kumbarasında 100 manat var ve her ay 20 manat daha ekliyor. Kaç ay sonra 150 manata ulaşır?
int savings = 100;
int months = 0;
while (savings < 150)
{
savings += 20;
months++;
}
Console.WriteLine($"After {months} months: {savings} AZN");After 3 months: 160 AZN
Diziler ve foreach
Dizi (array), aynı türden değerlerin sabit boyutlu bir sırasıdır. Değerleri köşeli parantez içinde sıralayarak oluşturulabilir. Elemanlara indeksle erişilir: ilk eleman [0], sonuncusu [^1]'dir. Bir dizinin tüm elemanlarını dolaşmanın en kolay yolu foreach döngüsüdür.
int[] scores = [90, 75, 88, 62];
Console.WriteLine(scores[0]);
Console.WriteLine(scores[^1]);
Console.WriteLine(scores.Length);
scores[3] = 70;
int sum = 0;
foreach (int s in scores)
{
sum += s;
}
Console.WriteLine($"Sum: {sum}, average: {sum / scores.Length}");90 62 4 Sum: 323, average: 80
[90, 75, 88, 62] yazımı, C# 12 ile gelen bir koleksiyon ifadesidir. Eski kodlarda aynı dizi new int[] { 90, 75, 88, 62 } şeklinde yazılır; new int[5] ise beş sıfırdan oluşan bir dizi oluşturur. Dizinin boyutu oluşturulduktan sonra değiştirilemez.
break döngüyü hemen durdurur, continue ise mevcut adımın geri kalanını atlayıp bir sonraki adıma geçer:
int[] numbers = [4, 7, 10, -1, 12];
foreach (int n in numbers)
{
if (n < 0)
{
Console.WriteLine("Negative number, stop.");
break;
}
if (n % 2 != 0)
continue;
Console.WriteLine($"{n} is even");
}4 is even 10 is even Negative number, stop.
`List<T>`: büyüyen liste
Eleman sayısı değişecekse dizi yerine List<T> kullanılır. Açılı parantez içindeki T, elemanların türüdür: List<string> bir string listesi, List<int> bir sayı listesidir. Bu tür türlere generic (genel) türler denir. Eleman sayısını Count özelliği gösterir.
List<string> cities = ["Baku", "Ganja"];
cities.Add("Shaki");
cities.Insert(0, "Lankaran");
cities.Remove("Ganja");
Console.WriteLine(cities.Count);
Console.WriteLine(string.Join(", ", cities));
Console.WriteLine(cities.Contains("Baku"));
Console.WriteLine(cities.IndexOf("Shaki"));3 Lankaran, Baku, Shaki True 2
Add(x)elemanı sona,Insert(i, x)iseikonumuna ekler.Remove(x)bir değeri,RemoveAt(i)iseiindeksindeki elemanı siler.Contains(x)elemanın olup olmadığını,IndexOf(x)ise indeksini (yoksa-1) verir.string.Join(", ", cities)tüm elemanları tek bir string'de birleştirir.
`Dictionary<TKey,TValue>`: anahtar ve değer
Bir sözlük (dictionary), her değeri benzersiz bir anahtar altında saklar; telefon rehberindeki isim ve numaralar gibi. Dictionary<string, int>, anahtarları string, değerleri int olan bir sözlüktür. Değere anahtarıyla erişilir: stock["apples"]. Var olmayan bir anahtarı okumak KeyNotFoundException hatası verir; bu yüzden güvenli kontrol için TryGetValue kullanılır.
Dictionary<string, int> stock = new()
{
["apples"] = 40,
["pears"] = 15
};
stock["plums"] = 25;
stock["apples"] -= 5;
foreach (var (fruit, amount) in stock)
{
Console.WriteLine($"{fruit}: {amount}");
}
if (stock.TryGetValue("kiwi", out int kiwis))
Console.WriteLine($"Kiwi: {kiwis}");
else
Console.WriteLine("No kiwi in stock");apples: 35 pears: 15 plums: 25 No kiwi in stock
foreach (var (fruit, amount) in stock), her çifti anahtarına ve değerine ayırır. TryGetValue, anahtar bulunursa true döndürür ve değeri out ile verilen değişkene yazar; out'u metotlar dersinde ayrıntılı ele alacağız.
| Koleksiyon | Ne zaman seçilir | Örnek |
|---|---|---|
T[] | eleman sayısı sabittir | haftanın 7 günü |
List<T> | elemanlar eklenir ve çıkarılır | alışveriş sepeti |
Dictionary<TKey,TValue> | değerlerin anahtarla hızlıca bulunması gerekir | şehir → nüfus |
Önemli noktalar
forbelirli sayıda,whileise koşul doğru olduğu sürece tekrarlanır;do-whileen az bir kez çalışır.breakdöngüyü durdurur,continuebir sonraki adıma geçer.- Dizinin boyutu sabittir ve indeksler 0'dan başlar;
foreachtüm elemanları dolaşır. List<T>büyüyüp küçülebilir:Add,Remove,Count.Dictionary<TKey,TValue>değerleri anahtara göre saklar;TryGetValuegüvenli aramadır.
Kendini test et
10 soru. Her doğru cevap XP kazandırır.
for (int i = 0; i < 3; i++) döngüsü kaç kez tekrarlanır?