Koşullu İfadeler
Çoktan Seçmeli · Geçmiş Sınav (2025-26 Final)
Soru 1: if (x > 5) A, değilse B
Aşağıdaki Java kodunun çıktısı nedir?
int x = 3; if (x > 5) System.out.println("A"); else System.out.println("B");
A: 3 > 5 → false, bu yüzden else dalı çalışır ve B yazılır. if-else'te her zaman dallardan tam olarak biri çalışır.
Çoktan Seçmeli · Geçmiş Sınav (2025-26 Bütünleme)
Soru 2: Süslü Parantezli if-else
Aşağıdaki Java kodunun çıktısı nedir?
int x = 3; if (x > 5) { System.out.println("B"); } else { System.out.println("A"); }
A: Koşul false olduğu için else bloğu çalışır: A. Harflerin sırası değil, hangi dalda yazıldıkları önemlidir; önceki sorudakinin tersine burada B true dalındadır.
Çıktı Sorusu · if-else Temelleri
Soru 3: Sınır Değeri: > ve >=
Aşağıdaki kodun çıktısı nedir?
int x = 5; if (x > 5) System.out.println("büyük"); else System.out.println("büyük değil"); if (x >= 5) System.out.println("en az 5");
Cevabı göster
büyük değil en az 5
> sınırı içermez, >= içerir. İkinci if bağımsızdır; ayrıca denetlenir.
Çoktan Seçmeli · if-else Temelleri
Soru 4: Derlenmeyen Koşul
int x = 7; için aşağıdaki if satırlarından hangisi derleme hatası verir?
C: x = 5 bir atamadır ve int değer üretir; if koşulu boolean olmalıdır ("int cannot be converted to boolean"). Eşitlik sınaması == ile yapılır.
Çıktı Sorusu · if-else Temelleri
Soru 5: if Sonrasında Noktalı Virgül
Aşağıdaki kodun çıktısı nedir?
int x = -3; if (x > 0); System.out.println("Pozitif"); System.out.println("Bitti");
Cevabı göster
Pozitif Bitti
if (x > 0); satırındaki ; if'in gövdesidir (boş deyim). Girintili println artık if'e bağlı değildir ve her zaman çalışır.
Çıktı Sorusu · if-else Temelleri
Soru 6: Süslü Parantezsiz if
Aşağıdaki kodun çıktısı nedir?
int x = 2; if (x > 5) System.out.println("A"); System.out.println("B"); System.out.println("C");
Cevabı göster
B C
Süslü parantez yoksa if yalnızca hemen ardından gelen tek deyimi kontrol eder. "B" satırının girintisi yanıltıcıdır; derleyici girintiye bakmaz. 2 > 5 false → yalnızca A atlanır.
if (x > 5) { System.out.println("A"); System.out.println("B"); // niyet buysa }
Çoktan Seçmeli · if-else Temelleri
Soru 7: Sıralı İşlemler ve Tam Sayı
int t = 7, yk = 3; için aşağıdaki satır ne yazdırır?
System.out.println(t * yk / 2 + " " + t / 2 * yk);
D: Soldan sağa ve tam sayı bölmesi: 7 · 3 = 21, 21 / 2 = 10. Diğerinde önce 7 / 2 = 3, sonra 3 · 3 = 9. Matematikte eşit olan ifadeler int'te farklı sonuç verir. Üçgen alanı gibi hesaplarda double kullanılır.
Adım Adım Çalıştırma · Geçmiş Sınav (2023-24 Final)
Soru 8: Harf Notu Zinciri
Sınavda istenen harf notu kodu not = 65 ile çalıştırılıyor. Hangi koşullar denenir, hangi dal çalışır?
Önce kendiniz tahmin edin, sonra › ile ilerleyin.
not = 65.
65 >= 90 → false; sıradaki else if'e geçilir.
65 >= 80 → false.
65 >= 70 → false.
65 >= 60 → true: bu dal seçilir.
D yazılır; else hiç denetlenmez. Eşikler büyükten küçüğe yazıldığı için "not >= 70 && not < 80" gibi üst sınır gerekmez.
int not = 65; if (not >= 90) { System.out.println("A"); } else if (not >= 80) { System.out.println("B"); } else if (not >= 70) { System.out.println("C"); } else if (not >= 60) { System.out.println("D"); } else { System.out.println("F"); }
Çoktan Seçmeli · Geçmiş Sınav (2023-24 Final varyantı)
Soru 9: Ters Sıralı Eşikler
Bir öğrenci harf notu zincirini küçük eşikten başlayarak yazmış. not = 85 için çıktı nedir?
if (not >= 60) System.out.println("D"); else if (not >= 70) System.out.println("C"); else if (not >= 80) System.out.println("B"); else if (not >= 90) System.out.println("A"); else System.out.println("F");
B: İlk doğru dal çalışır: 85 >= 60 true → D; zincirin geri kalanı atlanır. Bu sıralamayla 60 ve üstü herkes D alır; C, B, A dallarına hiç ulaşılamaz. Eşikler büyükten küçüğe yazılmalıdır.
Çıktı Sorusu · else-if Zinciri
Soru 10: Bağımsız if'ler
Aşağıdaki kodun çıktısı nedir?
int not = 85; if (not >= 90) System.out.println("A"); if (not >= 80) System.out.println("B"); if (not >= 70) System.out.println("C"); if (not >= 60) System.out.println("D");
Cevabı göster
B C D
Bağımsız if'lerin hepsi denetlenir. Tek harf için else if zinciri gerekir.
Çoktan Seçmeli · Geçmiş Sınav (2024-25 Final)
Soru 11: 10 ile 20 Arası
Sınavda "10'dan büyük, 20'den küçük" sayılar isteniyor. sayi için doğru koşul hangisidir?
C: İki koşulun birlikte doğru olması gerekir: &&. A her sayı için true olur. B derlenmez: 10 < sayi boolean üretir, boolean < 20 anlamsızdır. D sınırları (10 ve 20) da dahil eder.
Çıktı Sorusu · else-if Zinciri
Soru 12: Pozitif, Negatif, Sıfır
Program üç kez çalıştırılıyor; kullanıcı sırayla 7, 0, -2 giriyor. Her çalıştırmanın çıktısı nedir?
int s = klavye.nextInt(); if (s > 0) System.out.println("pozitif"); else if (s < 0) System.out.println("negatif"); else System.out.println("sıfır");
Cevabı göster
7 → pozitif, 0 → sıfır, −2 → negatif
0 için iki koşul da false olduğu için else çalışır (şekilde bu yol). Üç durum, iki koşul yeter.
Çoktan Seçmeli · else-if Zinciri
Soru 13: Geçersiz Not Kontrolü
Harf notu zincirine "not 0–100 dışında ise Geçersiz not yaz" kontrolü eklenecek. Doğru yer ve koşul hangisidir?
B: Doğrulama ilk dal olmalıdır; yoksa 105 "A" dalına girer. Koşul "0'dan küçük veya 100'den büyük" (||) olmalıdır; D'deki && hiçbir sayı için true olamaz.
Adım Adım Çalıştırma · İç İçe Kararlar
Soru 14: Sarkan else
Girinti yanıltıcı olabilir. else hangi if'e aittir? x kaç yazdırılır?
Önce kendiniz tahmin edin, sonra › ile ilerleyin.
a = 3, b = −2, x = 0. else'in girintisi dış if'e aitmiş gibi görünüyor.
a > 0 → 3 > 0 → true: dış if'in gövdesine (iç if + else) girilir.
b > 0 → −2 > 0 → false.
else en yakın if'e (b > 0) bağlıdır; iç koşul false olduğu için çalışır: x = 2.
2 yazılır. Belirsizliği önlemek için iç içe if'lerde hep süslü parantez kullanın.
int a = 3, b = -2, x = 0; if (a > 0) if (b > 0) x = 1; else x = 2; System.out.println(x);
Çoktan Seçmeli · İç İçe Kararlar
Soru 15: Sarkan else: a Negatif
Aynı yapı farklı değerlerle çalıştırılıyor. Çıktı nedir?
int a = -4, b = 6, x = 9; if (a > 0) if (b > 0) x = 1; else x = 2; System.out.println(x);
C: else iç if'e aittir. Dış koşul −4 > 0 false olduğu için iç if ve onun else'i tümüyle atlanır; x başlangıç değeri 9 olarak kalır. Girintiye bakıp 2 demek tipik hatadır.
Çıktı Sorusu · İç İçe Kararlar
Soru 16: İç İçe Karar: Sinema Girişi
Üç ziyaretçi için (yaş, bilet) sırayla (25, var), (25, yok), (12, var). Her biri için ne yazılır?
if (yas >= 18) { if (bilet) System.out.println("Giriş"); else System.out.println("Bilet al"); } else { System.out.println("Veliyle gel"); }
Cevabı göster
Giriş Bilet al Veliyle gel
Şekil 3. ziyaretçiyi gösterir: dış koşul false → iç if (bilet) hiç denetlenmez.
Çoktan Seçmeli · Mantıksal Operatörler
Soru 17: De Morgan
!(a > 5 && b < 3) koşulunun eşdeğeri hangisidir?
B: ! içeri dağıtılırken && ↔ || yer değiştirir ve her terim tersine döner: !(a > 5) = a <= 5, !(b < 3) = b >= 3. >'ın tersi >= değil <='dir (A'daki hata).
Çıktı Sorusu · Mantıksal Operatörler
Soru 18: && ile & Farkı
Her ifadeden önce sayac = 0 yapılıyor. Her ifadeden sonra sayac kaçtır? (kontrol her çağrıda sayacı 1 artırır.)
static boolean kontrol(boolean v) { sayac++; return v; } // (1) kontrol(false) && kontrol(true) // (2) kontrol(false) & kontrol(true) // (3) kontrol(true) || kontrol(false) // (4) kontrol(true) | kontrol(false)
Cevabı göster
sayac: 1, 2, 1, 2
- (1) false && … → sonuç belli, sağ taraf çağrılmaz.
- (2)
&kısa devre yapmaz: iki taraf da çağrılır. - (3) true || … → sağ taraf çağrılmaz.
- (4)
|iki tarafı da çağırır.
Mantık sonuçları aynıdır (false, false, true, true); fark yalnızca yan etkidedir. b != 0 & a / b > 1 b = 0 iken sıfıra bölme hatası verir.
Adım Adım Çalıştırma · Mantıksal Operatörler
Soru 19: Kısa Devre ve ++k
Koşulların içinde k artırılıyor. Hangi ++k gerçekten çalışır? Ne yazılır?
Önce kendiniz tahmin edin, sonra › ile ilerleyin.
k = 0.
k > 0 → false; && kısa devre yapar, ++k çalışmaz. A yazılmaz.
k == 0 → true; || kısa devre yapar, ++k yine çalışmaz.
Koşul true → B.
| kısa devre yapmaz: sol true olsa da ++k çalışır → k = 1; 1 > 0 true. true | true → true.
C yazılır.
k = 1: üç ++k'dan yalnızca biri çalıştı.
int k = 0; if (k > 0 && ++k > 0) System.out.println("A"); if (k == 0 || ++k > 0) System.out.println("B"); if (k == 0 | ++k > 0) System.out.println("C"); System.out.println(k);
Çoktan Seçmeli · Mantıksal Operatörler
Soru 20: Artık Yıl
(yil % 4 == 0 && yil % 100 != 0) || yil % 400 == 0 koşuluna göre hangisi artık yıldır?
D: 2000: 100'e bölündüğü için parantez false, ama 2000 % 400 == 0 → true. 1900 ve 2100 100'e bölünüp 400'e bölünmez → false. 2023 4'e bölünmez → false.
Adım Adım Çalıştırma · Mantıksal Operatörler
Soru 21: Üçgen Türü
Kenarlar 5, 5, 8. Önce üçgen eşitsizliği, sonra tür denetleniyor. Hangi koşullar denenir?
Önce kendiniz tahmin edin, sonra › ile ilerleyin.
Kenarlar 5, 5, 8.
10 > 8, 13 > 5, 13 > 5 → üçü de true: geçerli üçgen, dış if'e girilir.
a == b true, ama b == c → 5 == 8 false; true && false → false. Eşkenar değil.
a == b → true; || kısa devre yapar, diğer eşitliklere bakılmaz.
İkizkenar yazılır. (2, 3, 6 olsaydı 2 + 3 > 6 false → "Üçgen değil".)
int a = 5, b = 5, c = 8; if (a + b > c && a + c > b && b + c > a) { if (a == b && b == c) System.out.println("Eşkenar"); else if (a == b || b == c || a == c) System.out.println("İkizkenar"); else System.out.println("Çeşitkenar"); } else { System.out.println("Üçgen değil"); }
Çıktı Sorusu · Koşul İşleci ve String
Soru 22: Koşul İşleci ?:
Aşağıdaki kodun çıktısı nedir?
int a = 7, b = 12; int m = a < b ? a : b; String s = m % 2 == 0 ? "çift" : "tek"; System.out.println(m + " " + s); int n = -5; String isaret = n > 0 ? "+" : n < 0 ? "-" : "0"; System.out.println(isaret);
Cevabı göster
7 tek -
- 7 < 12 true → m = a = 7 (küçük olan).
- 7 % 2 = 1 → "tek".
- İç içe ?: sağdan gruplanır: n > 0 false → (n < 0 ? "-" : "0") → "-".
Çoktan Seçmeli · Koşul İşleci ve String
Soru 23: İç İçe ?:
Aşağıdaki satır ne yazdırır?
int a = 5, b = 5;
System.out.println(a > b ? "a" : a < b ? "b" : "eşit");C: a > b → false, ikinci ?: değerlendirilir: a < b → false → "eşit". İç içe ?: geçerlidir ama okunması zordur; ikiden fazla seçenekte else-if tercih edin.
Çıktı Sorusu · Koşul İşleci ve String
Soru 24: == ve equals
Aşağıdaki kodun çıktısı nedir?
String a = "ders";
String b = "ders";
String c = new String("ders");
System.out.println(a == b);
System.out.println(a == c);
System.out.println(a.equals(c));
System.out.println(c.equals("Ders"));Cevabı göster
true false true false
==başvuruları karşılaştırır: a ve b havuzdaki aynı nesne → true; c ayrı nesne → false.equalsiçeriğe bakar; büyük-küçük harfe duyarlıdır: "ders" ≠ "Ders".
Çıktı Sorusu · switch
Soru 25: break Unutulursa
Aşağıdaki kodun çıktısı nedir?
int gun = 1; switch (gun) { case 1: System.out.println("Pzt"); case 2: System.out.println("Salı"); break; case 3: System.out.println("Çar"); default: System.out.println("Yok"); }
Cevabı göster
Pzt Salı
case 1'de break yok → düşme: case 2 etiketi denetlenmeden kodu çalışır; oradaki break switch'ten çıkarır.
Adım Adım Çalıştırma · switch
Soru 26: switch Düşmesi: gun = 3
Klasik switch'te hangi case kodları çalışır? break nerede durdurur?
Önce kendiniz tahmin edin, sonra › ile ilerleyin.
gun = 3.
switch (3): doğrudan case 3 etiketine atlanır; case 1 ve case 2 kodları çalışmaz.
Çar yazılır. Bu case'te break yok!
Düşme: case 4 etiketi denetlenmez, kodu çalışır → Per. Sonra break.
break switch'in sonuna atlar; default çalışmaz. Çıktı: Çar, Per. Ok (->) biçiminde düşme olmaz.
int gun = 3; switch (gun) { case 1: System.out.println("Pzt"); break; case 2: System.out.println("Salı"); case 3: System.out.println("Çar"); case 4: System.out.println("Per"); break; default: System.out.println("Yok"); }
Çoktan Seçmeli · switch
Soru 27: Ortadaki default
gun = 7 ise aşağıdaki switch ne yazdırır?
switch (gun) { case 1: System.out.println("Pzt"); break; default: System.out.println("Yok"); case 2: System.out.println("Salı"); }
D: Eşleşen case olmadığı için default'a atlanır; default'ta break olmadığından alttaki case 2 koduna düşülür. default'un sonda olması zorunlu değildir ama düşme kuralı onda da geçerlidir.
Çıktı Sorusu · switch
Soru 28: switch İfadesi: Mevsim
Program üç kez çalıştırılıyor: ay = 7, 0, 11. Her seferinde ne yazılır?
String mevsim = switch (ay) { case 12, 1, 2 -> "Kış"; case 3, 4, 5 -> "İlkbahar"; case 6, 7, 8 -> "Yaz"; case 9, 10, 11 -> "Sonbahar"; default -> "Geçersiz"; }; System.out.println(mevsim);
Cevabı göster
7 → Yaz, 0 → Geçersiz, 11 → Sonbahar
- Ok (
->) biçiminde yalnızca eşleşen kol çalışır, düşme olmaz. - 0 hiçbir listede yok → default.
- switch ifadesi değer üretir; int/String için default zorunludur (Java 14+).
Çıktı Sorusu · switch
Soru 29: yield ile Şubat
Aşağıdaki kodun çıktısı nedir?
int yil = 2023, ay = 2; int gun = switch (ay) { case 4, 6, 9, 11 -> 30; case 2 -> { System.out.println("Şubat"); yield yil % 4 == 0 ? 29 : 28; } default -> 31; }; System.out.println(gun);
Cevabı göster
Şubat 28
- ay = 2 → blok kolu çalışır; önce "Şubat" yazılır.
- Blok kolunda değer
yieldile verilir: 2023 % 4 = 3 ≠ 0 → 28. - gun = 28 yazdırılır. (yield olmasaydı derleme hatası olurdu.)
Çoktan Seçmeli · switch
Soru 30: Eşleşmeyen İşlem
x = 9.0, op = "-", y = 4.0 ile kod ne yazdırır?
switch (op) { case "+" -> System.out.println(x + y); case "*" -> System.out.println(x * y); case "/" -> { if (y == 0) System.out.println("Hata!"); else System.out.println(x / y); } default -> System.out.println("Geçersiz"); }
A: "-" için bir case yok; String switch'inde eşleşme olmazsa default çalışır. Switch deyiminde (değer üretmeyen) default isteğe bağlıdır, burada beklenmeyen girdiyi yakalar.
Çoktan Seçmeli · switch
Soru 31: switch mi if-else mi?
Aşağıdaki durumlardan hangisi switch ile doğrudan yazılamaz, if-else gerektirir?
C: case etiketleri sabit, ayrık değerlerdir; "30'dan büyük" gibi bir aralık koşulu case'e yazılamaz. Tek bir değişkenin ayrık değerlerine göre seçimde switch okunaklıdır.
Çoktan Seçmeli · Geçmiş Sınav (2025-26 Bütünleme varyantı)
Soru 32: Tek Sayı Koşulu
Sınavda 1–100 arası tek sayılar i % 2 == 1 ile seçildi. Negatifler dahil her int için doğru çalışan tek sayı koşulu hangisidir?
B: Java'da kalanın işareti bölünenin işaretidir: −7 % 2 = −1. Bu yüzden % 2 == 1 yalnızca pozitif tek sayılarda çalışır (1–100 için doğru, −7 için yanlış). != 0 her durumda doğrudur.
Çıktı Sorusu · Örnekler
Soru 33: % 2 == 1 Tuzağı
Aşağıdaki kodun çıktısı nedir?
int a = -7, b = 7, c = -4;
System.out.println(a % 2);
System.out.println(a % 2 == 1);
System.out.println(a % 2 != 0);
System.out.println(b % 2 == 1);
System.out.println(c % 2 != 0);Cevabı göster
-1 false true true false
Kalanın işareti bölünenin işaretidir. Tek sayı sınaması için % 2 != 0 güvenlidir.
Adım Adım Çalıştırma · Örnekler
Soru 34: Üç Sayının En Küçüğü
"Aday + karşılaştır" deseniyle 6, 2, 2 sayılarının en küçüğü bulunuyor. Aday nasıl değişir?
Önce kendiniz tahmin edin, sonra › ile ilerleyin.
a = 6, b = 2, c = 2.
İlk aday: a = 6.
b < enK → 2 < 6 → true.
Yeni aday: enK = 2.
c < enK → 2 < 2 → false; eşit değer adayı değiştirmez, satır 6 atlanır.
Çıktı: En küçük: 2. Kısa yol: Math.min(a, Math.min(b, c)).
int a = 6, b = 2, c = 2; int enK = a; if (b < enK) enK = b; if (c < enK) enK = c; System.out.println("En küçük: " + enK);
Çıktı Sorusu · Örnekler
Soru 35: İkinci Dereceden Denklem
Aşağıdaki kodun çıktısı nedir?
double a = 1, b = -5, c = 6; double d = b * b - 4 * a * c; if (d > 0) { double x1 = (-b + Math.sqrt(d)) / (2 * a); double x2 = (-b - Math.sqrt(d)) / (2 * a); System.out.println(x1 + " ve " + x2); } else if (d == 0) { System.out.println(-b / (2 * a)); } else { System.out.println("Reel kök yok"); }
Cevabı göster
Çıktı: 3.0 ve 2.0
Değişkenler double olduğu için sonuçlar 3.0 ve 2.0 biçiminde yazılır. Sağlama: x² − 5x + 6 = (x − 3)(x − 2).
Çıktı Sorusu · Örnekler
Soru 36: Vücut Kitle İndeksi
Aşağıdaki kodun çıktısı nedir?
double kilo = 70, boy = 1.75; double vki = kilo / (boy * boy); if (vki < 18.5) System.out.println("Zayıf"); else if (vki < 25) System.out.println("Normal"); else System.out.println("Fazla kilolu");
Cevabı göster
Çıktı: Normal
vki = 70 / 3.0625 ≈ 22.86. İlk koşul false; ikinci dalda üst sınır yeterli, çünkü bu dala gelen değer zaten 18.5 veya üstüdür.
Çıktı Sorusu · Örnekler
Soru 37: Mutlak Değer ve MIN_VALUE
Aşağıdaki kodun çıktısı nedir?
int sayi = Integer.MIN_VALUE; if (sayi < 0) { sayi = -sayi; } System.out.println(sayi); System.out.println(sayi < 0);
Cevabı göster
-2147483648 true
- Koşul true →
-sayihesaplanır: 2 147 483 648 int'e sığmaz (en büyük 2 147 483 647). - Taşma sararak yine −2 147 483 648 verir; "mutlak değer" negatif kalır.
- Bu özel durum için long kullanılır ya da
Math.absExact(Java 15+) istisna fırlatır.