C'de Fonksiyonlar Hakkında

'Programlama' forumunda sha. tarafından 9 Ağu 2009 tarihinde açılan konu

Konu etiketleri:
  1. sha.

    sha. ..daha çirkin, daha huysuz

    FONKSİYONLAR HAKKINDA

    C orta seviye bir programlama dilidir. Düşük seviye dillerde Java, C# gibi dillerdir.Bu tanımdan şunu izah etmeye çalışıyorum ki; en düşük seviye dil en çok bilgisayar diline yakın olan dildir.Mesela C orta seviyedir bu yüzden fonksiyonlar bu programlama dilinin sağ ve sol elidir diye düşünebiliriz yani neredeyse tüm işi fonksiyonlara bıraktık gibi. Ama bir javada Classlar tüm işi götürmektedir. O zaman bu fonksiyonlar konusu çok önemlidir diyerek çok ince ince bu konuyu sizlere anlatmaya çalışacağım lütfen her kelimeme çok dikkat edin!

    Bir bilgisayar programcısına neden matematik dersi verilir?

    Çoğu insan bunu hep sorgular durur; gerçi bunu sorgulayan kişilere hep şaşkınlıkla bakarım, ama belki fonksiyonlar konusunu daha Sanalkurs için makale haline getirmediğimdendir.

    Şimdi matematikteki bir fonksiyonlar konusunu hatırlamak gerekirse, f(x)=10x gibi en basit 1. dereceden bir fonksiyon görmüş oluruz ve f(x) fonksiyonunun değerinin bulunması için x'e bir değer verilir, ki bu X bir parametredir arkadaşlar. Bu kelime çok önemli: PARAMETRE.
    X parametresi 1 için f(x) fonksiyonumuz 10 değerini alır ve fonksiyonun geri döndürdüğü değer 10'dur. GERİ DÖNDÜRDÜĞÜ DEĞER.

    Arkadaşlar sizden ricam bu 2 kelimeyi ya da cümleciği çok iyi kavramanız:
    -Parametre
    -Geri Döndürdüğü Değer

    Şimdi tüm bu anlatmaya çalıştığım kısmın bilgisayar programı olan C'de ne işe yaradığını göstermeye çalışacağım ve yukarıdaki kısımları çok iyi anladıysanız, fonksiyon konusunu çözdüğünüze inanın.

    Şimdi bir C fonksiyonunun syntax'ını görelim de, siz de anlayın ki C'de fonksiyonları çok iyi anlamışsınız.




    --Döndürdüğü_değer_tipi
    Fonksiyonlar genelde başka bir fonksiyon içinden çağırılırlar (main (void) de bir fonksiyondur). Bu yüzden fonksiyonlar yapmaları gereken işi yaptıktan sonra kendilerini çağıran fonksiyona bir değer döndürürler ve bu yüzden Döndürdüğü_değer_tipi diye bir
    Syntax görüyorsunuz ve bu int ,char , double gibi veri tipleridir.

    --Fonksiyonun_ismi
    Tanımladığımız fonksiyona verdiğimiz isimdir. Program içerisinde fonksiyonumuza bu isimle ulaşacağız. Bu ismin fonksiyonun yaptığı işlevi açıklayıcı nitelikte olması tercih edilir. Mesela faktoriyel hesabı kullanacağım zaman fak() diye bir isim yazarım sizde bu şekilde belirleyici isimler kullanabilirsiniz tabi üşenmezseniz tüm ismi yazın fark eden bir şey hiçbir şekilde olmayacaktır ne zaman farkı nede başka bir sorun çıkmaz yeter ki Türkçe karakter kullanmayın.

    --Parametre_listesi
    Yukarıda matematikte parametreleri kullanırken gördüğümüz şekilde mesela x parametresi için bir değer atayacaksak program içindede aynı şekilde bazı değişkenlerimiz olacak mesela x olabilir ki bu değişkeni çağırdığımız fonksiyonda kullanmak için işte bu parametre listesinde yazmamız gerekir şöyle de açıklayıcı bir örnek veriyim daha iyi anlaşılsın.




    Burada döndürülecek değer yani sonucumuz int yani integer(tamsayı) olmalıdır neden? Çünkü faktoriyel isimli fonksiyonumuzdan önce int yazıyor. Sonra parametre kısmına bakıyorum (int x,int y) demek ki 2 tane değişken gönderiyoruz çağırdığımız fonksiyona x ve y hemde integer veri tipinde yani tamsayı. Belki şu kısıma takılan olur diye belirtmeden geçemeyeceğim.Tam sayı derken mesela 3 mesela 5 , double veri tipinde olsaydı 3.4 , 5.0 evet 5.0 da bir double tip yani ondalık sayı bundan şunu anlayabilirsiniz sonuçlarınız tam sayı olduğu halde virgüllü ,0 halinde çıksın isterseniz double tipine çevirmeniz yeterli olur.

    Fonksiyonları biz programlamada kolaylık olsun diye kullanıyoruz aslında mesela bir birinden farklı sayıların mesela 100 farklı sayının faktoriyelini almaya çalışan bir program yazacağımız zaman 100 kere aynı kodu yazmak yerine bir kere faktoriyel fonksiyonunu yazarım işim düşüncede o fonksiyonu çağırırım nasıl kulağa hoş geliyor değil mi ?
    Çok daha fazlası var mesela bir kere faktoriyel fonksiyonunu yazdınız diyelim ki oda 5 satırlık basit bir kod 100 kere çağırın aynı fonksiyonu eğer 5 satır kod içinde hatanız yoksa sorun olmaz peki ya 5x100 500 satırda acaba kaç kere hataya düşersiniz.

    O yüzden hatalarınız azalsın programlarınız hız kazansın diye fonksiyonlarınızı oluşturun ihtiyacınız oldukça bol bol çağırın o fonksiyonları.

    Bahsettin bahsettin vermedin şu faktoriyel hesabını demeyin, diye onu da veriyorum:

    Bu normal fonksiyonsuz hali:





    Buda fonsiyonla çağırılmış hali:





    fonksiyonlu halinde yazan faktoriyel(x); kısmını kaç kere kullanırsanız o kadar çok faktoriyelini almış olursunuz.

    100 kere şu kodları yazacağıma:


    100 kere faktoriyel(x); yazarım! Nasıl ama?
     

Bu Sayfayı Paylaş