Bu yazımızda C# Metotlar konu anlatımı hakkında anlatımlar yapacağız.
İçindekiler
Metot Nedir ?
Nesne yönelimli programlama dillerinde her şey sınıflar (class) içinde tanımlanır. Bir sınıfa ait değişkenler o sınıfın özelliklerini ortaya koyar. Sınıf değişkenleri, çoğunlukla, özellik (property) denilmektedir. Benzer olarak bir sınıf içinde tanımlı fonksiyonlar o sınıfın tavır, davranış ve eylemlerini ortaya koyar. Bu ayrımı gözetmek için olsa gerek OO Programlama dillerinde fonksiyonlara metot denir. Bundan sonra, biz bu geleneğe uyarak, bir sınıfta tanımlanan değişken yerine özellik, fonksiyon yerine metot diyeceğiz. Özellikle alışkanlıklarımıza dayanan vurgu gerektiğinde değişkene ve fonksiyon adlarını kullanmaktan çekinmeyeceğiz. Okurun değişken ile özelliği ve fonksiyon ile metodun eş
anlamlı olduğuna daima anımsayacağını umuyoruz.
Metot Kavramı
Matematik derslerinde bildiğimiz fonksiyon tanımlamadan başka bir şey değildir. Metotlar tek başlarına çalıştırılabilen yapılar değildir. Metot, 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)’dir.
Bu tanımlama kısmı
1 | int Karesinibul(short x) |
Yukarıdaki satırda fonksiyonun başlığı diyeceğiz. Fonksiyonun adı Karesinibul
bitişik bir sözcüktür.
fonksiyon adının hemen sağ tarafına yazılan (short x) ifadesi, fonksiyonun tanım kümesinin Short veri tipi olduğunu ve
değişkenimizin x olduğunu göstermektedir. int olarak yazdığımız kısım ise int veri tipi fonksiyonun değer bölgesidir.
1 2 3 | int y; y = x * x; return y; |
y = x * x çarpma ve atama işlemeleri bu kısımda yapılmaktadır. Fonksiyonun alacağı değeri ise return anahtar kelimesi ile belirtiyoruz.
Parametreler ve Yerel Değişkenler
Bilgisayar programlama dillerinde, fonksiyonun başlığındaki değişkene parametre denilir.
Şimdi ise Main()
fonksiyonunu içeren bir sınıf içindeki kodumuzu görelim
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | static int n; static void Main(string[] args) { Console.Write("Karesini Hesaplamak İstdiginiz Sayıyı Giriniz = "); n = Karesinibul(Convert.ToInt16(Console.ReadLine())); Console.Write("Hesaplandı = "); Console.WriteLine(n); } static int Karesinibul(short x) { int y; y = x * x; return y; |
fonksiyonun {} gövdesinde int tipinde bir y değişkeni tanımlamıştık. Bu yüzden bu değişken iki farklı nitelikte değişken kullanmaktadır. Baştaki (short x) değişkeni ve fonksiyon gövdesi içindeki int y değişkeni.
Bu iki değişkeni şöyle birbirlerinden ayırt edebiliriz.
– fonksiyon başlıgındaki x değişkeni parametredir.
– {} gövdesi içindeki y değişkenine fonksiyonel yerel değişkeni deriz.
Hazır Metotlar
C# derleyicisi zengin bir kütüphaneye sahiptir. Bu kütüphanede çok sayıda namespace, her namespace içinde sınıflar ve sınıflar
içinde pek çok işi görecek metotlar vardır. buna rağmen, kullanıcı gerekseme duyduğunda kendi namespace’lerini, sınıflarını ve
metotlarını serbest bir şekilde yaratabilmektedir.
Bunlar Write(), WriteLine(), Read(), ReadLine(), metotları Console sınıfına aittirler. isLower(), isUpper(), isDigit(), IsLetterOrdigit(), metotları Char Sınıfına aittir.
Main() Metodu
C# dilindeki programın bütün işlevini yaptıran ana metottur. Programın kullanacağı bütün deyimler tek başına içerebileceği gibi, modüler yapıda yazılan programlarda öteki sınıflarda tanımlanan metotlar ve değişkenleri çağırır ve belirlenen sırayla isleme sokar. her programda ana metot olma görevini üstlenen bir tane Main() metodu vardır. Başka bir tane olsa bile onlar o programda ana metot olma görevini
üstlenemezler.
Main () bir metot olduğuna göre, tanımı genel sözdizimi kurallarına uyar.
1 | static void Main(string[] args) |
Şeklinde yazılmaktadır. args adını taşıyan parametresi string tipi bir array’dır.
Değer kümesi void kümesidir. Bu kümeye matematikteki boş küme örneğini söyleyebiliriz.
Hiçbir ögesi yoktu. Örnekte Main() metodu bir değer almıyor, başka bir metodu çağırıp onun işlevini yapmasını sağlıyor.
Özyineli (Recursive) Metotlar
Recursive (özyineli) metot kendi kendisini çağıran metottur. bilgisayar programcılığında zor problemleri çözen önemli bir algoritmaya sahiptir.
1 2 3 4 5 6 7 8 9 10 | For(10000); Console.ReadLine(); } private static void For(int hedef, int n = 0) { while (n != hedef) { Console.WriteLine("Sıralı bir şekilde sayma = " +n); n = ++n; |
Yukarıdaki program bu kalıp bir çok özyinelemeli fonksiyonu döngü olarak çevirmemizi sağlamaktadır. Öncelikle bir while döngüsü kuruyorum. Bu while döngüsü ile aslında metodun tamamını dönerek metot içindeki kodları yinelemiş oluyorum Özyinelemeyi kıran şartımı bu döngüyü kıracak şekilde ayarlıyorum.
Geriye değer döndüren ve döndürmeyen metotlar
Yukarıda resimde görmüş olduğunuz üzere dört adet metot ismi verilmiştir. Şimdi aşağıda bu metotlar ile ilgili anlatımlar ve örnekler vereceğim.
1.Geriye Değer Döndürmeyen ve Parametre Almayan metotlar.
Aşağıdaki kodda gördüğünüz gibi void anahtar sözcüğü kullanılarak metodun bir değer döndürmediğini belirtiyoruz. Bütün işlemler metot içerisinde yapılmıştır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | private static void Hesapla() { Console.Write("Kısa kenarı girin :"); int kısakenar = Convert.ToInt32(Console.ReadLine()); Console.Write("Uzun kenarı girin :"); int uzunkenar = Convert.ToInt32(Console.ReadLine()); int alan = kısakenar * uzunkenar; Console.WriteLine("Alan = "+ alan); } static void Main(string[] args) { Hesapla(); Console.ReadKey(); } |
Ekran Çıktısı
1 2 3 | Kısa kenarı girin :10 Uzun kenarı girin :15 Alan = 150 |
2.Geriye Değer Döndürmeyen ve Parametre Alan metotlar.
Metotların bir diğer varyasyonu, herhangi bir türden bir veya daha fazla parametre almasıdır. Girilecek olan parametre sayısı için bir sınır yoktur.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | private static void Hesapla() { Console.WriteLine("Alanı hesaplama üzere Programımıza Hoşgeldiniz."); Console.Write("Kısa kenarı giriniz ="); int kısakenarı = Convert.ToInt32(Console.ReadLine()); Console.Write("Uzun kenarı giriniz ="); int uzunkenarı = Convert.ToInt32(Console.ReadLine()); int alan = kısakenarı * uzunkenarı; Console.WriteLine("Alanın hesaplanmış hali = "+ alan); } static void Main(string[] args) { Hesapla(); Console.ReadKey(); |
İlk olarak kodumzuda kısakenar, uzunkenar ve alan int tipinde tanımlama yaptık daha sonra yapmış olduğumuz tanımlamayı alan = kısakenar * uzunkenar ile çarptırma işlemi yapıp çıkan sonucu alana eşit bir şekilde olarak ekrana yazdırma işlemi yaptık.
Ekran Çıktısı
1 2 3 4 | Alanı hesaplama üzere Programımıza Hoşgeldiniz. Kısa kenarı giriniz =4 Uzun kenarı giriniz =10 Alanın hesaplanmış hali = 40 |
3.Geriye Değer Döndüren ve Parametre Almayan metotlar.
Geriye değer döndürmede metotlar bir veri türünü, herhangi bir türden nesneyi geri döndürebilir. Yapmış olduğumuz bir metodu çağırdığımıza, oluşan veriyi bir başka değişkene aktarmak istediğimizde, return anahtar kelimemizi kullanırız. Geriye değer döndürme işlemini return anahtar kelimesini kullanarak yapabiliriz.
Şimdi Aşağıdaki kodumuzu bir göz atalım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | private static int KodKampüsü() { Console.WriteLine("Alanı hesaplama üzere Programımıza Hoşgeldiniz."); Console.Write("Kısa kenarı giriniz ="); int kısakenar = Convert.ToInt32(Console.ReadLine()); Console.Write("Uzun kenarı girin ="); int uzunkenar = Convert.ToInt32(Console.ReadLine()); int alan = kısakenar * uzunkenar; return alan; } static void Main(string[] args) { int sonuc = KodKampüsü(); Console.WriteLine("Alanın hesaplanmış hali = " + sonuc); Console.ReadKey(); |
Ekran Çıktısı
1 2 3 4 | Alanı hesaplama üzere Programımıza Hoşgeldiniz. Kısa kenarı giriniz =20 Uzun kenarı girin =101 Alanın hesaplanmış hali = 2020 |
4.Geriye Değer Döndüren ve Parametre Alan metotlar.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | private static int Hesapla(int kisakenarı, int uzunkenarı) { int alan = kisakenarı * uzunkenarı; return alan; } static void Main(string[] args) { Console.WriteLine("Alanı hesaplama üzere Programımıza Hoşgeldiniz."); Console.Write("Kısa kenarı giriniz ="); int kısakenar = Convert.ToInt32(Console.ReadLine()); Console.Write("Uzun kenarı giriniz= "); int uzunkenar = Convert.ToInt32(Console.ReadLine()); int sonuc = Hesapla(kısakenar, uzunkenar); Console.WriteLine("Alanın hesaplanmış hali = "+ sonuc); Console.ReadKey(); |
Ekran Çıktısı
1 2 3 4 | Alanı hesaplama üzere Programımıza Hoşgeldiniz. Kısa kenarı giriniz =10 Uzun kenarı giriniz= 10 Alanın hesaplanmış hali = 100 |
Yukarıda Yapmış olduğumuz dört tana farklı program görüyor gibi gelebilir normalde farklı ama farklı değil gibi bu dört programın çıktıları bize her zaman aynı sonucu vermektedir. Sadece kullandıkları metotlar farklı gözükmektedir. Sonuç olarak yapılan işlemler aynıdır seçim size kalmıştır.
C# Metotlar konu anlatımı yazımız burada bitmiş bulunmaktadır. Bizimle olduğunuz için teşekkürler…
C# metotlar en sevdigim konu çok güzel özetlemişiniz ellerinize saglık teşekkür ederim