C
Programlama Dili
DERS – 11


Problem çözmenin temel ilkelerinden biri de, problemi mümkün olduğu kadar çok parçalara ayırmaktır. Parçalara ayrılan kısımlar sanki birbirinden bağımsızmış gibi düşünülerek çeşitli çözümler elde edilebilir. Ayrıca bu parçaları istediğimiz kadar, tekrar tekrar kullanabiliriz. İşte C programlama dilinde bu parçalama işlemini fonksiyon kullanarak yaparız. Kısaca işlev(fonksiyon); belli bir işi gerçekleştiren program deyimlerinin, karmaşık programları düzenlemek ve basitleştirmek için, programın bir birimi olarak gruplandırılmasıdır diyebiliriz. Örneğin bir program yazdığımızda mazı matematiksel işlemleri defalarca kullanacağımızı düşünelim. Bunun için her seferinde bu matematiksel kodları yazmak yerine, kullanacağımız kodları bir fonksiyon olarak tanıtırız. Bu işlemlere her ihtiyacımız olduğunda fonksiyonu çağırarak işlemlerin gerçekleşmesini sağlayabiliriz.

İşlev kullanmanın temel nedeni; böl ve yönet metodu ile kolaylık sağlanması, ayrıca yazılımın tekrar tekrar kullanılabilmesidir.

Şimdi basit bir ev çizimi yapalım.

void main() fonksiyonunu açıklayarak devam edelim. Void kısmı geriye dönen değer tipini belirtir. Void yerine int yazarsak main fonksiyonu geriye dönüş için bir tam sayı bekler. Sonuna return 0; yazarak int main de bu dönüşü tamamlamış oluyoruz. Void ise herhangi bir değer dönmeyeceği zaman kullanacağımız bir tanımdır.

main() fonksiyonu özel bir yapıdır. Hazırladığımız yazılım main() fonksiyonu ile çalışmaya başlar. main() fonksiyon bloğu içerisinde yer almayan kodlar çalışmaz.

Yukarıdaki evi fonksiyon kullanarak çizmeye çalışalım. Evin her bir bölümü problemimizin parçaları olsun. Evin çatısı, katları ve katları ayıran zemin parçasını ayrı ayrı tanıtalım.

Evin çatısı için ;

Evin katları için;

Ve evin katlarını ayıran zemin içinse;

Tanımlarını yapalım.

Şimdi ise 3 katlı bir bina çizelim

Görüldüğü gibi eğer bunları fonksiyon tanıtmadan çizmek isteseydik, int main() bloğu içerisinde bir çok çizim yapmamız gerekecekti. Oysa evimizi parçalara ayırarak, kullanmak istediğimiz kısımları işlev olarak tanıttık. Ne kadar işlev kullanmak istiyorsak, int main bloğu içerisinde onu çağırmamız yeterli olacaktır Örnek : Bir tamsayının küpünü veren fonksiyon

İşlevin tanımlanma biçimi:

dönüş_tipi işlev_adı(parametreler)

{

yerel tanımlamalar

deyimler

}

dönüş_tipi: Eğer fonksiyon bir değer geri gönderecek ise değerin tipini belirtir. Belirtilmez ise int kabul edilir. Eğer fonksiyon değer göndermeyecek ise dönüş_tipi yerine void yazılır.

işlev_adı: Fonksiyon çağırılırken kullanılacak ad (belirleyici).

parametreler: Fonksiyon için gerekli değerleri içerir. Her parametre değişken tanımlar gibi tanımlanır. Herbirinin arasında ‘,‘ (virgül) kullanmak gerekir.

yerel tanımlamalar: Bu fonksiyona özgü(değişken,sabit) tanımlamalar.

return değer; Eğer fonksiyon bir değer gönderecek ise bu return deyimi ile yapılır.

Fonksiyonun (işlevin) Prototipi

Tanımlana bir fonksiyonun ana modül içerisinde prototipinin yazılması gerekir. Prototip ile fonksiyonun dönüş değeri ve aldığı parametrelerin tipleri tanımlanır. Bu bilgiye göre C derleyecisi fonksiyonu çağırdığında değerlerin uygun olduğunu sınar.

int kub(int) kub fonksiyonu int bir değeri alır ve yine int bir değer üretir.

Yerel (local) ve Genel (global) Değişkenler

Genel değişken (global): Her yerde (main ve diğer işlevler) geçerlidir, değerine erişilebilir.Programın en başında, main işlevinin dışında tanımlanır.

Yerel değişken (local): Sadece tanımlandığı modülde geçerlidir, değerine erişilebilir.Modül içinde tanımlanır.

int a; /*tüm işlevlerden değerine erişilebilir, değeri değiştirilebilir. (global) */

main()

{

int b; /* sadece main işlevi içerisinden erişilebilir (local ) */

}

fonksiyon1(…);

{

int b; /* sadece fonksiyon1 işlevi içerisinden erişilebilir. main işlevindeki değişkenden bağımsızdır (local ) */

int c; /* sadece fonksiyon1 işlevi içerisinden erişilebilir (local ) */

}

Aşağıdaki örnekleri inceleyerek fonksiyonlar hakkındaki bilgilerimizi pekiştirelim.

Örnek: Girilen harfi büyük harfe dönüştüren fonksiyon Girdi : karakter Çıktı : karakter ( girdi harf ise büyük harfe dönüştürülmüş)

Örnek: 1 den N e kadar olan sayıların toplamını fonksiyon ile bulan program

Örnek: Klavyeden girilen 2 sayının çarpımını, küplerini, faktoriyelini, büyük sayıyı fonksiyon kullanarak bulan program.

Örnek: Klavyeden girilen sayının tek veya çift olduğunu fonksiyon kullanarak bulan program.

Örnek: x üzeri y’nin değerini fonksiyon kullanarak bulan program.