Thread Starter
#0
Bu rehber; C++’a yeni başlayan veya temeli olan ama oturtmak isteyenler için:
- Temel sözdizimi
- Değişkenler, tipler
- Koşullar, döngüler
- Fonksiyonlar
- Sınıflar & OOP
- Pointer, referans
- STL (vector, map vs.)
- Derleme & proje mantığı
1️⃣ C++ Nedir? Nerede Kullanılır?
| Başlık | Açıklama |
|---|---|
| Dil Tipi | Derlenen, yüksek performanslı, genel amaçlı programlama dili. |
| Paradigma | Nesne yönelimli (OOP), prosedürel, generic programlama desteği vardır. |
| Kullanım Alanları | Sistem programlama, oyun motorları, gömülü sistemler, finans, yüksek performanslı uygulamalar, masaüstü yazılımlar. |
| Avantajları | Hız, düşük seviye kontrol, büyük kütüphane ekosistemi, çapraz platform. |
| Dezavantajları | Manuel bellek yönetimi, başlangıçta karmaşık gelebilir. |
2️⃣ Temel Yapı Taşları (main, include, namespace)
| Kavram | Açıklama | Örnek Kullanım |
|---|---|---|
| include | Kütüphane eklemek için kullanılır. | #include <iostream> |
| namespace | İsim çakışmalarını önler, std en sık kullanılanıdır. | using namespace std; (öğrenirken iş görür) |
| main fonksiyonu | Program giriş noktasıdır. | int main() { ... } |
| return 0 | Programın başarılı bittiğini gösterir. | return 0; |
3️⃣ Veri Tipleri ve Değişkenler
| Tip | Açıklama | Örnek |
|---|---|---|
| int | Tamsayı | int sayi = 10; |
| double | Ondalıklı sayı | double pi = 3.14; |
| char | Tek karakter | char harf = 'A'; |
| bool | Mantıksal (true/false) | bool aktif = true; |
| string (std::string) | Metin | string ad = "Berk"; |
| long long | Büyük tamsayı | long long büyük = 10000000000; |
4️⃣ Operatörler
| Tür | Örnek | Açıklama |
|---|---|---|
| Aritmetik | + - * / % | Toplama, çıkarma, çarpma, bölme, mod alma. |
| Karşılaştırma | == != < > <= >= | İki değeri kıyaslar, bool döner. |
| Mantıksal | `&& | |
| Atama | = += -= | Değer atama ve artırma/azaltma. |
| Artırma/Azaltma | ++ -- | 1 artırır / 1 azaltır (ön/son kullanım önemli). |
5️⃣ Koşullar (if – else, switch)
| Yapı | Ne İşe Yarar? | Örnek Mantık |
|---|---|---|
| if | Şarta göre kod çalıştırır. | if (sayi > 0) { ... } |
| if – else | Koşul doğruysa/yanlışsa farklı bloklar. | Pozitif / negatif kontrolü. |
| else if | Birden fazla koşulu zincirler. | Not aralıkları kontrolü. |
| switch | Tek değişkenin farklı sabit değerlerini test eder. | Menü seçimleri, sabit kodlar. |
6️⃣ Döngüler (for, while, do-while)
| Döngü | Kullanım Amaçları | Örnek Senaryo |
|---|---|---|
| for | Belirli sayıda döndüğünde kullanılır. | 0’dan 100’e kadar saydırma. |
| while | Koşul doğru olduğu sürece döner. | Kullanıcı doğru giriş yapana kadar bekleme. |
| do-while | Önce çalışır, sonra kontrol eder. | En az 1 kere çalışması gereken menü. |
| break | Döngüyü anında sonlandırır. | Aranan değeri bulunca çıkış. |
| continue | O turu atlayıp sonraki tura geçer. | Belirli koşulda işlem yapmadan geçme. |
7️⃣ Fonksiyonlar
| Kavram | Açıklama | Örnek Mantık |
|---|---|---|
| Fonksiyon | Tekrar eden kodu bir isim altında toplar. | int topla(int a, int b) |
| Parametre | Fonksiyona dışarıdan verilen değer. | int kare(int x) |
| Geri Dönüş Değeri | Fonksiyonun ürettiği sonuç tipi. | double hesapla(...) |
| void | Değer döndürmeyen fonksiyon. | void yazdir() |
| Overload | Aynı isimle farklı parametreli fonksiyonlar. | topla(int,int) ve topla(double,double) |
8️⃣ Diziler (Array), Vektörler (std::vector)
| Yapı | Açıklama | Ne Zaman Kullanılır? |
|---|---|---|
| C tarzı dizi | Sabit boyutlu, temel array. | Boyut sabitse, düşük seviye kontrol gerekince. |
| std::vector | Dinamik boyutlu dizi | Eleman sayısının değiştiği durumlar. |
| push_back | Vektöre sondan eleman ekler. | Liste büyütme. |
| size() | Eleman sayısını döner. | Döngü kurarken. |
9️⃣ Pointer ve Referans Temeli
| Kavram | Açıklama | Basit Özet |
|---|---|---|
| Pointer | Bellek adresini tutan değişken. | int* ptr ⇒ int adresi saklar. |
| & (adres operatörü) | Değişkenin adresini alır. | &sayi ⇒ sayi’nin adresi. |
| * (dereference) | Pointer’ın gösterdiği değere erişir. | *ptr ⇒ işaret edilen değer. |
| Referans | Başka bir değişkenin takma ismi. | int &r = sayi; |
| Kullanım Amacı | Performans, büyük veri kopyalamamak, düşük seviye kontrol. | Özellikle fonksiyon parametrelerinde. |
🔟 Sınıflar (class) ve OOP
| Kavram | Açıklama | Örnek Mantık |
|---|---|---|
| class | Veri + fonksiyonları tek yapıda toplar. | class Araba { ... }; |
| public | Dışarıdan erişilebilen üyeler. | public: void calistir(); |
| private | Sadece sınıf içinden erişilen üyeler. | Değişkenleri saklamak. |
| constructor (kurucu) | Nesne oluşturulurken çalışan özel fonksiyon. | Başlangıç değerlerini atar. |
| destructor (yıkıcı) | Nesne yok olurken çalışan fonksiyon. | Bellek veya kaynak temizleme. |
| this | Mevcut nesneyi temsil eder. | Aynı isimli parametrelerde ayrım. |
1️⃣1️⃣ STL (Standart Template Library) – Kısa Özet
| Yapı | Açıklama | Kullanım Alanı |
|---|---|---|
| vector | Dinamik dizi | Liste ve genel veri depolama. |
| list | Çift bağlı liste | Çok sık ekleme/çıkarma gereken yapılar. |
| map | Anahtar – değer çiftleri | Sözlük, indeksli veri. |
| set | Benzersiz eleman kümesi | Tekrarsız veri tutma. |
| queue | Kuyruk | FIFO işlemler. |
| stack | Yığın | LIFO işlemler. |
1️⃣2️⃣ Derleme, IDE ve Proje Mantığı
| Konu | Açıklama |
|---|---|
| Derleyici | C++ kodunu makine koduna çevirir (g++, clang, MSVC vb.). |
| IDE | Visual Studio, CLion, Code::Blocks, VS Code + eklenti gibi geliştirme ortamları. |
| Tek dosya derleme | Ufak projelerde temel yaklaşım, main + birkaç fonksiyon. |
| Çok dosyalı proje | Büyük projelerde header (.h/.hpp) + kaynak (.cpp) dosyalarına bölme. |
| Build sistemi | CMake, Makefile gibi sistemlerle derleme sürecini yönetme. |
1️⃣3️⃣ C++ Öğrenirken Dikkat Edilecek Noktalar
| Başlık | Öneri |
|---|---|
| Bellek Yönetimi | new / delete yerine mümkünse smart pointer (unique_ptr, shared_ptr) öğren. |
| std kullanımı | Mümkün olduğunca STL konteynerleri öğren ve kullan. |
| Hata Ayıklama | Küçük parçalarda test ederek ilerle (adım adım). |
| Kod Stili | İsimlendirme, girinti, yorum satırlarını düzenli kullan. |
| Proje | Teoriyi hemen küçük proje ile destekle (örneğin not takip programı, küçük oyun, mini veritabanı simülasyonu). |
[IMG width="249px" size="1050x1050"]https://i.hizliresim.com/a6d55tm.png[/IMG]