Java

Java’da Döngüler (for while do-while)

Java'da Döngüler (for while do-while)

Yazılım geliştirme sürecinde belirli bir işlemi tekrar tekrar yürütmek en temel gereksinimlerden biridir. Aynı kod satırlarını onlarca veya yüzlerce kez alt alta yazmak kodun okunabilirliğini bozar, dosya boyutunu artırır ve bakımını imkansız hale getirir. Java programlama dilinde bu tür yinelenen görevler döngü (loop) yapıları ile çözülür.

Döngü Kavramı ve Çalışma Mantığı

Döngüler, tanımlanan mantıksal bir koşul doğru (true) olduğu sürece belirli bir kod bloğunu çalıştırmaya devam eden kontrol akışı mekanizmalarıdır. Koşul yanlış (false) değerine ulaştığında döngü sonlanır ve program döngü bloğundan sonraki satırdan itibaren çalışmasını sürdürür.

Döngülerin temel çalışma döngüsü genel olarak üç adımdan oluşur:

  • Başlangıç durumu: Döngü sayacının tanımlanması veya başlangıç değerinin atanması.
  • Koşul denetimi: Her yineleme öncesinde (veya sonrasında) mantıksal ifadenin doğruluğunun test edilmesi.
  • Güncelleme: Döngü sayacının artırılması, azaltılması ya da döngüyü sonlandıracak durum değişikliğinin yapılması.

Java’da temel olarak üç döngü türü bulunur: for, while ve do-while. Her birinin kullanım amacı ve çalışma biçimi farklı senaryolara uygundur.

for Döngüsü

Tekrar sayısının önceden kesin olarak bilindiği durumlarda genellikle for döngüsü tercih edilir. Başlangıç değeri, koşul ve artırma/azaltma adımları tek bir satırda tanımlanır. Bu yapı, kodun derli toplu ve takip edilebilir olmasını sağlar.

Sözdizimi şu şekildedir:

for (baslatma; kosul; guncelleme) {
    // Calistirilacak kodlar
}

Basit bir örnek üzerinden inceleyelim:

public class ForDongusu {
    public static void main(String[] args) {
        for (int i = 1; i <= 5; i++) {
            System.out.println("Dongu adimi: " + i);
        }
    }
}

Bu örnekte int i = 1 ifadesi ile i değişkeni tanımlanmış ve 1 değeri atanmıştır. Bu işlem yalnızca döngünün başında bir defa çalışır. Ardından i <= 5 koşulu denetlenir. Koşul doğru olduğu sürece blok içindeki kod çalıştırılır. Blok tamamlandıktan sonra i++ ifadesi işletilerek i bir artırılır ve koşul tekrar denetlenir. i değişkeni 6 olduğunda koşul sağlanmaz ve döngüden çıkılır.

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

Java 5 ile birlikte dile eklenen gelişmiş for döngüsü, dizi (array) veya koleksiyon (collection) elemanları üzerinde indeks takibi yapmadan gezinmeyi sağlar.

public class ForEachDongusu {
    public static void main(String[] args) {
        String[] diller = {"Java", "Python", "C++", "Go"};

        for (String dil : diller) {
            System.out.println("Programlama Dili: " + dil);
        }
    }
}

Bu yapıda sayaç değişkeni tanımlanmaz ve dizinin boyutunu kontrol etmeye gerek kalmaz. Döngü, dizideki her bir elemanı sırayla dil değişkenine atar ve son elemana ulaşıldığında otomatik olarak sonlanır.

while Döngüsü

Döngünün kaç defa çalışacağı önceden bilinmiyorsa, ancak bir koşula bağlı olarak devam etmesi isteniyorsa while döngüsü tercih edilir. while döngüsünde yalnızca koşul denetlenir. Sayaç tanımı döngüden önce yapılır, sayaç güncellemesi ise döngü bloğu içinde geliştirici tarafından açıkça yazılmalıdır.

Sözdizimi şu şekildedir:

while (kosul) {
    // Calistirilacak kodlar
    // Guncelleme ifadesi
}

Aşağıdaki örnekte bir sayının ikiye bölünerek küçültülmesi işlemi simüle edilmiştir:

public class WhileDongusu {
    public static void main(String[] args) {
        int sayi = 32;

        while (sayi > 1) {
            System.out.println("Guncel sayi: " + sayi);
            sayi = sayi / 2;
        }
        System.out.println("Son deger: " + sayi);
    }
}

Bu kod parçasında döngü, sayi değeri 1’den büyük olduğu sürece çalışır. Blok içindeki sayi = sayi / 2 ifadesi her adımda değeri günceller. Bu güncelleme yazılmazsa sayi hep 32 kalır ve program sonsuz döngüye (infinite loop) girerek sistem kaynaklarını tüketir.

do-while Döngüsü

do-while döngüsünün while döngüsünden temel farkı, koşul denetiminin kod bloğu çalıştırıldıktan sonra yapılmasıdır. Bu nedenle koşul yanlış olsa dahi döngü bloğu en az bir defa mutlaka çalıştırılır.

Sözdizimi şu şekildedir:

do {
    // Calistirilacak kodlar
    // Guncelleme ifadesi
} while (kosul);

Kullanıcıdan geçerli bir giriş alınması gereken senaryolarda do-while sıklıkla kullanılır:

public class DoWhileDongusu {
    public static void main(String[] args) {
        int sayac = 10;

        do {
            System.out.println("Sayac degeri: " + sayac);
            sayac++;
        } while (sayac < 5);

        System.out.println("Dongu bitti, sayac: " + sayac);
    }
}

Yukarıdaki kodda sayac değişkeninin başlangıç değeri 10’dur. Koşul sayac < 5 olmasına rağmen kontrol sonda yapıldığı için döngü gövdesi bir defa çalışır, ekrana “Sayac degeri: 10” yazdırılır ve sayac 11 olur. Ardından koşul kontrol edilir; 11, 5’ten küçük olmadığı için döngü devam etmez.

Döngü Kontrol İfadeleri: break ve continue

Döngülerin doğal akışını değiştirmek için Java iki anahtar sözcük sunar:

  • break: Döngüyü anında sonlandırır ve program akışını döngünün dışına çıkarır.
  • continue: Döngünün mevcut adımını o noktada keser ve bir sonraki yinelemeye geçer.

Bu ifadelerin kullanımını gösteren örnek:

public class BreakContinueOrnek {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            if (i == 3) {
                continue; // 3 degerini atla
            }
            if (i == 7) {
                break; // 7 degerine ulasildiginda donguden cik
            }
            System.out.println("Deger: " + i);
        }
    }
}

Bu program çalıştırıldığında çıktıda 3 sayısı yer almaz çünkü continue ifadesi o adımı atlatmıştır. Sayı 7’ye ulaştığında ise break ifadesi tetiklenir ve döngü 8, 9, 10 değerlerine hiç ulaşmadan son bulur.

Özet ve Sonraki Adımlar

Java’da döngü seçimi yaparken ihtiyaca göre hareket etmek gerekir:

  • Tekrar sayısı belliyse veya diziler üzerinde işlem yapılıyorsa for ya da for-each,
  • Bir koşul sağlandığı sürece çalışması gereken durumlarda while,
  • İşlemin koşul ne olursa olsun en az bir kez çalışması zorunluysa do-while kullanılmalıdır.

Döngü yapılarını kavradıktan sonraki adım, döngülerin iç içe kullanıldığı (nested loops) çok boyutlu dizi yapılarını ve algoritmik problem çözme yöntemlerini incelemektir.

#for döngüsü#java#java döngüler#programlama temelleri#while döngüsü

コメント

まだコメントはありません。最初のコメントをどうぞ。

コメントを書く

コメントは管理者の承認後に公開されます。