Metotlar

Metotlar · Çalışma Soruları
Metot tanımı ve çağrısıDönüş değeriParametre aktarımıAşırı yüklemeKapsamÖrnek metotlar
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 · Metot Temelleri

Soru 1: Parametre ve Argüman

Aşağıdaki kod için hangisi doğrudur?

static int topla(int a, int b) {
    int sonuc = a + b;
    return sonuc;
}
// main içinde:
int toplam = topla(5, 3);

C: Bildirimdeki a ve b biçimsel parametrelerdir; çağrıdaki 5 ve 3 gerçek argümanlardır ve parametrelere kopyalanır. sonuc yereldir, metot bitince yok olur. Dönüş türü int.

Çıktı Sorusu · Metot Temelleri

Soru 2: Metot Metodu Çağırınca

Aşağıdaki kodun çıktısı nedir?

static int topla(int a, int b) {
    return a + b;
}
static int ortalama(int x, int y) {
    int t = topla(x, y);
    return t / 2;
}
// main içinde:
System.out.println(ortalama(8, 5));
Cevabı göster

Çıktı: 6

çağrı yığını (üst = çalışan)topla(8, 5)a=8 b=5 → 13ortalama(8, 5)x=8 y=5main
  • topla 13 döndürür, çerçevesi kapanır; t = 13.
  • 13 / 2 tam sayı bölmesi → 6 (6.5 değil).

Çoktan Seçmeli · Metot Temelleri

Soru 3: Çağrıların Sırası

Metot hem ekrana yazıyor hem değer döndürüyor. Çıktı nedir?

static int f(int x) {
    System.out.print("f" + x + " ");
    return x * 2;
}
// main içinde:
System.out.println(f(1) + f(2));

C: println'in argümanı hesaplanırken önce f(1) (soldan sağa) sonra f(2) çağrılır; ikisi de kendi yazısını basar. Sonra 2 + 4 = 6 yazılır. D, "s=" + f(1) + f(2) gibi önce String ile başlayan ifadede olurdu (String birleştirme: "24").

Çoktan Seçmeli · Metot Temelleri

Soru 4: static Olmayan Metot

Program derlenirken ne olur?

public class Ornek {
    void selamla() {
        System.out.println("Merhaba");
    }
    public static void main(String[] args) {
        selamla();
    }
}

D: main static'tir (nesne olmadan çalışır); static olmayan selamla() bir nesneye aittir ve doğrudan çağrılamaz. Bu bölümde çözüm metodu static void selamla() yapmaktır.

Adım Adım Çalıştırma · Geçmiş Sınav (2023-24 Vize)

Soru 5: usHesapla(2, −2)

Negatif üste metot kendini pozitif üsle çağırıyor. usHesapla(2, -2) ne döndürür? Çağrı yığınını izleyin.

Önce kendiniz tahmin edin, sonra › ile ilerleyin.

main, usHesapla(2, -2)'yi çağırır. int 2, double parametreye 2.0 olarak genişler.

Yeni çerçeve: taban = 2.0, us = −2, sonuc = 1.0.

us < 0 → metot kendini −us = 2 ile çağırır. Üstteki yeni çerçevenin kendi taban, us, sonuc kutuları var.

us = 2 ≥ 0 → for: i = 0, sonuc = 1.0 × 2.0 = 2.0.

i = 1, sonuc = 4.0. Sonra i = 2 < 2 false.

return 4.0: üstteki çerçeve kapanır.

İlk çerçeve kaldığı yerden sürer: sonuc = 1.0 / 4.0 = 0.25. (1.0 yazıldığı için bölme double'dır.)

return 0.25: çerçeve kapanır.

0.25 yazılır: 2⁻² = 1 / 2² = 1/4. (Sınavda metot static değildi; main'den çağırmak için static yazdık.)

static double usHesapla(double taban, int us) {
  double sonuc = 1;
  if (us < 0) {
    sonuc = 1.0 / (usHesapla(taban, -us));
  } else {
    for (int i = 0; i < us; i++) {
      sonuc *= taban;
    }
  }
  return sonuc;
}
// main: System.out.println(usHesapla(2, -2));

Çıktı Sorusu · Geçmiş Sınav (2023-24 Vize)

Soru 6: usHesapla Özel Durumları

Önceki sorudaki usHesapla metodu ile çıktı nedir?

System.out.println(usHesapla(3, 0));
System.out.println(usHesapla(10, -1));
System.out.println(usHesapla(2.5, 2));
Cevabı göster
1.0
0.1
6.25
  • us = 0: for hiç dönmez, sonuc = 1 (3⁰ = 1). Dönüş türü double olduğu için 1.0.
  • us = −1: 1.0 / usHesapla(10, 1) = 1.0 / 10.0 = 0.1.
  • çağrı yığını (üst = çalışan)usHesapla(10.0, 1)→ 10.0usHesapla(10.0, -1)1.0 / …main
  • 2.5 × 2.5 = 6.25: taban double olduğu için ondalıklı taban da çalışır.

Çoktan Seçmeli · Dönüş Değeri

Soru 7: Hangisi Derlenir?

Aşağıdaki metotlardan hangisi hatasız derlenir?

D: Her yol int döndürür. A: n ≤ 0 yolunda return yok → missing return statement. B: void metot değer döndüremez → unexpected return value. C: double, int'e kendiliğinden daraltılmaz → possible lossy conversion.

Çoktan Seçmeli · Dönüş Değeri

Soru 8: void Sonucu Atamak

Aşağıdaki main parçası için hangisi doğrudur?

static void cizgiCiz(int n) {
    for (int i = 0; i < n; i++)
        System.out.print("-");
    System.out.println();
}
// main içinde:
cizgiCiz(5);
int x = cizgiCiz(5);

C: void metot çağrıya değer döndürmez; işi yan etkidir (ekrana yazmak). Bu yüzden atamanın ya da ifadenin parçası olamaz. İlk satır tek başına geçerli bir deyimdir ve ----- yazar.

Çıktı Sorusu · Dönüş Değeri

Soru 9: Erken Dönüş

Aşağıdaki kodun çıktısı nedir?

static int sinifla(int n) {
    if (n < 0) return -1;
    if (n == 0) return 0;
    return 1;
}
// main içinde:
System.out.println(sinifla(-7) + " "
    + sinifla(0) + " " + sinifla(4));
Cevabı göster

Çıktı: -1 0 1

  • −7: ilk if true → hemen −1 döner, alt satırlar çalışmaz.
  • 0: ilk if false, ikinci true → 0.
  • 4: iki if de false → son satır 1 döndürür.

Her yol bir return ile bittiği için else gerekmez; özel durumları başta ele almak iç içeliği azaltır.

Çıktı Sorusu · Geçmiş Sınav (2024-25 Vize A/B)

Soru 10: Negatif Sayının Faktöriyeli

Sınavdaki çözüm sayi = -3 ile çağrılıyor. Çıktı nedir? Metotta ne eksik?

public static long faktoriyel(int sayi) {
    if (sayi < 0) {
        System.out.println("Sayi negatif olamaz.");
    }
    long sonuc = 1;
    for (int i = 1; i <= sayi; i++) {
        sonuc *= i;
    }
    return sonuc;
}
// main içinde:
int sayi = -3;
System.out.println(sayi + " sayisinin faktöriyeli: "
    + faktoriyel(sayi));
Cevabı göster
Sayi negatif olamaz.
-3 sayisinin faktöriyeli: 1
  • println'in argümanı yazılmadan önce hesaplanır: faktoriyel çağrılır ve uyarıyı önce basar.
  • Uyarıdan sonra metot sürer; for hiç dönmez → 1 döner, yanlış bir sonuç ekrana gelir.
  • Eksik: if içinde return -1; (ya da bir istisna) ile erken çıkmak.

Çoktan Seçmeli · Geçmiş Sınav (2023-24 Telafi)

Soru 11: int Döndüren Faktöriyel

Telafi sınavındaki public int faktoriyel(int sayi) (sonuc int, for ile 1..sayi çarpım) için faktoriyel(12) ve faktoriyel(13) ne döndürür?

B: 12! = 479 001 600 int'e sığar; 13! = 6 227 020 800 int sınırını (2 147 483 647) aşar ve değer sessizce sarar → 1932053504. Java tam sayı taşmasında hata vermez. Doğru sonuç için dönüş türü ve sonuc long olmalı (Vize 2024-25 çözümündeki gibi).

Adım Adım Çalıştırma · Dönüş Değeri

Soru 12: kombinasyon(4, 2)

kombinasyon, faktoriyel metodunu üç kez çağırıyor. Çağrı yığınını ve dönen değerleri izleyin.

Önce kendiniz tahmin edin, sonra › ile ilerleyin.

main, kombinasyon(4, 2)'yi çağırır.

Çerçeve: n = 4, r = 2. İfadeyi hesaplamak için önce faktoriyel(n) gerekir.

çağrı yığını (üst = çalışan)faktoriyel(4)→ 24kombinasyon(4, 2)n=4 r=2main

Yeni çerçeve: n = 4 (kombinasyon'un n'sinden ayrı kutu). sonuc = 2·3·4 = 24.

24 döner, çerçeve kapanır. Sıradaki çağrı faktoriyel(r) = faktoriyel(2).

çağrı yığını (üst = çalışan)faktoriyel(2)→ 2kombinasyon(4, 2)n=4 r=2main

n = 2: sonuc = 2 → 2 döner.

faktoriyel(n − r) = faktoriyel(2): aynı metot, yepyeni bir çerçeve → 2.

24 / (2 × 2) = 24 / 4 = 6. return 6.

6 yazılır: 4 öğeden 2'li seçim sayısı. Metot başka metodu çağırarak kod tekrarını önler.

static long faktoriyel(int n) {
  long sonuc = 1;
  for (int i = 2; i <= n; i++)
    sonuc *= i;
  return sonuc;
}
static long kombinasyon(int n, int r) {
  return faktoriyel(n)
    / (faktoriyel(r) * faktoriyel(n - r));
}
// main:
System.out.println(kombinasyon(4, 2));

Çıktı Sorusu · Parametreler

Soru 13: Dönüş Değerini Kullanmamak

Aşağıdaki kodun çıktısı nedir?

static int artir(int x) {
    x += 10;
    return x;
}
// main içinde:
int a = 5;
artir(a);
System.out.println(a);
a = artir(a);
System.out.println(a);
Cevabı göster
5
15
main5aartir15x
  • Java değere göre aktarır: x, a'nın kopyasıdır; x'i değiştirmek a'yı değiştirmez.
  • İlk çağrının dönüş değeri (15) hiçbir yere atanmadı, kayboldu.
  • a = artir(a); dönen değeri a'ya yazar → 15.

Adım Adım Çalıştırma · Parametreler

Soru 14: Değere Göre Aktarım

Metot ve main'de aynı adlı n değişkeni var. Program ne yazdırır?

Önce kendiniz tahmin edin, sonra › ile ilerleyin.

main4n

main'in n kutusu: 4.

main4nikiKati4n

Çağrıda gönderilen değişken değil, değeri (4). ikiKati'nin kendi n kutusuna kopyalanır.

main4nikiKati8n

Yalnızca ikiKati'nin kutusu 8 olur; main'deki n hâlâ 4.

ic: 8 yazılır.

main4nikiKati (silindi)8n

void metot biter; çerçevesi ve içindeki n (8) silinir. Hiçbir değer geri gönderilmez.

dis: 4: Adların aynı olması bağ kurmaz; her metodun yerel değişkeni ayrıdır.

static void ikiKati(int n) {
  n = n * 2;
  System.out.println("ic: " + n);
}
// main:
int n = 4;
ikiKati(n);
System.out.println("dis: " + n);

Çıktı Sorusu · Parametreler

Soru 15: swap Tuzağı

Aşağıdaki kodun çıktısı nedir?

static void swap(int a, int b) {
    int t = a;
    a = b;
    b = t;
}
// main içinde:
int x = 3, y = 5;
swap(x, y);
System.out.println(x + " " + y);
Cevabı göster

Çıktı: 3 5

main3x5yswap5a3b3t
  • a ve b, x ve y'nin kopyalarıdır; swap kendi kopyalarını takas eder.
  • Metot bitince a, b, t silinir; main'deki x ve y'ye hiç dokunulmamıştır.

Çoktan Seçmeli · Parametreler

Soru 16: Geçersiz Aşırı Yükleme

Aynı sınıfta birlikte bulunan metot çiftlerinden hangisi derleme hatası verir?

C: İmza = ad + parametre listesi; dönüş türü imzaya dahil değildir. İkisi de alan(int) olduğundan alan(4) çağrısında hangisinin kastedildiği anlaşılamaz. A sayıyla, B türle, D sırayla ayrışır.

Adım Adım Çalıştırma · Parametreler

Soru 17: Hangi yaz Çağrılır?

Derleyici her çağrı için argümanların türüne ve sayısına uyan metodu seçer. Çıktıyı bulun.

Önce kendiniz tahmin edin, sonra › ile ilerleyin.

yaz(5): tek int argüman → tam eşleşme yaz(int).

yaz(5.0): 5.0 bir double sabitidir → yaz(double). double olduğu için 5.0 yazılır.

yaz(3, 4): iki argüman → yaz(int, int). Parantez sayesinde 3 + 4 = 7 toplanır (yoksa "iki 34" olurdu).

yaz('A'): char için tam eşleşme yok; char → int genişlemesi en yakın seçenek. 'A' = 65.

yaz(7L): long, int'e kendiliğinden daralmaz ama double'a genişler → yaz(double).

Seçim program çalışmadan, derlemede yapılır. Uyan hiçbir imza yoksa (ör. yaz("a")) derleme hatası olur.

static void yaz(int x) {
  System.out.println("int " + x);
}
static void yaz(double x) {
  System.out.println("double " + x);
}
static void yaz(int a, int b) {
  System.out.println("iki " + (a + b));
}
// main:
yaz(5);  yaz(5.0);  yaz(3, 4);
yaz('A');  yaz(7L);

Çoktan Seçmeli · Parametreler

Soru 18: enBuyuk(3, 4.5)

Sınıfta static int enBuyuk(int a, int b) ve static double enBuyuk(double a, double b) var. System.out.println(enBuyuk(3, 4.5)); ne yazar?

B: 4.5 double olduğundan enBuyuk(int, int) uymaz; 3 double'a genişletilerek enBuyuk(double, double) çağrılır → 4.5. enBuyuk(3, 4) ise int sürümünü seçer ve 4 yazar.

Çoktan Seçmeli · Parametreler

Soru 19: Boş varargs Çağrısı

static int topla(int... s) { int t = 0; for (int v : s) t += v; return t; } için topla() ne döndürür?

D: Argüman yoksa derleyici boş bir dizi (new int[0]) geçirir, null değil. Döngü hiç dönmez, t = 0 döner. topla(7) → 7, topla(1, 2, 3, 4) → 10.

Çoktan Seçmeli · Kapsam

Soru 20: Blok Dışında Kullanılan Değişken

Hangi satır derleme hatası verir?

static int hesapla(int n) {     // 1
    int sonuc = 0;              // 2
    if (n > 0) {                // 3
        int katki = n * 2;      // 4
        sonuc += katki;         // 5
    }                           // 6
    return sonuc + katki;       // 7
}

C: katki if bloğunda tanımlıdır ve blok (6. satır) kapanınca yok olur: cannot find symbol: katki. 5. satır geçerlidir; iç blok dış kapsamdaki sonuc'u görür.

Adım Adım Çalıştırma · Kapsam

Soru 21: static Alan ve Yerel Değişken

Sınıf düzeyinde static int x ve metotta aynı adlı yerel x var. Çıktıyı adım adım bulun.

Önce kendiniz tahmin edin, sonra › ile ilerleyin.

static alan x = 10: sınıfa ait, tüm metotlar görür.

g çağrılır: yerel x = 3 tanımlanır. Yerel ad, aynı adlı alanı metot içinde gölgeler (derlenir).

x++ yerel kutuyu artırır → 4 yazılır. Alan hâlâ 10.

g bitti, yerel x silindi. main'de x alanı ifade eder → 10.

Alan güncellenir: x = 11.

g yeniden çağrılır: yerel x her çağrıda yeniden 3 ile doğar → yine 4.

Çıktı: 4, 10, 4, 11. Gölgeleme yalnızca yerel değişken ile alan arasında olur; iki yerel değişken aynı kapsamda aynı adı alamaz.

static int x = 10;
static void g() {
  int x = 3;
  x++;
  System.out.println(x);
}
// main:
g();
System.out.println(x);
x = x + 1;
g();
System.out.println(x);

Çıktı Sorusu · Kapsam

Soru 22: Aynı Adlar, Ayrı Kutular

Aşağıdaki kodun çıktısı nedir?

static int kare(int a) {
    int b = a * a;
    return b;
}
// main içinde:
int a = 3, b = 4;
b = kare(b);
System.out.println(a + " " + b);
Cevabı göster

Çıktı: 3 16

main3a16bkare(4)4a16b
  • kare'nin a'sı main'in b'sinin kopyası (4); kare'nin b'si 16.
  • main'in a'sı (3) hiç değişmez; main'in b'si dönüş değeriyle 16 olur.

Çoktan Seçmeli · Kapsam

Soru 23: Hangi Tanım Geçerli?

main içinde yazılan parçalardan hangisi derlenir?

B: for'da tanımlanan i döngüyle birlikte yok olur; sonra aynı adla yeni değişken tanımlanabilir. A ve C: aynı kapsamda (iç blok dahil) aynı adlı iki yerel değişken olamaz (already defined). D: parametre de yereldir.

Adım Adım Çalıştırma · Geçmiş Sınav (2023-24 Telafi, Vize)

Soru 24: sonrakiAsal(13)

Sınavdaki çözüm (mesajlar kısaltıldı) sonrakiAsal(13) ile çağrılıyor. Ne yazdırır?

Önce kendiniz tahmin edin, sonra › ile ilerleyin.

Parametre sayi = 13. while (true): çıkış yalnızca break ile.

çağrı yığını (üst = çalışan)asalMi(14)falsesonrakiAsal(13)sayi=14main

++sayi önce artırır: 14 gönderilir. 14 % 2 == 0 → false.

else kolu: mesaj yazılır, döngü sürer.

asalMi(15): 15 % 2 = 1, 15 % 3 = 0 → false.

asalMi(16): 16 % 2 = 0 → false.

çağrı yığını (üst = çalışan)asalMi(17)truesonrakiAsal(13)sayi=17main

asalMi(17): i = 2..16 hiçbiri bölmez → döngü biter, return true.

17 asal yazılır, break ile while(true) biter. Toplam 4 satır.

static boolean asalMi(int sayi) {
  for (int i = 2; i < sayi; i++)
    if (sayi % i == 0) return false;
  return true;
}
static void sonrakiAsal(int sayi) {
  while (true) {
    if (asalMi(++sayi) == true) {
      System.out.println(sayi + " asal");
      break;
    } else {
      System.out.println(sayi + " asal değil");
    }
  }
}

Adım Adım Çalıştırma · Geçmiş Sınav (2024-25 Vize A/B)

Soru 25: oncekiAsal(100)

oncekiAsal(100) çağrılıyor. Kaç kez asalMi çağrılır ve ne döner?

Önce kendiniz tahmin edin, sonra › ile ilerleyin.

Aramaya 100'ün bir altından başlanır: 99.

çağrı yığını (üst = çalışan)asalMi(99)falseoncekiAsal(100)oncekiSayi=99main

99 % 2 = 1, 99 % 3 = 0 → return false (erken dönüş).

Asal değil → oncekiSayi-- → 98.

çağrı yığını (üst = çalışan)asalMi(98)falseoncekiAsal(100)oncekiSayi=98main

98 % 2 = 0 → false.

oncekiSayi → 97.

çağrı yığını (üst = çalışan)asalMi(97)trueoncekiAsal(100)oncekiSayi=97main

i = 2..96 (95 deneme) hiçbiri 97'yi bölmez → true.

if true → return 97. asalMi 3 kez çağrıldı; return döngüyü de metodu da bitirir.

static boolean asalMi(int sayi) {
  if (sayi <= 1) return false;
  for (int i = 2; i < sayi; i++)
    if (sayi % i == 0) return false;
  return true;
}
static int oncekiAsal(int sayi) {
  int oncekiSayi = sayi - 1;
  while (oncekiSayi > 1) {
    if (asalMi(oncekiSayi)) return oncekiSayi;
    oncekiSayi--;
  }
  return -1;
}

Çıktı Sorusu · Geçmiş Sınav (2024-25 Vize (varyant))

Soru 26: oncekiAsal Sınır Değerleri

Aynı oncekiAsal ve asalMi ile çıktı nedir?

System.out.println(oncekiAsal(20));
System.out.println(oncekiAsal(3));
System.out.println(oncekiAsal(2));
Cevabı göster
19
2
-1
  • 20 → 19 asal (19'u bölen yok).
  • 3 → oncekiSayi = 2; 2 > 1 true, asalMi(2): for hiç dönmez (2 < 2 false) → true → 2.
  • 2 → oncekiSayi = 1; 1 > 1 false → döngüye girilmez, return -1 ("bulunamadı" işareti).

Çoktan Seçmeli · Geçmiş Sınav (2023-24 Telafi)

Soru 27: asalMi(1) Hatası

Telafi/Vize 2023-24 cevap anahtarındaki asalMi yalnızca for (int i = 2; i < sayi; i++) if (sayi % i == 0) return false; return true; içeriyor. asalMi(1) ve asalMi(0) ne döndürür?

A: sayi ≤ 2 iken for hiç dönmez ve return true'ya düşülür; 0 ve 1 yanlışlıkla asal sayılır. Düzeltme 2024-25 çözümündeki gibi başa if (sayi <= 1) return false; eklemektir. (sonrakiAsal yalnızca sayi + 1'den başladığı için 0 veya negatif bir sayıyla çağrılırsa bu hata görünür: sonrakiAsal(0) → "1 asal".)

Çoktan Seçmeli · Örnek Metotlar

Soru 28: asalMi Kaç Tur Döner?

97 asaldır. Sınavdaki for (int i = 2; i < sayi; i++) sürümü ile dersteki for (int i = 2; i <= n / i; i++) sürümü 97 için kaçar kez kalan hesaplar?

A: İlki i = 2..96 → 95 tur. İkincisi i × i ≤ 97 iken (i = 2..9; 10 <= 97/10 = 9 false) → 8 tur. √n'den büyük bir bölen varsa küçük eşi de vardır, bu yüzden √n'e kadar bakmak yeter. Sonuç (true) aynıdır.

Çıktı Sorusu · Örnek Metotlar

Soru 29: ciftMi ile Seçme

Aşağıdaki kodun çıktısı nedir?

static boolean ciftMi(int sayi) {
    return sayi % 2 == 0;
}
// main içinde:
for (int i = 1; i <= 10; i++) {
    if (!ciftMi(i) && i % 3 == 0)
        System.out.print(i + " ");
}
Cevabı göster

Çıktı: 3 9

12çift34çift56çift78çift910çift
  • !ciftMi(i): tek sayılar (1, 3, 5, 7, 9).
  • Bunlardan 3'e bölünenler: 3 ve 9.
  • Metot boolean döndürdüğü için doğrudan koşulda kullanılabilir; == true yazmaya gerek yok.

Çıktı Sorusu · Örnek Metotlar

Soru 30: ebob ve ekok

Aşağıdaki kodun çıktısı nedir?

static int ebob(int a, int b) {
    while (b != 0) {
        int r = a % b;
        a = b;
        b = r;
    }
    return a;
}
static int ekok(int a, int b) {
    return a / ebob(a, b) * b;
}
// main içinde:
System.out.println(ebob(84, 36) + " " + ekok(4, 6));
Cevabı göster

Çıktı: 12 12

a,b84,36tur 136,12tur 212,0
  • 84 % 36 = 12 → (36, 12); 36 % 12 = 0 → (12, 0) → ebob = 12.
  • ekok(4, 6): ebob(4, 6) = 2 → 4 / 2 * 6 = 12. Önce bölmek a·b taşmasını önler.

Çıktı Sorusu · Örnek Metotlar

Soru 31: İç İçe Çağrı ve Sayaç

static sayac alanı her çağrıda artıyor. Çıktı nedir?

static int sayac = 0;
static int ikiyle(int n) {
    sayac++;
    return n * 2;
}
// main içinde:
int r = ikiyle(ikiyle(3));
System.out.println(r + " " + sayac);
Cevabı göster

Çıktı: 12 2

  • İç içe çağrıda önce içteki çalışır: ikiyle(3) → 6 (sayac = 1).
  • Sonra ikiyle(6) → 12 (sayac = 2).
  • sayac bir static alan olduğu için çağrılar arasında değeri korunur; yerel değişken olsaydı her çağrıda 0'dan başlardı. Bu bir yan etkidir.

Çoktan Seçmeli · Örnek Metotlar

Soru 32: Saf Metot

Aşağıdaki metotlardan hangisi saftır (aynı girdiye hep aynı sonucu döndürür, dış durumu değiştirmez)?

B: Yalnızca parametresine bakar ve değer döndürür; kare(4) her zaman 16'dır, her yerde kullanılabilir ve kolay test edilir. A ekrana yazar (yan etki), C bir alanı değiştirir, D her çağrıda farklı sonuç verir.

Çoktan Seçmeli · Örnek Metotlar

Soru 33: Ortalamada Tam Sayı Bölmesi

static double ortalama(int a, int b, int c) { return (a + b + c) / 3; } için ortalama(7, 8, 8) ne döndürür?

C: (a + b + c) / 3 = 23 / 3 iki int arasında tam sayı bölmesidir → 7; sonra dönüş türü double olduğu için 7.0 olur. Düzeltme: (a + b + c) / 3.0 → 7.666666666666667. Dönüş türünün double olması bölmeyi kendiliğinden ondalıklı yapmaz.

Son

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