C# Eğitimleri 49 – Fonksiyonlar & Prosedürler 1 – Functions & Procedurs 1

C# Eğitimlerimize dizilerden sonra Fonksiyon ve Prosedür konuları ile devam ediyoruz.

Fonksiyonlar farklı şekilde duyabileceğiniz adıyla metodlar, C#’ın sınıf yapısından sonra oluşturulmuş en önemli yapılarından biridir.

C# da pek çok işlemi bir sınıf içindeki özelleşmiş Prosedürler ve fonksiyonlar ile hallederiz.

Yaygın olarak yapılan hatalardan biri prosedür ile fonksiyonların bir birine karıştırılmasıdır. Geriye herhangi bir tipte değer döndüren yapılar Fonksiyonlardır. Void tipli geriye değer döndürmeyen yapılar ise prosedür olarak adlandırılırlar.

Prosedür Nedir?

C# da aynı işlemi yapan kod satırlarını bir blok içine topladığımız ve o kodların çalışması gerektiği yerde tekrar tekrar kullanabildiğimiz void tipli yapılara prosedür diyebiliriz.

Örneğin şöyle bir senaryo düşünelim. Bir program yazıyorsunuz ve 3 satır kodlamanız ardından 5 satır boşluk bırakmanız gerekiyor. 1000 satır kodlamanın her 3 satırında bu işlemi yapmanız gerek.

Eğer prosedür kavramını bilmiyor olsaydık şu işlemi yapmamız gerekecekti.

Bu işlem bu şekilde 1000 satır devam edecekti. Aslında tekrar eden bu 5 satır kod yüzünden bütün işlem sonlandığında 3000  satır kodlama yapmış olacaktık.

Bu haliyle programlama mantığına da aykırı.

İşte C# ve pek çok programlama dilinde bu sorunu çözmek tekrar eden kodları, tekrar tekrar yazmak yerine, onları bir prosedür olarak yazıp, gerektiği yerde bu prosedürün ismini referans göstererek o prosedürün çalışmasını sağlayarak bu işi çözüme kavuşturmuşlar.

Prosedür Kullanımı

Erişim_Belirteci void Prosedür_İsmi(İsteğe Bağlı Parametre Kullanımı)

{

// Kodlar

}

Şimdi isterseniz yukarıdaki işlemi bir prosedür yazarak nasıl kolayca halledebilecektik onu görelim.

 

Prosedür olarak yazdığımız kodlarımızı inceleyelim.

public static void BoslukYaz()
{
Console.WriteLine(); // 1 Alt satıra geçer Ard Arda kullanıldığında boş satırlar oluşturur.
Console.WriteLine();
Console.WriteLine();
Console.WriteLine();
Console.WriteLine();
}

Bir prosedür sadece sınıf içinde yazılabilir. Metodlar içinde metod(prosedür) yazamayız.

İlgili Sınıfın içinde yazmış olduğumuzu görüyorsunuz.

Main metodumuzla aynı sınıf içinde. Farklı bir sınıf oluşturup orada da yazabilirdik. Bu ileri ki derslerimizin konusu.

Öncelikle Erişim Belirteci public ile başladık. Bu  sayede metodumuzun erişimini projedeki tüm sınıflara açmış olduk. Eğer private bir tanımlama yapmış olsaydım sadece ilgili sınıf içinde kullanabilirdik.

Static yazma sebebimiz metodu tekrar static olan main metodu içinde kullanacak olmamız. Static metodlar içinde static olmayan metodları kullanamazsınız. Buna dikkat etmeniz gerekir.

Eğer kullanacağımız metod static yapıda olmasaydı static yazmamıza da gerek kalmayacaktı.

Void belirteci bu metodun geriye bir değer dönmeyeceğini, sadece içerisindeki bulunan kodları çalıştıracağını ifade eder. Geriye değer dönmesini bir sonraki yazılarımda açıklayacağım.

BoslukYaz metodumuza verdiğimiz isim. Burada istediğiniz ismi verebilirsiniz. Ancak şunu tavsiye ederim yapacağı işle özdeş bir isim verirseniz sonrasında kodlarınızı okuduğunuzda o metodun hangi işlemi daha kolay anlamanızı sağlayabilir.

Metodlar hiç parametre almadıkları durumda bile () bu iki açıp kapattığımız parantezler ile ifade edilirler.

Daha sonra süslü parantezlerimizi açtık ve kodlarımızı yazdık.

Sıra geldi bu metodu nasıl çağıracağız.

Metod içindeki işlemin yapılacağı yere geldiğimizde sadece Metod_İsmi(); şeklinde çağırmamız yeterli olacaktır.

Metodları sadece o kodlar birden fazla kullanılacağı zaman değil daha düzenli kodlar yazmak içinde yazabiliriz.

Proje Optimizasyonu

Az önceki yazdığımız kodlamayı biraz daha iyileştirelim. Metodun içinde kullandığımız 5 adet kodlama var.

Bunu bir for döngüsü ile 1 satıra indirelim.

Yeni Prosedürümüz şu şekilde oldu.

public static void BoslukYaz()
{
   for (int i = 0; i < 5; i++)
{
   Console.WriteLine();
}
}

Prosedürler konumuza bir süre daha devam edeceğiz. Bir sonraki yazımda görüşmek üzere.

Facebook Sayfamizdan Bizleri Takip Edebilirsiniz
Murat Bilginer

Industryolog Akademi Founder – Endüstri Mühendisi
Canias ERP Troia Geliştiricisi & Yazılım Uzmanı
7 Yıldır bildiğini paylaşmak için çabalayan bir blogger.

http://muratbilginer.net/
  • Enes Güven

    Statik yapıları hayatım boyunca hiç sevemedim . Ram’in heap bölgesinde tutuluyor oluşu, temizlenemiyor oluşu hoşuma gitmiyor. Statik oluşturmayıp IDisposable yapısından miras aldırıp, using ile kullanıp işim bitince GarbageCollector ile temizlemeyi seviyorum.

    Static yapıları seven varsa eğer Singleton designer pattern’ini incelesin. Mutlaka hoşuna gidecektir 🙂