BÖLÜM 1: DEV C++ İLE BAŞLARKEN
19
1.4 İlk Projenizi Oluşturma
25
1.5 Derleme ve Çalıştırma
26
1.6 Dev C++'da Hata Ayıklama
27
BÖLÜM 2: BİR C++ PROGRAMININ ANATOMİSİ
29
2.1.1 Dahili Başlık Dosyaları
29
2.1.2 Kullanıcı Tarafından Tanımlanan Başlık Dosyaları
31
2.1.2.1. .h Uzantılı Kullanıcı Tanımlı Başlık Dosyaları
31
2.1.2.2. .hpp Uzantılı Kullanıcı Tanımlı Başlık Dosyaları
34
2.1.2.3. .h ve .hpp Karşılaştırma
36
2.2 Main (Ana) Fonksiyon
37
2.2.1 Main Fonksiyonun Temel Yapısı
37
2.2.2 Basit Main Foknsiyon Yapısı
38
2.2.3 Komut Satırı Argümanları
38
2.2.4 Main Fonskiyonun Dönüş Değeri
38
2.3 İfadeler ve Deyimler
39
2.4 Yorumlar/Açıklamalar
40
2.4.1 Tek Satır Yorum/Açıklama
40
2.4.2 Çok Satırlı Yorumlar/Açıklamalar
41
2.4.3 Belge Yorumları/Açıklamaları
42
BÖLÜM 3: C++'DA DEĞİŞKENLERİ VE SABİTLERİ ANLAMA
43
3.2 Temel Veri Türleri
43
3.2.2 Kayan Nokta Türleri
44
3.2.3 Karakter Türleri
44
3.3 Değişken Bildirimi ve Başlatma
45
3.3.2 İlk Değer Atama/İlklendirme
45
3.5 Gelişmiş Kavramlar
47
3.5.1 extern Anahtar Kelimesi
47
3.5.2 Statik Anahtar Kelimesi
47
3.6.1 İkili (Binary) Sistem (Taban–2)
51
3.6.2 Sekizli (Octal) Sistem (Taban–8)
51
3.6.3 Onluk (Decimal) Sistem (Base–10)
52
3.6.4 Onalatılık (Hexadecimal) Sistem (Base–16)
53
3.6.5 İkilik Tabandan Onaltılık Tabana Dönüşüm
53
3.6.6 Onaltılık tabandan Onluk tabana dönüşüm:
54
BÖLÜM 4: G/Ç (I/O) İŞLEMLERİ VE TEMEL BİLGİLER
57
4.1 cout ile Çıktı Üretme
58
4.3 cerr: Standart Hata Akışı
59
4.4 clog: Standart Günlük (Log) Akışı
59
4.5 setw: Alan Genişliğini Ayarla
59
4.6 setprecision: Ondalık Hassasiyetini Ayarla
59
4.7 setfill: Doldurma Karakteri Ayarlama
60
4.8 left, right, internal: Hizalama
60
4.9 hex, oct, dec, bitset: Çıktı Sayı Tabanı
61
4.10 Diğer Veri Türlerinin Girdi ve Çıktı İşlemleri
61
4.11 std Ad Alanını(namespace) Kullanma
62
4.12 Dosya G/Ç İşlemleri
63
4.12.1 Dosyaları Açma ve Kapatma
64
4.12.2 Bir Dosyaya Yazma
64
4.12.4 Dosyaya Ekleme Yapma
66
4.12.6 İkili (Binary) Dosya G/Ç
71
4.12.7 Rastgele Erişim Dosya G/Ç İşlemleri
72
BÖLÜM 5: KONTROL YAPILARI
75
5.1.4 İç İçe if İfadesi
78
5.2 Döngü (loop) Yapıları
80
5.2.3 do–while Döngüsü
81
5.2.4 Sonsuz (Infinite) Döngüler
81
5.2.5 Ölü (Dead) Döngüler
82
5.2.6 Döngü Kontrol İfadeleri
83
5.2.6.2 continue İfadesi
84
5.3 switch–case İfadesi
85
5.3.2 Düşüş (Fall–Through)
86
6.1 Fonksiyonların Temelleri
89
6.2 Fonksiyon Bildirim ve Tanımları
89
6.2.1 Fonksiyon Bildirimi
90
6.2.2 Fonksiyon Tanımı
91
6.3 Main veya Diğer Fonksiyonların İçinde Fonksiyon Kullanımı
94
6.4 Fonksiyonlarda Değer ile Çağrı
96
6.5 Fonksiyonlarda Referans ile Çağrı
97
6.6 Özyinelemeli (Kendini Çağıran) Fonksiyonlar
99
6.7 Küresel Değişkenler ve Fonksiyonlar
102
6.8 Yerel Değişkenler ve Fonksiyonlar
104
6.9 Statik Değişkenler ve Fonksiyonlar
105
7.1 Bildirim, Tanımlama ve İlk Değer Atama
109
7.1.1 Dizilerin Bildirimi ve Kullanımı
109
7.1.2 Dizilerin Başlatılması (İlklendirilmesi)
109
7.2 Tek Boyutlu Dizilerin Kullanımı
110
7.2.2 Öğeleri Değiştirme
111
7.2.3 Öğeler Arasında Döngü
112
7.3 Çok Boyutlu Dizi ve Kullanımı
114
7.4 Dinamik Diziler ve Kullanımı
116
7.5 Dizi Sınır Kontrolü (Array Bounds Checking)
118
7.6 Diziler ve Fonksiyonlar
119
BÖLÜM 8: BİRLİK (UNION), NUMARALANDIRMA (ENUM) VE
8.1.1 Birliklerin Bildirimi ve Kullanımı
123
8.2 Enumlar (Enumerations)
125
8.2.1 Enumların Bildirimi ve Kullanımı
126
8.3.1 Yapıların Bildirimi ve Kullanımı
128
8.3.2 Typedef Kavramı ve Yapılarla Kullanımı
130
8.3.3 Typedef Alternatifi Olarak Using Kullanımı
132
8.4 Diğer Konular ve Başlıklar
133
8.4.1 İç İçe Yapılar ve Birlikler
133
8.4.2 Birliklerin (Union) Yapılar ile Birlikte Kullanımı
135
8.5 İşaretçiler (Pointers) ve Yapılar
138
8.5.1 Yapılara İşaretçiler (Pointers to Structures)
138
8.6 Yapıların Fonksiyonlarla Kullanımı
141
8.6.1 Yapıları Fonksiyonlara Gönderme
141
8.7 Yapılar ile Dizilerin Birlikte Kullanımı
144
8.7.1 Tek Boyutlu Dizilere Olarak Yapılar
144
8.7.2 Çok Boyutlu Diziler ile Yapılar
145
BÖLÜM 9: VEKTÖR, KUYRUK, LİSTELER, KÜMELER, EŞLEMELER VE AĞAÇLAR
149
9.1. Dinamik Diziler: Vektörler (std::vector)
149
9.2. Kuyruk Yapıları (std::queue ve std::priority_queue)
152
9.3. Bağlı Listeler (std::list)
156
9.4. Kümeler (std::set)
159
9.5. Eşlemeler (std::map)
162
9.6. Ağaç Yapıları (Binary Trees)
166
BÖLÜM 10: İŞARETÇİLER
171
10.2 İşaretçiler Nasıl Kullanılır?
171
10.2.1 İşaretçi Oluşturma
171
10.2.2 İşaretçinin Gösterdiği Değere Erişim (Dereference)
171
10.3 İşaretçilerin Değiştirilmesi
172
10.4.1 Adresleme ve İşaretçiler
173
10.4.2 Dinamik Bellek Ayırma ve İşaretçiler
173
10.5 İşaretçiler ve Fonksiyonlar
174
10.6 İşaretçiler ve Diziler
175
10.7 İşaretçiler ve Yapılar
176
10.8 İşaretçiler ve Bağlantılı Listeler
177
10.9 İşaretçiye İşaretçiler
178
10.10 Fonksiyonlara İşaretçiler
179
BÖLÜM 11: MODERN C++ STANDARTLARI (C++11 – C++20)
181
11.1 C++ Standartlarının Evrimi
181
11.2 C++11 Yenilikleri
181
11.2.1 auto Anahtar Sözcüğü
181
11.2.2 nullptr Kavramı
182
11.2.3 Aralık tabanlı for Döngüsü
182
11.2.4 Lambda İfadeleri
182
11.2.5 Akıllı İşaretçiler
182
11.3 C++14 Yenilikleri
183
11.3.1 std::make_unique
183
11.3.2 Lambda İyileştirmeleri
183
11.4 C++17 Yenilikleri
183
11.4.2 Structured Bindings
184
11.5 C++20 Yenilikleri
184
11.5.3 Concepts’e Kısa Giriş
185
11.6 Modern C++ ile Güvenli ve Temiz Kod Yazımı
185
11.7 Özet ve En İyi Uygulamalar
186
NESNEYE YÖNELİK PROGRAMLAMA
BÖLÜM 12: NESNEYE YÖNELİK PROGRAMLAMA KAVRAMLARI
187
BÖLÜM 13: SINIFA GENEL BAKIŞ
191
13.1 Bir Sınıfın Oluşturulması
191
13.2 Erişim Belirleyiciler: Public, Private, Protected
194
13.3 Üye Fonksiyonlar
198
13.4 Varsayılan Yapıcı
200
13.5 Yapıcı Fonksiyonlar
201
13.6 Yıkıcı Fonksiyon
202
13.7.1 Yüzeysel (Shallow) ve Derin (Deep) Kopyalama
205
13.8 Operatör Aşırı Yükleme
207
13.8.1 Atama Operatörü (=)
207
13.8.2 Aritmetik Operatörler (+, –, , /)
207
13.8.3 Artırma ve Azaltma Operatörleri (++, ––)
208
13.8.4 Karşılaştırma Operatörleri (==, !=, <, >, <=, >=)
209
13.8.5 Parantez Operatörü ()
210
14.3 Nesnelerle İşaretçilerin Kullanımı
216
14.4 Kopya Yapıcı ve Nesne Kopyalama
219
14.5 Nesnelerin Fonksiyonlara Gönderilmesi
223
BÖLÜM 15: NESNELERİN BAŞKA BİR SINIFIN ÜYESİ OLARAK KULLANILMASI
229
15.1 Nesne Bileşimi Kavramı
229
15.2 Nesneler Arasındaki İlişki Türleri
230
15.3 Üye Nesnelerin Başlatılması
230
15.4 Üye Nesnelerin Yok Edilmesi
231
15.5 Dinamik Bellek Kullanan Sınıflarda Üye Nesneler
232
15.6 Nesneleri Üye Olarak Kullanmanın Avantajları
233
15.7 Uygulamalı Örnek. Öğrenci ve Adres Sınıfları
233
15.8 Hatırlanması Gereken Temel Noktalar
234
BÖLÜM 16: VERİ SOYUTLAMA (DATA ABSTRACTION)
235
16.1 Veri Soyutlamaya Giriş
235
16.2 Veri Soyutlamanın Temel Taşı: Kapsülleme (Encapsulation)
235
16.2.1 Kapsülleme İstisnaları
236
16.2.1.1 Arkadaş Sınıflar
236
16.2.1.2 Arkadaş Fonksiyonlar
238
16.3 Soyut Sınıflar ve Saf Sanal Fonksiyonlar
241
16.4 Veri Soyutlamasının Faydaları
242
16.4.1 Kodun Kolay Bakım Yapılabilir Olması
242
16.4.2 Kodun Yeniden Kullanılabilirliği
242
16.4.3 Azaltılmış Karmaşıklık
243
17.1 Kapsüllemeye Giriş
245
17.2 Kapsüllemenin Temel Özelliği
245
17.3 Özel Üyelerle Bilgi Gizleme
247
17.4 Kapsüllemenin Faydaları
249
17.4.2 Daha İyi Modülerlik
249
17.5 Uygulamada Kapsülleme
250
18.2 Kalıtımın Temelleri
251
18.3.1 Tekli Kalıtım (Single Inheritance)
256
18.3.3 Çok Düzeyli Kalıtım
274
18.3.4 Hiyerarşik Kalıtım
278
18.3.5 Hibrit Kalıtım
283
18.4 Kalıtımda Erişim Kontrolü
287
18.4.1 Public Kalıtım
288
18.4.2 Protected Kalıtım
289
18.4.3 Private Kalıtım
291
18.4.4 Çok Düzeyli Kalıtımda Yetkilendirme
292
18.5.1 Fonksiyon Ezme
294
18.6 Sanal Fonksiyonlar ve Soyut Sınıflar
296
18.6.1 Sanal Fonksiyonlar
296
18.6.2 Soyut Sınıflar
297
BÖLÜM 19: ÇOK BİÇİMLİLİK
301
19.1 Fonksiyon Aşırı Yükleme
301
19.2 Operatör Aşırı Yükleme
301
19.3 Çalışma Zamanı Çok Biçimlilik
302
19.7 Çok Biçimli Konteynırlar
305
BÖLÜM 20: MESAJ GEÇİŞİ
307
20.3 Gözlemci Tasarım Deseni
308
20.4 Ağ Üzerinde Mesaj Geçişi
309
20.5 Uzak Prosedür Çağrısı (RPC)
310
21.1 İstisna İşlemenin Temelleri
313
21.2 Standart İstisnalar
313
21.3 Özel İstisna Sınıfları
314
21.4 İstisna Belirtimleri (Kullanımdan Kaldırıldı)
315
21.5 İç İçe İstisnalar
315
21.6 İstisna Güvenliği
316
21.7 RAII (Resource Acquisition Is Initialization)
317
BÖLÜM 22: BİRLEŞİK MODELLEME DİLİ (UML)
321
22.1 Sınıf (Class) Diyagramları
321
22.2 Nesne (Object) Diyagramları
323
22.3 Durum (State) Diyagramları
325
22.4 Ardıl Etkileşim (Sequence) Diyagramları
326
22.5 Etkinlik (Activity) Diyagramları
327
22.6 Kullanım Durumu (Use Case) Diyagramları
329
22.7 İş Birliği (Collaboration)Diyagramları
330
22.8 Bileşen (Component) Diyagramları
331
22.9 Dağıtım (Deployment) Diyagramları
332
22.10 Paket (Package) Diyagramları
333
NYP İLE MÜHENDİSLİK UYGULAMALARI
BÖLÜM 23: ARDUINO İLE NYP ÖRNEKLERİ
337
23.1 Arduino Programlamada NYP Neden Kullanılır?
337
BÖLÜM 24: STM İLE C++ VE NYP ÖRNEKLERİ
363
BÖLÜM 25: C++ VE NYP İLE UYGULAMA ÖRNEKLERİ
389
25.1 Çok İstemcili Mesajlaşma Sunucusu Uygulaması
389
25.2 Dosya Transfer Uygulaması
395
25.3 Elektronik Posta Gönderim Uygulaması (SMTP)
401
25.4 Banka Hesap Yönetim Uygulaması
405
25.5 Stok Takip Uygulaması
408