C++ Fonksiyonlar

  C++’ta fonksiyonlar, kod tekrarını önlemek ve programı daha modüler hale getirmek için kullanılır. Fonksiyonlar, belirli bir işlemi yerine getiren kod bloklarıdır ve gerektiğinde çağrılarak çalıştırılırlar.


1. C++ Fonksiyonlarının Tanımlanması

Bir fonksiyon üç ana bileşenden oluşur:

  1. Fonksiyon bildirimi (Prototype) – Fonksiyonun ne yaptığı ve nasıl çağrılacağı tanımlanır.

  2. Fonksiyon tanımı (Definition) – Fonksiyonun içeriği yazılır.

  3. Fonksiyon çağrısı (Call) – Fonksiyonun çalıştırıldığı yerdir.

Genel format:

veri_tipi fonksiyon_adı(parametreler) {
    // Fonksiyonun kodları
    return değer;
}

2. Parametresiz ve Geri Dönüş Değeri Olmayan Fonksiyonlar

Bu tür fonksiyonlar, dışarıdan hiçbir veri almaz ve geri dönüş yapmaz (void kullanılır).

Örnek: Ekrana mesaj yazdıran fonksiyon

#include <iostream>
using namespace std;

// Fonksiyon bildirimi
void mesajYaz() {
    cout << "Merhaba, bu bir fonksiyondur!" << endl;
}

int main() {
    mesajYaz(); // Fonksiyon çağrısı
    return 0;
}

📌 Çıktı:

Merhaba, bu bir fonksiyondur!

3. Parametre Alan ve Geri Değer Döndürmeyen Fonksiyonlar

Bazı fonksiyonlar dışarıdan parametre alır ama geri dönüş değeri olmaz.

Örnek: Girilen sayının karesini ekrana yazan fonksiyon

#include <iostream>
using namespace std;

// Parametre alan fonksiyon
void kareYaz(int sayi) {
    cout << "Sayının karesi: " << (sayi * sayi) << endl;
}

int main() {
    kareYaz(5);
    return 0;
}

📌 Çıktı:

Sayının karesi: 25

4. Geriye Değer Döndüren Fonksiyonlar

Bu tür fonksiyonlar, bir hesaplama yapıp sonucu döndürür.

Örnek: İki sayının toplamını döndüren fonksiyon

#include <iostream>
using namespace std;

// Geri dönüş değeri olan fonksiyon
int topla(int a, int b) {
    return a + b;
}

int main() {
    int sonuc = topla(10, 20);
    cout << "Toplam: " << sonuc << endl;
    return 0;
}

📌 Çıktı:

Toplam: 30

🔹 Fonksiyon dönüş değeri, return ile belirtilir.


5. Varsayılan Parametreler

Fonksiyonlara varsayılan değerler atanabilir.

Örnek: Varsayılan parametreli fonksiyon

#include <iostream>
using namespace std;

// Varsayılan parametre
void selamVer(std::string isim = "Ziyaretçi") {
    cout << "Merhaba, " << isim << "!" << endl;
}

int main() {
    selamVer("Ali");
    selamVer(); // Varsayılan değer kullanılır
    return 0;
}

📌 Çıktı:

Merhaba, Ali!
Merhaba, Ziyaretçi!

6. Değer ve Referans ile Parametre Geçirme

C++’ta fonksiyonlara değer (pass-by-value) veya referans (pass-by-reference) ile parametre geçirebiliriz.

6.1. Değer ile Parametre Geçirme

Bu yöntemde, orijinal değişken değişmez.

#include <iostream>
using namespace std;

void degistir(int x) {
    x = 100;
}

int main() {
    int sayi = 50;
    degistir(sayi);
    cout << "Sayi: " << sayi << endl; // Değer değişmez
    return 0;
}

📌 Çıktı:

Sayi: 50

🔹 x değişti ama sayi değişmedi!


6.2. Referans ile Parametre Geçirme

Bu yöntemde, orijinal değişken değişir.

#include <iostream>
using namespace std;

void degistir(int &x) {
    x = 100;
}

int main() {
    int sayi = 50;
    degistir(sayi);
    cout << "Sayi: " << sayi << endl; // Değer değişir
    return 0;
}

📌 Çıktı:

Sayi: 100

🔹 & işareti, değişkenin referansını fonksiyona geçirir. Böylece gerçek değişken değişir.


7. Aşırı Yüklenmiş (Overloaded) Fonksiyonlar

Aynı isimde ama farklı parametre tiplerinde fonksiyonlar tanımlanabilir.

Örnek: Toplama fonksiyonunu overload etmek

#include <iostream>
using namespace std;

// İki int sayıyı toplar
int topla(int a, int b) {
    return a + b;
}

// İki double sayıyı toplar
double topla(double a, double b) {
    return a + b;
}

int main() {
    cout << "Toplam (int): " << topla(5, 10) << endl;
    cout << "Toplam (double): " << topla(5.5, 2.3) << endl;
    return 0;
}

📌 Çıktı:

Toplam (int): 15
Toplam (double): 7.8

🔹 Fonksiyon aşırı yükleme (Overloading), aynı ismi farklı parametrelerle kullanmamıza olanak tanır.


8. Özyinelemeli (Recursive) Fonksiyonlar

Bir fonksiyon kendi kendini çağırıyorsa buna özyineleme (recursion) denir.

Örnek: Faktöriyel hesaplama

#include <iostream>
using namespace std;

// Recursive faktöriyel fonksiyonu
int faktoriyel(int n) {
    if (n == 0) return 1; // Durma koşulu
    return n * faktoriyel(n - 1);
}

int main() {
    cout << "5! = " << faktoriyel(5) << endl;
    return 0;
}

📌 Çıktı:

5! = 120

🔹 faktoriyel(5), faktoriyel(4), faktoriyel(3)... şeklinde kendi kendini çağırarak çalışır.


Özet

Fonksiyonlar, kod tekrarını önler ve programı daha düzenli hale getirir.
void fonksiyonlar geri dönüş yapmaz, return kullanan fonksiyonlar değer döndürür.
Varsayılan parametreler, fonksiyon çağrılırken kullanılmazsa atanır.
Referans ile parametre geçirme, orijinal değişkeni değiştirir.
Overloading (Aşırı Yükleme) ile aynı isimde farklı parametreli fonksiyonlar yazılabilir.
Recursive (Özyinelemeli) fonksiyonlar, kendi kendini çağırarak çalışır.



Yorumlar

Sitedeki popüler yayınlar:

Kullanım Alanlarına Göre Farklı Linux Dağıtımları 3

Kullanım Alanlarına Göre Farklı Linux Dağıtımları

Kullanım Alanlarına Göre Farklı Linux Dagıtımları 2