Aynı işlemi tekrar tekrar yapmak istiyorsak döngüleri kullanıyoruz.
goto
goto deyimi bir satırdan başka bir satıra atlamak için kullanılır. Aşağıdaki kodda loop: bir etikettir. Etikette farklı bir isim de kullanabiliriz. goto loop; ifadesin çalıştığında programımız etiketin bulunduğu satırdan çalışmaya devam edecek.
#include <iostream>
using namespace std;
int main() {
int sayac = 0;
loop:
cout << sayac << endl;
sayac++;
if (sayac < 5) goto loop;
}
// Çıktı:
// 0
// 1
// 2
// 3
// 4goto deyimini yasak elma gibi düşünebilirsiniz. Evet goto yu kullanabilirsiniz ama bu devamında sizi cennetten atabilir.

while
En basit döngümüzden başlayalım.
while(koşul){
//kodlar
}Koşul doğru oldukça kodlar tekrar tekrar çalışacaktır. Aşağıdaki döngü sonsuza kadar duraksamadan çalışacaktır. Böyle bir durumda konsol ekranında CTRL+C tuşlarına basarak interrupt sinyali gönderip programı sonlandırabilirsiniz.
int i = 0;
while (true){
cout << i++ << "\n";
}Şimdi [0,10) aralığındaki sayıları yazdıralım
int i = 0;
while (i<10){
cout << i << "-";
i++;
}
// 0-1-2-3-4-5-6-7-8-9-şimdi ise bir üçgen yazdıralım
int i = 1;
while (i<10){
int j = 0;
while (j < i) {
cout << "*";
j++;
}
cout << "\n";
i++;
}
// *
// **
// ***
// ****
// *****
// ******
// *******
// ********
// *********for
while döngüsünün daha kompakt halidir. Aşağıdaki her iki döngü aynı işi yapacaktır.
int main() {
int i = 0;
while (i < 10) {
cout << i << "-";
i++;
}
cout << endl;
for (int i = 0; i < 10; i++) {
cout << i << "*";
}
}yapısı
for(ilk değer ataması; koşul; son-ifade){
// kodlar
}- İlk değer atamasında döngüde kullanacağımız değişkenleri atıyoruz
- daha sonra döngü koşulumuzu yazıyoruz
- en sonunda ise her döngü çevriminin sonunda çalışacak ifadeyi yazıyoruz.
break & continue
şimdi 1 den 100 e kadar olan asal sayıları bulalım:
#include <iostream>
using namespace std;
int main() {
for (int i = 2; i <= 100; i++) { // 2 den 100 e kadar tek tek gidiyoruz
bool kontrol = true;
// Eğer sayı kendisi ve 1 den başka bir sayıya bölünmüyorsa asaldır
for (int j = i-1; j >= 2; j--)
if (i % j == 0) { // i nin j ye bölümünden kalan 0 ise
kontrol = false;
break; // donguden çık
}
// Eğer asalsa ekrana bastır
if (kontrol)
cout << i << ", ";
}
}burada break ifadesi çalıştığında içinde bulunduğu döngüden çıkar. Artık döngüye geri dönmez.
int i = 0;
while (true){
cout << i++ << ", ";
if (i > 10)
break;
}
// 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,Yukarıdaki örnekte her adımda/iterasyonda i değeri 1 artar. Eğer i değeri 10 dan büyük olursa break ifadesi çalışır ve döngüden çıkar. Bu örneğimize continue deyimini de ekleyelim.
int main() {
int i = 0;
while (true){
i++;
if (i % 2 == 0) // eğer i nin ikiden bölümünden kalan 0 ise
continue; // bu adımı atla
cout << i << ", ";
if (i > 10)
break;
}
}
//1, 3, 5, 7, 9, 11,
continue deyimi break deyiminin tek bir adım/iterasyon için olanıdır. O iterasyon atlanır ve sonraki iterasyondan kaldığı gibi devam edilir.
do while
while döngüsünün en az bir kere çalışan hali.
int main() {
do{
cout << "do-while" << endl;
} while (false);
}
// do-whileYukarıdaki kodla aşağıda kod aynı:
cout << "do-while" << endl;
while (false) {
cout << "do-while" << endl;
}Farkettiyseniz aynı satırı 2 kere yazmak mecburiyetinde kaldık. İşte bu durumu önlemek için do-while döngüsü var.
range based for loop
liste şeklindeki yapıların elemanlarını sıralı bir şekilde çeker. Örneğin:
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> vec{ 5,10,12,13,27,321 };
for (int i : vec)
cout << i << ", ";
// 5, 10, 12, 13, 27, 321,
}
Tabi merak edip kurcalarsanız şu durumu farkedeceksiniz. i=5; gibi bir ifade vector içindeki değişkenleri değşitirmeyecektir. Çünkü aslında arka planda bir koplayama oluyordur. Bunu önlemek için şu şekilde yazıyoruz:
vector<int> vec{ 5,10,12,13,27,321 };
for (int& i : vec)
i = 5;
for (int& i : vec)
cout << i << ", ";
// 5, 5, 5, 5, 5, 5,

Leave a Reply