Döngüler
Çoktan Seçmeli · for Döngüsü
Soru 1: Koşul Kaç Kez Sorulur?
Aşağıdaki döngüde gövde (toplam += i) ve koşul (i <= n) kaçar kez çalışır?
int n = 4; int toplam = 0; for (int i = 1; i <= n; i++) { toplam += i; } System.out.println(toplam);
B: Koşul i = 1, 2, 3, 4 için true, i = 5 için false olur; o son (false) kontrol de bir değerlendirmedir. Gövde 4 kez çalışır, koşul 5 kez sorulur; başlangıç (int i = 1) yalnızca 1 kez. Çıktı 10.
Çıktı Sorusu · Geçmiş Sınav (2025-26 Vize)
Soru 2: Toplam 1..7
Aşağıdaki kodun çıktısı nedir?
int toplam = 0; for (int i = 1; i <= 7; i++) { toplam += i; } System.out.println(toplam);
Cevabı göster
Çıktı: 28
toplam bir biriktiricidir: her tur i kadar artar.
- 1 + 2 + … + 7 = 7·8/2 = 28.
- i = 8 olunca koşul false; println bir kez, döngüden sonra çalışır.
Çoktan Seçmeli · Geçmiş Sınav (2025-26 Vize (varyant))
Soru 3: Adım 3 ile Sayma
Kodun çıktısı nedir?
for (int i = 2; i <= 10; i += 3) { System.out.print(i + " "); }
C: i = 2 → 5 → 8 → 11; 11 <= 10 false olduğu için 11 yazdırılmaz. Güncelleme i += 3 olduğundan her tur 3 artar. Sınavdaki asıl soru for (int i = 1; i <= 5; i++) idi: çıktı 1 2 3 4 5.
Çoktan Seçmeli · Geçmiş Sınav (2025-26 Bütünleme)
Soru 4: Kaç Tire Yazılır?
Kodun çıktısı nedir?
for (int i = 1; i < 5; i++) { System.out.print("-"); }
D: i = 1, 2, 3, 4 için gövde çalışır; i = 5 iken 5 < 5 false. Tur sayısı = 5 − 1 = 4. 2025-26 Final'deki for (int i = 0; i < 5; i++) ise 5 tur döner: -----. print alt satıra geçmediği için tireler yan yana çıkar.
Adım Adım Çalıştırma · Geçmiş Sınav (2025-26 Bütünleme)
Soru 5: x += i İzleme
Döngü her turda x'i i kadar artırıyor. Program ne yazdırır?
Önce kendiniz tahmin edin, sonra › ile ilerleyin.
Biriktirici 0 ile değil, 10 ile başlıyor: sonuç 10 fazla olacak.
1 <= 5 → true. x = 10 + 1 = 11.
i++ → 2; 2 <= 5 → true. x = 11 + 2 = 13.
x = 13 + 3 = 16.
x = 16 + 4 = 20.
x = 20 + 5 = 25.
i++ → 6; 6 <= 5 → false: döngü biter.
25 yazılır: 10 + (1 + 2 + 3 + 4 + 5) = 10 + 15.
int x = 10; for (int i = 1; i <= 5; i++) { x += i; } System.out.println(x);
Çoktan Seçmeli · Geçmiş Sınav (2025-26 Final)
Soru 6: x = 0 ile Başlarsa
Aynı döngü int x = 0; ile başlarsa ne yazdırılır?
int x = 0; for (int i = 1; i <= 5; i++) { x += i; } System.out.println(x);
B: x = 0 + 1 + 2 + 3 + 4 + 5 = 15. Biriktirici toplama için 0 ile başlar (toplamanın etkisiz elemanı). 16 sınır hatasıyla (i <= 6 sanmak değil, i = 6'yı da saymak) bulunmaz: i = 6 gövdeye girmez.
Adım Adım Çalıştırma · Geçmiş Sınav (2023-24 Final)
Soru 7: continue Sonrası i Değeri
i döngüden önce tanımlanmış. Döngü bitince i kaçtır?
Önce kendiniz tahmin edin, sonra › ile ilerleyin.
i döngünün dışında tanımlı: döngüden sonra da yaşar ve yazdırılabilir.
Başlangıç i = 1 (eski 0 değeri ezilir). 1 < 6 → true; 1 > 3 false.
i++ → 2; 2 > 3 false. Gövdede başka iş yok.
i = 3; 3 > 3 false.
i = 4; 4 > 3 → continue: turun kalanı atlanır, güncellemeye (i++) gidilir.
i = 5; yine continue → i++.
i = 6; 6 < 6 → false: döngü biter. continue döngüyü bitirmez, break bitirirdi.
6 yazılır (cevap A). Döngü her zaman koşulu false yapan ilk değerde biter.
int i = 0; for (i = 1; i < 6; i++) { if (i > 3) continue; } System.out.println(i);
Çoktan Seçmeli · for Döngüsü
Soru 8: i++ mı ++i mi?
İki döngünün çıktıları için hangisi doğrudur?
for (int i = 0; i < 3; i++) System.out.print(i + " "); System.out.println(); for (int i = 0; i < 3; ++i) System.out.print(i + " ");
B: for'un güncelleme bölümünde ifadenin değeri kullanılmaz; i++ da ++i da yalnızca i'yi 1 artırır. Fark yalnızca değer bir ifadede kullanıldığında (ör. b = a++) ortaya çıkar.
Çıktı Sorusu · Geçmiş Sınav (2025-26 Bütünleme)
Soru 9: while ile i Yazdırma
Aşağıdaki kodun çıktısı nedir?
int i = 2; while (i <= 5) { System.out.print(i); i++; }
Cevabı göster
Çıktı: 2345
- i = 2, 3, 4, 5 için koşul true; her turda i yazılır, sonra artırılır.
- i = 6 → 6 <= 5 false, döngü biter.
print(i)araya boşluk koymaz ve satır atlamaz; sayılar bitişik çıkar.
Not: Sınavın cevap anahtarında 2 3 4 5 yazıyor; kod boşluk basmadığı için doğru çıktı 2345'tir.
Çoktan Seçmeli · Geçmiş Sınav (2025-26 Final)
Soru 10: while ile 0'dan Başlamak
Kodun çıktısı nedir?
int i = 0; while (i < 3) { System.out.print(i); i++; }
B: i = 0, 1, 2 yazılır; i = 3 olunca 3 < 3 false. Yazdırma artırmadan önce olduğu için 0 da yazılır, 3 yazılmaz. Boşluk basılmadığından sayılar bitişiktir (cevap anahtarındaki 0 1 2 boşluklu yazılmış).
Adım Adım Çalıştırma · Geçmiş Sınav (2024-25 Final A)
Soru 11: while(sayi > 2) Çarpımı
Her turda önce çarpılıyor, sonra sayi azaltılıp ara sonuç yazılıyor. Çıktı nedir?
Önce kendiniz tahmin edin, sonra › ile ilerleyin.
Çarpım biriktiricisi 1 ile başlar.
6 > 2 → true. sonuc = 1 × 6 = 6, sayi = 5, 6 yazılır.
5 > 2 → sonuc = 6 × 5 = 30, sayi = 4.
4 > 2 → sonuc = 30 × 4 = 120, sayi = 3.
3 > 2 → sonuc = 120 × 3 = 360, sayi = 2.
2 > 2 → false: döngü biter. 4 tur döndü: 6 × 5 × 4 × 3 = 360.
int sonuc = 1; int sayi = 6; while (sayi > 2) { sonuc *= sayi; sayi--; System.out.print(sonuc + " "); }
Çoktan Seçmeli · Geçmiş Sınav (2024-25 Final B)
Soru 12: while(sayi > 3) Çarpımı
Aynı kalıp, farklı sayılar. Çıktı nedir?
int sonuc = 1; int sayi = 7; while (sayi > 3) { sonuc *= sayi; sayi--; System.out.print(sonuc + " "); }
D: sayi = 7, 6, 5, 4 için koşul true (4 tur): 7, 7·6 = 42, 42·5 = 210, 210·4 = 840. sayi 3 olunca 3 > 3 false. A, 3 ile de çarpmak (>= sanmak) olurdu.
Çıktı Sorusu · Geçmiş Sınav (2024-25 Bütünleme A)
Soru 13: sonuc *= sayac
Aşağıdaki metot çalıştırıldığında çıktısı ne olur?
void fonksiyon() { int sonuc = 1; int sayac = 6; for (int i = 3; i < sayac; i++) { sonuc *= sayac; System.out.print(sonuc + " "); } }
Cevabı göster
Çıktı: 6 36 216
- Tuzak: çarpılan sayac, i değil; sayac hep 6 kalır. i yalnızca tur sayar.
- i = 3, 4, 5 → 6 − 3 = 3 tur: 6¹, 6², 6³.
Diğer kitapçıklar: B (1, 7, i = 4) → 7 49 343; C (2, 7, i = 4) → 14 98 686; D (2, 6, i = 3) → 12 72 432.
Çoktan Seçmeli · Geçmiş Sınav (2024-25 Bütünleme D)
Soru 14: sonuc 2 ile Başlarsa
Kitapçık D'deki metodun çıktısı nedir?
void fonksiyon() { int sonuc = 2; int sayac = 6; for (int i = 3; i < sayac; i++) { sonuc *= sayac; System.out.print(sonuc + " "); } }
A: 3 tur (i = 3, 4, 5), her tur 6 ile çarpılır: 2·6 = 12, 12·6 = 72, 72·6 = 432. B başlangıçtaki 2'yi unutmak, D sayac yerine i ile çarpmak (2·3, ·4, ·5) olurdu.
Çıktı Sorusu · while ve do-while
Soru 15: do-while En Az Bir Kez
İki döngüde de koşul baştan false. Çıktı nedir?
int n = 5; do { System.out.print(n + " "); n++; } while (n < 3); int m = 5; while (m < 3) { System.out.print(m + " "); m++; } System.out.println("| " + n + " " + m);
Cevabı göster
Çıktı: 5 | 6 5
do-whilekoşulu gövdeden sonra sorar: gövde bir kez çalışır (5 yazılır, n = 6), sonra 6 < 3 false.whilekoşulu önce sorar: 5 < 3 false → gövde hiç çalışmaz, m = 5 kalır.- Menü ve girdi doğrulamada "en az bir kez" gerektiği için do-while seçilir.
Çoktan Seçmeli · while ve do-while
Soru 16: Hangisi Sonsuz Döngü?
Aşağıdaki kod parçalarından hangisi hiç bitmez?
C: Süslü parantez olmadığı için döngünün gövdesi yalnızca print(i)'dir; i++ döngüden sonra çalışacak satırdır ve hiç gelinmez. i hep 0 kalır, ekrana sonsuza dek 0 yazılır. B: 10 → 7 → 4 → 1 → −2 ile biter.
Çıktı Sorusu · while ve do-while
Soru 17: double Sayaç
Döngünün 10 tur dönmesi bekleniyor. Çıktı nedir?
int n = 0; for (double x = 0; x < 1.0; x += 0.1) { n++; } System.out.println(n);
Cevabı göster
Çıktı: 11
- 0,1 ikilik tabanda tam gösterilemez; küçük yuvarlama hataları birikir.
- 10 toplamadan sonra x = 0.9999999999999999 olur, tam 1.0 değil → koşul true, bir tur fazla döner.
- x = 1.0999999999999999 olunca döngü biter.
Ders: sayaçta int kullanın (ör. for (int k = 0; k < 10; k++) ve x = k * 0.1). x != 1.0 yazılsaydı döngü hiç bitmezdi.
Çıktı Sorusu · break ve continue
Soru 18: break ve continue Birlikte
Aşağıdaki kodun çıktısı nedir?
for (int i = 1; i <= 12; i++) { if (i % 4 == 0) continue; if (i == 10) break; System.out.print(i + " "); } System.out.println("| son");
Cevabı göster
Çıktı: 1 2 3 5 6 7 9 | son
- 4 ve 8:
continue→ yazdırma atlanır, i++ ile sürer. - 10:
break→ döngü hemen biter; 11 ve 12 hiç denenmez. - Sıra önemli: i = 8 için önce continue kontrolü çalışır.
Çoktan Seçmeli · Geçmiş Sınav (2024-25 Bütünleme A)
Soru 19: İç Döngüde continue
Metot kaç satır yazdırır ve çıktıda hangi j değerleri görünür?
void fonksiyon() { for (int i = 1; i < 4; i++) { for (int j = 1; j < 4; j++) { if (j == 2) { continue; } System.out.println("i: " + i + " j: " + j); } } }
C: i = 1, 2, 3 (3 tur) × j = 1, 3 (j = 2 atlanır) = 6 satır: i: 1 j: 1, i: 1 j: 3, … i: 3 j: 3. continue break değildir: j = 3 yine çalışır. B ve C kitapçıkları aynı kural, i = 2..4 ve 3..5.
Çıktı Sorusu · Geçmiş Sınav (2024-25 Bütünleme D)
Soru 20: j == 3 ise continue
Aşağıdaki metot çalıştırıldığında çıktısı ne olur?
void fonksiyon() { for (int i = 3; i < 6; i++) { for (int j = 1; j < 4; j++) { if (j == 3) { continue; } System.out.println("i: " + i + " j: " + j); } } }
Cevabı göster
i: 3 j: 1 i: 3 j: 2 i: 4 j: 1 i: 4 j: 2 i: 5 j: 1 i: 5 j: 2
j = 3 son değer olduğu için continue ile break burada aynı sonucu verir; fark j = 4 olsaydı görülürdü.
Çıktı Sorusu · Geçmiş Sınav (2023-24 Vize)
Soru 21: Dışta break, İçte continue
Aşağıdaki kod parçası çalıştığında çıktı ne olur?
for (int i = 1; i < 4; i++) { if (i == 3) { break; } for (int j = 1; j <= 4; j++) { if (j == 3) { continue; } System.out.println("i: " + i + " j: " + j); } }
Cevabı göster
i: 1 j: 1 i: 1 j: 2 i: 1 j: 4 i: 2 j: 1 i: 2 j: 2 i: 2 j: 4
- İç continue yalnızca j = 3 turunu atlar; j = 4 yazılır.
- i = 3: dıştaki break iki döngüyü de bitirir (iç döngü hiç başlamaz).
Adım Adım Çalıştırma · Geçmiş Sınav (2023-24 Telafi)
Soru 22: Dışta continue, İçte break
i == 3 dış döngüde continue, j == 3 iç döngüde break. Çıktıyı adım adım bulun.
Önce kendiniz tahmin edin, sonra › ile ilerleyin.
i = 1: i == 3 false → iç döngü. j = 1: j == 3 false → yazdır.
j = 2 → yazdır.
j == 3 → break: yalnızca iç döngü biter; j = 4'e hiç gelinmez.
Dış döngü sürer: i = 2, iç döngü j = 1'den yeniden başlar.
j = 2 → yazdır.
j == 3 → break.
i == 3 → continue: dış turun kalanı (iç döngünün tamamı) atlanır, i++.
i = 4: iç döngü j = 1 → yazdır.
j = 2 → yazdır.
j == 3 → break.
5 <= 4 false: bitti. 6 satır; i = 3 satırı ve j = 3, 4 sütunları hiç yazılmadı.
for (int i = 1; i <= 4; i++) { if (i == 3) { continue; } for (int j = 1; j <= 4; j++) { if (j == 3) { break; } System.out.println("i: " + i + " j: " + j); } }
Adım Adım Çalıştırma · Geçmiş Sınav (2024-25 Vize A)
Soru 23: i == 4 break, j == 3 continue
Aşağıdaki kod parçası çalıştırıldığında çıktı ne olur? Izgarayı izleyin.
Önce kendiniz tahmin edin, sonra › ile ilerleyin.
i = 2 (4 değil) → iç döngü. j = 2 → yazdır.
j == 3 → continue: yazdırma atlanır, j++.
j = 4 → yazdır (continue döngüyü bitirmedi). j = 5 → iç döngü biter.
i = 3: iç döngü yeniden j = 2'den.
j == 3 → continue.
j = 4 → yazdır.
i == 4 → break: dış döngü biter; iç döngü bu turda hiç başlamaz. Çıktı 4 satır.
for (int i = 2; i < 5; i++) { if (i == 4) { break; } for (int j = 2; j < 5; j++) { if (j == 3) { continue; } System.out.println("i: " + i + " j: " + j); } }
Çoktan Seçmeli · Geçmiş Sınav (2024-25 Vize B)
Soru 24: j == 4 ise continue
Kitapçık B'de iç koşul j == 4. Kaç satır yazılır ve son satır hangisidir?
for (int i = 2; i < 5; i++) { if (i == 4) { break; } for (int j = 2; j < 5; j++) { if (j == 4) { continue; } System.out.println("i: " + i + " j: " + j); } }
C: i = 2 ve 3 için j = 2, 3 yazılır, j = 4 atlanır: i: 2 j: 2, i: 2 j: 3, i: 3 j: 2, i: 3 j: 3. i = 4'te dıştaki break döngüyü bitirir, bu yüzden i: 4 … satırı olamaz.
Çıktı Sorusu · break ve continue
Soru 25: Etiketli break
Etiketli break dis ile çıktı nedir? Etiket kaldırılıp düz break yazılsa kaç sayı satırı çıkar?
dis: for (int i = 1; i <= 3; i++) { for (int j = 1; j <= 3; j++) { if (i * j == 4) break dis; System.out.println(i + " " + j); } } System.out.println("bitti");
Cevabı göster
1 1 1 2 1 3 2 1 bitti
- i = 2, j = 2: 2·2 = 4 →
break disiki döngüden birden çıkar; i = 3 hiç denenmez. - Düz
breakyalnızca iç döngüyü bitirir: i = 3 için 3 1, 3 2, 3 3 de yazılır → 7 sayı satırı + bitti.
Çoktan Seçmeli · İç İçe Döngüler
Soru 26: Gövde Kaç Kez Çalışır?
İç döngünün başlangıcı dış değişkene bağlı. sayac kaç olur?
int sayac = 0; for (int i = 1; i <= 4; i++) { for (int j = i; j <= 4; j++) { sayac++; } } System.out.println(sayac);
D: i = 1 → j = 1..4 (4 tur), i = 2 → 3, i = 3 → 2, i = 4 → 1: 4 + 3 + 2 + 1 = 10. 16 her iki döngünün de 1..4 tam dönmesi (4 × 4) olurdu; burada iç döngü her seferinde daha kısa.
Çıktı Sorusu · Geçmiş Sınav (2025-26 Vize, 2024-25 Vize A)
Soru 27: Yıldız ve Tire Deseni
Aşağıdaki metot çalıştırıldığında çıktı ne olur?
public static void cizdir() { for (int i = 0; i < 5; i++) { for (int j = 0; j <= i; j++) { System.out.print("*"); } for (int j = 0; j < 5 - i; j++) { System.out.print("-"); } System.out.println(); } }
Cevabı göster
- Satır i:
j <= i→ i + 1 yıldız (0'dan başladığı için bir fazla). j < 5 − i→ 5 − i tire.- Her satır 6 karakter; son satır
*****-(bir tire kalır).
Çıktı Sorusu · Geçmiş Sınav (2024-25 Vize B)
Soru 28: Boşluk ve Yıldız Deseni
Aşağıdaki metot çalıştırıldığında çıktı ne olur? (Boşlukları da sayın.)
public void cizdir() { for (int i = 0; i < 5; i++) { for (int j = 0; j <= i; j++) { System.out.print(" "); } for (int j = 0; j < 5 - i; j++) { System.out.print("*"); } System.out.println(); } }
Cevabı göster
- Satır i: i + 1 boşluk, sonra 5 − i yıldız.
- İlk satır da bir boşlukla başlar (
j <= i, i = 0 iken 1 tur). - Sonuç sağa yaslı, aşağı doğru azalan üçgen.
Adım Adım Çalıştırma · Geçmiş Sınav (2023-24 Vize)
Soru 29: Piramit
Satır i'de önce satirSayisi − i boşluk, sonra 2i − 1 yıldız yazılıyor. Çıktıyı satır satır kurun.
Önce kendiniz tahmin edin, sonra › ile ilerleyin.
Her satır 2 parça: boşluklar (iç döngü j) ve yıldızlar (iç döngü k).
i = 1: 5 − 1 = 4 boşluk, 2·1 − 1 = 1 yıldız.
i = 2: 3 boşluk, 3 yıldız.
i = 3: 2 boşluk, 5 yıldız.
i = 4: 1 boşluk, 7 yıldız.
i = 5: j döngüsü hiç dönmez (1 <= 0 false), 9 yıldız.
6 <= 5 false: bitti. Boşluk azalırken yıldız 2'şer artar; toplam 1 + 3 + 5 + 7 + 9 = 25 yıldız.
int satirSayisi = 5; for (int i = 1; i <= satirSayisi; i++) { for (int j = 1; j <= satirSayisi - i; j++) { System.out.print(" "); } for (int k = 1; k <= 2 * i - 1; k++) { System.out.print("*"); } System.out.println(); }
Çıktı Sorusu · Geçmiş Sınav (2023-24 Telafi)
Soru 30: Ters Piramit
Dış döngü bu kez geriye sayıyor. Çıktı nedir?
int satirSayisi = 5; for (int i = satirSayisi; i > 0; i--) { for (int j = 1; j <= satirSayisi - i; j++) { System.out.print(" "); } for (int k = 1; k <= 2 * i - 1; k++) { System.out.print("*"); } System.out.println(); }
Cevabı göster
- İç döngüler piramitle aynı; yalnızca i 5'ten 1'e iner.
- i = 5: 0 boşluk, 9 yıldız … i = 1: 4 boşluk, 1 yıldız.
Çoktan Seçmeli · Desenler
Soru 31: Piramitte Toplam Yıldız
Piramit kodu satirSayisi = 6 ile çalıştırılırsa son satırda kaç yıldız olur ve toplam kaç yıldız yazılır?
B: Satır i'de 2i − 1 yıldız: i = 6 → 11. Toplam 1 + 3 + 5 + 7 + 9 + 11 = 36 = 6² (ilk n tek sayının toplamı n²). 21 = 1 + 2 + … + 6, artan üçgenin toplamıdır.
Çıktı Sorusu · Desenler
Soru 32: println Yanlış Yerde
Artan üçgen kodunda println yanlışlıkla iç döngüye yazılmış. Çıktı nedir, kaç satır olur?
int n = 3; for (int satir = 1; satir <= n; satir++) { for (int sutun = 1; sutun <= satir; sutun++) { System.out.print("*"); System.out.println(); } }
Cevabı göster
Çıktı: alt alta 6 satır, her satırda tek *:
* * * * * *
- println her yıldızdan sonra çalışır: 1 + 2 + 3 = 6 yıldız → 6 satır.
- Doğrusu println'i iç döngünün kapanış parantezinden sonra, dış döngünün içine yazmaktır:
*,**,***.
Çoktan Seçmeli · Geçmiş Sınav (2025-26 Final (varyant))
Soru 33: Çift Sayıları Yazdırma
1'den 100'e kadar olan çift sayıları (2, 4, …, 100) yazdıran parça hangisidir?
C: 2'den başlayıp 2'şer artar, 100 de dahil (<=). A tek sayıları yazar (2025-26 Bütünleme'deki soru budur). B 0..98 yazar: 0 fazla, 100 eksik. D'de / bölmedir, kalan değil: yalnızca i = 1 için 1 / 2 == 0 → 1 yazar. Sınavdaki çözüm if (i % 2 == 0) de doğrudur.
Çoktan Seçmeli · Geçmiş Sınav (2025-26 Final)
Soru 34: Unutulan i++
while ile faktöriyel hesaplayan metotta i++ satırı unutulursa faktoriyelHesapla(5) ne yapar?
long faktoriyelHesapla(int n) { long sonuc = 1; int i = 1; while (i <= n) { sonuc *= i; // i++; unutuldu } return sonuc; }
D: i hep 1 kalır, 1 <= 5 her zaman true; sonuc *= 1 de hiçbir şeyi değiştirmez. Program takılır, return'e hiç gelinmez. while'da güncelleme gövdenin içinde yazılır; unutmak en sık sonsuz döngü nedenidir. Derleyici bunu fark etmez.
Adım Adım Çalıştırma · Geçmiş Sınav (2025-26 Bütünleme, Final)
Soru 35: while ile Faktöriyel
faktoriyelHesapla(4) çağrılıyor. sonuc ve i tur tur nasıl değişir, ne döner?
Önce kendiniz tahmin edin, sonra › ile ilerleyin.
n = 4: 4! = 1·2·3·4 hesaplanacak.
Çarpım biriktiricisi 1 (0 olsaydı sonuç hep 0 olurdu); sayaç i = 1.
1 <= 4 → sonuc = 1·1 = 1, i = 2.
2 <= 4 → sonuc = 1·2 = 2, i = 3.
3 <= 4 → sonuc = 2·3 = 6, i = 4.
4 <= 4 → sonuc = 6·4 = 24, i = 5.
5 <= 4 → false: döngü biter.
24 döner. n = 0 için döngü hiç dönmez → 1 (0! = 1, doğru). long, 20!'e kadar sığar.
long faktoriyelHesapla(int n) { long sonuc = 1; int i = 1; while (i <= n) { sonuc *= i; i++; } return sonuc; }
Adım Adım Çalıştırma · Geçmiş Sınav (2024-25 Vize A/B)
Soru 36: do-while ile Basamak Sayısı
basamakSayisi(-305) çağrılıyor. Kaç döner?
Önce kendiniz tahmin edin, sonra › ile ilerleyin.
Parametre sayi = −305.
Math.abs ile işaret atılır: basamak sayısı işaretten bağımsız.
Sayaç 0.
do: koşula bakmadan gövde. Sayaç 1, 305 / 10 = 30 (son basamak atıldı).
30 > 0 → true. Sayaç 2, 30 / 10 = 3. Aradaki 0 da bir basamaktır.
3 > 0 → true. Sayaç 3, 3 / 10 = 0.
0 > 0 → false: döngü biter.
3 döner. sayi = 0 ile çağrılsaydı do-while gövdeyi yine bir kez çalıştırır → 1 (doğru).
public static int basamakSayisi(int sayi) { sayi = Math.abs(sayi); int basamakSayisi = 0; do { basamakSayisi++; sayi /= 10; } while (sayi > 0); return basamakSayisi; }
Çoktan Seçmeli · Geçmiş Sınav (2023-24 Telafi)
Soru 37: Sıfırın Basamak Sayısı
Sınavlarda üç farklı basamakSayisi çözümü verildi. Hangisi basamakSayisi(0) için yanlış sonuç (0) döndürür?
C: 0 > 0 false olduğu için while gövdesi hiç çalışmaz ve 0 döner; oysa 0 tek basamaklıdır. 2023-24 Telafi cevap anahtarındaki çözüm budur ve negatif sayılar için de 0 döndürür (Math.abs yok). A (do-while) ve B (özel durum) doğru: ikisi de 1.
Çoktan Seçmeli · Geçmiş Sınav (2023-24 Vize)
Soru 38: Rakamlar Toplamında Eksik Satır
Cevap anahtarındaki metotta rakam değişkeni hiç tanımlanmamış. İşaretli yere hangi satır gelmelidir?
public int rakamlarToplami(int sayi) { sayi = Math.abs(sayi); int toplam = 0; while (sayi > 0) { // ??? eksik satır toplam += rakam; sayi /= 10; } return toplam; }
A: % 10 son rakamı verir, / 10 onu sayıdan atar. Bu satır olmadan kod derlenmez (cannot find symbol). Örnek: −4071 → 1 + 7 + 0 + 4 = 12. B ise kalan sayıyı (407) ekler.
Çoktan Seçmeli · Döngü Örnekleri
Soru 39: 13! ve int Taşması
Kod 13! = 6 227 020 800 değerini hesaplamaya çalışıyor. Hangisi doğrudur?
int sonuc = 1; for (int i = 1; i <= 13; i++) { sonuc *= i; } System.out.println(sonuc);
D: int en çok 2 147 483 647 tutar; 13! bunu aşar ve değer sessizce sarar (hata yok) → 1932053504. 12! = 479001600 hâlâ sığar. Çözüm long sonuc = 1; (20!'e kadar sığar). Sınavdaki faktöriyel metodunun long döndürmesinin nedeni budur.