- Puan
- 28
- Yaş
- 118
╔══════════════════════════════════════════════════════════════╗
║ C PROGRAMLAMA DİLİ EĞİTİM SERİSİ #5 ║
║ DÖNGÜLER (LOOPS) ║
╚══════════════════════════════════════════════════════════════╝
Bir önceki bölümde programlara karar vermeyi öğrettik.
Artık programlarımız:
• Şifre doğru mu?
• Kullanıcı admin mi?
• Yaş uygun mu?
• Not geçti mi?
gibi sorulara cevap verebiliyor.
Fakat hâlâ büyük bir eksik var.
Bir işlemi yüzlerce veya binlerce kez yapmak istersek ne olacak?
Örneğin:
printf("Merhaba");
printf("Merhaba");
printf("Merhaba");
printf("Merhaba");
printf("Merhaba");
5 kez yazdırdık.
Peki 1000 kez yazdırmak istersek?
1000 satır kod mu yazacağız?
Elbette hayır.
İşte burada DÖNGÜLER devreye girer.
══════════════════════════════════════════════════════════════
► DÖNGÜ NEDİR?
Döngü, belirli bir kod bloğunu tekrar tekrar çalıştıran yapılardır.
Temel mantık:
Koşul doğruysa:
Kodu çalıştır
Tekrar başa dön
Koşul yanlış olduğunda:
Döngüden çık
══════════════════════════════════════════════════════════════
► FOR DÖNGÜSÜ
C dilinde en sık kullanılan döngüdür.
Genel yapısı:
for(başlangıç; koşul; artış)
{
çalışacak kodlar
}
Örnek:
for(int i = 1; i <= 5; i++)
{
printf("Merhaba\n");
}
Çıktı:
Merhaba
Merhaba
Merhaba
Merhaba
Merhaba
══════════════════════════════════════════════════════════════
► FOR DÖNGÜSÜ NASIL ÇALIŞIR?
Örnek:
for(int i = 1; i <= 3; i++)
{
printf("%d\n", i);
}
Adım adım:
1
2
3
══════════════════════════════════════════════════════════════
► 10'A KADAR SAYDIRMA
for(int i = 1; i <= 10; i++)
{
printf("%d\n", i);
}
Sonuç:
1
2
3
4
5
6
7
8
9
10
══════════════════════════════════════════════════════════════
► GERİYE SAYMA
for(int i = 10; i >= 1; i--)
{
printf("%d\n", i);
}
Sonuç:
10
9
8
7
6
5
4
3
2
1
══════════════════════════════════════════════════════════════
► 2'ŞER 2'ŞER SAYMA
for(int i = 0; i <= 20; i += 2)
{
printf("%d\n", i);
}
Çıktı:
0
2
4
6
8
10
12
14
16
18
20
══════════════════════════════════════════════════════════════
► WHILE DÖNGÜSÜ
Bir koşul doğru olduğu sürece çalışır.
Yapısı:
while(koşul)
{
kodlar
}
Örnek:
int i = 1;
while(i <= 5)
{
printf("%d\n", i);
i++;
}
Çıktı:
1
2
3
4
5
══════════════════════════════════════════════════════════════
► WHILE NASIL ÇALIŞIR?
Bilgisayar sürekli şu soruyu sorar:
i <= 5 ?
Eğer cevap doğruysa:
• Kod çalışır
• Tekrar başa döner
Cevap yanlış olduğunda döngü sona erer.
══════════════════════════════════════════════════════════════
► SONSUZ DÖNGÜ
Örnek:
while(1)
{
printf("Calisiyor\n");
}
Burada koşul her zaman doğrudur.
Bu yüzden program asla durmaz.
Bu yapılar:
• Sunucularda
• Oyunlarda
• Ağ programlarında
çok sık kullanılır.
══════════════════════════════════════════════════════════════
► DO-WHILE DÖNGÜSÜ
while döngüsüne benzer.
Fakat çok önemli bir fark vardır.
Önce çalışır.
Sonra kontrol eder.
Yapısı:
do
{
kodlar
}
while(koşul);
Örnek:
int i = 1;
do
{
printf("%d\n", i);
i++;
}
while(i <= 5);
Çıktı:
1
2
3
4
5
══════════════════════════════════════════════════════════════
► BREAK KOMUTU
Döngüyü tamamen sonlandırır.
Örnek:
for(int i = 1; i <= 10; i++)
{
if(i == 5)
{
break;
}
printf("%d\n", i);<br>
}
Çıktı:
1
2
3
4
5 olduğunda döngü tamamen sona erer.
══════════════════════════════════════════════════════════════
► CONTINUE KOMUTU
Döngüyü sonlandırmaz.
Sadece o turu atlar.
Örnek:
for(int i = 1; i <= 5; i++)
{
if(i == 3)
{
continue;
}
printf("%d\n", i);<br>
}
Çıktı:
1
2
4
5
3 değeri atlanmıştır.
══════════════════════════════════════════════════════════════
► BREAK VE CONTINUE FARKI
BREAK:
Döngüyü tamamen bitirir.
CONTINUE:
Sadece o adımı atlar ve döngü devam eder.
══════════════════════════════════════════════════════════════
► İÇ İÇE DÖNGÜLER
Bir döngünün içinde başka döngüler bulunabilir.
Örnek:
for(int i = 1; i <= 3; i++)
{
for(int j = 1; j <= 3; j++)
{
printf("%d %d\n", i, j);
}
}
Çıktı:
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
══════════════════════════════════════════════════════════════
► MİNİ PROJE: 1'DEN 100'E KADAR TOPLAMA
int toplam = 0;
for(int i = 1; i <= 100; i++)
{
toplam += i;
}
printf("%d", toplam);
Sonuç:
5050
══════════════════════════════════════════════════════════════
► MİNİ PROJE: ÇİFT SAYILARI YAZDIRMA
for(int i = 0; i <= 100; i++)
{
if(i % 2 == 0)
{
printf("%d\n", i);
}
}
══════════════════════════════════════════════════════════════
► MİNİ PROJE: ŞİFRE DENEME SİSTEMİ
int sifre;
while(1)
{
printf("Sifre Gir: ");
scanf("%d", &sifre);
if(sifre == 1234)<br>{<br> printf("Giris Basarili\n");<br> break;<br>}<br><br>printf("Hatali Sifre\n");<br>
}
══════════════════════════════════════════════════════════════
► BÖLÜM ÖZETİ
Bu bölümde:
✓ for döngüsü
✓ while döngüsü
✓ do-while döngüsü
✓ break komutu
✓ continue komutu
✓ iç içe döngüler
✓ sonsuz döngüler
✓ pratik kullanım örnekleri
konularını öğrendik.
Bir sonraki bölümde FONKSİYONLAR konusuna geçeceğiz.
║ C PROGRAMLAMA DİLİ EĞİTİM SERİSİ #5 ║
║ DÖNGÜLER (LOOPS) ║
╚══════════════════════════════════════════════════════════════╝
Bir önceki bölümde programlara karar vermeyi öğrettik.
Artık programlarımız:
• Şifre doğru mu?
• Kullanıcı admin mi?
• Yaş uygun mu?
• Not geçti mi?
gibi sorulara cevap verebiliyor.
Fakat hâlâ büyük bir eksik var.
Bir işlemi yüzlerce veya binlerce kez yapmak istersek ne olacak?
Örneğin:
printf("Merhaba");
printf("Merhaba");
printf("Merhaba");
printf("Merhaba");
printf("Merhaba");
5 kez yazdırdık.
Peki 1000 kez yazdırmak istersek?
1000 satır kod mu yazacağız?
Elbette hayır.
İşte burada DÖNGÜLER devreye girer.
══════════════════════════════════════════════════════════════
► DÖNGÜ NEDİR?
Döngü, belirli bir kod bloğunu tekrar tekrar çalıştıran yapılardır.
Temel mantık:
Koşul doğruysa:
Kodu çalıştır
Tekrar başa dön
Koşul yanlış olduğunda:
Döngüden çık
══════════════════════════════════════════════════════════════
► FOR DÖNGÜSÜ
C dilinde en sık kullanılan döngüdür.
Genel yapısı:
for(başlangıç; koşul; artış)
{
çalışacak kodlar
}
Örnek:
for(int i = 1; i <= 5; i++)
{
printf("Merhaba\n");
}
Çıktı:
Merhaba
Merhaba
Merhaba
Merhaba
Merhaba
══════════════════════════════════════════════════════════════
► FOR DÖNGÜSÜ NASIL ÇALIŞIR?
Örnek:
for(int i = 1; i <= 3; i++)
{
printf("%d\n", i);
}
Adım adım:
- i = 1
- 1 <= 3 kontrol edilir
- Ekrana 1 yazılır
- i bir artırılır
- i = 2 olur
- 2 <= 3 kontrol edilir
- Ekrana 2 yazılır
- i bir artırılır
- i = 3 olur
- Ekrana 3 yazılır
- i = 4 olur
- 4 <= 3 yanlış olduğu için döngü biter
1
2
3
══════════════════════════════════════════════════════════════
► 10'A KADAR SAYDIRMA
for(int i = 1; i <= 10; i++)
{
printf("%d\n", i);
}
Sonuç:
1
2
3
4
5
6
7
8
9
10
══════════════════════════════════════════════════════════════
► GERİYE SAYMA
for(int i = 10; i >= 1; i--)
{
printf("%d\n", i);
}
Sonuç:
10
9
8
7
6
5
4
3
2
1
══════════════════════════════════════════════════════════════
► 2'ŞER 2'ŞER SAYMA
for(int i = 0; i <= 20; i += 2)
{
printf("%d\n", i);
}
Çıktı:
0
2
4
6
8
10
12
14
16
18
20
══════════════════════════════════════════════════════════════
► WHILE DÖNGÜSÜ
Bir koşul doğru olduğu sürece çalışır.
Yapısı:
while(koşul)
{
kodlar
}
Örnek:
int i = 1;
while(i <= 5)
{
printf("%d\n", i);
i++;
}
Çıktı:
1
2
3
4
5
══════════════════════════════════════════════════════════════
► WHILE NASIL ÇALIŞIR?
Bilgisayar sürekli şu soruyu sorar:
i <= 5 ?
Eğer cevap doğruysa:
• Kod çalışır
• Tekrar başa döner
Cevap yanlış olduğunda döngü sona erer.
══════════════════════════════════════════════════════════════
► SONSUZ DÖNGÜ
Örnek:
while(1)
{
printf("Calisiyor\n");
}
Burada koşul her zaman doğrudur.
Bu yüzden program asla durmaz.
Bu yapılar:
• Sunucularda
• Oyunlarda
• Ağ programlarında
çok sık kullanılır.
══════════════════════════════════════════════════════════════
► DO-WHILE DÖNGÜSÜ
while döngüsüne benzer.
Fakat çok önemli bir fark vardır.
Önce çalışır.
Sonra kontrol eder.
Yapısı:
do
{
kodlar
}
while(koşul);
Örnek:
int i = 1;
do
{
printf("%d\n", i);
i++;
}
while(i <= 5);
Çıktı:
1
2
3
4
5
══════════════════════════════════════════════════════════════
► BREAK KOMUTU
Döngüyü tamamen sonlandırır.
Örnek:
for(int i = 1; i <= 10; i++)
{
if(i == 5)
{
break;
}
printf("%d\n", i);<br>
}
Çıktı:
1
2
3
4
5 olduğunda döngü tamamen sona erer.
══════════════════════════════════════════════════════════════
► CONTINUE KOMUTU
Döngüyü sonlandırmaz.
Sadece o turu atlar.
Örnek:
for(int i = 1; i <= 5; i++)
{
if(i == 3)
{
continue;
}
printf("%d\n", i);<br>
}
Çıktı:
1
2
4
5
3 değeri atlanmıştır.
══════════════════════════════════════════════════════════════
► BREAK VE CONTINUE FARKI
BREAK:
Döngüyü tamamen bitirir.
CONTINUE:
Sadece o adımı atlar ve döngü devam eder.
══════════════════════════════════════════════════════════════
► İÇ İÇE DÖNGÜLER
Bir döngünün içinde başka döngüler bulunabilir.
Örnek:
for(int i = 1; i <= 3; i++)
{
for(int j = 1; j <= 3; j++)
{
printf("%d %d\n", i, j);
}
}
Çıktı:
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
══════════════════════════════════════════════════════════════
► MİNİ PROJE: 1'DEN 100'E KADAR TOPLAMA
int toplam = 0;
for(int i = 1; i <= 100; i++)
{
toplam += i;
}
printf("%d", toplam);
Sonuç:
5050
══════════════════════════════════════════════════════════════
► MİNİ PROJE: ÇİFT SAYILARI YAZDIRMA
for(int i = 0; i <= 100; i++)
{
if(i % 2 == 0)
{
printf("%d\n", i);
}
}
══════════════════════════════════════════════════════════════
► MİNİ PROJE: ŞİFRE DENEME SİSTEMİ
int sifre;
while(1)
{
printf("Sifre Gir: ");
scanf("%d", &sifre);
if(sifre == 1234)<br>{<br> printf("Giris Basarili\n");<br> break;<br>}<br><br>printf("Hatali Sifre\n");<br>
}
══════════════════════════════════════════════════════════════
► BÖLÜM ÖZETİ
Bu bölümde:
✓ for döngüsü
✓ while döngüsü
✓ do-while döngüsü
✓ break komutu
✓ continue komutu
✓ iç içe döngüler
✓ sonsuz döngüler
✓ pratik kullanım örnekleri
konularını öğrendik.
Bir sonraki bölümde FONKSİYONLAR konusuna geçeceğiz.