metotlar - wordpress.com · 2017-12-25 · diziler c#‘ta ayrı bir tür olarak ele alındığı...

20
    ÜNİTE 9 METOTLAR  İÇİNDEKİLER • Metotlar • Metot Oluşturma ve Kullanma • Metot Parametresi Olarak Diziler • Değer ve Referans Parametreleri • Metotların Aşırı Yüklenmesi • Kendini Çağırabilen Metotlar HEDEFLER • Bu üniteyi çalıştıktan sonra; • Metot tanımlayıp programlar içerisinde kullanabilecek, • Değer ve Referans Parametreleri arasındaki farkları öğrenip uygulayabilecek, • Kendini çağırabilen metotları yazabileceksiniz. NESNE TABANLI PROGRAMLAMA  I Okt. Mustafa AKBUĞA

Upload: others

Post on 29-May-2020

10 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: METOTLAR - WordPress.com · 2017-12-25 · Diziler C#‘ta ayrı bir tür olarak ele alındığı için Dizi kavramı, tanımlama ve dizi elemanları üzerindeki işlemler gibi konular

 

 

   

ÜNİTE

9

METOTLAR  

İÇİNDEK

İLER

• Metotlar

• Metot Oluşturma ve Kullanma

• Metot Parametresi Olarak Diziler

• Değer ve Referans Parametreleri

• Metotların Aşırı Yüklenmesi

• Kendini Çağırabilen Metotlar

HED

EFLER •Bu üniteyi çalıştıktan sonra;

•Metot tanımlayıp programlar içerisinde kullanabilecek,

•Değer ve Referans Parametreleri arasındaki farkları öğrenip uygulayabilecek,

• Kendini çağırabilen metotları yazabileceksiniz.

NESNE TABANLI 

PROGRAMLAMA – I 

Okt. Mustafa 

AKBUĞA

Page 2: METOTLAR - WordPress.com · 2017-12-25 · Diziler C#‘ta ayrı bir tür olarak ele alındığı için Dizi kavramı, tanımlama ve dizi elemanları üzerindeki işlemler gibi konular

Metotlar 

Atatürk Üniversitesi Açıköğretim Fakültesi    2 

GİRİŞ        

 Bilgisayar dillerinin öğretilmesinde, fonksiyonlar ve metotlar önemli bir 

ağırlığa sahiptir. Bunun sebebi ise sürekli tekrar edilmesi gereken kodların  bir kod 

bloğuna yazılarak, her defasında aynı kodları yazmak yerine bu kod bloğunun 

çağrılarak çalıştırılmasıdır. Bu sayede hem hata yapma ihtimali en aza indirilir hem 

de zamandan kazanılarak program yapısı küçültülmüş olur. 

Şu ana kadar yapılan  örneklerde genelde sistem tarafından hazırlanmış C # 

dilindeki ReadLine(), WriteLine() vb. gibi hazır metotlar kullanılmıştır.Bu ünitede ise 

özel  metodlar tanımlanarak, programların  içerisinde nasıl kullanılacağı 

anlatılacaktır. 

METOTLAR 

Nesneye yönelik programlama dillerinde genellikle fonksiyonlar “metot” 

olarak isimlendirilir. Her çalışan C# programında  bir ana metot (Main) mevcuttur. 

Program çalışmaya ilk olarak bu metotla başlar. Tüm kodların bu (Main) metodu 

içine yazılması da büyük programlar için iyi bir programcılık sayılmaz. Çünkü  

gerçek hayatta olduğu gibi programlarda bir bütün olarak ele alınmamalıdır. Küçük 

parçalara ayrılarak, her  parça için uygun birer metot yazılmalıdır. 

Programın herhangi bir yerinde kullanmak için belirli bir işi yerine getirmek 

amacıyla tasarlanmış alt programlara metot denir. C#’ta bildirilen bütün metotlar 

mutlaka bir sınıfın içinde olmalıdır. Bir sınıfın üyesi olmayan metotlar bildirilemez. 

Burada bahsedilen Sınıflarla ilgili bilgiler bir sonraki ünitede anlatılacaktır.  

Metot Oluşturma ve Kullanma: 

Metotları tanımlarken kullanılan bildirim şu şekildedir: 

[ erişim belirteçleri ] < dönüş değeri > metot ismi ( parametre 

listesi ) 

metot gövdesi; 

[erişim belirteçleri]: Erişim belirteçleri (Private, Public, Protected, 

Protected Internal) ,metoda nerelerden erişilebileceğini belirleyen ayarlardır. 

Belirtilmediği durumlarda “private” olarak kabul edilir. Yani sadece tanımlandığı 

sınıf içinde kullanılabilen bir metot hâline gelir.  

<Geri dönüş değeri>:  Tanımlanan metodun, çağıran fonksiyona 

gönderdiği veririn (int, float, string, bool ..vb.) türüdür. 

 

Metotlar tek başlarına 

çalıştırılabilen yapılar 

değildir. Metot, sadece 

metodu çağıran ana 

program için faydalı 

işler yapar.  

 

 

Metodun iş yapması 

için kendisini çağıran 

metottan aldığı bilgilere 

parametre (argüman), 

kendisini çağıran 

fonksiyona döndürdüğü 

bilgiye ise geri dönüş 

değeri (return value) 

denir. 

Page 3: METOTLAR - WordPress.com · 2017-12-25 · Diziler C#‘ta ayrı bir tür olarak ele alındığı için Dizi kavramı, tanımlama ve dizi elemanları üzerindeki işlemler gibi konular

Metotlar 

Atatürk Üniversitesi Açıköğretim Fakültesi    3 

Metot ismi: Her bir metot tanımlanırken metota mutlaka bir isim verilir. 

Metot çağrılırken verilen bu isim kullanılarak çağırma işlemi yapılabilir. 

(Parametre listesi):   Parametreler ise metodun çalışırken ihtiyaç duyduğu 

çağıran fonksiyondan gönderilen bilgileridir. 

Örnek tanım şekli: 

using System; class Program { int MetotAdi(int a, int b) { return a + b; } } 

 

Bu metot, iki int türünden girdi değerini alır ve bu girdilerin toplamını int 

türünden tutar. Ancak bu metot statik olmadığından programımız içinde 

kullanabilmemiz için bu metodun içinde bulunduğu sınıf türünden bir nesne 

yaratıp “.” operatörüyle bu nesne üzerinden metodumuza erişmeliyiz. 

 Yukarıda verilen tanıma uygun kullanım Şekil 9.1’de örnek program_1’de 

içerisindeki kodla gösterilmiştir. 

Örnek program_1: 

 

Şekil 9.1. Dinamik olarak tanımlanmış metotların kullanımını gösteren C# kodu 

 

 

Metotlar, statik ve 

dinamik olmak üzere iki 

faklı şekilde bellekte yer 

kaplar. 

Page 4: METOTLAR - WordPress.com · 2017-12-25 · Diziler C#‘ta ayrı bir tür olarak ele alındığı için Dizi kavramı, tanımlama ve dizi elemanları üzerindeki işlemler gibi konular

Metotlar 

Atatürk Üniversitesi Açıköğretim Fakültesi    4 

 

Şekil 9.2. Örnek program_1’in ekran görüntüsü 

Statik olarak tanımlanan metotlara erişmek için metodun içinde bulunduğu 

sınıf türünden bir nesne yaratmaya gerek yoktur. Statik olarak tanımlanan 

metotlara sadece metodun adını yazarak erişilebilir. Şekil 9.2’deki ekran 

görüntüsüyle aynı sonucu verecek şekilde metot tanımı Şekil 9.3’te örnek 

program_2’de gösterilmiştir. 

Örnek program_2: 

 

Şekil 9.3. Statik olarak tanımlanmış metotların kullanımını gösteren C# kodu 

 

Şekil 9.4. Örnek program_2’nin ekran görüntüsü 

Şekil 9.3 içerisindeki kırmızı okla işaretlenen Topla metodu tanımında static 

anahtar kelimesi kullanılmıştır. Bu kelimenin kullanılması ile ikinci okla işaretlenen 

yerde metodun sadece ismi ve parametreleri verilerek toplama işlemi 

 

Bütün programlarda 

önce Main metodu 

çalışır. Diğer metotlar 

Main metodunun 

içinden çağrılmadıkça 

çalışmaz. 

Page 5: METOTLAR - WordPress.com · 2017-12-25 · Diziler C#‘ta ayrı bir tür olarak ele alındığı için Dizi kavramı, tanımlama ve dizi elemanları üzerindeki işlemler gibi konular

Metotlar 

Atatürk Üniversitesi Açıköğretim Fakültesi    5 

yaptırılmıştır. Şekil 9.2 ve Şekil 9.4’teki ekran çıktılarına dikkat edilirse tanımlanan 

metotların aynı sonuç ürettikleri görülecektir.  

Örnek program_3: 

Metodun oluşturulmasında tanım satırının başına public anahtar sözcüğü 

konmuş ise bu metoda, her sınıftan erişilmesinin önünü açacaktır. Bu durum Şekil 

9.6’da kırmızı okla gösterilmiştir. Eğer public sözcüğü yazılmamış olsaydı bu 

metoda sadece Metotlar sınıfının dışından erişilemezdi. Erişim belirleyiciler Sınıflar 

ve Nesneler ünitesinde daha ayrıntılı olarak anlatılacaktır. 

 

Şekil 9.6. Public olarak tanımlanmış metotların kullanımını gösteren C# kodu. 

Herhangi  bir  değer  tutmayan  (WriteLine  gibi)  metotlar  da  void  anahtar 

sözcüğüyle kullanılır. void anahtar sözcüğünün kullanıldığı yerlerde return ve geri 

dönüş  değeri  bulunmaz.  Daha  önceki  örneklerde  sıkça  kullanıdığımız WriteLine 

metodunun  yerine  geçecek  Yaz  metodu  aşağıdaki  örnek  Program_4’deki  gibi 

hazırlanabilir. 

Örnek program_4: 

 

 

 

 

 

 

 

 

Şekil 9.7. Yaz metodunun hazırlanmasını gösteren C# kodu 

 

Bütün değer tutan 

metotlar bir değermiş 

gibi kullanılabilir, ancak 

değişkenmiş gibi 

kullanılamaz. 

Page 6: METOTLAR - WordPress.com · 2017-12-25 · Diziler C#‘ta ayrı bir tür olarak ele alındığı için Dizi kavramı, tanımlama ve dizi elemanları üzerindeki işlemler gibi konular

Metotlar 

Atatürk Üniversitesi Açıköğretim Fakültesi    6 

 

Şekil 9.8. Örnek program_4’ nin ekran görüntüsü 

Şekil 9.7 ‘ye dikkat edilirse Yaz metodunun tanım satırında public anahtar 

kelimesi kullanılmıştır. Bu sebeple bu metot başka sınıflar içinden WriteLine gibi 

rahatça çağrılabilir. Ayrıca statik olarak tanımlandığından bu metot çağrılırken 

sadece metot isminin yazılması yeterli olacaktır.  

Örnek program_4’ün çalıştırılması sonucu Şekil 9.8’de gösterildiği gibi 

parametre olarak verilen değerlere uygun olarak  “Nesne Tabanlı Programlama” 

ifadesi üç kez yazılmıştır. 

Metotların doğru tanımlanması için aşağıdaki hususlara dikkat edilmesi gerekir: 

Metotları kullanırken parametrelerini doğru sayıda, doğru sırada ve doğru 

türde vermeliyiz. 

Değer  tutan metotlarda  return satırıyla belirtilen  ifade, metodu yazarken 

verilen türle uyumlu olmalıdır. 

Değer tutmayan (void ile belirtilmiş) metotlarda return komutu herhangi bir 

ifadeyle kullanılmaz. 

Değer tutmayan metotların bir değermiş gibi kullanılması mümkün değildir. 

Metotlar değer tutmayabileceği gibi ayrıca parametre de almayabilirler.  

Metotlar içinde tanımlanan değişkenler programın başından sonuna kadar 

durmaz.  Bu  değişkenler,  programın  akışı  metoda  geldiğinde  tanımlanır. 

Metodun işlevi bittiğinde ise bellekten silinir. 

Metod Parametresi Olarak Diziler 

Diziler C#‘ta ayrı bir tür olarak ele alındığı için Dizi kavramı, tanımlama ve 

dizi elemanları üzerindeki işlemler gibi konular diziler ve koleksiyonlar ünitesinde 

ayrıntılı olarak anlatılacaktır. Bu bölümde sadece Dizilerin metod içerisinde 

kullanılacağına değinilecektir. 

 

 

 

 

Metot tanımında void 

anahtar sözcüğü 

kullanılmışsa, return ve 

geri dönüş değerine yer 

verilmez. 

Page 7: METOTLAR - WordPress.com · 2017-12-25 · Diziler C#‘ta ayrı bir tür olarak ele alındığı için Dizi kavramı, tanımlama ve dizi elemanları üzerindeki işlemler gibi konular

Metotlar 

Atatürk Üniversitesi Açıköğretim Fakültesi    7 

[ erişim belirteçleri ] < dönüş değeri > metot ismi ( tür[] 

diziAdı ) 

Metot gövdesi; 

Önceden verilen metot tanımında parametre kısmına dizi elemanın türü ve 

adı yazılarak diziler metot içinde kullanabilir. Bu durum örnek program_5’te 

gösterilmiştir.  

Örnek program_5: 

   

Şekil 9.9. Metot içerisinde dizilerin kullanılmasını gösteren C# kodu. 

  Şekil 9.9‘da verilen C# kodlarının, kırmızı okla işaretlenen program 

satırında, yeniDizi adında int veri türünde ve (0,1,2,3,4) üye değerine sahip 5 

elemanlı bir dizi tanımlanmıştır ve Yaz(yeniDizi) program koduyla da Yaz metodu, 

almış olduğu dizinin bütün elemanlarını Şekil 9.10’da gösterildiği gibi ekrana 

yazdırmaktadır. 

 

Şekil 9.10. Örnek program_5’ nin ekran görüntüsü 

 

 

Değer türleri stack  

hafıza bölgesinde 

tutulur. Başvuru türleri 

(nesneler) ise heap 

üzerinde oluşturulur. 

Page 8: METOTLAR - WordPress.com · 2017-12-25 · Diziler C#‘ta ayrı bir tür olarak ele alındığı için Dizi kavramı, tanımlama ve dizi elemanları üzerindeki işlemler gibi konular

Metotlar 

Atatürk Üniversitesi Açıköğretim Fakültesi    8 

Değer Ve Referans Parametreleri 

Bir metot içerisine parametre olarak aktarılan dizinin, metot içindeki bir 

elemanının değiştirilmesi esas diziyi de etkiler. Çünkü bir metoda parametre olarak 

bir dizi verildiğinde derleyici metoda dizinin bellekteki adresini verir; metot o 

adresteki verilerle çalışır. Bu yüzden metot içerisinde verilen dizi değerine referans 

tipli parametreler adı verilir.  

Bir metoda parametre olarak bir değişken değeri verildiğinde ise metot için 

değişkenin bellekteki adresi artık önemli değildir, metot için önemli olan 

değişkenin değeridir. Metot, değişkeni kullanabilmek için geçici bir bellek bölgesi 

yaratır ve parametre olarak aldığı değişkenin değerini bu geçici bellek bölgesine 

kopyalar ve o geçici bellek bölgesiyle çalışır. Metoda parametre olarak aktarılan 

değişkenin metot içinde değiştirilmesi esas değişkeni etkilemez. Metottan 

çıkıldığında da o geçici bellek bölgesi de silinir.  Bu yüzden metot içerisinde verilen 

değişken değerileri için  değer tipli parametreler denir. 

Ancak bazı durumlarda değer tipli parametreler de referans tipli olarak 

kullanılmak istenebilir. Bu durum özellikle metot dışına birden fazla hesaplanmış 

değer çıkarılacağı zamanlarda oldukça faydalıdır. Bunun için Virtual C#, 

programlama dilinde out ve ref anahtar sözcükleri kullanılır. 

Bilgisayarda bellek bölgeleri: 

Bilgisayarlar genelde belleklerinde, uygulama programlarını ve bu 

programların kullandığı veriyi tutarlar. Değer ve referans türleri arasındaki farkları 

anlamak için, bellekte verinin nasıl düzenlendiğini anlamak yararlı olacaktır.   

C# , System.IO kütüphanesini ve dosya metotlarını kullanmadan harici 

disklere erişemez. İşletim sistemleri ve programlama dilleri verileri tutmak için 

sistemde kullanılan RAM belleği, her biri ayrı ayrı yönetilen iki büyük parçaya ayırır. 

Belleğin iki büyük parçasına stack ve heap adı verilir.  

Bu bellek bölgeleri iki farklı amaca hizmet eder: 

Bir yöntemi çağırdığınızda, o yöntemin değerleri ve yerel değişkenleri için 

gerekli bellek her zaman stack’dan alınır. Yöntem bittiğinde değerler ve 

yerel değişkenler için alınan bellek, otomatik olarak stack’a geri verilir. 

new anahtar sözcüğünü kullanarak bir nesne oluşturduğunuzda, nesneyi 

oluşturmak için gerekli bellek her zaman heap’ten alınır. Başvuru 

değişkenlerini kullanarak birkaç yerden aynı nesneye başvurulabilmektedir. 

Bir nesneye son başvuru geçersiz olduğunda, nesne tarafından kullanılan 

bellek de, yeniden kullanıma uygun hâle gelir.  

 

 

 

 

Başlangıç değeri 

bulunan değer 

tiplerindeki 

değişkenlerin değerleri 

metotlara ref anahtar 

sözcüğü ile aktarılırken, 

ilk değeri olmayan 

değişkenlerin değeri ise 

out anahtar sözcüğü ile 

aktarılır. 

Page 9: METOTLAR - WordPress.com · 2017-12-25 · Diziler C#‘ta ayrı bir tür olarak ele alındığı için Dizi kavramı, tanımlama ve dizi elemanları üzerindeki işlemler gibi konular

Metotlar 

Atatürk Üniversitesi Açıköğretim Fakültesi    9 

out ve ref Anahtar sözcükleri:  

 out anahtar sözcüğü, metotlarda değer tipli parametrelerin referans tipli olarak 

verilmesi amacıyla kullanılır. Bu şekilde tanımlanmış parametrelerde ilk değer 

verme zorunluluğu yoktur. İlk değerler istenirse metot içerisinde verilebilir. ref 

anahtar sözcüğü ile tanımlanan parametreler de değer tipini aynı out gibi referans 

tipi olarak aktarmak amacıyla kullanılır. Fakat değer tiplerini referans olarak bu 

sözcükle aktarırken ilk değer verme zorunluluğu vardır.  

Örnek program_6: 

 

Şekil 9.11. Metot içerisinde out anahtar kelimesinin kullanılmasını gösteren C# kodu 

 

Şekil 9.12. Örnek program_6’nın ekran görüntüsü 

Şekil 9.11‘deki örnek program_6 incelendiğinde Main ana programında int 

sayı adında bir değişken tanımlanmış ve ilk değeri olmadan bu hâliyle Değiştir 

metoduna gönderilmiştir. Değiştir metodu içinde sayı değişkeninin değeri 3 olarak 

belirlenerek Yaz metodu çalıştılmış ve ekrana Şekil 9.12’de görülen 3 değeri 

Page 10: METOTLAR - WordPress.com · 2017-12-25 · Diziler C#‘ta ayrı bir tür olarak ele alındığı için Dizi kavramı, tanımlama ve dizi elemanları üzerindeki işlemler gibi konular

Metotlar 

Atatürk Üniversitesi Açıköğretim Fakültesi    10 

yazdırılmıştır. return anahtar kelimesi kullanılmadan metot dışına bu şekilde bir 

değişken değerin referans değer gibi alınabildiği gösterilmiştir. 

Örnek program_7: 

 

Şekil 9.13. metot içerisinde ref anahtar kelimesinin kullanılmasını gösteren C# kodu 

 

Şekil 9.14. Örnek program_7’nin ekran görüntüsü 

Şekil 9.12‘deki örnek program_7 incelendiğinde Main ana programında int 

sayı adında bir değişken tanımlanmış ve ilk değeri 3 olarak verilmiştir. ref anahtar 

kelimesi ile Değiştir metoduna gönderilmiştir. Değiştir metodu içinde sayı 

değişkeninin değeri 9 olarak belirlenerek Yaz metodu çalıştılmış ve ekrana Şekil 

9.12’de görülen 9 değeri yazdırılmıştır. Başlangıçta değeri 3 olan bir değişken ref 

anahtar kelimesiyle yardımıyla metot içerisine gönderilmiş ve değeri değiştirilerek 

return anahtar kelimesi kullanılmadan metot dışına alınabilmiştir. 

Page 11: METOTLAR - WordPress.com · 2017-12-25 · Diziler C#‘ta ayrı bir tür olarak ele alındığı için Dizi kavramı, tanımlama ve dizi elemanları üzerindeki işlemler gibi konular

Metotlar 

Atatürk Üniversitesi Açıköğretim Fakültesi    11 

Metotların Aşırı Yüklenmesi 

C#’ta parametre sayısı veya parametrelerin türleri farklı olmak şartıyla aynı 

isimli birden fazla metot oluşturulabilir. Bu şekilde tanımlanan metotlara 

metotların aşırı yüklenmesi denir. 

C#, bir metot çağrıldığında ve çağrılanla aynı isimli birden fazla metot 

bulunduğunda metodun çağrılış biçimine bakar. Yani ana programdaki metoda 

girilen parametrelerle yaratılmış olan metotların parametrelerini kıyaslar. Önce 

parametre sayısına bakar. Eğer aynı isimli ve aynı sayıda parametreli birden fazla 

metot varsa bu sefer parametre türlerinde tam uyumluluk arar, uyumlu bulduğu 

metodu çalıştırarak sonucu ekrana yazdırır. Parametre türlerinin tam uyumlu 

olduğu bir metot bulamazsa program hata verir. 

Örnek program_8: 

 

Şekil 9.15. Metotların aşırı yüklenmesini gösteren C# kodu. 

 

Şekil 9.16. Örnek program_8’in ekran görüntüsü 

 

Çalışma zamanında 

hangi metodun 

çağrıldığını 

belirleyebilmek için 

metodun imzasına 

(method signature) 

bakılır. 

Page 12: METOTLAR - WordPress.com · 2017-12-25 · Diziler C#‘ta ayrı bir tür olarak ele alındığı için Dizi kavramı, tanımlama ve dizi elemanları üzerindeki işlemler gibi konular

Metotlar 

Atatürk Üniversitesi Açıköğretim Fakültesi    12 

Şekil 9.15’te kodları gösterilen örnek program_8’de MetodA ismindeki üç 

metot da aynı sayıda parametre almıştır. Bu durumda parametrelerin türlerine 

bakılır. Ana programdaki MetotA("Atatürk Üniversitesi","Açıköğretim Fakültesi"); 

satırıyla üçüncü metot ilk olarak çağrılır. MetotA(6,9); metot çağrımının parametre 

türlerinin tam uyumlu olduğu metot birinci metottur, o yüzden birinci metot ikinci 

olarak çağrılır. Eğer birinci metot oluşturulmamış olsaydı ikinci metot çağrılacaktı. 

Son olarak MetotA(1.11f,99.99f); satırıyla da ikinci metot çağrılacaktır. Bu durum 

Şekil 9.16’da program görüntüsünde gösterilmiştir. 

Kendini Çağırabilen Metotlar 

Kendi kendini çağıran metotlara özyenileyici (recursive) metotlar denilir. Bu 

metotlarda, çağrımı sonlandıran bir kontrol yapısı metot içerisine mutlaka 

yerleştirilmelidir. Şekil 9.17’de özyenileyici metot örneği yer almaktadır. Örnek 

program_8’in çalışmasıyla Şekil 9.19’daki ekran çıktısı görülecektir. 

Örnek program_8: 

 

Şekil 9.17. Metotların aşırı yüklenmesini gösteren C# kodu 

Şekil 9.17’deki gösterilen kod incelendiğinde Cevir metoduna parametre 

verilen Onluk sayı, metod içinde kendi kendini tekrarlayarak ikilik sayı sistemine 

çevrilmektdir.  Metod içinde kırmızı okla işaretlenen kod satırı metot için kotrol 

yapısı oluşturmaktadır. 

 

Şekil 9.18. Örnek program_8’in ekran görüntüsü 

 

Bir metodun imzası 

metodun adı, 

parametrelerin sayısı ve 

türleri ile ilgilidir. 

Metodun geri dönüş 

değerleri imzasına dâhil 

değildir. 

Page 13: METOTLAR - WordPress.com · 2017-12-25 · Diziler C#‘ta ayrı bir tür olarak ele alındığı için Dizi kavramı, tanımlama ve dizi elemanları üzerindeki işlemler gibi konular

Metotlar 

Atatürk Üniversitesi Açıköğretim Fakültesi    13 

Main metodu 

Çalışan her programda mutlaka bir Main metodunun bulunması gerekir. 

Bütün programlarda ilk önce Main metodu çalıştırılır. Diğer metotlar Main 

metodunun içinden çağrılmadıkça çalışmaz. Bu özellikler dışında Main metodunun 

diğer metotlardan başka hiçbir farkı yoktur. Ancak şimdiye kadar Main metodunu 

yalnızca static void Main() şeklinde parametresiz kullandık.  Ancak Main 

metodunun int türünden (static int Main( ) ) bir geri dönüş değeri de döndürmesi 

sağlanabilir. Bu değer genellikle işletim sistemine programın çalışması hakkında 

bilgi vermek amacıyla kullanılır. Örneğin Main metodu 0 değerini döndürürse 

işletim sistemi programın düzgün şekilde sonlandırıldığını, 1 değerini döndürürse 

de hatalı sonlandırıldığını anlayabilmektedir. Ayrıca Main metodu parametre de 

alabilir. Komut satırından çalıştırıldığında verilen parametreleri bir string dizisi içine 

alarak da işleyebilmektedir. 

Örnek program_9: 

 

Şekil 9.19. Metotların aşırı yüklenmesini gösteren C# kodu 

 

Şekil 9.20. Örnek program_8’in ekran görüntüsü 

 

Şekil 9.21. Örnek program_8’in ekran görüntüsü 

 

Page 14: METOTLAR - WordPress.com · 2017-12-25 · Diziler C#‘ta ayrı bir tür olarak ele alındığı için Dizi kavramı, tanımlama ve dizi elemanları üzerindeki işlemler gibi konular

Metotlar 

Atatürk Üniversitesi Açıköğretim Fakültesi    14 

 

Şekil 9.22. Örnek program_8’in ekran görüntüsü 

 

 

 

 

Page 15: METOTLAR - WordPress.com · 2017-12-25 · Diziler C#‘ta ayrı bir tür olarak ele alındığı için Dizi kavramı, tanımlama ve dizi elemanları üzerindeki işlemler gibi konular

Metotlar 

Atatürk Üniversitesi Açıköğretim Fakültesi    15 

 

 

Özet

•Nesne tabanlı programlamada sürekli tekrar edilmesi gereken olan kodlar bir kod bloğuna yazılarak, her defasında aynı kodları yazmak yerine bu kod bloğu çağrılarak çalıştırılır.Bu şekilde yapılandırılmış kod bloklarına fonksiyon ya da metot adı verilir.

•Metotlar sayesinde programda hem hata yapma şansı en aza indirilir hem de zamandan kazanılarak program yapısı küçültülmüş olur. 

•Metotlar tanımlanırken erişim belirleyici, geri dönüş değeri,metot ismi ve parametre liste sırasıyla verilir.

•Metodun iş yapması için kendisini çağıran metottan aldığı bilgilere parametre, kendisini çağıran fonksiyona döndürdüğü bilgiye ise geri dönüş değeri  denir. 

•Bir metod içerisine parametre olarak aktarılan dizinin, metot içindeki bir elemanının değiştirilmesi esas diziyi de etkiler.Bu yüzden  metoda parametre olarak bir dizi verildiğinde derleyici, metoda dizinin bellekteki adresini verir; metot o adresteki verilerle çalışır. Bu yüzden metot içerisinde verilen dizi değerine referans tipli parametreler adı verilir. 

•Metoda parametre olarak aktarılan değişkenin metot içinde değiştirilmesi esas değişkeni etkilemez. Metottan çıkıldığında da o geçici bellek bölgesi de silinir.  Bu yüzden metot içerisinde verilen değişken değerlerine değer tipli parametreler denir.

•Değer tipli parametreler, referans tipli olarak kullanılmak istenebilir. Bunun için Virtual C#, programlama dilinde out ve ref anahtar sözcükleri kullanılmaktadır. Başlangıç değeri bulunan değer tiplerindeki değişkenlerin değerleri metotlara ref anahtar sözcüğü ile aktarılırken; ilk değeri olmayan değişkenlerin değeri ise out anahtar sözcüğü ile aktarılır.

•İşletim sistemleri ve programlama dili çalışma zamanları sık sık veriyi tutmak için kullanılan RAM, belleği her biri ayrı olarak yönetilen iki büyük parçaya ayırır. Belleğin iki büyük parçasına stack ve heap adı verilir. 

•Bir yöntemi çağırdığınızda, o yöntemin değerleri ve yerel değişkenleri için gerekli bellek her zaman stack'dan alınır.

•new anahtar sözcüğünü kullanarak bir nesne oluşturduğunuzda, nesneyi oluşturmak için gerekli bellek her zaman heap'ten alınır. 

•C#'ta parametre sayısı veya parametrelerin türleri farklı olmak şartıyla aynı isimli birden fazla metot oluşturulabilir Bu şekilde tanımlanan metotlara metotların aşırı yüklenmesi denir.

•Kendi kendini çağıran metotlara özyenileyici (recursive) metotlar denilir. Bu metotlarda, çağrımı sonlandıran bir kontrol yapısı metod içerisine mutlaka yerleştirilmelidir.

•Her çalışan C# programında  mutlaka  bir ana (Main) metot mevcuttur. Program ilk çalıştığında  bu metotla başlar.

Page 16: METOTLAR - WordPress.com · 2017-12-25 · Diziler C#‘ta ayrı bir tür olarak ele alındığı için Dizi kavramı, tanımlama ve dizi elemanları üzerindeki işlemler gibi konular

Metotlar 

Atatürk Üniversitesi Açıköğretim Fakültesi    16 

DEĞERLENDİRME SORULARI 

1. Bir metot tanımında aşağıdakilerden hangisi yer almaz? 

a) Erişim belirteçleri 

b) Dönüş değeri 

c) Adlandırma ismi  

d) New anahtar sözcük 

e) Parametre listesi 

       

2. Metotların tanımlanmasına ilişkin aşağıdakilerden hangisi kesinlikle hatalıdır? 

a) Metotların parametreleri doğru sayıda ve türde verilmelidir. 

b) Değer tutan metotlarda return satırıyla verilen ifade, metodu yazarken 

verilen türle uyumlu olmalıdır. 

c) Değer tutmayan metotlarda void  sözcüğü kullanılır. 

d) Metotlar içinde tanımlanan değişkenler, metodun işlevi bittiğinde silinir. 

e) Metotlarda mutlaka parametre kullanılmalıdır. 

 

3.  Aşağıdakilerden hangisi metotlarda değer tipi parametrelerin referans tipli olarak 

kullanılmasını sağlar? 

a) new 

b) class 

c) out 

d) int 

e) void 

 

 

 

 

 

 

 

 

 

 

 

 

Değerlendirme sorularını 

sistemde ilgili ünite 

başlığı altında yer alan 

“bölüm sonu testi” 

bölümünde etkileşimli 

olarak cevaplayabilirsiniz. 

 

Page 17: METOTLAR - WordPress.com · 2017-12-25 · Diziler C#‘ta ayrı bir tür olarak ele alındığı için Dizi kavramı, tanımlama ve dizi elemanları üzerindeki işlemler gibi konular

Metotlar 

Atatürk Üniversitesi Açıköğretim Fakültesi    17 

4. 

using System; class sorular {    static void Hesapla(... int sayi1)  {     sayi1=4; }     static void Main()     {          int sayi=0;         Hesapla(... sayi);           }} 

Yukarıda verilen kodlar içerisindeki (...) ile gösterilen boşluğa aşağıdaki anahtar 

sözcüklerden hangisi gelmelidir? 

 a) new 

b)  class 

c)  out 

d)  ref 

e)  void 

 

  5. 

using System; class Sorular {    int Topla(int a,int b)  {     return a + b; }     static void Main()     {         Sorular soru5 = new Sorular();         int a = soru5.(.....);         Console.Write(a);     } } 

Yukarıda verilen kodlar içerisindeki (...) ile gösterilen boşluğa aşağıdaki kod 

satırlarından hangisi gelmelidir? 

 a) Topla (0, 100); 

b)  Topla ( 100); 

c)  Sorular ( 100); 

d)  Sorular (0,100); 

e)  Soru5 ( 0,100); 

 

Page 18: METOTLAR - WordPress.com · 2017-12-25 · Diziler C#‘ta ayrı bir tür olarak ele alındığı için Dizi kavramı, tanımlama ve dizi elemanları üzerindeki işlemler gibi konular

Metotlar 

Atatürk Üniversitesi Açıköğretim Fakültesi    18 

6. Referans tipler bilgisayar hafızasının hangi bölümünde saklanır? 

a) Heap bölgesinde 

b) Stack bölgesinde 

c) Harddiskte  

d) Diskette 

e) Flash diskte 

 

7. Değer tipler bilgisayar hafızasının hangi bölümünde saklanır? 

a) Heap bölgesinde 

b) Stack bölgesinde 

c) Harddiskte  

d) Diskette 

e) Flash diskte 

 

8. Aşağıdaki erişim türlerinden hangisine her yerden ulaşmak mümkündür?  

a) Private  

b) Protected 

c) Public  

d) Internal 

e) Proteced Internal 

 

9. C#’ta parametre sayısı ve parametre türleri farklı olmak koşulu ile aynı isimde faklı 

metotlar oluşturma işlemine ne denir?  

a) Kendini çağıran 

b) Ana metot 

c) Yavru metot 

d) Fonksiyon 

e) Aşırı yükleme 

 

 

 

 

Page 19: METOTLAR - WordPress.com · 2017-12-25 · Diziler C#‘ta ayrı bir tür olarak ele alındığı için Dizi kavramı, tanımlama ve dizi elemanları üzerindeki işlemler gibi konular

Metotlar 

Atatürk Üniversitesi Açıköğretim Fakültesi    19 

10. 

using System; class Sorular {    static void Islem(int a)  {     if (b == 0) return; 

    .... (b>>1);     Console.Write(b & 1); }     static void Main()     {         Islem(10);     } } 

Yukarıda verilen kodlar içerisindeki (...) ile gösterilen boşluğa hangi kod 

satırında verilen anahtar sözcük gelmelidir? 

 a) Islem  

b) Main  

c)  Sorular  

d)  new 

e)  void 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Cevap Anahtarı: 

1.D,2.E, 3.C,4.D,5.A,6.A,7.B,8.C,9.E,10.A 

Page 20: METOTLAR - WordPress.com · 2017-12-25 · Diziler C#‘ta ayrı bir tür olarak ele alındığı için Dizi kavramı, tanımlama ve dizi elemanları üzerindeki işlemler gibi konular

Metotlar 

Atatürk Üniversitesi Açıköğretim Fakültesi    20 

YARARLANILAN KAYNAKLAR VE BAŞVURULABİLECEK 

DİĞER KAYNAKLAR 

ALGAN, Sefer, (2010), Her Yönüyle C#, İstanbul: Pusula Yayıncılık, İstanbul. 

AKTAŞ, Volkan, (2013), Her Yönüyle C# 5.0, KODLAB, İstanbul. 

CLARK, Dan, (2013), Your visual blueprint for building.NET application, 2nd Edition, 

Hungry Minds, New York. 

SCHILDT, Herbert, (2002), The Complete Reference C#, çev. Duygu Arbatlı Yağcı, Alfa 

Basım Yayım Dağıtım, İstanbul. 

SHARP, John, (2002), Microsoft Visual C#.NET, çev. Mert Derman,  Arkadaş Yayınevi,  

Ankara.  

YANIK, Memik, (2004), Microsoft Visual c#.NET, 1.Baskı, Seçkin Yayıncılık, Ankara.