Java’da Karar Verme ve Döngüler

7. Java Döngüleri

Bazı durumlarda, bir kod bloğunu birkaç kere çalıştırmamız gerekir ve bu çoğu zaman döngü olarak adlandırılır. Java, çok esnek üç döngü mekanizmasına sahiptir. Aşağıdaki üç döngüden birini kullanabilirsiniz:

  • while
  • do..while
  • for
  • Java 5 itibariyle geliştirilmiş for döngüsü (enhanced for loop) tanıtıldı. Bu döngü daha çok diziler için kullanılmaktadır.

    7.1 while Döngüsü

    While döngüsü, bir görevi belirli sayıda tekrarlarlamamız için olanak sağlayan bir kontrol yapısıdır.

    Çalıştırırken, boolean_expression ifadesinin sonucu true ise , döngü içindeki işlemler yürütülecektir. Bu işlem , ifadenin değeri true oldukça devam edecektir.

    Burada while döngüsünün kilit noktası, döngünün hiç çalışmayabilir olmasıdır. İfade test edilir ve sonuç false olursa, döngü gövdesi geçilecektir.

    Örnek:

    Bu aşağıdaki sonucu üretecektir:

    7.2 do…while Döngüsü

    Bir do…while döngüsü, en az bir sefer çalışmayı garanti etmesi haricinde, while döngüsü ile birbirine benzerdir.

    Dikkat ederseniz, Boolean ifade döngünün sonunda görülmektedir, bu yüzden döngünün içindeki komutlar Boolean test edilmeden önce bir kere çalışır.Boolean ifade true ise, kontrol akışı geri atlama yapar ve döngü içindeki komutlar tekrar çalışır. Bu işlem, Boolean ifade false olana kadar tekrarlanır.

    Bu aşağıdaki sonucu üretecektir:

    7.3 for Döngüsü

    For döngüsü, belirli bir sayıda yürütülmesi gereken döngüyü, verimli bir şekilde yazmanıza olanak sağlayan bir tekrarlı kontrol yapısıdır. For döngüsü, bir görevin kaç defa tekrarlanacağını bildiğiniz zaman yararlıdır.

    7.4 Geliştirilmiş(Enhanced) for Döngüsü

    Java 5’ten itibaren geliştirilmiş for döngüsü(enhanced for loop) adlı yeni bir döngü yapısı kullanılmaya başlanmıştır. Bu döngü daha çok diziler için kullanılmaktadır.

    Geliştirilmiş for döngüsünün syntax’i:

     

    • declaration. Eriştiğiniz dizi elemanlarının türü ile uyumlu, yeni deklare edilmiş blok değişkeni.
    • expression. Döngü boyunca ihtiyacınız olan dizi. İfade, bir dizi değişkeni veya bir dizi döndüren metot çağrısı olabilir.

    Örnek:

    Bu aşağıdaki sonucu üretecektir:

    7.5 “break” anahtar sözcüğü

    Break anahtar sözcüğü, tüm döngüyü durdurmak için kullanılır. Break anahtar sözcüğü, herhangi bir döngü içinde veya bir switch komutu içinde kullanılmalıdır.

    Örnek:

    Bu aşağıdaki sonucu üretecektir:

    7.6 “continue” anahtar sözcüğü

    Continue anahtar sözcüğü, döngü kontrol yapılarından herhangi birinin içinde kullanılabilir.  Döngünün derhal sonraki iterasyonuna atlamasına sebep olur.

    Örnek:

    Bu aşağıdaki sonucu üretecektir:

    8.Karar Verme

    8.1 “if” yapısı

    if komutu, bir veya daha çok komut tarafından takip edilen bir Boolean ifadeden oluşmaktadır.

    Eğer boolean ifade true olarak değerlendirilirse, o halde if komutu içindeki kod bloğu çalıştırılacaktır.

    Örnek:

    Bu aşağıdaki sonucu üretecektir:

    8.2 “if…else” yapısı

    Bir if komutunun ardından, Boolean ifade false olduğu zaman çalışan isteğe bağlı bir else komutu gelebilir.

    Örnek:


    Bu aşağıdaki sonucu üretecektir:

    8.3 “if–else if–else” yapısı

    Bir if komutunun ardından, isteğe bağlı bir else if…else komutu gelebilir. Çeşitli koşulları test etmek için, tek bir if..else if komutu kullanmak çok yararlıdır.
    If…else ‘in syntax’i:

    Örnek:

    Bu aşağıdaki sonucu üretecektir:

    8.4 İç içe “if…else”

    If-else komutlarını iç içe koymak her zaman geçerlidir, yani; bir if veya else if komutunu başka bir if veya else if komutu içinde kullanabilirsiniz

    If komutunu içi içe koyduğumuz gibi, else if…else komutunu da iç içe koyabilirsiniz.

    Örnek:

    Bu aşağıdaki sonucu üretecektir:

    8.5 “switch” yapısı

    switch ifadesi, bir değişkenin değerler listesi karşısında eşitliğinin test edilmesini sağlar. Her bir değer “case” olarak adlandırılır ve değişken her bir case ile denetlendikten sonra bir ötekine geçer.

    switch komutu için aşağıdaki kurallar uygulanır.

    • Switch komutunda kullanılan değişken sadece byte, short, int veya char türünde olabilir.
    • Bir switch içinde herh angi sayıda case komutu olabilir. Her bir case’in ardından karşılaştırılacak değer ve iki nokta üst üste gelir.
    • Case için seçilen değer, switch içindeki değişkenle aynı veri tipinde olmalıdır.
    • Switch içindeki değer ile case değeri birbirini tutuyorsa, case komutunun ardından gelen ifadeler, break komutuna kadar çalıştırılacaktır.
    • Break komutuna ulaşıldığında, switch sonlanır, ve kontrol akışı switch komutunun ardından gelen satıra atlar.
    • Bir switch komutunun isteğe bağlı bir default case’i olabilir ve bu case switch’in sonunda kullanılmalıdır. Default case, hiç bir case’in true olmama durumunda görevi yerine getirmek için kullanılır. Default case içinde break kullanımı gerekmez.

    Örnek:

    public class Test {public static void main(String args[]){char grade = args[0].charAt(0);

    switch(grade)

    {

    case ‘A’ :

    System.out.println(“Excellent!”);

    break;

    case ‘B’ :

    case ‘C’ :

    System.out.println(“Well done”);

    break;

    case ‘D’ :

    System.out.println(“You passed”);

    case ‘F’ :

    System.out.println(“Better try again”);

    break;

    default :

    System.out.println(“Invalid grade”);

    }

    System.out.println(“Your grade is “ + grade);

    }

    }

     

    Yukardaki programı, çeşitli satır argümanları kullanarak derleyip, çalıştırın. Bu aşağıdaki sonucu üretecektir:

     $ java Test aInvalid gradeYour grade is a a
    $ java Test

    AExcellent!

    Your grade is a A

    $ java Test C

    Well done

    Your grade is a C

    $