C++ Döngüler: for, while, do-while
C++ döngülerini öğrenin. for, while ve do-while yapılarıyla tekrar eden işlemleri ve program akışını kontrol etmeyi keşfedin.
Programlama dillerinde döngüler (loops), belirli bir işlemin birden fazla kez tekrarlanmasını sağlar.
C++ dilinde en yaygın kullanılan döngü yapıları for, while ve do-while’dır.
Döngüler, diziler üzerinde gezinme, hesaplama işlemleri veya kullanıcıdan veri alma gibi tekrar eden işlemler için kullanılır.
1. for Döngüsü
for döngüsü, tekrar sayısının bilindiği durumlarda en sık kullanılan yapıdır.
Üç bölümden oluşur: başlangıç, koşul ve artırma/azaltma.
for (başlangıç; koşul; artış) {
// Tekrarlanacak işlemler
}
Örnek:
#include <iostream>
using namespace std;
int main() {
for (int i = 1; i <= 5; i++) {
cout << "Sayı: " << i << endl;
}
return 0;
}
Çıktı:
Sayı: 1
Sayı: 2
Sayı: 3
Sayı: 4
Sayı: 5
2. while Döngüsü
while döngüsü, koşul doğru olduğu sürece tekrarlanır.
Koşul her döngü başında kontrol edilir, bu nedenle koşul en başta yanlışsa döngü hiç çalışmayabilir.
int sayi = 1;
while (sayi <= 5) {
cout << "Sayı: " << sayi << endl;
sayi++;
}
Bu örnek for döngüsüyle aynı sonucu üretir ancak yapısı daha esnektir.
Genellikle tekrar sayısı bilinmeyen durumlarda kullanılır (örneğin kullanıcıdan veri almak).
3. do-while Döngüsü
do-while döngüsü, koşul en sonda kontrol edildiği için döngü bloğu en az bir kez çalışır.
int sayi = 1;
do {
cout << "Sayı: " << sayi << endl;
sayi++;
} while (sayi <= 5);
Çıktı yine 1’den 5’e kadar sayıları yazar. Ancak koşul en sonda kontrol edildiğinden, ilk döngü adımı koşuldan bağımsız olarak mutlaka çalışır.
4. Sonsuz Döngüler
Eğer bir döngü koşulu hiçbir zaman false olmazsa, döngü sonsuza kadar çalışır.
Sonsuz döngüler genellikle break veya return ile sonlandırılır.
while (true) {
cout << "Bu mesaj sürekli yazdırılır." << endl;
break; // Sonsuz döngüyü durdurur
}
Not: Sonsuz döngüler kontrollü kullanılmalıdır; aksi halde program asla sona ermez.
5. break ve continue Anahtar Kelimeleri
Döngü kontrolünü değiştirmek için iki özel ifade kullanılır:
- break: Döngüyü tamamen sonlandırır.
- continue: Sadece o turu atlayıp döngüyü devam ettirir.
for (int i = 1; i <= 10; i++) {
if (i == 5)
continue; // 5 atlanır
if (i == 8)
break; // 8’e gelince döngü durur
cout << i << " ";
}
Çıktı:
1 2 3 4 6 7
6. İç İçe Döngüler (Nested Loops)
Bir döngünün içinde başka bir döngü tanımlanabilir. Bu yapı, özellikle tablo, matris veya çok boyutlu veriler üzerinde işlem yaparken kullanılır.
#include <iostream>
using namespace std;
int main() {
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 4; j++) {
cout << "(" << i << "," << j << ") ";
}
cout << endl;
}
return 0;
}
Çıktı:
(1,1) (1,2) (1,3) (1,4)
(2,1) (2,2) (2,3) (2,4)
(3,1) (3,2) (3,3) (3,4)
Burada dıştaki döngü (i), satırları temsil ederken, içteki döngü (j) sütunları temsil eder.
Bu yapı, çok boyutlu dizilerle çalışırken oldukça kullanışlıdır.
7. Örnek Uygulama: Çarpım Tablosu
İç içe for döngülerinin en bilinen kullanım örneklerinden biri çarpım tablosudur.
#include <iostream>
using namespace std;
int main() {
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 5; j++) {
cout.width(4);
cout << i * j;
}
cout << endl;
}
return 0;
}
Çıktı:
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
5 10 15 20 25
8. while ve do-while ile Kullanıcı Girdisi
Döngüler, kullanıcıdan veri alırken geçerli giriş sağlanana kadar tekrar etmesi için de kullanılabilir.
#include <iostream>
using namespace std;
int main() {
int sayi;
do {
cout << "Pozitif bir sayı girin: ";
cin >> sayi;
} while (sayi <= 0);
cout << "Girdiğiniz sayı: " << sayi << endl;
return 0;
}
Kullanıcı negatif bir sayı girerse döngü tekrar eder; pozitif sayı girildiğinde döngü sona erer.
9. TL;DR
for→ tekrar sayısı belli olduğunda kullanılır.while→ koşul doğru olduğu sürece çalışır.do-while→ en az bir kez çalışır, koşul sonra kontrol edilir.break→ döngüyü sonlandırır,continue→ bir sonraki tura geçer.- İç içe döngüler, tablo veya matris işlemlerinde kullanılır.
- Tüm örnekler Visual Studio 2022 veya GCC 11+ derleyicilerinde çalıştırılabilir.