C++ Fonksiyonlar

1. Fonksiyonlara Giris:

Fonksiyonlarin programlama hayatina girmesi ile daha büyük
boyutta sistemlerin tasarimi mümkün hale gelmistir. Fonksiyonlar ile
alakali derslerimizde, fonksiyonlarin tanimlanmasi ve kullanimi
hakkinda bilgi edineceksiniz. Fonksiyonlar konusu size her ne kadar
ilk bakista "Fonksiyon" adi altinda bir konu gibi gelse de, aslinda
bir alt programdir. Hatta programimizin içine, kodlamamizin daha
kolay ve gelistirilebilir hale gelmesini saglayan programciklar da
diyebiliriz.



Daha önce baska bir programlama dili gördüyseniz (yüksek seviyeli
diller), bu konuda fazla zorlanmayacaksinizdir. Diger yüksek
seviyeli dillerdeki fonksiyon kullanimina çok benzemektedir. Hiç
bilmediginizi farz ederek konuya giris yapalim.



Fonksiyon Nedir?



Örnegin, y=F(x) fonksiyonu; Bu matematiksel fonksiyon parametre
olarak aldinan deger üzerinde bir islem gerçeklestirip, bir sonuç
degerini döndürür. Mesela F(x)=x^3+5 seklinde bir fonksiyonumuz
olsun, x=2 için F(x)=13 olur. Burada x fonksiyonun parametresi, 13
ise fonksiyonun geri döndürdügü degerdir. Simdi de bu matematiksel
ifadeyi kodlarimizla yorumlayalim.



Int x;

x=F(2,5)



//buradan da " int f(2,5) " gibi görebiliriz...



Dikkat edersek ikinci satirda, daha önce islemedigimiz bir kod var.
Int x, F(2,5) degerine esitlenmistir. Simdi bir fonksiyonun nasil
yazildiginin kalibini çikartabiliriz.



<Döndürdügü deger> <Fonksiyonun adi> ( <parametre listesi> ) {



<ifadeler>

}






Buradaki parantezlere ve küme isaretlerine dikkat ediniz. Simdi
yukarda yazdigimiz kalibi biraz açalim.



<Döndürdügü deger> : Fonksiyon her hangi bir tipte deger
döndürebilir. Bu bilesen fonksiyonun döndürecegi degerin tipini
ifade eder. (örnegin, int, dounle, float v.s v.s )



<Fonksiyonun adi> : Yapmak istedigimiz islemin adidir. Örnegin bir
asal sayi fonksiyonu yazacagiz. Burada yazacagimiz fonksiyonun adini
belirtiyoruz. Benim size tavsiyem AsalSayi veya asal_sayi seklinde
kullanmanizdir. Okunabilirlik açisindan size avantaj saglayacaktir.



<parametre listesi> : Fonksiyonun kullanacaga parametrelerin tipleri
ile siralanir. Örnegin, FonksiyonAdi(int x, double y) gibi.



<ifadeler> : Fonksiyonun kullanacagi tanimlamalar ve kodlardan
olusan kisimdir. Nasil biz main() { kodlar } seklinde kullaniyorsak.
Bunu da ona benzetebiliriz. Ama main() i bunlarla karistirmayiniz.



Simdi bu fonksiyon kalibina uygun bir kod yazalim. Örnegin,
Faktoriyel bulma islemini ele alalim. Biz bir sayinin Faktörüyelini
nasil bulurduk?



n!=n(n-1)(n-2)...1 Yani, 1 den n e kadar olan
sayilarin çarpimidir.



long Faktoriyel(int n) {

return n*Faktoriyel(n-1);

}






Evet, burada fonksiyonumuzu tanimladik. Sanirim yukaridaki blokla
karsilastirinca, ne kadar kolay oldugunu sizde görmüssünüzdür. Simdi
bu Faktoriyel fonksiyonumuzu nasil bir programda kullanacagiz? Hemen
devamini yazayim.



long Faktoriyel(int n) {

return n*Faktoriyel(n-1);

}

void main() {

cout<<"5! (Bes Faktoriyel)= "<<Faktoriyel(5);

}






Iste gördügünüz gibi ne kadar basit degil mi? J Fonksiyonumuzu
tanimladik. Sonra programimizda n`e 5 degerini verdik. Faktoriyel
fonksiyonu hesaplayip bize söyledi.



Biraz da yaygin yapilan hatalardan ve dikkat etmemiz gereken
noktalardan bahsedelim. Kodlama yaparken fonksiyon adini belirttigim
sekilde yazarsaniz 30-40 sayfalik kodlarda hata bulmaniz ve de
fonksiyonlarin yerini belirlemeniz açisindan büyük kolaylik
olucaktir. Yukarida verdigimiz x=F(2,5) fonksiyonununu göz önünde
tutalim. Görüldügü gibi F(2,5) degeri x e atanmistir. Hiç bir zaman
Fonksiyonun aldigi deger sola yazilmaz. Ayrica bir Fonksiyon çagrisi,
baska bir fonksiyonun çagrisi olabilir. Örnegin, x=F(a,F(a,5) gibi.
Burada F Fonksiyonun iki parametresi vardir a ve F(a,5) dir. Bu
durumda öncelikle parametreler hesaplananacagi için F(a,5) in degeri
ile a nin degeri F te parametreler olarak kullanilir.



Hanci.org sizlere daha iyi hizmet sunmak için çerezleri kullanıyor.
Hanci.org sitesini kullanarak çerez politikamızı kabul etmiş olacaksınız.
Detaylı bilgi almak için Gizlilik ve Çerez Politikası metnimizi inceleyebilirsiniz.