Bu Blogda Ara

27 Haziran 2014 Cuma

Fonksiyonlar

  Bilgisayar programları fonksiyonların birleşiminden oluşur. Şu ana kadar yaptığımız programlar printf,scanf, strcmp gibi fonksiyonlardan oluşuyordu. Bunlar kolaylık olsun diye üretilmiş standard fonksiyonlardır siz de kendi fonksiyonlarınızı, kütüphanelerinizi üretebilirsiniz.

  Fonksiyonları günlük hayattan örneklemek gerekirse şöyle düşünebiliriz. Örneğin kek_yap () isimli bir fonksiyonumuz olsun. Kek yapabilmemiz için önce hamur, fırın, çikolata gibi malzemelere (değişkenler) ihtiyacımız var. Fonksiyon çalıştıktan sonra da çıkış değeri olarak (return )bize kek üretir.


int tamsayi_topla( int x, int y )
  {
     int sonuc;
     sonuc = x + y;
     return sonuc;
  }
  
    

  Yukarıdaki tamsayi_topla isminde bir fonksiyon görüyorsunuz. Bu fonksiyon 2 tane int değerini toplayarak sonuc isminde bir int değeri döndürüyor.  Kırmızı ile yazılan kısım fonksiyonun ne tipte bir veri çıkaracağını gösterir. Lacivert kısım fonksiyona verdiğiniz isim, turuncu kısım giriş verileri (kek örneğindeki malzemeler), mor kısımsa yapılacak işlemlerdir. Fonksiyon return ile sonuç değerini döndürür. 
   Günlük hayattan örneklere devam ediyoruz, örneğin yürüme() isminde bir fonksiyon düşünün. Bu fonksiyonun giriş çıkış verileri nelerdir? Aklınıza birşey gelmediyse sorun yok, bazı fonksiyonların bu kısımları boştur. Bu 'yok' demek değildir tabi ki.
  
    void yürüme(void ) {
                              // işlemler
                          }

   Bu boş değere void denir. Herhangi bir değer almaz, herhangi bir değer döndürmez. Bu nedenle return de olmaz. void kelimesi yazılmak zorunda değildir, birşey yazılmadığında bu void anlamındadır.

           yürüme() {
                              // işlemler
                          }

   Fonksiyon tanımlaması main'in üstünde veya altında yapılabilir bu size kalmış. Ben main'den sonra yazmayı tercih ettim. Program iki sayıyı kullanıcıdan aldıktan sonra topla() fonksiyonuna bu sayıları gönderiyor. Fonksiyon iki sayıyı toplayıp sonucu veriyor ve biz de bu sonucu toplam adında bir değişkene atıp ekrana yazdırıyoruz. Toplam değişkenini kullanmadan da şu şekilde ekrana yazdırabilirdik:

                                       printf( "toplam: %d", topla(sayi1,sayi2) );

   
    Bu sefer topla isimli fonksiyonumuz bir değer döndürmüyor. Main içinde de fonksiyonu çağırmaktan başka birşey yapmadık, bütün işi fonksiyonumuz yaptı. Daha büyük bir program yazdığınızı ve bu işlemi sık sık kullandığınızı düşünün, böylece aynı işlemleri tekrar tekrar yazmak yerine sadece fonksiyon çağırarak zamandan ve yerden kazanmış olduk.
   Bir önceki fonksiyonda x ve y değişkenlerini kullanırken main'de sayı1 ve sayı2 değişkenlerini kullanmıştık. Bunun sebebi x ve y'nin fonksiyon içinde tanıtılıp sadece fonksiyona özel, yerel değişken olmasıdır. Aynı şekilde sayı1 ve sayı2 de main'in içinde tanıtılmış ve yerel birer değişkendir.
   Yerel değişken diye birşey varsa genel değişken de olmalı (: Genel değişkenler main'in üstünde tanımlanır ve hem main hem fonksiyonlar bunlara ulaşabilir.
   
   Program kullanıcıdan aldığı sayıyı artir() adında bir fonksiyonla 5 arttırarak ekrana yazdırıyor. artis_miktari main'in üstünde tanımlanmış global bir değişkendir ve fonksiyon bunu kullanabilir, sayi değişkeni ise main içindedir ve sadece main tarafından kullanılabilir.

Hiç yorum yok:

Yorum Gönder