C++ Programlama: Temellerden İleri Düzeye
C++ Programlama: Temellerden İleri Düzeye
C++, 1979 yılında Bjarne Stroustrup tarafından geliştirilen, genel amaçlı bir programlama dilidir. C dilinin üzerine inşa edilen bu dil, nesne yönelimli programlama (OOP) özellikleri ile birlikte güçlü bir sistem programlama dilidir. C++’ın popülaritesi, performansı, esnekliği ve geniş bir kütüphane desteği ile birlikte, günümüzde birçok yazılım geliştirme alanında tercih edilmesini sağlamaktadır. Bu makalede, C++ programlamanın temellerinden başlayarak ileri düzey konulara kadar olan yolculuğunu keşfedeceğiz.
C++’ın Temelleri
C++ dilini öğrenmeye başlarken, öncelikle temel sözdizimi ve yapılar üzerinde durmalıyız. C++ dilinin temel bileşenleri arasında değişkenler, veri tipleri, operatörler, kontrol yapıları ve fonksiyonlar yer almaktadır.
1. **Değişkenler ve Veri Tipleri**: C++’da değişkenler, bellekte veri saklamak için kullanılır. Temel veri tipleri arasında `int`, `float`, `double`, `char` ve `bool` bulunur. Örneğin:
“`cpp
int sayi = 10;
float pi = 3.14;
char harf = ‘A’;
“`
2. **Operatörler**: C++’da matematiksel ve mantıksal işlemler için çeşitli operatörler bulunmaktadır. Aritmetik operatörler (`+`, `-`, `*`, `/`, `%`), karşılaştırma operatörleri (`==`, `!=`, `<`, `>`, `<=`, `>=`) ve mantıksal operatörler (`&&`, `||`, `!`) en yaygın olanlardır.
3. **Kontrol Yapıları**: C++’da akış kontrolü için `if`, `else`, `switch`, `for`, `while` ve `do-while` gibi yapılar kullanılır. Örneğin:
“`cpp
if (sayi > 0)
cout << "Sayı pozitif."; else cout << "Sayı negatif."; “` 4. **Fonksiyonlar**: Fonksiyonlar, belirli bir işlevi yerine getiren kod bloklarıdır. C++’da fonksiyon tanımlamak için `return_type function_name(parameters)` şeklinde bir yapı kullanılır. Örneğin: “`cpp int topla(int a, int b) return a + b; “`
Nesne Yönelimli Programlama (OOP)
C++’ın en güçlü özelliklerinden biri, nesne yönelimli programlama paradigmalarını desteklemesidir. OOP’nin temel kavramları arasında sınıflar, nesneler, kalıtım, kapsülleme ve çok biçimlilik yer almaktadır.
1. **Sınıflar ve Nesneler**: Sınıflar, veri ve fonksiyonları bir arada tutan bir yapıdır. Nesneler ise sınıfların örnekleridir. Örneğin:
“`cpp
class Araba
public:
string marka;
int yil;
void bilgiGoster()
cout << "Marka: " << marka << ", Yıl: " << yil << endl; ; Araba araba1; araba1.marka = “Toyota”; araba1.yil = 2020; araba1.bilgiGoster(); “` 2. **Kalıtım**: Kalıtım, bir sınıfın başka bir sınıftan özellik ve davranışları devralmasını sağlar. Bu, kodun yeniden kullanılabilirliğini artırır. Örneğin: “`cpp class ElektrikliAraba : public Araba public: int bataryaKapasitesi; void bilgiGoster() Araba::bilgiGoster(); cout << "Batarya Kapasitesi: " << bataryaKapasitesi << " kWh" << endl; ; “` 3. **Kapsülleme**: Kapsülleme, veri ve fonksiyonların bir arada tutulmasını sağlar ve dışarıdan erişimi kontrol eder. Bu, veri gizliliği sağlar. Örneğin, sınıf üyelerini `private` olarak tanımlayarak dışarıdan erişimi kısıtlayabilirsiniz. 4. **Çok Biçimlilik**: Çok biçimlilik, bir fonksiyonun veya metodun farklı nesne türleri ile çalışabilmesini sağlar. Bu, genellikle sanal fonksiyonlar ve polimorfizm ile gerçekleştirilir.
C++’da İleri Düzey Konular
C++ dilinde ileri düzey konular, daha karmaşık ve güçlü uygulamalar geliştirmek için gereklidir. Bu konular arasında şablonlar, istisna yönetimi, akıllı işaretçiler ve çoklu iş parçacığı (multithreading) yer almaktadır.
1. **Şablonlar**: Şablonlar, fonksiyon ve sınıfların tür bağımsız bir şekilde tanımlanmasını sağlar. Bu, kodun yeniden kullanılabilirliğini artırır. Örneğin:
“`cpp
template
T topla(T a, T b)
return a + b;
“`
2. **İstisna Yönetimi**: C++’da hata yönetimi için istisna (exception) kullanılır. `try`, `catch` ve `throw` anahtar kelimeleri ile hata yönetimi yapılabilir. Örneğin:
“`cpp
try
throw “Bir hata oluştu!”;
catch (const char* msg)
cout << msg << endl; “` 3. **Akıllı İşaretçiler**: Bellek yönetimi için akıllı işaretçiler (`std::unique_ptr`, `std::shared_ptr`) kullanmak, bellek sızıntılarını önlemeye yardımcı olur. 4. **Çoklu İş Parçacığı**: C++11 ile birlikte çoklu iş parçacığı desteği eklenmiştir. `std::thread` sınıfı ile çoklu iş parçacıkları oluşturulabilir ve yönetilebilir. C++, güçlü bir programlama dili olarak hem sistem yazılımları hem de uygulama geliştirme alanında geniş bir yelpazede kullanılmaktadır. Temel bilgileri öğrenmek, nesne yönelimli programlama kavramlarını anlamak ve ileri düzey konuları keşfetmek, C++ ile etkili bir şekilde program yazabilmek için önemlidir. C++’ın sunduğu zengin özellikler ve esneklik, yazılımcılara karmaşık projeleri yönetme yeteneği kazandırırken, dilin öğrenilmesi ve uygulanması sürecinde sürekli pratik yapmak da büyük önem taşımaktadır.
SSS
1. C++ ve C arasındaki farklar nelerdir?
C++, C dilinin üzerine inşa edilmiş bir dildir ve nesne yönelimli programlama desteği sunar. C ise prosedürel bir dildir.
2. C++’da hangi veri tipleri bulunur?
C++’da temel veri tipleri arasında `int`, `float`, `double`, `char`, `bool` ve kullanıcı tanımlı veri tipleri (sınıflar, yapılar) bulunur.
3. C++’da bellek yönetimi nasıl yapılır?
C++’da bellek yönetimi, `new` ve `delete` operatörleri ile yapılır. Ayrıca, akıllı işaretçiler kullanarak bellek sızıntılarını önlemek mümkündür.
4. C++’da çoklu iş parçacığı nasıl oluşturulur?
C++11 ile birlikte, `std::thread` sınıfı kullanılarak çoklu iş parçacıkları oluşturulabilir. İş parçacıkları, paralel işlemler gerçekleştirmek için kullanılır.
5. C++ öğrenmek için en iyi kaynaklar nelerdir?
C++ öğrenmek için kitaplar, çevrimiçi kurslar, video dersler ve programlama forumları gibi birçok kaynak mevcuttur. “C++ Primer” ve “Effective C++” gibi kitaplar önerilen kaynaklardandır.