C++ Başlangıç İçin Fonksiyonlar
C++ Microsoft tarafından geliştirilen bir dil ve karmaşık bir yapıya uyum sağlayabiliyor. Bu yüzden de çoğu arkadaş bu dili yüksek performans gerektiren yazılımlarda kullanıyorlar. Ben de C++ öğrenmek isteyen arkadaşlara örnek olsun diye C++ dilinin önemli bir aşaması olan fonksiyonlar hakkında temel bir şekilde bilgi vereceğim. Öncelikle fonksiyonun ne olduğunu açıklayayım.Fonksiyon Nedir?
Fonksiyonlar, belirli bir görevi yerine getirmek için bir grup kod satırını bir araya getiren kod bloklarıdır. Fonksiyonlar, kod tekrarını azaltır, kodu daha okunabilir ve yönetilebilir hale getirir. PBir fonksiyonun temel yapısı şunları içerir:- Dönüş Tipi (Return Type): Fonksiyonun döndüreceği veri tipini belirtir.
- Fonksiyon Adı (Function Name): Fonksiyonun adıdır ve fonksiyonun çağrılabilmesi için kullanılır.
- Parametre Listesi (Parameter List): Fonksiyonun alacağı giriş değerlerini belirtir.
- Fonksiyon Gövdesi (Function Body): Fonksiyonun gerçekleştireceği işlemleri içeren kod blokları.
Fonksiyon Türleri
1. Void Fonksiyonlar
'void' anahtar kelimesiyle tanımlanan fonksiyonlar, herhangi bir değer döndürmez. Bu tür fonksiyonlar genellikle belirli bir işlemi gerçekleştirmek için kullanılır. Hemen bir örnek vereyim:
C++:
#include <iostream>
// void ile tanımlanan bir fonksiyon
void metin() {
std::cout << "Hello, TurkHackTeam!" << std::endl;
}
int main() {
// metin fonksiyonu parantez ile çağrılır
metin();
return 0;
}
Bu örnekte metin fonksiyonu void ile tanımlanmıştır. main fonksiyonu (programın ana fonksiyonu) içinde ise metin fonksiyonu parantez ile çağrılmıştır.
2. Parametreli Fonksiyonlar
Bu fonksiyonlar, belirli girdiler alabilir ve bu girdilere göre işlemler yapabilir. Parametreli fonksiyonlar aşağıdaki şekilde tanımlanır ve işleme alınır:
C++:
#include <iostream>
// İki tam sayı parametresi alan bir fonksiyon
void matislemi(int a, int b) {
std::cout << "Sonuc: " << (a + b) << std::endl;
}
int main() {
// matislemi fonksiyonu iki argüman ile çağrılır
matislemi(3, 4);
return 0;
}
Örnek olarak yukarıdaki kod a ve b olmak üzere iki int parametresini matislemi fonksiyonuna dahil eder ve başlangıç noktasındaki girilen ifadelere göre toplama işlemi yapılır. Toplama işlemi std::cout bölümünde tanımlanmıştır.
Fonksiyonların Parametre Geçiş Yöntemleri
C++'da fonksiyonlara parametreler farklı yöntemlerle geçirilebilir:1. Değer ile Geçiş (Pass by Value)
Parametreler, fonksiyonlara kopyalanarak geçirilir. Fonksiyon içinde yapılan değişiklikler, orijinal değerleri etkilemez.
C++:
#include <iostream>
void degeridegistir(int x) {
x = 10; // Bu değişiklik, sadece x'in kopyası üzerinde yapılır
}
int main() {
int num = 5;
degeridegistir(num);
std::cout << "num: " << num << std::endl; // num hala 5'tir
return 0;
}
Yukarıdaki örneğimiz çalıştırıldığında num değeri 5 olarak başlar. Ardından değerin bir kopyasının değeri 10 olarak değiştirilir ama çıktı sonucumuz değişmez. Bu örnekteki programlar oturum açma işlevindeki API kaynaklarında kullanılabilir.
2. Referans ile Geçiş (Pass by Reference)
Parametreler, fonksiyonlara referans olarak geçirilir. Fonksiyon içinde yapılan değişiklikler, orijinal değerleri etkiler.
C++:
#include <iostream>
void degeridegistir(int &x) {
x = 10; // Bu değişiklik, orijinal x üzerinde yapılır
}
int main() {
int num = 5;
degeridegistir(num);
std::cout << "num: " << num << std::endl; // num artık 10'dur
return 0;
}
Örnek verecek olursak. Şifre değişimi yaptığınızda eski değer üzerine farklı bir değer girilir ve bu değer de değişir. Kaydedilmediği durumu yukarıda söylemiştim.
3. Adres ile Geçiş (Pass by Pointer)
Parametreler, fonksiyonlara işaretçi olarak geçirilir. Fonksiyon içinde yapılan değişiklikler, orijinal değerleri etkiler.
C++:
#include <iostream>
void degeridegistir(int *x) {
*x = 10; // Bu değişiklik, orijinal x üzerinde yapılır. Ayrıca yıldız ile de belirtilir.
}
int main() {
int num = 5;
degeridegistir(&num);
std::cout << "num: " << num << std::endl; // num artık 10'dur
return 0;
}
Az önce söylediğimin aynısı ama sisteme bunu değiştirdiğimizi kesin belli edecek bir işaret bırakıyoruz.
Kodunuzu Geliştirmeniz İçin Bazı İpuçları
- Anlamlı İsimler Kullanın: Fonksiyon adları, fonksiyonun ne yaptığını açıkça belirtmelidir. Biz Türkçe kodluyoruz mesela ama belirteceğimiz isim çok uzunsa ve karakterlerin kabul olmamasından dolayı anlaşılmıyorsa İngilizcesini de kullanabilirsiniz. Mesela ben sayi yerine num dedim bu küçük bir değişim şu an aklıma gelmiyor ama isimleri çok uzun tutarsanız sonraki düzenlemenizde fonksiyonun işlevi aklınıza gelmeyebilir.
- Tek Bir Görev Yükleyin: Her fonksiyon tek bir görevi yerine getirmelidir. Bu, kodun anlaşılmasını ve bakımını kolaylaştırır.
- Parametre Sayısını Azaltın: Fonksiyonlara fazla sayıda parametre vermek, kodun okunabilirliğini ve bakımını zorlaştırabilir. Gerekirse, yapılar veya sınıflar kullanarak parametreleri gruplandırın.
- Fonksiyonların Uzunluğunu Sınırlayın: Çok uzun fonksiyonlar genellikle karmaşıktır ve anlaşılması zordur. Fonksiyonları daha küçük ve yönetilebilir parçalara bölmek faydalı olacaktır. Tabii yapay zeka geliştiricisiyseniz ayrı bir konu.
- Yinelenen Kodu Ortadan Kaldırın: Yinelenen kodları fonksiyonlar halinde düzenleyerek kod tekrarını en aza indirin. Böylece çalışma ortamınızın verimi artacaktır. (Örneğin KDE bunu yapıyor.)


