Programlamada aynı işlemi tekrar tekrar yapma ihtiyacı çok sık karşımıza çıkar. Kullanıcı doğru bir giriş yapana kadar beklemek, bir oyunun bitmesini kontrol etmek ya da sistemde bir şart sağlanana kadar işlem yapmak gibi birçok durumda döngülerden faydalanırız. JavaScript’te bunun için birkaç farklı döngü türü olsa da, while döngüsü özellikle kaç kere çalışacağını bilmediğimiz durumlarda devreye girer. Bu yazıda sadece while döngüsü konusunu detaylı bir şekilde işleyeceğiz.
While Döngüsü Nedir?
While döngüsü, adından da anlaşılacağı üzere “sürece” anlamına gelir. Yani belli bir koşul doğru olduğu sürece içinde yazılan kod bloğu çalışmaya devam eder.
Temel yazım şekli şöyledir:
while (koşul) {
// Koşul doğruysa çalışacak kodlar
}
Bu yapının mantığı oldukça basittir: JavaScript her seferinde parantez içindeki koşulu kontrol eder. Eğer koşul doğruysa (yani true
değerini veriyorsa), süslü parantezler içindeki kodu çalıştırır. Ardından tekrar koşulu kontrol eder. Koşul yanlış (false
) olduğunda ise döngü sona erer.
Temel Bir Örnek: 5′ten 15′e Kadar Sayıları Yazdırma
let number = 5;
while (number <= 15) {
console.log("Şu anki sayı:", number);
number++;
}
Bu örnekte number
değişkeni 5’ten başlıyor ve her döngüde 1 artırılıyor. Koşul number <= 15
olduğu sürece döngü devam eder. Yani 5, 6, 7, …, 15 sayılarını sırayla ekrana yazdırır.
Sonsuz Döngüye Dikkat
While döngüsünü kullanırken dikkat etmen gereken en önemli konulardan biri, döngü koşulunu bir noktada değiştirmek zorunda olduğundur. Aksi halde döngü sonsuza kadar devam eder. İşte kötü bir örnek:
let sayac = 0;
while (sayac < 5) {
console.log("Merhaba!");
// sayac++ yazılmadığı için sonsuz döngü olur
}
Bu kod bloğunda sayac
değeri hiçbir zaman değişmediği için koşul hep true
kalır ve döngü asla bitmez. Tarayıcının donmasına veya işlemcinin yoğun şekilde çalışmasına sebep olabilir.
For Döngüsüne Kıyasla Ne Zaman While Kullanılır?
Genellikle:
- Eğer döngünün kaç defa çalışacağını biliyorsak,
for
döngüsü kullanılır.
- Eğer kaç defa çalışacağını bilmiyorsak,
while
döngüsü tercih edilir.
Örneğin kullanıcıya belirli bir soruyu sorup doğru cevap alana kadar döngüyü sürdürmek istiyorsak, bu iş için while
döngüsü daha uygundur. Çünkü kaç defa sorulacağını önceden bilemeyiz.
Gerçek Hayattan Örnek: Doğru Cevap Gelene Kadar Sorma
Aşağıdaki örnekte, kullanıcıdan bir tahminde bulunması istenir. Doğru tahmini yapana kadar aynı soru tekrar sorulur:
const correctAnswer = "PandaPower";
let userGuess = prompt("Gizli kelimeyi tahmin et:");
while (userGuess !== correctAnswer) {
userGuess = prompt("Yanlış! Lütfen tekrar deneyin:");
}
console.log("Tebrikler! Doğru kelimeyi bildiniz.");
Bu örnekte kullanıcı "PandaPower"
kelimesini girene kadar döngü devam eder. Giriş doğru olduğunda döngü sona erer ve “Tebrikler!” mesajı görüntülenir.
Bu tür döngüler, kullanıcıdan belirli bir doğrulama alana kadar işlemleri durdurmak için idealdir.
Oyun Gibi Durumlar: Belirsiz Süreli Döngüler
Bir oyun oynandığını düşünelim. Oyun, oyunculardan biri kazanana kadar devam eder. Bu tür durumlarda kaç hamle yapılacağını bilmek mümkün değildir. While döngüsü işte bu gibi senaryolar için idealdir:
let gameOver = false;
while (!gameOver) {
// Oyuncu hareket eder
// Oyun durumu güncellenir
// Kazanan kontrol edilir
// Diyelim ki bir noktada oyun bitti:
gameOver = kontrolEtOyunBittiMi(); // bu fonksiyon true ya da false döner
}
console.log("Oyun sona erdi. Teşekkürler!");
Buradaki yapı, oyun bitene kadar devam eder. Ne zaman biteceğini önceden bilmediğimiz için for
döngüsü yerine while
döngüsü kullanmak daha mantıklıdır.
Özetle
while
döngüsü, bir koşul doğru olduğu sürece çalışmaya devam eder.
- İçeride mutlaka koşulu değiştiren bir işlem yapılmalıdır, aksi takdirde sonsuz döngü oluşabilir.
for
döngüsü belirli tekrar sayıları için, while
ise belirsiz tekrarlar için uygundur.
- Kullanıcıdan doğru giriş almak veya bir oyun sürecini takip etmek gibi durumlarda while döngüsü ideal çözümdür.
Bu yapıyı öğrendikten sonra artık JavaScript’te döngüleri daha etkili kullanabilir, kullanıcı etkileşimlerine ve dinamik durumlara göre daha esnek kodlar yazabilirsin. Öğrendiklerini denemek için farklı senaryolar oluşturabilir, örneğin sayı tahmini oyunu gibi uygulamalar yapabilirsin.