İçeriğe geç
Educora
Başlangıç15 dk4 / 18

Koşullar ve switch

Programına karar vermeyi öğret: karşılaştırma ve mantıksal operatörler, if/else, üçlü operatör, switch ve switch ifadeleri.

Kendini test et
Bu derste öğreneceklerin
  • Karşılaştırma ve mantıksal operatörlerle koşul yazmak
  • if, else if, else ve üçlü operatörü kullanmak
  • Klasik switch deyimini modern switch ifadesinden ayırt etmek

Hava soğuksa mont giy, yağmur yağıyorsa şemsiye al. Her gün koşullara göre kararlar veririz. Programlar da aynısını yapar: ATM yalnızca PIN doğruysa para verir, bir oyun da canlar sıfıra düştüğünde biter. Bu derste bir Java programına karar vermeyi öğreteceksin.

Karşılaştırma ve mantıksal operatörler

Bir koşul her zaman boolean bir değer üretir: true ya da false. Koşulları karşılaştırma operatörleriyle kurar, birden fazla koşulu mantıksal operatörlerle birleştiririz.

OperatörAnlamıÖrnekSonuç
==eşittirage == 15true
!=eşit değildirage != 15false
< >küçüktür, büyüktürage > 18false
<= >=küçük veya eşit, büyük veya eşitage >= 12true
&&VE: iki koşul da doğruage > 10 && age < 18true
||VEYA: en az bir koşul doğruage < 6 || age > 65false
!DEĞİL: sonucu tersine çevirir!(age == 15)false
Örneklerde age = 15 alınmıştır.
Java
public class Main {
    public static void main(String[] args) {
        int age = 15;
        boolean hasTicket = true;
        System.out.println(age >= 12 && hasTicket);
        System.out.println(age < 12 || !hasTicket);
        System.out.println(age == 15);
        System.out.println(age != 15);
        if (hasTicket && age >= 12) {
            System.out.println("Welcome to the film!");
        } else {
            System.out.println("Sorry, no entry.");
        }
    }
}
Beklenen çıktı
true
false
true
false
Welcome to the film!
Etkileşimli
Simülasyon yükleniyor…
&&, bir VE (AND) kapısı gibi çalışır: çıkış yalnızca iki giriş de true (1) olduğunda true olur. Girişleri değiştir ve doğruluk tablosunu incele.

if, else if ve else

if anahtar kelimesinden sonra parantez içinde bir koşul, süslü parantez içinde de koşul doğruysa çalışacak kod yazılır. else if sonraki koşulu kontrol eder, else ise hiçbir koşul sağlanmadığında çalışır. Java koşulları yukarıdan aşağıya kontrol eder ve ilk doğru koşulun bloğunu çalıştırır; diğerleri atlanır.

Java
public class Main {
    public static void main(String[] args) {
        int score = 78;
        if (score >= 90) {
            System.out.println("Excellent");
        } else if (score >= 70) {
            System.out.println("Good");
        } else if (score >= 50) {
            System.out.println("Pass");
        } else {
            System.out.println("Fail");
        }
        String result = score >= 50 ? "passed" : "failed";
        System.out.println("The test is " + result);
    }
}
Beklenen çıktı
Good
The test is passed

78 hem 70'ten hem de 50'den büyüktür, ama yalnızca “Good” yazdırıldı; çünkü ilk doğru koşul score >= 70 idi. Son satırlarda üçlü operatör (ternary) kullanılmıştır: koşul ? A : B. Koşul doğruysa ifadenin değeri A, değilse B olur. İki değerden birini seçmen gerektiğinde kısa bir if/else gibi çalışır.

Klasik switch

Bir değişkeni birçok belirli değerle karşılaştırman gerektiğinde uzun bir if/else if zinciri yerine switch yazabilirsin. switch; int, char, String ve enum değerleriyle çalışır. Klasik biçimde her case bir break ile bitmelidir; aksi hâlde çalışma bir sonraki case'e “düşer” (fall-through):

Java
public class Main {
    public static void main(String[] args) {
        int level = 2;
        switch (level) {
            case 1:
                System.out.println("Easy");
            case 2:
                System.out.println("Medium");
            case 3:
                System.out.println("Hard");
                break;
            default:
                System.out.println("Unknown level");
        }
    }
}
Beklenen çıktı
Medium
Hard

level 2 olduğu için çalışma case 2'den başlar. case 2'de break olmadığından program case 3'e geçer ve “Hard” kelimesini de yazdırır. switch'ten yalnızca break çıkarır. default bloğu ise hiçbir case eşleşmediğinde çalışır.

Switch ifadeleri

Java 14'ten beri switch bir ifade olarak da yazılabilir: bir değer üretir ve bu değer doğrudan bir değişkene atanabilir. Ok -> ile yazılan case'lerde düşme olmaz, break gerekmez ve bir case virgülle ayrılmış birkaç değer içerebilir. Bütün bir blok gerektiğinde değer yield ile döndürülür.

Java
public class Main {
    public static void main(String[] args) {
        String day = "SAT";
        String type = switch (day) {
            case "SAT", "SUN" -> "weekend";
            case "MON", "TUE", "WED", "THU", "FRI" -> "weekday";
            default -> "unknown";
        };
        System.out.println(day + " is a " + type);
        int month = 2;
        int year = 2028;
        int days = switch (month) {
            case 4, 6, 9, 11 -> 30;
            case 2 -> {
                boolean leap = year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);
                yield leap ? 29 : 28;
            }
            default -> 31;
        };
        System.out.println("Days in month " + month + ": " + days);
    }
}
Beklenen çıktı
SAT is a weekend
Days in month 2: 29
2028 artık yıldır; bu yüzden şubat 29 gün çeker.

Önemli noktalar

  • Bir koşul boolean üretir; karşılaştırmada ==, !=, <, >, <=, >= kullanılır.
  • && (VE), || (VEYA) ve ! (DEĞİL) koşulları birleştirir; Java sonucu değiştiremeyecek kısmı hesaplamaz.
  • if / else if / else zincirinde yalnızca ilk doğru koşulun bloğu çalışır.
  • Üçlü operatör koşul ? A : B iki değerden birini seçer.
  • Klasik switch'te break unutulursa çalışma bir sonraki case'e geçer; -> ile yazılan switch ifadesi ise bir değer döndürür ve düşme yapmaz.

Kendini test et

10 soru. Her doğru cevap XP kazandırır.

1 / 10
age = 15 iken age > 10 && age < 14 ifadesinin değeri nedir?