C++ Fonksiyonlara Giriş: Tanımlama, Çağırma, Parametreler
C++ fonksiyonlarını öğrenin. Fonksiyon tanımlama, çağırma ve parametre kullanımıyla modüler programlama örnekleri keşfedin.
C++’ta fonksiyonlar (functions), belirli bir görevi yerine getiren, tekrar kullanılabilir kod bloklarıdır. Büyük programlarda kodun düzenli, okunabilir ve yönetilebilir olmasını sağlarlar. Bu makalede fonksiyon tanımlama, çağırma, parametre kullanımı ve geri dönüş değerleri konularını adım adım öğreneceğiz.
1. Fonksiyon Nedir?
Fonksiyon, bir işlemi gerçekleştiren ve isteğe bağlı olarak bir değer döndüren bağımsız bir kod bloğudur. C++’ta bir fonksiyonun genel yapısı aşağıdaki gibidir:
geri_donus_tipi fonksiyonAdi(parametreler) {
// Fonksiyon gövdesi
}
Örnek:
int Topla(int a, int b) {
return a + b;
}
Bu fonksiyon iki tam sayıyı alır ve toplamını döndürür.
2. Fonksiyonun 4 Temel Bileşeni
| Bileşen | Açıklama | Örnek |
|---|---|---|
| Geri dönüş tipi | Fonksiyonun döndürdüğü veri türü | int |
| Fonksiyon adı | Çağırırken kullanılacak isim | Topla |
| Parametre listesi | Fonksiyonun alacağı değerler | (int a, int b) |
| Gövde (body) | Fonksiyonun çalıştıracağı kodlar | { return a + b; } |
3. Fonksiyon Tanımlama ve Çağırma
Fonksiyonlar, main() fonksiyonu içinde veya dışında çağrılabilir.
Genellikle main() dışında tanımlanır ve içinde çağrılır.
#include <iostream>
using namespace std;
int Topla(int x, int y) {
return x + y;
}
int main() {
int sonuc = Topla(5, 8);
cout << "Toplam: " << sonuc << endl;
return 0;
}
Fonksiyon çağrılırken, parametreler sırayla gönderilir.
Topla(5, 8) çağrısı ile x=5 ve y=8 olur.
4. Geri Dönüş Tipi (return)
Bir fonksiyon, işlem sonucunu çağrıldığı yere döndürebilir.
return ifadesiyle bu değer belirtilir.
double Ortalama(int a, int b, int c) {
return (a + b + c) / 3.0;
}
int main() {
cout << "Ortalama: " << Ortalama(70, 85, 90) << endl;
}
Eğer fonksiyon hiçbir değer döndürmeyecekse, dönüş tipi void olarak tanımlanır.
void MesajYaz() {
cout << "Merhaba, C++!" << endl;
}
5. Parametre Kullanımı
Fonksiyonlara parametre göndererek dinamik işlem yapılabilir. Parametreler değerle veya referansla aktarılabilir.
Değerle Aktarma (Pass by Value)
Fonksiyona gönderilen değişkenin bir kopyası kullanılır. Orijinal değişken etkilenmez.
void DegeriDegistir(int x) {
x = x + 10;
}
int main() {
int sayi = 5;
DegeriDegistir(sayi);
cout << sayi; // 5
}
Referansla Aktarma (Pass by Reference)
& işareti kullanılarak değişkenin kendisi fonksiyona gönderilir.
Bu durumda fonksiyon içinde yapılan değişiklik orijinal değişkeni de etkiler.
void DegeriDegistir(int &x) {
x = x + 10;
}
int main() {
int sayi = 5;
DegeriDegistir(sayi);
cout << sayi; // 15
}
6. Varsayılan Parametreler (Default Arguments)
C++’ta fonksiyon parametrelerine varsayılan değer atanabilir. Çağrıda bu parametre gönderilmezse, varsayılan değer kullanılır.
void Selamla(string isim = "Ziyaretçi") {
cout << "Merhaba, " << isim << "!" << endl;
}
int main() {
Selamla(); // Merhaba, Ziyaretçi!
Selamla("Ayşe"); // Merhaba, Ayşe!
}
7. Fonksiyon Bildirimi (Declaration / Prototype)
C++ derleyicisi, fonksiyonun nerede tanımlandığını bilmeden önce çağrıldığında hata verir. Bu durumda fonksiyonun imzası (prototype) üstte bildirilir.
// Bildirim
int Topla(int a, int b);
int main() {
cout << Topla(3, 4);
}
// Tanım
int Topla(int a, int b) {
return a + b;
}
8. Aşırı Yükleme (Function Overloading)
C++’ta aynı isimde birden fazla fonksiyon tanımlanabilir. Ancak parametre sayısı veya türü farklı olmalıdır.
int Topla(int a, int b) {
return a + b;
}
double Topla(double a, double b) {
return a + b;
}
int main() {
cout << Topla(3, 4) << endl; // int sürümü
cout << Topla(2.5, 4.1) << endl; // double sürümü
}
9. Örnek Uygulama: Geometrik Hesaplamalar
Aşağıdaki örnekte fonksiyonlar birden fazla türde hesaplama yapmak için kullanılmıştır.
#include <iostream>
using namespace std;
double KareAlan(double kenar) {
return kenar * kenar;
}
double DikdortgenAlan(double kisa, double uzun) {
return kisa * uzun;
}
int main() {
cout << "Kare alanı: " << KareAlan(4) << endl;
cout << "Dikdörtgen alanı: " << DikdortgenAlan(3, 5) << endl;
return 0;
}
Bu örnek, aynı programda birden fazla fonksiyonun nasıl tanımlanıp çağrılabileceğini göstermektedir.
10. TL;DR
- Fonksiyonlar, tekrar eden işlemleri modüler hale getirir.
returndeğeri döndürür;voiddöndürmez.- Parametreler değerle veya referansla aktarılabilir.
- Varsayılan parametrelerle esnek çağrılar yapılabilir.
- Aynı isimli birden fazla fonksiyon tanımlanabilir (overloading).
- Kodlar Visual Studio 2022 veya GCC 11+ derleyicilerinde çalıştırılabilir.