Platform
Programlama

8. Döngüler - C++

Bir listeyi dönmek ne demek.

resul · Editör, Yazar· 1 Eylül 2026· 5 dk okuma

Döngü dediğimiz şey kontrollü tekrarlamadır. Elimizde temel olarak for ve while döngüsü var. Örnek verelim:

İlk döngü: for

Klasik for döngüsü içine 3 argüman alır. İlki dönecek olan sayıyı tanımladığımız kısım, ikincisi for'un çalışma sayısını belirleyecek olan koşul, üçüncüsü ise döngü çalıştıkan sonra ilk argümanda belirlenen sayıya ne olacağıdır. Örneğin

cpp
#include <iostream>

int main(){

for (int i{0}; i < 5; i += 1) { 
	std::cout << i << '\n';				
}
return 0;
};

Burada i adında bir değişken tanımladık.
-İkinci kısımda bu döngünün hangi koşulda çalışacağını belirledik i < 5.
-Üçüncü ve son kısımda döngünün her çalışmasından sonra i değişkenine ne olacağını belirledik.
-Dönen şeyleri şu şekilde özetleyelim.

i sayısı oluşturduk ve değerine sıfır dedik. Bu sayı 0 < 5 koşulunu sağladı ve for döngüsü içindekileri uyguladı. Uygulandıktan sonra üçüncü argümana bakıldı ve i += 1 ile bir kez arttırma işlemi yapıldı. Daha sonra 1 < 5 koşulunu da sağladığı için döngü bir kez daha çalıştı ve i sayısı yine bir kez arttırıldı. Döngü son olarak 4 < 5 koşulu sağlandığında çalıştı ve toplamda 5 kez çalışmış oldu. Ancak 5.kez çalışmanın ardından i tekrar 1 kadar arttırıldığında i=5 oldu ve i<5 koşulu uygulanmamış olduğundan döngü 0 dahil olmak üzere 5 kere çalıştı ve ekrana çıkan çıktı

output
0
1
2
3
4

oldu. i+=1 , sayıyı 1 arttırır. Ancak bunun yerine i++ yada ++i de kullanabilirsiniz. int i{0}; i < 5; i++ veya int i{0}; i < 5; ++i gibi.
İleride C++ performansından (özellikle nesne yönelimli programlamada iteratörlerden) bahsederken, ++i'nin arkada fazladan geçici kopya oluşturmadığı için biraz daha hızlı olduğundan detaylı bahsedeceğim. Bu yüzden yazılımcılar genellikle ++i tercih ederler.

for döngüsünün bir farklı hali: range-for

Bu for döngüsünde indeks ve taşma problemi olmadan kullanım yapabilirsiniz. Mesela

cpp
#include <vector>
#include <iostream>

int main(){
const std::vector<int> sayilar{1, 2, 3, 4};

for (const int sayi : sayilar) {
    std::cout << sayi << '\n';
}
return 0;
};

Burada bir sabit değişken tanımladık. Ancak geçmişte gördüğümüz C++ değişkenlerine benzemiyor. Bu değişken std::vector içinde bir dizi öge tutabilen bir container değişkendir. std isim uzayında yer alır ve vector kütüphanesinin bir parçasıdır. Harici olarak eklemeniz gerekmez bu kütüphaneyi. Standart bir kütüphanedir. Yanına bu değişkenin yanına yazdığımız <> işaretleri bu listedeki ögelerin hangi türde olacaklarını söyler. İstersek

cpp
#include <vector>
#include <iostream>
#include <string>

int main(){
const std::vector<std::string> isimler{"ahmet", "mehmet", "ayse", "fatma"};

for (const std::string isim : isimler) {
    std::cout << isim << '\n';
}
return 0;
};

de yapabiliriz. Burada gerçekleşen olayları açıklayayım. For döngüsü içindeki argüman şartlarını sağlayacak şekilde altındaki süslü parantez içindeki görevleri yaptığını belirtmiştik. isim : isimler belirteci isimler adlı listenin (burada liste bir vector olarak kullanıldı) her ögesini sırayla isim şeklinde çağırıp işlem yapmamızı sağlar.
Yani burada isimler dizisindeki her indeksi sırayla yazdırdığını ve sonucun

output
ahmet
mehmet
ayse
fatma

olacağını öngörebiliriz.

while

while, “bu koşul doğru olduğu sürece” demektir. Kod bloğunu kullanıcı isteyene kadar oku gibi. Mesela sayacı biz yönetiyorsak for daha okunur olr genelde. whilei “ne zamana kadar” sorusuna bir cevap olarak kullanırsak daha iyi olur.

Yine de aynı işi hem for ile hem while ile de yazabilirsin. forun üç parçasını parçalara ayırıyorsun: sayı dışarıda, koşul whileın yanında, arttırma süslü parantezin içinde.

cpp
#include <iostream>

int main(){

int i{0};
while (i < 5) {
	std::cout << i << '\n';
	i += 1;
}
return 0;
};

Burada yine i adında bir değişken tanımladık. Bu sefer forun birinci argümanı döngünün dışında duruyor.
-whileın yanındaki () yalnızca koşuldur: i < 5.
-Arttırma üçüncü argüman gibi otomatik gelmez. Unutursan i 0'da kalır, 0 < 5 sonsuza kadar doğru kalır, program orada takılır. O yüzden i += 1i süslü parantezin içine sen koyuyorsun.
-Dönen şeyleri aynı şekilde özetleyelim.

i sayısı oluşturduk ve değerine sıfır dedik. while i < 5 diye sordu, koşul sağlandı, içindeki işler uygulandı, sonra i += 1 ile bir kez arttırma yapıldı. Daha sonra 1 < 5 koşulunu da sağladığı için döngü bir kez daha çalıştı ve i yine bir kez arttırıldı. Döngü son olarak 4 < 5 koşulu sağlandığında çalıştı. 5. kez çalışmanın ardından i tekrar 1 kadar arttırıldığında i=5 oldu ve i<5 koşulu sağlanmadı. Döngü 0 dahil olmak üzere 5 kere çalıştı ve ekrana çıkan çıktı

output
0
1
2
3
4

oldu. Yani bu örnek for (int i{0}; i < 5; i += 1) ile aynı işi yapar. Sayacı sen sayıyorsan for tek satırda durduğu için daha okunur. while da olur.

Yani aslında asıl while şöyle ki: kaç tur döneceğini baştan bilmeyebilirsin. Koşul bir sayı aralığı değil for gibi, aslında “ne zamana kadar” sorusunun cevabı.

cpp
#include <iostream>

int main(){

int sayi{1};

while (sayi != 0) {
	std::cout << "bir sayi yaz, cikmak icin 0\n";
	std::cin >> sayi;
}
return 0;
};

Burada sayiyı 1 diye başlattık ki döngü en az bir kez içeri girsin. while her turda sayi != 0 mu diye bakar.
-Kullanıcı 7 yazarsa 7 != 0 doğrudur, tekrar sorar.
-0 yazarsa 0 != 0 yanlıştır, döngü biter.
-Kaç kez soracağını sen yazmazsın. Kullanıcı ne zaman 0 derse o zaman biter. fora i < ? koyacak bir ? yok burada. O yüzden bu iş whileındır.

forda üçüncü argüman her tur sonunda çalışır. whileda o iş yok. Koşulu değiştirecek şeyi (i += 1 ya da std::cin >> sayi) sen unutursan döngü durmaz. Durmasını beklediğin şeyi içeri yazmayı unutmamalısın.

Kaynaklar

Editör · Yazarresul
cpp