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:

Python While Döngüsü

Python for döngüsü

Python Fonksiyonlar