İçeriğe geç

while Döngüsü

while döngüsü, bir koşul true kaldığı sürece bir kod bloğunu tekrarlar. Döngünün kaç kez çalışacağını önceden bilmediğiniz durumlarda kullanın.

while (koşul) {
// gövde, koşul true olduğu sürece çalışır
}

Koşul her yinelemeden önce kontrol edilir. Başlangıçta false ise gövde hiç çalışmaz.

int i = 0;
while (i < 5) {
print(i);
i = i + 1;
}
// Çıktı: 0 1 2 3 4
int count = 5;
while (count > 0) {
print(count);
count = count - 1;
}
// Çıktı: 5 4 3 2 1
int[] arr = [2, 4, 6, 8];
int i = 0;
while (i < 4) {
print(arr[i]);
i = i + 1;
}
// Çıktı: 2 4 6 8

Koşul hiçbir zaman false olmazsa döngü sonsuza kadar çalışır:

while (true) {
// sonsuza kadar çalışır, çıkmak için break veya return kullanın
}

Döngüden hemen çıkın:

int i = 0;
while (i < 10) {
if (i == 3) { break; }
print(i);
i = i + 1;
}
// Çıktı: 0 1 2

Sonraki yinelemeye atlayın. for’un aksine, güncelleme continue’dan önce yapılmalıdır, yoksa o da atlanır:

int i = 0;
while (i < 5) {
i = i + 1; // güncelleme önce yapılır
if (i == 3) { continue; }
print(i);
}
// Çıktı: 1 2 4 5 (3 atlandı)

Eğer continue’u güncellemeden önce koyarsanız sonsuz döngü oluşur, çünkü sayaç asla ilerlemez:

int i = 0;
while (i < 5) {
if (i == 3) { continue; } // i==3 olduğunda i asla değişmez!
print(i);
i = i + 1;
}
// UYARI: i 3'e ulaştığında sonsuz döngü
int i = 1;
while (i <= 3) {
int j = 1;
while (j <= 3) {
print(i * j);
j = j + 1;
}
i = i + 1;
}
int popcount(int n) {
int count = 0;
while (n != 0) {
count = count + (n & 1);
n = n >> 1;
}
return count;
}
int main() {
print(popcount(7)); // 3, binary 111
print(popcount(256)); // 1, binary 100000000
return 0;
}

Çıkış koşulunu döngünün başında değil de içinde ifade etmek daha kolay olduğunda, yaygın bir deyim olarak kasıtlı sonsuz döngü ve break kullanılır:

int n = 100;
int steps = 0;
while (true) {
if (n == 1) { break; } // çıkış koşulu, döngü ortasında
if (n % 2 == 0) { n = n / 2; }
else { n = 3 * n + 1; }
steps = steps + 1;
}
print(steps); // 1'e ulaşmak için Collatz adımları

Bu, her çıkış sebebini tek bir döngü-başı koşuluna sıkıştırmak yerine döngünün bir olay gerçekleşene kadar devam etmesini sağlar. Yalnızca en az bir break (veya return) erişilebilir olduğundan emin olun, yoksa döngü asla sona ermez.

for şu durumlarda… while şu durumlarda…
Yineleme sayısını biliyorsanız Sayı dinamik bir koşula bağlıysa
Bir diziyi indeksle dolaşıyorsanız Bir durum değişikliği bekliyorsanız
Net bir başlatma/koşul/güncelleme kalıbı varsa Yalnızca “X olduğu sürece devam et” gerekiyorsa