Məzmuna keç
Educora
Başlanğıc15 dəq4 / 18

Şərtlər və switch

Proqrama qərar verməyi öyrət: müqayisə və məntiqi operatorlar, if/else, ternar operator, switch və switch ifadələri.

Özünü yoxla
Bu dərsdə öyrənəcəksən
  • Müqayisə və məntiqi operatorlarla şərt yazmaq
  • if, else if, else və ternar operatordan istifadə etmək
  • Klassik switch operatorunu müasir switch ifadəsindən fərqləndirmək

Hava soyuqdursa, gödəkçə geyin; yağış yağırsa, çətir götür. Biz hər gün şərtlərə əsasən qərar veririk. Proqramlar da belədir: bankomat yalnız PIN kod düzgün olanda pul verir, oyun isə canların sayı sıfıra düşəndə bitir. Bu dərsdə Java proqramına qərar verməyi öyrədəcəksən.

Müqayisə və məntiqi operatorlar

Şərt həmişə boolean qiymət verir: true və ya false. Şərtləri müqayisə operatorları ilə qururuq, bir neçə şərti isə məntiqi operatorlarla birləşdiririk.

OperatorMənasıNümunəNəticə
==bərabərdirage == 15true
!=bərabər deyilage != 15false
< >kiçikdir, böyükdürage > 18false
<= >=kiçik və ya bərabər, böyük və ya bərabərage >= 12true
&&VƏ: hər iki şərt doğrudurage > 10 && age < 18true
||VƏ YA: ən azı bir şərt doğrudurage < 6 || age > 65false
!DEYİL: nəticəni tərsinə çevirir!(age == 15)false
Nümunələrdə age = 15 götürülüb.
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.");
        }
    }
}
Gözlənilən nəticə
true
false
true
false
Welcome to the film!
İnteraktiv
Simulyasiya yüklənir…
&& məntiqi VƏ (AND) elementi kimi işləyir: çıxış yalnız hər iki giriş true (1) olanda true olur. Girişləri dəyiş və doğruluq cədvəlini yoxla.

if, else if və else

if açar sözündən sonra mötərizədə şərt, fiqurlu mötərizədə isə şərt doğru olanda icra olunacaq kod yazılır. else if növbəti şərti yoxlayır, else isə heç bir şərt ödənməyəndə işə düşür. Java şərtləri yuxarıdan aşağı yoxlayır və ilk doğru şərtin blokunu icra edir — qalanları 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);
    }
}
Gözlənilən nəticə
Good
The test is passed

78 həm 70-dən, həm də 50-dən böyükdür, amma yalnız «Good» çap olundu, çünki ilk doğru şərt score >= 70 idi. Sonuncu sətirlərdə ternar operator var: şərt ? A : B. Şərt doğrudursa, ifadənin qiyməti A, əks halda B olur. İki qiymətdən birini seçmək lazım olanda o, qısa if/else rolunu oynayır.

Klassik switch

Bir dəyişəni çoxlu konkret qiymətlə müqayisə etmək lazımdırsa, uzun if/else if zənciri əvəzinə switch yazmaq olar. switch int, char, String və enum qiymətləri ilə işləyir. Klassik formada hər case-in sonunda break qoyulmalıdır — əks halda icra növbəti case-ə «axıb keçir» (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");
        }
    }
}
Gözlənilən nəticə
Medium
Hard

level 2-dir, ona görə icra case 2-dən başlayır. case 2-də break olmadığı üçün proqram case 3-ə keçir və «Hard» sözünü də çap edir. switch-dən yalnız break çıxarır. default bloku isə heç bir case uyğun gəlməyəndə işləyir.

Switch ifadələri

Java 14-dən başlayaraq switch ifadə kimi də yazıla bilər: o, qiymət qaytarır və nəticəni birbaşa dəyişənə mənimsətmək olar. Ox -> ilə yazılmış case-lərdə «axıb keçmə» yoxdur, break lazım deyil, bir case-də isə vergüllə bir neçə qiymət sadalamaq olar. Bütöv blok lazım olanda qiymət yield ilə qaytarı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);
    }
}
Gözlənilən nəticə
SAT is a weekend
Days in month 2: 29
2028-ci il uzun ildir, ona görə fevralda 29 gün olur.

Əsas fikirlər

  • Şərt boolean qiymət verir; müqayisə üçün ==, !=, <, >, <=, >= işlədilir.
  • && (VƏ), || (VƏ YA) və ! (DEYİL) şərtləri birləşdirir; Java nəticəni dəyişməyəcək hissəni hesablamır.
  • if / else if / else zəncirində yalnız ilk doğru şərtin bloku icra olunur.
  • Ternar operator şərt ? A : B iki qiymətdən birini seçir.
  • Klassik switch-də break unudulsa, icra növbəti case-ə keçir; -> ilə yazılan switch ifadəsi isə qiymət qaytarır və axıb keçmir.

Özünü yoxla

10 sual. Hər düzgün cavab XP qazandırır.

1 / 10
age = 15 olduqda age > 10 && age < 14 ifadəsi nəyə bərabərdir?