C++ Fonksiyonlar

Fonksiyon, belli bir görevi yerine getiren kod yapısıdır. Bu fonksiyonlardan en çok bilineni main() ana fonksiyonudur. Fonksiyon yapısının sağladığı en önemli özelliklerden birisi, bir kodu tekrar tekrar yazmayı gerektirmemesi. Örneğin, program içinde sürekli sayının karesini alan kod yazmak yerine, tek bir fonksiyon içine yazarak kaynak kodun daha sade ve anlaşılabilir olması sağlanır.

Fonksiyon Tanımlama

Bir fonksiyonun genel yapısı şu şekildedir:
veri_tipi fonksiyon_ismi( parametre kısmı ){
    //fonksiyon gövdesi
}
veri_tipi: return edilen (döndürülen) verinin tipi.
fonksiyon_ismi: Fonksiyonu temsil eden isimdir.
parametre kısmı: Fonksiyon içinde kullanılması gereken değişkenlere değerler bu kısımdan atanır. Ancak parametre kısmı boş da olabilir. not: parametre sınırı yoktur.
fonksiyon gövdesi: Bu kısımda fonksiyonun çalıştıracağı kod bulunur.

Kısa bir fonksiyon yazalım.
int kareAl(int a){
    return a*a;
}

Fonksiyon Bildirimi

C++ programlamada bir fonksiyonun çalışması istenirse o fonksiyon mutlaka bir şekilde main() fonksiyonundan önce bildirilmelidir. Eğer fonksiyonu main() fonksiyonunun üstüne yazarsanız ayrıca bildirim yapmaya gerek yoktur. Ancak altına yazarsanız main() fonksiyonunun üstüne fonksiyon bildirimi yapılmalıdır.
#include <iostream>

using namespace std;

int kareAl(int a){
    return a*a;
}

int main(){
    cout << kareAl(3);
    return 0;
}
Yukarıdaki kullanım doğrudur. Fonksiyonu zaten main() fonksiyonundan öce bildirdiğimiz için hata ile karşılaşmayız.
#include <iostream>

using namespace std;

int main(){
    cout << kareAl(3);
    return 0;
}

int kareAl(int a){
    return a*a;
}
Fakat bu şekilde yaparsak, derleyici aşağıdaki gibi hata verecektir.
error: 'kareAl' was not declared in this scope
Bu yüzden fonksiyon bildirimi yaparak bu sorunu çözebiliriz. Aşağıda olduğu gibi:
#include &ltiostream&gt

using namespace std;

int kareAl(int);
//int kareAl(int a); -> bu şekilde de yazılabilir.

int main(){
    cout << kareAl(3);
    return 0;
}

int kareAl(int a){
    return a*a;
}

Fonksiyon Çağırma

Fonksiyon çağırma işlemi yukarıdaki örneklerde gerçekleştirildi. Ancak açıklamak gerekirse fonksiyonu main() fonksiyonu veya başka bir fonksiyon içinde çağırırken yapılması gereken tek şey fonksiyonun ismi ve eğer varsa parametre değerlerini verip çağırmaktır. Çağrılan fonksiyona gidilir ve fonksiyon içindeki kodlar gerekli şekilde derlenir, fonksiyonun veri tipi neyse o şekilde çağrıldığı fonksiyona sonuç return edilir. Ayrıca fonksiyondan döndürülen değer bir değişkende depolanabilir. Aşağıda olduğu gibi:
#include <iostream>

using namespace std;

int kareAl(int a){
    return a*a;
}

int main(){
    int sonuc;

    sonuc = kareAl(4);

    return 0;
}

Değer Döndürmeyen Fonksiyonlar

Bazı fonksiyonlar değer döndürmeyebilir. Bu tür fonksiyonların veri_tipi kısmında void olur. void, fonksiyonun değer döndürmediğini temsil eder. Örnek olarak aşağıdaki değer döndürmeyen fonksiyonu inceleyelim.
#include <iostream>

using namespace std;

void ekranaYaz(){
    cout << "Merhaba";
}


int main(){

    ekranaYaz();
  
    return 0;
}
Değer döndürmeyen fonksiyonlarda, fonksiyonun parametre kısmına da void yazılabilir. Bu, fonksiyonun parametre kullanmadığını belirtmek için kullanılır. Kullanımı isteğe bağlıdır.
void ekranaYaz(void){
    cout << "Merhaba";
}

Recursive Fonksiyonlar (Özyinelemeli)

Recursive fonksiyonlar, fonksiyonun kendi içinde kendisini çağırması ile oluşan fonksiyonlardır. Oldukça güçlü bir programlama yapısıdır. Matematik ve yazılım alanında kritik bir öneme sahiptir. Ancak kullanılması keyfi olmamalıdır. Fazla bellek kaplaması ve yavaş çalışması dezavantajlarıdır.
#include <iostream>

using namespace std;

//recursive fonksiyon
int faktoriyel(int a){
    if(a == 0)
        return 1;
    return a*faktoriyel(a-1);
}

int main(){
    int sonuc = faktoriyel(5);
    cout << sonuc;
    return 0;
}

Hiç yorum yok:

Yorum Gönderme