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:
-
Fonksiyon bildirimi (Prototype) – Fonksiyonun ne yaptığı ve nasıl çağrılacağı tanımlanır.
-
Fonksiyon tanımı (Definition) – Fonksiyonun içeriği yazılır.
-
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
Yorum Gönder