Javada Döngüler (Loops)

Programlama dilleri ile uygulama geliştirirken, en çok kullandığımız işlemlerden biri, tekrarlanan operasyonları bilgisayarlara hızlı bir şekilde yaptırmaktır. Bu yüzden döngüler programlama konusunda çok önemli ve temel işlemlerden biridir.

Döngüler (Loops), hemen hemen her uygulamada ihtiyaç duyulur. Java’da bu tür döngü işlemlerini yapabilmek için birtakım komutlar sağlar. Bunlar while, do-while ve for döngü komutları olarak programcıların kullanımına sunulmuştur.

Döngü kullanımındaki amaç oldukça basittir. Verilen bir koşul, geçerliliğini sürdürdüğü sürece, döngü (loop) bloğu içerisindeki komutlar tekrar tekrar işleme alınır.

Java Döngüleri

Java’da kullanılan döngü komutları, C ve türevi olan dillerde kullanılan döngü komutları ile hemen hemen aynıdır. Daha önce bu tür dillerden biri ile uygulama geliştirdi iseniz, Java döngülerinin sözdizimi ve kullanımı size çok tanıdık gelecektir.

while Döngüsü

Java’da while döngüsü, çok basit bir temel üzerinde tasarlanmıştır. while komutu içerisindeki expression (ifade) “true” değerini döndürdüğü sürece while döngüsü bloğu içerisindeki komutlar işleme alınır. Eğer expression, bir sonraki döngüde “false” değerini dönürür ise döngü bloğunun bittiği yerden program çalışmaya devam eder.

while(ifade)
{
    //döngü kodları
}

Aşağıdaki akış çizelgesinde (flow-chart) de while döngüsünün çalışma prensibini daha net bir şekilde görebilirsiniz.

while döngüsü kullanarak ayrıca, sonsuz bir döngü (infinite loop) kurarak, döngünün bir şekilde sonlanmasını önleyebilirsiniz. Bu bazı durumlarda oldukça ihtiyaç duyulan bir yöntemdir. Ya da,  zaman zaman döngü koşulu döngü başlangıcında belirlenmemiş olabilir. Bu nedenden dolayı, döngüyü sonsuz bir döngü şeklinde ayarlayarak, döngü koşulunu blok içerisinde dinamik olarak belirleyerek, döngünün devam etmesini veya sonlanmasını sağlayabilirsiniz.

while(true)
{
    //döngü kodları
}

Şimdide while döngüsünün (while loop) kullanımına bir örnek verelim.

/**
Program 1 ile 100 arasındaki tüm çift sayıları
ekrana sırasıyla yazdırır
*/
package org.javablog;
 
public class Test
{
    public static void main(String[] args) {
        int i = 0;
        while(i < 100)
        {
            if(i % 2 == 0)
            {
                System.out.printf("%d ", i);
            }
            i++;
        } // end of while loop
    } // end of main
 
} // end of class

do-while Döngüsü

do-while döngüsü aslında while döngüsü ile aynı şekilde çalışır. Tek fark, programın içerisinde eğer bir while döngüsü var ise bu döngüye girilip girilmeyeceği while komutu içerisindeki ifadenin true olup olmamasına bağlıdır. Eğer ifade true değerini döndürmüyor ise, döngüye girilmeyerek, döngü bloğu bitimindeki komutlardan program devam eder.

Ancak, do-while döngü yapısında bu böyle değildir. Döngü, döngü koşulundaki değere bakılmadan mutlaka 1 kez çalıştırılır. Dönünün 2. veya daha fazla çalışıp çalışmayacağı, döngü koşuluna bakılarak eğer true dönüyor ise belirlenir.

do
{
    //döngü kodları
} while(ifade);

Aşağıdaki akış diyagramında do-while döngüsünün çalışma prensibi daha net olarak anlaşılabilir.

Şimdi de while döngüsü ile yazdığımız 1 den 100 e kadar olan sayılar arasında çift sayıları ekrana basan programı, do-while ile yapalım. Burda dikkat edilmesi gerek tek nokta, döngünün 1. çalışmasında while içerisindeki koşulun hiçbir şekilde önemi yoktur. Döngü mutlaka 1 kez çalıştırılacaktır.

package org.javablog;
 
public class Test
{
    public static void main(String[] args)
    {
        int i = 0;
        do
        {
            if(i % 2 == 0)
            {
                System.out.printf("%d ", i);
            }
        i++;
        } while(i < 100);
    }
}

for Döngüsü

for döngüsü, while ve do-while döngülerine göre daha farklı bir kullanım alanına sahiptir. Programcılar, kendi belirledikleri koşul etrafında döngünün kabaca kaç defa döneceğine karar verirler.

for döngüsü 3 farklı yapı ile oluşturulur. Bunlar, döngüyü kullanıma hazırlama (initialization), koşul (condition) ve arttırma (increment). Arttırma bölümünde, döngü ifadesini oluşturan değişkenler güncellenerek döngünün çalışma yapısı güncellenir.

for(initialization; condition; increment)
{
    //döngü kodları
}

for döngüsünün çalışma prensibini gösteren şemada aşağıdaki gibidir. increment bölümü change ile ifade edilmiştir.

while ve do-while döngüleri ile yapılan her türlü döngü işlemleri for ile de yapılabilir. for döngüsü döngüyü oluşturan ifadeleri tek bir satırda toplayarak, döngü yapısının okunmasını ve değişkenlerin güncellenmesi gibi komutların unutulmasında ortaya çıkabilecek hataların önüne geçebilmek için tasarlanan gelişmiş bir döngü yapısıdır.

//for döngüsü ile sonsuz döngü (infinite loop)
for( ; ;)
{
    // komutlar (statements)
}

Yine, 1 den 100 e kadar sayılar arasındaki çift sayıları ekrana bastıran programımızı bu kez for döngüsü ile yapalım.

package org.javablog;
 
public class Test
{
    public static void main(String[] args)
    {
        for (int i = 0; i < 100; i ++)
        {
            if(i % 2 == 0)
            {
                System.out.printf(" %d", i);
            }
        } // end of for
    } // end of main
} // end of class

görüldüğü gibi, değişken oluşturulması ve değişkenin ( i ) güncellenmesi gibi işlemler for döngüsünde tek bir satırda halledilerek döngü çok daha basit bir şekle indirgenmiştir.

for Döngüsünün Diğer Kullanım Şekilleri

for döngüsü Java’da bazı işlemleri daha da kolaylaştırmak için birkaç özelleştirilmiş yapıda daha kullanılabilir. Örnek olarak Java’da diziler (arrayler) ve koleksyionlar (collections) for döngüsünün özelleştirilmiş yapısı ile çok daha basit bir şekilde ele alınabiliyor.

Bunu daha iyi açıklamak için aşağıdaki koda bakalım.

package org.javablog;
 
public class Test
{
    public static void main(String[] args)
    {
        String[] isimler = {"Fatih", "Arslan", "James", "Gosling"};
        for(String isim : isimler)
        {
            System.out.printf("%s ", isim);
        } // end of for
    } // end of main
} // end of class

Yukarıdaki kodda, for döngüsünün gelişmiş yapısını görebiliyoruz. Bu sözdizimi C# ve Php gibi birkaç dildeki foreach yapısı ile aynı amaca hizmet eder.

Koddaki for yapısına daha yakından bakacak olursak, dizi ve koleksyion gibi yapıların elemanlarına ulaşmak için for döngüsünün bu formunu kullanıyoruz. Döngüde ” : ” operatörü, belirlenen tipte bir koleksiyon ya da dizi (örnekte isimler dizisi) ile bu tipdeki değerleri tutmak için bir değişken (örnekteki isim değişkeni) alıyor. Döngünün her dönüşünde, dizi içerisindeki elemanlar sırasıyla “isim” adındaki string değişkenine atanarak, dizi içerisindeki tüm elemanlar kolay bir şekilde gezilebiliyor.

Bu tür işlemler için for döngüsünün bu yapısını kullanmak işlemlerinizi çok daha kolay bir şekilde yapmanızı sağlayacaktır.


İlgili Yazılar:

  1. Javada Karar Mekanizmaları – if ve switch komutları

Yorum bırakmak için buraya, Sitenizden trackback vermek için buraya tıklayabilirsiniz.

Leave a Reply