C Kaynak

C Programlama Dili Fonksiyonlar 1

Diğer programlama dillerinde olduğu gibi C Programlama Dili içinde fonksiyonlar konusu en önemli konuların başında gelmektedir. Programlama dilleri içinde fonksiyonlar temel yapı taşıdır. Yazılan programların yeniden kullanılabilirliğini, kodun okunurluğunu artırmak ve kodun bakımı kolaylaştıran en önemli etken fonksiyonlardır. C Programlama Dili Fonksiyonlar konusunu toplamda 3 konu olarak ayıracağız. Tüm başlıklar aşağıdaki gibidir. İlk dört başlık bu konu altında ele alınacaktır.

Fonksiyonlar başlığında bulabileceğiniz içerikler:

  1. C Programlama Dilinde fonksiyonlar nedir?
  2. C Programlama Dilinde fonksiyonlar nasıl kullanılır?
  3. C Programlama Dilinde fonksiyon tanımlama, bildirme, fonksiyon çağırma ve örnek program
  4. C Programlama Dilinde fonksiyon nasıl çağrılır?
    1. Değerine göre çağırma
    2. Referansına göre çağırma
  5. Parametreli ve dönüş (return) değerlerine göre C Programlama Dilinde fonksiyonlar
    1. Parametreli ve dönüş değeri olan C fonksiyonu
    2. Parametreli ve geri dönüş değeri olmayan C fonksiyonu
    3. Parametresiz ve dönüş değeri olmayan C fonksiyonu
    4. Parametresiz ve dönüş değeri olan C fonksiyonu
  6. C Programlama Dilinde fonksiyon tipleri
    1. header fonksiyonları
    2. Kullanıcı tanımlı fonksiyonlar
      1. C header fonksiyonu oluşturma / ekleme
  7. C Programlama Dilinde komut satırı parametreleri
  8. C Programlama Dilinde değişken uzunluk parametreleri

1. C Fonksiyonları Nedir?

Orta ve büyük ölçekli bir programda fonksiyonlar programın temel yapı taşıdır. C fonksiyonları, programın belirli işlemini gerçekletirir ve küme parantezi ‘{}’ ile başlayıp sonlanır. Yani, programı fonksiyonlar oluşturur.

2. C Fonksiyonları Nasıl Kullanılır?

3. C Fonksiyonları Tanımlama, Bildirme, Fonksiyon Çağırma ve Örnek Program

Her bir C fonksiyonunun üç farklı görünüşü vardır.

  1. Fonksiyon bildirimi veya prototip – Derleyiciyi fonksiyon adı,fonksiyon parametreleri ve dönüş değerinin veri türü hakkında bilgilendirir.
  2. Fonksiyonu çağırma – Fonksiyonun işlevini yapması için fonksiyonu çağırmak gerekir.
  3. Fonksiyon tanımımlama – Bu yürütülecek tüm ifadeleri içerir ve sadece tanımlama işlemi yapar.
C Fonksiyon Görünüşleri Syntax
Fonksiyon bildirimi veya prototip [Geri Dönüş Tipi] [Fonksiyon Adı](Parametre(zorunlu değil)){

Fonksiyon içerisindeki kodlar (body);

}

Fonksiyonu çağırma fonksiyonAdi(gönderilen parametre/parametreler(zorunlu değil))
Fonksiyon tanımı [Geri Dönüş Tipi] [Fonksiyon Adı](Parametre(zorunlu değil)); (fonksiyon içeriği (body) bulunmuyor)

Basit Bir C Fonksiyon Örneği

Çıktı:

Bir kenarı 11.200000 olan karenin alani = 125.439995’dir

Ben genellikle tanımlama işleminde parametreye isim vermiyorum. float tipinden bir parametre alacağını belirtmeniz de yeterlidir.

Bu şekilde tanımlama yapılmaz.

x*x işlemi yapılır ve geri dönüş olarak bu değer döndürülür.

İstenilirse işlem önceden yapıp sadece değişkende döndürülebilir.

Bu fonksiyon ile diğeri arasında hiçbir fark yoktur. Kısa bir fonksiyon olacak ise return değeri içerisinde dönderme işlemi yapabilirsiniz. Tamamen kodun okunabilirliği için dikkat edilir. Herhangi bir kural yoktur. Bu konuda kendinizi geliştirmeniz önemlidir. Robert C. Martin’in Clean Code isimli kitabını okumanızı öneririm.

4. C Programlama Dilinde Fonksiyon Nasıl Çağrılır?

C programlama dilinde fonksiyon çağırma işlemi iki farklı yolla yapılabilir.

  1. Değerine göre çağırma
  2. Referansına göre çağırma

4.1. Değeri Göre Çağırma

Değerine Göre Çağırma Örneği

Çıktı:

1)main ici:
sayi1:15 sayi2:33takas fonksiyonu ici:
sayi1:33 sayi2:152)main ici:
sayi1:15 sayi2:33

Örneği inceleyelim;

  1. sayi1 = 15, sayi2 = 33 olarak tanımlandı.
  2. ekrana sayi1 ve sayi2 değerleri gösterildi.
  3. takas fonksiyonuna sayi1 ve sayi2 gönderildi.
  4. void geri dönüşe sahip olan takas fonksiyonu geri dönüşü yoktur. Void fonksiyonlarda return bulunmaz (Bazı özel durumlarda bulunmatadır. Bu konular ileri seviye olduğu için bu konu da bahsedilmeyecektir.)
  5. takas fonksiyonu içerisinde ki sayi1 ve sayi2 değişkenleri main fonksiyonundaki sayi1 ve sayi2 değişkenlerinden farklıdır. Farklı bellek alanlarında değerleri tutulmaktadır.
  6. takas fonksiyonunda sayi1 ve sayi2 değerleri yer değiştirilir ve ekranda gösterilir.
  7. takas fonksiyonu görevini tamamladıktan sonra main fonksiyonunda bir alt satıra geçiş yapar ve program devam eder.
  8. Tekrar sayi1 ve sayi2 değerleri ekranda gösterilir.
  9. Dikkat edilmesi gereken nokta main fonksiyonu içerisinde 2 printf de aynı değerleri göstermektedir. Çünkü takas fonksiyonu içerisindeki sayi1 ve sayi2 farklı bellek adreslerinde tutuluyor. takas fonksiyonun da sayi1 ve sayi2 nin değerlerini yer değiştirmemiz main fonksiyonunda bir etkisi olmadı.

4.2. Referansına Göre Çağırma

Referansına Göre Çağırma Örneği

Çıktı:

1)main ici:
sayi1:15 sayi2:33takas fonksiyonu ici:
sayi1:33 sayi2:152)main ici:
sayi1:33 sayi2:15
  1. Bu örnekte main içerisinde tanımlanmış sayi1 ve sayi2 değişkenlerinin adresleri takas fonksiyonuna gönderildi.
  2. Adres gönderildiği için atamalar pointerlara yapılmak zorundadır.
  3. takas fonksiyonu içerisindeki *sayi1 ve *sayi2 main fonksiyonu içerisindeki sayi1 ve sayi2’nin adreslerini referans olarak göstermektedir ve bu değişkenlerin adresleri üzerinden direk değişiklik yapmamıza imkan sağlar.
  4. takas fonksiyonunda sayi1 ve sayi2 değerleri yer değiştirildiğinde aynı değişiklik main fonksiyonu içerisinde de görülmektedir.