Aynı işi tekrar tekrar yaptırmayı; seri/paralel direnç hesabı ve çarpım tablosu örnekleriyle for, while, do-while ve foreach ile öğreniyorsun.
Neden döngü?
Bir şeyi 100 kez yapman gerekirse satırı 100 kez yazmazsın; döngü yazarsın. Bilgisayarların gücü, sıkılmadan tekrar etmesinden gelir.
for döngüsü
Kaç kez tekrar edileceği biliniyorsa for idealdir. Üç parçası vardır: başlangıç, koşul, her turdan sonraki adım.
for (int i = 1; i <= 5; i++)
{
Console.WriteLine($"{i} x 7 = {i * 7}");
}
1 x 7 = 7
2 x 7 = 14
3 x 7 = 21
4 x 7 = 28
5 x 7 = 35
Akış şöyledir: i 1 olarak başlar; koşul (i <= 5) doğruysa gövde çalışır; sonra i++ ile bir artar; koşul yanlış olunca döngü biter.
while döngüsü
Kaç tur olacağını bilmiyor, bir koşul sağlandığı sürece devam etmek istiyorsan while kullanırsın. Örnek: bir kondansatörün boşalması. Her adımda gerilim yarıya düşsün ve 0,1 V altına inene kadar sayalım.
double gerilim = 10.0;
int adim = 0;
while (gerilim >= 0.1)
{
gerilim /= 2;
adim++;
}
Console.WriteLine($"{adim} adımda {gerilim:F4} V altına indi.");
7 adımda 0,0781 V altına indi.
Hesabı doğrula: 10 → 5 → 2,5 → 1,25 → 0,625 → 0,3125 → 0,15625 → 0,078125. Yedinci bölmeden sonra 0,1'in altına iniyor.
Sonsuz döngü: Koşulu yanlışa çevirecek bir şey gövdede değişmiyorsa döngü hiç bitmez. Program donmuş gibi görünürse terminalde Ctrl + C ile durdur.
do-while: en az bir kez çalış
do-while koşulu sonda kontrol eder, yani gövde en az bir kez çalışır. Kullanıcıdan geçerli girdi isteme için biçilmiş kaftandır:
int sayi;
bool gecerli;
do
{
Console.Write("1 ile 10 arasında bir sayı gir: ");
gecerli = int.TryParse(Console.ReadLine(), out sayi) && sayi >= 1 && sayi <= 10;
}
while (!gecerli);
Console.WriteLine($"Girdiğin sayı: {sayi}");
foreach: koleksiyonu gezmek
Bir listenin ya da dizinin her elemanını sırayla işlemek için kullanılır. Sayaç yönetmene gerek kalmaz. (Dizileri bir sonraki derslerde ayrıntılı göreceğiz.)
double[] dirençler = { 100, 220, 330 };
double seri = 0;
double ters = 0;
foreach (double r in dirençler)
{
seri += r;
ters += 1 / r;
}
Console.WriteLine($"Seri: {seri} ohm");
Console.WriteLine($"Paralel: {1 / ters:F2} ohm");
Seri: 650 ohm
Paralel: 56,90 ohm
Seri bağlantıda dirençler toplanır. Paralelde ise eşdeğer direncin tersi, dirençlerin terslerinin toplamıdır: 1/R = 1/100 + 1/220 + 1/330, sonuç yaklaşık 56,90 ohm.
break ve continue
break döngüyü tamamen bitirir, continue o turu atlayıp sonrakine geçer.
for (int i = 1; i <= 10; i++)
{
if (i % 2 == 0) continue; // çiftleri atla
if (i > 7) break; // 7'den sonra dur
Console.Write(i + " ");
}
1 3 5 7
İç içe döngüler
for (int satir = 1; satir <= 3; satir++)
{
for (int sutun = 1; sutun <= 3; sutun++)
{
Console.Write($"{satir * sutun}\t");
}
Console.WriteLine();
}
1 2 3
2 4 6
3 6 9
İpucu: Hangisini seçeceğini şöyle düşün: tur sayısı belli ise for, koşula bağlıysa while, en az bir kez çalışmalıysa do-while, koleksiyon gezeceksen foreach.
Kendin dene
1'den 100'e kadar olan sayıların toplamını for ile bul (beklenen: 5050). Sonra yalnızca 3'e tam bölünenleri topla. Ardından 1'den 20'ye kadar sayıları yazdıran bir program yaz: 3'e bölünen sayıların yerine "Bip" yazsın.
// Mini sınav
Bir seçeneğe tıkla; doğru mu yanlış mı, anında ve nedeniyle birlikte göreceksin.
Bitirdiğinde işaretle: ilerlemen kaydolur, +20 XP kazanırsın.
İpucu: ← → tuşlarıyla dersler arasında gezinebilirsin.