Döngüler

Döngüler · Çalışma Soruları
for döngüsüwhile ve do-whilebreak ve continueİç içe döngülerDesenlerDöngü örnekleri
Her slaytta bir soru · çoktan seçmeli, çıktı ve adım adım çalıştırma soruları. Önce kendiniz çözün, sonra cevabı açın. · Sercan KÜLCÜ

Ç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.

i=11i=23i=36i=410i=515i=621i=728
  • 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.

baş10i=111i=213i=316i=420i=525

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.

i=1turi=2turi=3turi=4conti=5conti=6çık

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.

sayi=66sayi=530sayi=4120sayi=3360

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³.
i=36i=436i=5216i=6çık

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-while koşulu gövdeden sonra sorar: gövde bir kez çalışır (5 yazılır, n = 6), sonra 6 < 3 false.
  • while koş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

1122334↷5566778↷9910✕
  • 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
i \ jj=1j=2j=3i=3✓✓atlai=4✓✓atlai=5✓✓atlayazdıatlandıbreakçalışmadı

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
i \ jj=1j=2j=3j=4i=1✓✓atla✓i=2✓✓atla✓i=3breakyazdıatlandıbreakçalışmadı
  • İç 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 \ jj=1j=2j=3j=4i=1✓i=2i=3i=4

i = 1: i == 3 false → iç döngü. j = 1: j == 3 false → yazdır.

i \ jj=1j=2j=3j=4i=1✓✓i=2i=3i=4

j = 2 → yazdır.

i \ jj=1j=2j=3j=4i=1✓✓breaki=2i=3i=4

j == 3 → break: yalnızca iç döngü biter; j = 4'e hiç gelinmez.

i \ jj=1j=2j=3j=4i=1✓✓breaki=2✓i=3i=4

Dış döngü sürer: i = 2, iç döngü j = 1'den yeniden başlar.

i \ jj=1j=2j=3j=4i=1✓✓breaki=2✓✓i=3i=4

j = 2 → yazdır.

i \ jj=1j=2j=3j=4i=1✓✓breaki=2✓✓breaki=3i=4

j == 3 → break.

i \ jj=1j=2j=3j=4i=1✓✓breaki=2✓✓breaki=3i=4

i == 3 → continue: dış turun kalanı (iç döngünün tamamı) atlanır, i++.

i \ jj=1j=2j=3j=4i=1✓✓breaki=2✓✓breaki=3i=4✓

i = 4: iç döngü j = 1 → yazdır.

i \ jj=1j=2j=3j=4i=1✓✓breaki=2✓✓breaki=3i=4✓✓

j = 2 → yazdır.

i \ jj=1j=2j=3j=4i=1✓✓breaki=2✓✓breaki=3i=4✓✓break

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 \ jj=2j=3j=4i=2✓i=3i=4

i = 2 (4 değil) → iç döngü. j = 2 → yazdır.

i \ jj=2j=3j=4i=2✓atlai=3i=4

j == 3 → continue: yazdırma atlanır, j++.

i \ jj=2j=3j=4i=2✓atla✓i=3i=4

j = 4 → yazdır (continue döngüyü bitirmedi). j = 5 → iç döngü biter.

i \ jj=2j=3j=4i=2✓atla✓i=3✓i=4

i = 3: iç döngü yeniden j = 2'den.

i \ jj=2j=3j=4i=2✓atla✓i=3✓atlai=4

j == 3 → continue.

i \ jj=2j=3j=4i=2✓atla✓i=3✓atla✓i=4

j = 4 → yazdır.

i \ jj=2j=3j=4i=2✓atla✓i=3✓atla✓i=4break

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 dis iki döngüden birden çıkar; i = 3 hiç denenmez.
  • Düz break yalnı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.
i \ jj=1j=2j=3i=1✓✓✓i=2✓breaki=3yazdıatlandıbreakçalışmadı

Ç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);
i \ jj=1j=2j=3j=4i=1✓✓✓✓i=2✓✓✓i=3✓✓i=4✓

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 i=0*-----i=1**----i=2***---i=3****--i=4*****-
  • 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 i=0␣*****i=1␣␣****i=2␣␣␣***i=3␣␣␣␣**i=4␣␣␣␣␣*
  • 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␣␣␣␣*i=2i=3i=4i=5

i = 1: 5 − 1 = 4 boşluk, 2·1 − 1 = 1 yıldız.

i=1␣␣␣␣*i=2␣␣␣***i=3i=4i=5

i = 2: 3 boşluk, 3 yıldız.

i=1␣␣␣␣*i=2␣␣␣***i=3␣␣*****i=4i=5

i = 3: 2 boşluk, 5 yıldız.

i=1␣␣␣␣*i=2␣␣␣***i=3␣␣*****i=4␣*******i=5

i = 4: 1 boşluk, 7 yıldız.

i=1␣␣␣␣*i=2␣␣␣***i=3␣␣*****i=4␣*******i=5*********

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 i=5*********i=4␣*******i=3␣␣*****i=2␣␣␣***i=1␣␣␣␣*
  • İç 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.

i=11i=22i=36i=424

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.

baş305tur 130tur 23tur 30

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.

Son

Döngüler: Çalışma Soruları
Konu anlatımı: Döngüler sunumu
1 / 1 Sercan KÜLCÜ, Tüm hakları saklıdır.