Anasayfa / JAVA / Java’da Döngüler: for, while, do-while Kullanımı ve Örnekleri

Java’da Döngüler: for, while, do-while Kullanımı ve Örnekleri

Bilgisayar programlamasında, aynı kod bloğunu belirli bir koşul sağlandığı sürece tekrar tekrar çalıştırmamız gereken durumlarla sıkça karşılaşırız. Örneğin, ekrana 1’den 100’e kadar olan sayıları yazdırmak istediğinizi düşünün. Bunu 100 satır boyunca tek tek kodlayarak yapmak yerine, bir “döngü” (loop) kullanarak sadece birkaç satır kodla çözebilirsiniz.

Java programlama dilinde, programın çalışma akışını belirli koşullara göre tekrar eden (yineleyen) bu yapılara yineleme deyimleri (iteration statements) veya kısaca döngüler adı verilir. Döngüler, bir programın belirli bir durdurma koşulu karşılanana kadar aynı talimat dizisini defalarca yürütmesini sağlar. Java, her türlü programlama ihtiyacına uygun olması için while, do-while ve for olmak üzere üç temel döngü yapısı sunar.

Bu rehberde, Java’yı ilk defa öğrenenler için döngülerin nasıl kullanıldığını, aralarındaki farkları ve hangi durumda hangisinin tercih edilmesi gerektiğini örneklerle pekiştirerek inceleyeceğiz.


1. while Döngüsü (Koşul Sağlandıkça Tekrarla)

while döngüsü, Java’daki en temel döngü ifadesidir. Kontrol ettiği koşul doğru (true) olduğu sürece, döngü gövdesindeki (süslü parantezler içindeki) ifadeleri tekrar tekrar çalıştırır.

Genel Sözdizimi (Syntax):

while (koşul) {
    // Koşul doğru olduğu sürece çalıştırılacak kodlar
}

Çalışma Mantığı ve Özellikleri: while döngüsünde koşul her zaman döngünün en başında (tepesinde) değerlendirilir. Eğer koşul en baştan itibaren yanlışsa (false), döngü gövdesi hiçbir zaman çalıştırılmaz ve program doğrudan döngünün altındaki satırdan devam eder. Eğer koşul doğruysa gövde çalıştırılır ve işlem bittikten sonra tekrar başa dönülerek koşul tekrar test edilir.

Örnek: Geriye Sayım Aracı

int n = 10;

while (n > 0) {
    System.out.println("Geri sayım: " + n);
    n--; // n'in değerini her adımda 1 azalt
}

Bu örnekte n değişkeni 10’dan başlar. while (n > 0) koşulu 10 > 0 olduğu için doğrudur. Ekrana “Geri sayım: 10” yazdırılır ve n değeri 1 azaltılarak 9 yapılır. Bu işlem n 0 olana kadar devam eder. n sıfır olduğunda koşul yanlış (false) çıkar ve döngü biter.


2. do-while Döngüsü (Önce Yap, Sonra Kontrol Et)

while döngüsünün koşulu başlangıçta yanlışsa hiç çalışmadığını öğrendik. Ancak bazı durumlarda, başlangıç koşulu ne olursa olsun döngünün en az bir kez çalışmasını isteyebiliriz. Başka bir deyişle, koşulu döngünün başında değil, sonunda test etmek istediğimiz durumlarda do-while döngüsü imdadımıza yetişir.

Genel Sözdizimi:

do {
    // En az bir kere çalıştırılacak ve koşul doğruysa tekrar edecek kodlar
} while (koşul);

Çalışma Mantığı ve Özellikleri: do-while döngüsünde program akışı do bloğunun içine girer ve kodları çalıştırır. Kodlar çalıştıktan sonra while kısmındaki koşul kontrol edilir. Koşul doğruysa döngü başa döner, yanlışsa döngü sona erer. Bu yapı, özellikle kullanıcının bir menüden seçim yapmasını istediğiniz durumlarda son derece faydalıdır, çünkü menü seçeneklerinin kullanıcıya en az bir kez gösterilmesi gerekir.

Örnek: Kullanıcıdan Veri Alma (Menü Simülasyonu)

int secim;
java.util.Scanner scanner = new java.util.Scanner(System.in);

do {
    System.out.println("1. Oyuna Başla");
    System.out.println("2. Çıkış");
    System.out.print("Seçiminiz (1 veya 2): ");
    secim = scanner.nextInt();
} while (secim < 1 || secim > 2); // 1 veya 2 harici bir giriş yapıldığı sürece tekrar sor

Bu kodda kullanıcı geçerli bir seçenek girene kadar menü tekrar tekrar gösterilir. Koşul sonda olduğu için menü ekrana en az bir kere yazdırılacaktır.


3. for Döngüsü (Gelişmiş Sayaç Mekanizması)

Eğer bir işlemin kaç kere tekrarlanacağını önceden biliyorsanız, en esnek ve güçlü döngü türü olan for döngüsünü kullanmanız en iyi seçenektir. for döngüsü; başlangıç ataması, koşul testi ve artırım/azaltım işlemlerini tek bir satırda toplayarak kodun okunabilirliğini büyük ölçüde artırır.

Genel Sözdizimi:

for (başlangıç_değeri; koşul; artırım_veya_azaltım) {
    // Çalıştırılacak kodlar
}

Çalışma Mantığı ve Özellikleri:

  1. Başlangıç Değeri (Initialization): Döngü ilk başladığında sadece bir kez çalışır ve genellikle bir sayaç değişkeni tanımlanıp başlangıç değeri verilir.
  2. Koşul (Condition): Her iterasyondan önce kontrol edilir. Koşul doğru (true) ise döngü çalışır, yanlışsa (false) sonlanır.
  3. Artırım/Azaltım (Iteration): Döngü gövdesindeki işlemler bittikten sonra sayacı güncellemek için çalışır.

Örnek: For ile Geriye Sayım

for (int n = 10; n > 0; n--) {
    System.out.println("Geri sayım: " + n);
}

Burada int n = 10 ifadesiyle döngü kontrol değişkeni tanımlanır. Bu değişkenin for döngüsü içinde tanımlanması, kapsamının (scope) sadece o döngüyle sınırlı kalmasını sağlar. Döngü bittiğinde n değişkeni bellekten silinir.


4. Gelişmiş for Döngüsü (for-each)

JDK 5 sürümüyle birlikte Java’ya, dizi (array) ve koleksiyonlar (collections) üzerinde gezinmeyi son derece basitleştiren “for-each” tarzı gelişmiş bir for döngüsü eklendi. Bu döngü, arka planda bir sayaç tutma zorunluluğunu, başlangıç ve bitiş değerlerini manuel olarak belirlemeyi ortadan kaldırır ve olası sınır (boundary) hatalarını engeller.

Genel Sözdizimi:

for (veri_tipi degisken_adi : dizi_veya_koleksiyon) {
    // İşlemler
}

Örnek: Dizi Elemanlarını Toplama

int[] sayilar = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int toplam = 0;

for (int x : sayilar) {
    toplam += x;
}
System.out.println("Toplam: " + toplam);

Bu örnekte x değişkeni sırasıyla dizideki her bir elemanın değerini alır (1, sonra 2, sonra 3…). Önemli İpucu: for-each döngüsü temelde “salt okunur” (read-only) bir yapıdadır; iterasyon değişkeninin (örnekte x) değerini değiştirmek asıl dizideki/koleksiyondaki veriyi değiştirmez.


5. Döngü Akışını Değiştirmek: break ve continue Deyimleri

Bazen bir döngüyü koşul sağlanmadan önce zorla durdurmak veya belirli bir adımı atlamak isteyebiliriz. Bu gibi durumlarda sıçrama deyimleri (jump statements) olan break ve continue kullanılır.

  • break Deyimi: Bir döngünün içinde kullanıldığında, döngü koşulu ne olursa olsun döngüyü anında sonlandırır ve program akışı döngünün hemen dışındaki satırdan devam eder. Özel bir olay gerçekleştiğinde döngüyü iptal etmek için kullanılır.
  • continue Deyimi: Döngüyü tamamen sonlandırmaz, ancak o anki iterasyonu yarıda kesip bir sonraki iterasyona (adıma) atlar.

Örnek: Sadece Çift Sayıları Yazdıran Döngü (continue kullanımı)

for (int i = 0; i < 10; i++) {
    if (i % 2 != 0) { // Sayı tek ise
        continue;     // Bu adımı atla, aşağıdaki satıra inme ve başa dön
    }
    System.out.print(i + " "); // Çıktı: 0 2 4 6 8
}

Özet: Hangi Döngüyü Seçmeliyim?

  • Eğer bir işlemin kaç kere tekrarlanacağını önceden biliyorsanız for döngüsü en pratik yapıdır.
  • Eğer bir dizinin veya listenin elemanlarını baştan sona okuyacaksanız for-each (gelişmiş for) döngüsü kullanın.
  • Eğer döngünün çalışma sayısı belli değilse ve durma işlemi ancak belirli bir koşula bağlıysa while kullanın.
  • Eğer döngü gövdesindeki işlemlerin mutlaka, koşulsuz şartsız en az 1 kez çalışması gerekiyorsa do-while döngüsünü tercih edin.

Döngüler, Java’da problem çözmenin temel taşlarıdır. Kendi senaryolarınıza uygun döngü tipini seçip bol bol pratik yaparak kodlama algoritmalarınızı güçlendirebilirsiniz!

Etiketlendi:

Cevap bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

DERSLER