İÇİNDEKİLER
İçindekiler
Önsöz 5
Üçüncü Baskı İçin Birkaç Söz 7
Dördüncü Baskıya Önsöz 9
Birinci Bölüm:
GİRİŞ
1. GİRİŞ 31
1.1. Bilgisayar Kullanmanın Önemi 31
1.2. Başlarken 32
1.3. Programlama Dilleri 32
1.3.1. İlk Programlama Dilleri 32
1.3.2. İkinci Nesil Diller 32
1.3.3. Üçüncü Nesil Diller 33
1.3.3.1. Genel Amaçlı Yüksek Düzeyli Diller 33
1.3.3.2. Nesnelerle Programlama Yapan Yüksek Düzeyli Diller 33
1.3.4. Dördüncü Nesil Diller 33
1.3.5. Zamanımıza Kadar C++ 34
1.4. Programlama Dili Seçimi 34
1.5. Derleyici 35
1.5.1. Derleyici, Birleştirici ve Hata Bulucu 35
1.5.2. Ücret Ödemeden İndirilebilen Derleyicilerin Listesi 36
1.5.3. Ücret Ödenerek İndirilebilen Derleyicilerin Listesi 36
1.5.4. Derleyici ve Donanım 37
1.6. Ücretsiz İndirilen Dev–C++ Derleyicileri 37
1.6.1. Dev–C++ 5.11 Derleyicisinin İndirilmesi ve Açılması 38
1.6.2. Dev–C++ 5.11 Derleyicisinde Proje Oluşturma 39
1.6.3. Dev–C++ 5.11 Derleyicisinde Kaynak Kodu Dosyası Oluşturma ve Bu Dosyayı Kaydetme 42
1.6.4. Kaynak Kodu Dosyasını Projeye Ekleme 43
1.6.5. Var Olan Bir Dosyayı Açma 43
1.6.6. Kaynak Kodu Dosyasına Program Yazma ve Bu Programı Çalıştırma 43
1.7. Dev–C++ Derleyicisinden Seçilebilecek Modlar 45
1.7.1. Modların Seçilmesi 45
1.7.2. Modların İncelenmesi 46
1.7.2.1. "Basic → Windows Application" Seçimi 46
1.7.2.2. Multimedia → OpenGL Seçimi 48
1.7.2.3. Win32 → Animation Example 49
1.7.2.4. Özet 51
1.8. Dev–C++ Derleyicisi İle Daha Neler Yapılabilir? 51
1.9. Genel Olarak Dev–C++ Derleyicisi ve Grafik Ekran Modu’nun Kullanılması 51
İkinci Bölüm:
C++ PROGRAMLAMA DİLİ
2. C++ PROGRAMLAMA DİLİ 53
2.1. C++ Programı 53
2.2. C++ Programlama Dili'nin Temel Yapısı 54
2.2.1. main() Fonksiyonu 54
2.2.2. C++ Programlarında Türkçe Karakterleri Kullanma 57
2.2.3. iostream Başlık Dosyası 58
2.2.4. İsim Uzayı: namespace 59
2.2.5. Fonksiyonlar 61
2.2.6. Açıklamalar 62
2.2.7. Program Yazma Şekli 64
2.2.8. İfadeler 64
2.2.8.1. Basit İfadeler 64
2.2.8.2. Basit Olmayan İfadeler 64
2.3. C++ Programlarında Kullanılan Nicelikler 65
2.3.1. Anahtar Kelimeler 66
2.3.2. Belirleyiciler/İsimler 66
2.3.3. Sabitler 67
2.3.3.1. Tam Sayı Sabitler 67
2.3.3.2. Karakter Sabitler 67
2.3.3.3. Ondalık Sayı Sabitler 68
2.3.3.4. Numaralama Sabitleri 68
2.3.4. String–Karakter Dizisi 69
2.3.5. İşlemciler 69
2.3.6. Ayırıcılar 69
2.4. Kullanılan Niceliklere İsim Verme 69
2.5. Temel Veri Tipleri 71
2.5.1. Tam Sayı Veri Tipleri 71
2.5.2. İşaretsiz Tam Sayı Veri Tipleri 73
2.5.3. Ondalık Sayı Veri Tipleri 74
2.5.4. Karakter Veri Tipi ve Küçük Tam Sayılar 75
2.4.5. bool Veri Tipi 80
2.5.6. Alias – Veri Tipi Adı – Takma Ad – Lakap 81
2.5.7. Tam Sayıların Kullanılması 82
2.5.8. Veri Tiplerinin "byte" Cinsinden Büyüklükleri 83
2.5.9. Sayısal İşlemlerde Sınır Kavramı 84
2.6. Değişkenler ve Sabitler 87
2.6.1. Değişkenler 87
2.6.1.1. Bir Deyimin l–değerli Olması 87
2.6.1.2. Bir Deyimin r–değerli Olması 88
2.6.2. Değişken Deklerasyonları ve Tanımları 88
2.6.3. Sabitler 93
2.7. Formatlı Yazdırma 94
2.8. İkili Sayı Sistemi 97
2.8.1. Tam Sayılar 97
2.8.2. Ondalık Sayılar 98
2.8.3. Ondalık Sayıların Gösterilmesi 99
2.8.3.1. Ondalık Sayılarda Duyarlık (precision) 99
2.8.3.2. Duyarlık Problemi Nasıl Yok Edilir? 101
2.8.3.3. Ondalık Sayıları Yuvarlama Problemi 101
2.9. Veri Tipi Dönüşümü 103
2.9.1. Veri Tipi Dönüşümü Çeşitleri 104
2.9.1.1. Derleyici Tarafından Kendiliğinden Gerçekleştirilen Veri Tipi Dönüşümü 104
2.9.1.2. Tip Atamaları 105
2.9.2. Tip Dönüşümleri Sırasında Karşılaşılan Önemli Problemler 109
2.9.2.1. Birinci Durum 109
2.9.2.2. İkinci Durum 109
2.9.2.3. Üçüncü Durum 109
2.9.2.4. Dördüncü Durum 109
2.9.2.5. Beşinci Durum 110
2.10. Aritmetik İşlemciler 112
2.10.1. Basit Aritmetik İşlemciler 112
2.10.1.1. Bölme İşlemcisi ve Tam Sayı Bölme işlemcisi 112
2.10.1.2. Kalan İşlemcisi 113
2.10.1.3. Öncelik Sırası 114
2.10.2. Aritmetik Atama İşlemcileri 115
2.10.3. Artırma İşlemcisi 116
2.10.4. Ön Ek (prefix) ve Son Ek (postfix) Gösterimi 117
2.10.5. Eksiltme İşlemcisi 118
2.10.6. Aritmetik İşlemlerde Öncelik Sırası 119
2.11. Hazır Fonksiyonlar 119
2.11.1. Başlık Dosyaları 120
2.12. Sorular ve Alıştırmalar 121
Üçüncü Bölüm:
SEÇME VE TEKRAR
3. SEÇME VE TEKRAR 123
3.1. Karşılaştırma 123
3.1.1. Karşılaştırma İşlemcileri 123
3.1.2. İşlemcilerin Öncelik Sıraları 125
3.2. Seçme 125
3.2.1. if İfadesi 125
3.2.1.1. Basit if İfadesi 125
3.2.1.2. if … else … ; İfadesi 128
3.2.1.3. Şartlı İşlemci 132
3.2.2. switch İfadesi 134
3.3. Tekrarlama 136
3.3.1. for İfadesi 136
3.3.1.1. for İfadesinin Başlığı 137
3.3.1.2. for İfadesinin Gövdesi 138
3.3.1.3. Bloklar, Değişkenlerin Etki Alanları ve Değişkenlere Ulaşabilme 139
3.3.1.4. Değişik for Yapıları 140
3.3.1.5. for İfadelerinin İçinde Tanımlanan Değişkenler 141
3.3.1.6. Birden Çok İlk Değer Atama ve Sınama Deyimi 141
3.3.1.7. for İfadesinde Adım Aralığını Değiştirme 141
3.3.1.8. for İfadesinde string 142
3.3.1.9. For İfadesinin Kullanıldığı Önemli Bir Örnek 142
3.3.2. while İfadesi 143
3.3.3. do … while İfadesi 145
3.4. Mantık İşlemcileri 147
3.4.1. && (and) Ve İşlemcisi 148
3.4.2. ¦¦ (or) Veya İşlemcisi 149
3.4.3. ! (Değil) İşlemcisi 151
3.5. Bazı İşlemcilerin Öncelik Sıraları 151
3.6. Diğer Kontrol İfadeleri 152
3.6.1. break; İfadesi 152
3.6.2. continue; İfadesi 152
3.6.3. goto İfadesi 153
3.7. Sorular ve Alıştırmalar 154
Dördüncü Bölüm:
DİZİ VERİ TİPİ
4. DİZİ VERİ TİPİ 157
4.1. Veri Tipleri 157
4.1.1. Basit Veri Tipleri 157
4.1.2. Basit Olmayan Veri Tipleri 157
4.2. Bir Boyutlu Dizi 157
4.2.1. Bir Boyutlu Dizi Deklerasyonu 157
4.2.2. Dizi Elemanlarına Değer Atama 158
4.2.3. Dizinin Elemanlarını Kullanma 159
4.2.4. Dizinin Elemanlarına İlk Değerleri Atama 161
4.2.5. Dizilere Başlangıç Değeri Verme Kuralları 161
4.2.6. Bir Diziyi En Büyük Sayıda Karakter İle Doldurma 162
4.2.7. Dizileri Birbirine Ekleme 163
4.3. İki Boyutlu Dizi 164
4.3.1. İki Boyutlu Dizi Deklerasyonu 164
4.3.1.1. İki Boyutlu Bir Diziyi Bir Fonksiyona Argüman Olarak Gönderme 167
4.3.1.2. Değişik Dizi Örnekleri 171
4.4. Diziler ve Dinamik Bellek Kullanımı 176
4.4.1. Diziyi Belleğe Dinamik Olarak Yerleştirme 176
4.4.2. Dinamik Olarak Belleğe Yerleştirilen Diziye İlk Değerleri Verme 176
4.4.3. Diziyi Bellekten Silme 177
4.5. Sorular ve Alıştırmalar 177
Beşinci Bölüm:
STRING ve KARAKTER VERİ TİPLİ DİZİ
5. string ve Veri TİPLİ DİZİLER 179
5.1. string 179
5.2. Kopyalama 182
5.3. İki Boyutlu Karakter Dizisi 185
5.4. string Veri Tipli Bir Değişkendeki Karakterler 186
5.5. Başka Örnekler 187
5.6. Sorular ve Alıştırmalar 187
Altıncı Bölüm:
YAPI VE NUMARALAMA VERİ TİPLERİ
6. YAPI VE NUMARALAMA VERİ TİPLERİ 189
6.1. Yapı Veri Tipi 189
6.1.1. Yapı Veri Tipi Tanımı 190
6.1.2. Yapı Veri Tipli Değişken Tanımlama 191
6.1.3. Yapının Elemanlarına Erişme 191
6.1.4. Yapı Veri Tipinin Diğer Özellikleri 192
6.1.4.1. Yapı Üyelerine İlk Değerlerin Atanması 192
6.1.4.2. Atama İfadelerinde Yapı Veri Tipli Değişkenler 193
6.1.5. Yapı İçinde Yapı 194
6.1.6. Kümelenmiş Yapı Veri Tipli Değişkenlerin Elemanlarına Erişme 195
6.1.7. Kümelenmiş Yapılara İlk Değer Atama 196
6.1.8. Kümelenme Derinliği 196
6.2. Numaralama Veri Tipi 197
6.2.1. Numaralama Sabitlerinin Değerlerini Açıkça Belirtme 199
6.2.2. Numaralama Veri Tipi ve Giriş/Çıkış İşlemleri 200
6.2.3. Numaralama Örnekleri 200
6.3. Sorular ve Alıştırmalar 201
Yedinci Bölüm:
FONKSİYONLAR: 1
7. FONKSİYONLAR: 1 203
7.1. Giriş. 203
7.2. Basit (Parametresiz) Fonksiyonlar 203
7.2.1. Fonksiyonu Deklere Etme 204
7.2.2. Fonksiyonu Tanımlama 205
7.3.2. Fonksiyonu Çağırma 205
7.2.4. Fonksiyon Tanımını Kitaplık Fonksiyonları İle Karşılaştırma 205
7.2.5. Fonksiyonun Deklerasyonundan Kurtulma 206
7.3. Parametreli Fonksiyonlar 207
7.3.1. Fonksiyona Sabitleri Argüman Olarak Gönderme 207
7.3.2. Fonksiyonun Parametreleri 208
7.3.3. Fonksiyona Değişkenleri Argüman Olarak Gönderme 209
7.3.4. Fonksiyonun Parametreleri ve Yerel Değişkenler 210
7.4. Fonksiyona Veri Gönderme Şekilleri 212
7.4.1. Fonksiyona Veriyi DEĞER Olarak Gönderme 212
7.4.1.1. Fonksiyona Yapı Veri Tipli Argümanı DEĞER Olarak Gönderme 213
7.4.1.2. Fonksiyona Dizi Veri Tipli Argümanı DEĞER Olarak Gönderme 214
7.4.2. Fonksiyona Veriyi REFERANS Olarak Gönderme 216
7.4.3. Fonksiyona Veriyi GÖSTERİCİ Olarak Gönderme 216
7.5. Fonksiyondan Veri Alma (Veri Döndürme) 216
7.5.1. ‘void’ Anahtar Kelimesi ve ‘return’ Deyimi 217
7.5.1.1. return İfadesinde Gereksiz Değişkenlerden Kurtulma 218
7.5.2. Fonksiyonlardan YAPI VERİ TİPLİ Veri Döndürme 219
7.5.3. Fonksiyonlardan Verileri REFERANS Olarak Döndürme 221
7.5.3.1. Referans Veri Tipi 221
7.5.3.2. Referans Veri Tipli Değişken Tanımlama ve Ona Başlangıç Değeri Verme 221
7.5.3.3. Referans Olarak Tanımlanan Değişkeni Kullanma 222
7.5.3.4. Referans Olarak Tanımlanan Bir Değişkene Değer Atama 223
7.5.3.5. Referans Örnekleri 223
7.5.3.6. Basit Veri Tipli Verileri Fonksiyonlara REFERANS Olarak Gönderme 223
7.5.3.7. Fonksiyona Referans Olarak İki Argüman Gönderme 228
7.5.4. Fonksiyona Yapı Veri Tipli Verileri Referans Olarak Gönderme 229
7.5.5. Referans Veri Tipli Dönüş Değerleri 230
7.5.6. Bir Fonksiyonun const Referans Parametresi 231
7.6. Fonksiyonların Aşırı Yüklenmesi 232
7.6.1. Fonksiyonların Aşırı Yüklenmesi 232
7.6.2. Fonksiyonların Aşırı Yüklenmesi ve Çok Şekillilik 235
7.6.3. Fonksiyonların Aşırı Yüklenmesi ve Dönüş Veri Tipi 237
7.7. Fonksiyonların Bazı Özellikleri 238
7.7.1. Fonksiyonların Kendi Kendini Çağırması 238
7.7.2. Yerel (inline) Fonksiyonlar 238
7.7.3. Fonksiyonların Varsayılan Parametreleri 240
7.7.4. Genel ve Yerel Değişkenler 243
7.7.4.1. Statik Yerel Değişkenler 244
7.8. Standart Fonksiyonlar 245
7.9. Sorular ve Alıştırmalar 247
Sekizinci Bölüm:
SINIF VERİ TİPİ VE NESNE
8. SINIF VERİ TİPİ ve NESNE 249
8.1. Sınıf Veri Tipi 249
8.1.1. Yapısal Programlama Hakkında Birkaç Söz 249
8.1.2. Gerçek Dünyanın Modellenmesi 249
8.1.3. Sınıfa Neden İhtiyaç Duyulur? 249
8.1.4. Yapı ve Sınıf Veri Tipi Arasındaki İlişki 251
8.1.5. Sınıf Tanımı 251
8.1.6. Sınıf Veri Tipinin Özellikleri 251
8.2. Sınıf Veri Tipi ve Nesne 252
8.2.1. Sınıf Veri Tipi ve Nesne 252
8.2.2. Sınıf Veri Tipi Tanımı 254
8.2.3. private ve public Belirticileri 255
8.2.4. Sınıf Veri Tipinin Üye Verileri 256
8.2.5. Sınıf Veri Tipinin Üye Fonksiyonları 256
8.2.6. Sınıf Veri Tipinin Kullanılması 256
8.2.6.1. Bir Sınıfın Nesnelerinin Tanımlanması 256
8.2.6.2. Nokta İşlemcisi ve Üye Fonksiyonların Çağırılması 257
8.3. Fiziksel Nesneler Olarak C++ Nesneleri 257
8.3.1. “Kimlik” Sınıfının “kim” Nesnesi 258
8.3.2. “Dikdortgen” Sınıfının “Dortgen” Nesnesi 259
8.4. Kurucu Fonksiyon 261
8.4.1. Nesneleri İlk Kullanıma Hazırlama 261
8.4.2. Nesnelerin Kendi Kendilerini İlk Kullanıma Hazırlaması 262
8.4.3. Kurucu Fonksiyon 262
8.4.4. Kurucu Fonksiyona Dikdortgen Örneği 264
8.4.5. Kurucu Fonksiyonların Özellikleri 264
8.4.6. Nesnelere Atanan İlk Değerlerin Listesi 264
8.5. Yok Edici Fonksiyon 265
8.6. Nesnelerin Fonksiyon Parametresi Olarak Kullanılması 265
8.7. Varsayılan Kurucu Fonksiyon 267
8.8. Kurucu Fonksiyonların Aşırı Yüklenmesi 267
8.9. Üye Fonksiyonların Sınıfın Dışında Tanımlanması ve Kapsam Çözünürlük İşlemcisi 268
8.10. Nesnelerin Parametre Olarak Kullanılması 269
8.11. Varsayılan Kopyalama Kurucu Fonksiyonu 271
8.12. Fonksiyonlardan Nesneleri Döndürme 272
8.13. Parametreler ve Nesneler 273
8.14. Yapılar ve Sınıflar 276
8.15. Sınıfın Statik Üye Verisi 277
8.15.1. Sınıfın static Üye Verisi 277
8.15.2. Sınıfın static Üye Verisini Kullanma 277
8.15.3. static Üye İçin Deklerasyon ve Tanım Ayrı Ayrı 279
8.16. Üye Fonksiyonların const Olarak Deklere Edilmesi ve Tanımlanması İşlemleri 279
8.16.1. Üye Fonksiyonun const Parametreleri 280
8.16.2. const Olarak Tanımlanan Nesneler 281
8.17. Sınıf Üyesi Olarak Karakter Dizileri 282
8.18. "String" ve "string" Sınıfları 289
8.19. Sorular ve Alıştırmalar 291
Dokuzuncu Bölüm:
İŞLEMCİLERİN AŞIRI YÜKLENMESİ
9. İŞLEMCİLERİN AŞIRI YÜKLENMESİ 293
9.1. Tekli İşlemcilerin Aşırı Yüklenmesi 293
9.1.1. operator Anahtar Kelimesi 294
9.1.2. İşlemci (operator) Fonksiyonunun Parametreleri 295
9.1.3. İşlemci Fonksiyonunun Döndürdüğü Değer 295
9.1.4. İsimsiz Geçici Nesneler 297
9.2. İkili İşlemcilerin Aşırı Yüklenmesi 300
9.2.1. Aritmetik İşlemcilerin Aşırı Yüklenmesi 300
9.2.1.1. Nesneleri Toplama 300
9.2.1.2. Karakter Katarlarını Birbirine Ekleme 302
9.2.2. Karşılaştırma İşlemcileri 303
9.2.3. Aritmetik Atama İşlemcileri 304
9.3. İndis İşlemcisi 305
9.3.1. getel() ve putel() Fonksiyonları 305
9.3.2. Referans Olarak Dönen Bir Tek access() Fonksiyonu 307
9.3.3. Referans Olarak Dönen Aşırı Yüklenmiş [ ] İndis İşlemcisi 308
9.4. İşlemcilerin Aşırı Yüklenmelerine Getirilen Sınırlamalar 309
9.4.1. Aşırı Yüklenecek İşlemcilerin Etki Edeceği İfadelerin Özelliği 309
9.4.2. Başlangıçtaki Yazım Kuralına Uyma 309
9.4.3. Aşırı Yüklenemeyen İşlemciler 309
9.4.4. Aşırı Yüklenebilen İşlemciler 310
9.4.5. Sadece Üye Fonksiyonlar Kullanılarak Aşırı Yüklenebilen İşlemciler 310
9.5. Sorular ve Alıştırmalar 312
Onuncu Bölüm:
KALITIM
10. KALITIM 313
10.1. Kalıtım 313
10.2. Temel Sınıf ve Türetilmiş Sınıf 313
10.2.1. Türetilmiş Sınıfın Tanımında Temel Sınıfı Açıkça Yazmak Gerekir 315
10.2.2. Türetilmiş Sınıfın Nesnelerinden Temel Sınıfın Elemanlarına Erişme 320
10.2.2.1. Temel Sınıfın Kurucu Fonksiyonlarını Kullanma 321
10.2.3. Temel Sınıfın Üye Fonksiyonlarını Kullanma 321
10.2.4. Türetilmiş Sınıftan Temel Sınıfın Üye Fonksiyonunu Çağırma 321
10.2.5. protected Erişim Belirticisi 323
10.3. Üye Fonksiyonları Dikkate Almama 326
10.3.1. Hangi Fonksiyon Tanımı Kullanılır? 327
10.3.2. Dikkate Alınmayan Üye Fonksiyonlar ve Kapsam Çözünürlük İşlemcisi 328
10.4. Sınıf Hiyerarşisi 329
10.4.1. Soyut Temel Sınıf 330
10.5. public ve private Kalıtım 331
10.5.1. Erişme Kombinezonları 331
10.6. Çoklu Kalıtım 333
10.6.1. Çoklu Kalıtımda Belirsizlik 336
10.6.2. Bir Başka Tür Belirsizlik 337
10.7. Kalıtım ve Dinamik Bellek Kullanımı 338
10.7.1. Türetilmiş Sınıfın new Kullanmaması Durumu 338
10.7.2. Türetilmiş Sınıfın new Kullanması Durumu: 339
10.8. Sorular ve Alıştırmalar 340
Onbirinci Bölüm:
VERİ TİPİ DÖNÜŞÜMÜ
11. VERİ TİPİ DÖNÜŞÜMÜ 341
11.1. Veri Tipi Dönüşümü 341
11.1.1. Temel Veri Tipleri Arasındaki Veri Tipi Dönüşümleri 342
11.1.2. Nesneler ve Temel Veri Tipleri Arasındaki Dönüşümler 342
11.1.3. Temel Bir Veri Tipinden Kullanıcı Tarafından Tanımlanan Bir Veri Tipine Dönüşüm 344
11.1.4. Kullanıcı Tarafından Tanımlanan Veri Tiplerinden Temel Veri Tiplerine Dönüşüm 345
11.1.5. C– Karakter Katarları ve String Veri Tipli Nesneler Arasında Dönüşüm 345
11.2. ‘explicit’ ve ‘mutable’ Anahtar Kelimeleri 346
11.2.1. ‘explicit’ Sayesinde Dönüşümleri Engelleme 346
11.2.2. mutable Kullanarak const Nesne Verilerini Değiştirme 348
11.3. Dinamik Tip Bilgisi (Dynamic Type Information) 350
11.3.1. dynamic_cast Yardımıyla Bir Sınıfın Veri Tipini Kontrol Etme 350
11.3.2. dynamic_cast Yardımıyla Gösterici Tiplerini Değiştirme 351
11.3.3. typeid İşlemcisi 352
11.4. Sorular ve Alıştırmalar 353
Onikinci Bölüm:
GÖSTERİCİ VERİ TİPİ
12. GÖSTERİCİ VERİ TİPİ 355
12.1. Gösterici Veri Tipi 355
12.1.1. Gösterici Veri Tipi Tanımı 355
12.1.2. Kullanılan Bellek Alanlarını Karşılaştırma 356
12.2. Gösterici Ne İşe Yarar? 357
12.3. Niceliklerin Bellek Adresleri ve Göstericiler 358
12.3.1. Adresi Al İşlemcisi 358
12.4. Gösteren Değişken: Gösterici 360
12.4.1. Gösterici Değişkeninin Veri Tipi Nedir? 360
12.4.2. Göstericilerin Kullanılması 362
12.5. Gösterilen Değişken (dereference) 364
12.6. void’ı Gösteren Gösterici 367
12.7. Gösterici Kullanmanın Zorluğu 369
12.8. Göstericiler ve Diziler 370
12.8.1. Dizi Gösterimi 370
12.8.2. Dizinin Gösterici İle Temsili 370
12.8.3. Dizi ve Gösterici Temsilinin Birlikte Kullanılması 371
12.8.4. Fonksiyondan Dizi Veri Tipli Bir Veriyi Gösterici Kullanarak Döndürme 373
12.8.5. Dizi Gibi Davranan Bir Sınıf Tanımı 374
12.9. Göstericiler ve Fonksiyon Parametreleri 375
12.9.1. Basit Değişkenleri Fonksiyona Referans Argüman Olarak Gönderme 376
12.9.2. Diziyi Fonksiyona Gösterici Argüman Olarak Gönderme 379
12.9.3. Göstericileri Fonksiyon Parametreleri Olarak Kullanma 380
12.10. Fonksiyonları Gösteren Göstericiler 381
12.10.1. Bir Fonksiyonun Adresini Elde Etme 382
12.10.2. Fonksiyon Göstericisinin Deklerasyonu 382
12.10.3. Fonksiyon Çağırmak İçin Fonksiyon Göstericisini Kullanma 383
12.11. Göstericiler ve Karakter Katarları 385
12.12. Dinamik Değişken ve new İşlemcisi 388
12.12.1. Otomatik Değişken 388
12.12.2. Statik (static) Değişken 388
12.12.3. Dinamik Değişken 388
12.13. Göstericileri Kullanarak Üye Fonksiyonlara Erişme 394
12.13.1. Ok İşlemcisi 394
12.14. new İşlemcisinin Döndürdüğü Göstericinin İçeriğine Ulaşma 396
12.15. Göstericiler ve Nesneler 396
12.16. Gösterici Niçin Kullanılır? 397
12.16.1. Göstericilerin Kullanıldığı Yerler 397
12.16.2. Stak (stack) ve Serbest Depolama Alanı (Heap) 398
12.17. const Ayrılmış Kelimesi ve Göstericiler 401
12.18. Bağlı Liste 402
12.19. Göstericiyi Gösteren Gösterici 403
12.20. Göstericilerin Öncelik Sıraları 405
12.21. Sorular ve Alıştırmalar 406
Onüçüncü Bölüm:
FONKSİYONLAR: 2
13. FONKSİYONLAR: 2 407
13.1. Giriş 407
13.2. Sanal Fonksiyonlar 407
13.2.1. Sanal Fonksiyonlara Neden İhtiyaç Duyulur? 407
13.2.2. Göstericilerle Erişilen Normal Üye Fonksiyonlar 408
13.2.3. Göstericilerle Erişilen Sanal Üye Fonksiyonlar 410
13.2.4. Soyut Sınıflar ve Saf Sanal Üye Fonksiyonlar 415
13.2.5. SANAL Üye Fonksiyonlar 418
13.2.6. Sanal YOK EDİCİ Fonksiyonlar 420
13.3. Arkadaş–Dost Fonksiyonlar 421
13.3.1. Dost Fonksiyonlar 421
13.3.1.1. Çarpma İşlemcisi 421
13.3.2. Dost Sınıflar 427
13.4. Statik Fonksiyonlar 428
13.4.1. static Fonksiyonlara Erişme 430
13.4.2. Nesneleri Numaralama 430
13.5. Aşırı Yüklenmiş Atama İşlemcisi 431
13.6. Kopyalama Kurucu Fonksiyonu 432
13.7. this Göstericisi 434
13.7.1. Nesnenin Adresini Göstermek İçin this Göstericisini Kullanma 434
13.7.2. Üye Veriye this Göstericisini Kullanarak Ulaşma 435
13.7.3. Değer Döndürmek İçin this Göstericisini Kullanma 436
13.8. Sorular ve Alıştırmalar 439
Ondördüncü Bölüm:
AKIŞ VE DOSYA
14. AKIŞ VE DOSYA 441
14.1. Akış 441
14.1.1. Akış ve Buffer (Tampon) 442
14.1.2. Başlık Dosyaları 443
14.2. ios Sınıfı 443
14.2.1. Biçimlendirme İşaretleri 443
14.2.2. Biçimlendirme (Formatlama) İşaretlerini Ayarlama 445
14.2.3. İki Parametreli setf() Fonksiyonunu Kullanma 447
14.2.3.1. Tam Sayıları Formatlı Yazdırma 447
14.2.3.2. Ondalık Sayıları Formatlı Yazdırma 448
14.2.4. ios Düzenleyicileri (Manipulators) 452
14.2.5. ios Fonksiyonları 454
14.3. istream Sınıfı 456
14.4. ostream Sınıfı 457
14.5. iostream ve _withassign Sınıfları 458
14.5.1. Ön Tanımlı Akış Nesneleri (Predefined Stream Objects) 458
14.6. Akış Hataları 459
14.6.1. Hata Durum İşaretleri (Error Status Bits) 459
14.6.2. Sayıları Girme 460
14.6.3. Çok Fazla Karakter Girme Problemi 461
14.6.4. Girdisiz Girdi 461
14.6.5. Karakter ve Karakter Katarı Girişi (Inputting Character and String) 462
14.7. Akışlarla Disk (Metin) Dosyası Giriş/Çıkışları 464
14.7.1. Biçimlendirilmiş Disk (Metin) Dosyası 464
14.7.2. Verileri Disk (Metin) Dosyasına Yazdırma 465
14.7.3. Açma Konusunda ofstream Sınıfının Nesnesinin Varsayılan Davranışını Değiştirme 468
14.7.4. Programlar Çalışırken Oluşturulan Dosyaları Bulma ve Açma 470
14.7.5. Verileri Dosyadan (Metin Dosyasından) Okutma 471
14.7.6. Verileri Metin Dosyasına Yazdırma Ve Metin Dosyasından Okutma 472
14.7.7. Boşluk İçeren Karakter Katarları 474
14.7.8. Dosya Sonunu Tespit Etme 476
14.7.9. Karakter Giriş/Çıkışı (Character I/O) İşlemleri 477
14.8. İkili Sayı Sisteminde Giriş/Çıkış İşlemleri 479
14.8.1. reinterpret_cast<>() İşlemcisi 481
14.8.2. Dosyaları Kapatma 481
14.8.3. Nesne Giriş/Çıkışları 481
14.8.3.1. Bir Nesneyi Diske Yazma 481
14.8.3.2. Diskten Bir Nesne Okutma 482
14.8.3.3. Bir Nesneyi Dosyaya Yazdırma ve Dosyadan Okutup Ekrana yazdırma 483
14.8.4. Uyumlu Veri Yapıları 484
14.8.5. Birden Çok Kişi İçin Yapılan Giriş/Çıkış İşlemleri 485
14.9. fstream Sınıfı 486
14.9.1. open() Fonksiyonu 486
14.9.1.1. Mod Bitleri (Sabitleri) (The Mode Bits) 486
14.10. Dosya Göstericileri (File Pointers) 488
14.10.1. Konumu Belirleme (Specifying the Position / the Offset) 488
14.10.2. seekg() Fonksiyonu : Ötelemeyi Belirleme 488
14.10.3. tellg() Fonksiyonu 490
14.11. Hataların Bulunması 490
14.12. Üye Fonksiyonlarla Dosya Giriş/Çıkışı 494
14.12.1. Kendilerini Okuyup Yazabilen Nesneler 494
14.12.2. Kendi Kendilerini Okuyup Yazan Sınıflar 496
14.12.2.1. Statik Fonksiyonlar 496
14.12.2.2. typeid() Fonksiyonunun Kullanılması 497
14.13. Çıkarma ve Ekleme İşlemcilerini Aşırı Yükleme 502
14.13.1. cout ve cin Nesnelerini Aşırı Yükleme 502
14.13.2. << ve >> İşlemcilerini Dosyalar İçin Aşırı Yükleme 503
14.14. Bir Akış Nesnesi Olarak Bellek 505
14.14.1. Komut Satırı Parametreleri (Command. Line Arguments) 506
14.14.2. Yazıcı Çıktısı 509
14.15. Sorular ve Alıştırmalar 511
Onbeşinci Bölüm:
ÇOK DOSYALI PROGRAMLAR
15. ÇOK DOSYALI PROGRAMLAR 513
15.1. Giriş 513
15.1.1. Arayüz 513
15.1.2. Uygulama 513
15.2. Çok Dosyalı Program Oluşturma 514
15.2.1. Başlık Dosyaları 514
15.2.2. Dizin 514
15.2.3. Projeler 515
15.3. Dosyalar Arasında Haberleşme 515
15.3.1. Kaynak Kodu Dosyaları Arasındaki Haberleşme 515
15.3.2. Değişkenlerin Dosyalar Arasında Ortak Kullanılması 515
15.3.2.1. Programda Geçerli Tanım Sayısı 516
15.3.2.2. Genel Değişkene Farklı Bir Dosyadan Erişme 516
15.3.2.3. Bir Kısıtlama 517
15.3.2.4. Genel Değişkenleri Aynı İsimle Farklı Dosyalarda Kullanma 517
15.3.3. Fonksiyonların Dosyalar Arasında Ortak Kullanılması 518
15.3.3.1. Deklerasyon ve Tanım 518
15.3.3.2. Birden Çok Deklerasyon 519
15.3.3.3. Statik Fonksiyonlar 519
15.3.4. Sınıfların Dosyalar Arasında Ortak Kullanılması 519
15.3.5. Başlık Dosyaları 521
15.3.5.1. Başlık Dosyası Kullanma Sebebi 521
15.3.5.2. Tanımları Başlık Dosyasına Koyma 521
15.3.5.3. Sınıf Tanımını Kaynak Dosyaların Her Birine Koyma 522
15.3.5.4. Harici Dosyaların Tanımları 522
15.3.6. Birden Çok "include" Tehlikesi 523
15.3.7. Birden Çok "include" u Önleme 524
Onaltıncı Bölüm:
ŞABLONLAR
16. ŞABLONLAR 525
16.1. Fonksiyon Şablonları 525
16.1.1. Bu Kavrama Ne Gerek Var? 525
16.1.2. Basit Bir Fonksiyon Şablonu 526
16.1.3. Fonksiyon Şablonunun Söz Dizimi 527
16.1.4. Birden Çok Parametresi Olan Fonksiyon Şablonları 528
16.2. Sınıf Şablonları 529
16.2.1. Üye Fonksiyonların Sınıfın Dışında Tanımlanması Durumu 532
16.2.2. Şablon Kullanılan Bir Bağlı Liste Sınıfı 535
16.3. Bir Veri Tipinin Jenerik ve Özel Parametreleri 539
16.4. Birden Çok Veri Tipi Parametresine Sahip Olan Şablonlar 542
16.4.1. Varsayılan Veri Tipli Şablon Parametreleri 543
16.5. Şablonların “Üye” Olarak Kullanılması 543
16.6. Sorular ve Alıştırmalar 545
Onyedinci Bölüm:
KURAL DIŞI DURUMLAR
17. KURAL DIŞI DURUMLAR 547
17.1. Kural Dışı Durumlar (istisnalar) 547
17.2. Sorular ve Alıştırmalar 553
Onsekizinci Bölüm:
STANDART ŞABLON KİTAPLIĞI (SŞK) = STL
18. STANDART ŞABLON KİTAPLIĞI (SŞK) = STL 555
18.1. Giriş 555
18.2. Depolayıcı 555
18.3. Sıralı Depolayıcılar 557
18.3.1. Vektörler (vectors) 558
Vektor Sınıfının Kurucu Fonksiyonları ve Nesnelere İlk Değerlerin Atanması 558
push_back(), size() ve operator [] Üye Fonksiyonları 565
swap(), empty(), back() ve pop_back() Üye Fonksiyonları 567
insert() ve erase() Üye Fonksiyonları 569
18.3.2. Listeler (lists) 573
push_front(), front() ve pop_front() Üye Fonksiyonları 573
reverse(), merge() ve unique() Üye Fonksiyonları 574
18.3.3. Çift Uçlu Kuyruk (Deque) 576
18.4. Birleşik Depolayıcılar 578
18.4.1. Kümeler ve Çoklu Kümeler 579
18.4.2. Eşlemeler ve Çoklu Eşlemeler 583
18.4.3. Birleşik Dizi 583
18.5. Depolayıcıların Kendi Üye Fonksiyonları 585
18.6. Depolayıcı Uyarlayıcıları 586
18.7. Algorirma 587
18.7.1. Algoritma Örnekleri 588
find() Algoritması 588
count() Algoritması 590
sort() Algoritması 591
search() Algoritması 595
merge() Algoritması 596
remove() Algoritması 598
Algoritmalara _if Ekleme 600
for_each() Algoritması 601
transform() Algoritması 603
18.8. İteratör 604
18.8.1. Akıllı Gösterici Olarak İteratör 606
18.8.2. Sıradan Göstericilerin Durumu 607
18.8.3. İteratörleri Tamamen Ayrı Bir Sınıf Olarak Tanımlama 608
18.8.4. Arayüz Olarak İteratörler 608
18.8.5. Algoritmaları Depolayıcılarla Eşleştirme 610
18.8.6. Depolayıcı Ucu 610
18.7.7. İteratörü Algoritmaya Bağlama 611
18.8.8. Üye Fonksiyonlarla Algoritmalar Arasında Seçim Yapma 612
18.8.9. İteratörlerin Kullanılması 612
18.8.9.1. Veriye Erişme 613
18.8.9.2. Veri Ekleme 614
18.8.9.3. Algoritmalar ve İteratörler 616
18.8.10. Özelleştirilmiş İteratörler 618
18.4.10.1. İteratör Uyarlayıcıları 618
Ters İteratörler 619
Ekleme İteratorleri 621
Ham Veri Saklama İteratörleri 624
18.4.10.2. ostream_iterator Sınıfı 624
18.4.10.3. istream_iterator Sınıfı 626
18.8.11. Kullanıcı Tarafından Tanımlanan Nesneleri Depolama 629
18.8.11.1. Kisi Sınıfının Nesnelerinin Kümesi 629
18.8.11.2. Gerekli Üye Fonksiyonlar 631
18.8.11.3. Sıralama 632
18.8.11.4. Tıpkı Temel Veri Tipleri Gibi 632
18.8.11.5. Kisi Sınıfının Nesnelerinin Listesi 632
18.8.11.6. Belirli Bir İsme Sahip Tüm Kişileri Bulma 634
18.8.11.7. Belirli Bir Telefon Numarasına Sahip Tüm Kişileri Bulma 635
18.9. Fonksiyon Nesneleri 635
18.9.1. Derleyicide Tanımlı Fonksiyon Nesneleri 635
18.9.2. Kendi Fonksiyon Nesnelerini Yazma 639
18.9.3. KisileriKarsilastir() Fonksiyon Nesnesi 641
18.9.4. KisiYaz() Fonksiyon Nesnesi 641
18.9.5. Depolayıcının Davranışını Değiştirmek İçin Kullanılan Fonksiyon Nesneleri 642
18.10. STL İle İlgili Endişeler 642
Ondokuzuncu Bölüm:
Dev–C++ ve GRAFİK EKRAN MODUNA GİRİŞ
19. Dev–C++ ve GRAFİK EKRAN MODU’NA GİRİŞ 643
19.1. Grafik Ekran and C++ 643
19.1.1. Bazı Seçimler 643
19.1.2. Dev–C++ Derleyicisinin İndirilmesi ve Kurulması 644
19.1.3. Grafik Ekranı İçin Gerekli Dosyalar 645
19.2. Grafik Ekran İçin Proje Oluşturma 647
19.2.1. Grafik Projesi Oluşturma 647
19.2.2. Grafik Projesi Ayarları 648
19.2.3. Araçlar/Tools Menüsünden Yapılması Gereken Seçimler 648
19.3. Kaynak Kodu Dosyası Oluşturma 649
19.3.1. Kaynak Kodu Dosyası Oluşturma 649
19.3.2. Kaynak Kodu Dosyasını Kaydetme 649
19.3.4. Kaynak Kodu Programını Derleme ve Çalıştırma 649
19.3.4.1. Win32 Konsol Penceresi 650
19.3.4.2. Win32 GUI Grafik Penceresi 651
19.4. Yeni Bir Proje 652
19.5. graphics.h Başlık Dosyası Ne Durumda? 659
19.6. winbgim.h Başlık Dosyasında Yer Alan Bazı Fonksiyonlar 660
19.6.1. İlk Değerler, Silme ve Bekletme 660
19.6.2. Renklendirme, Stil ve Kalınlık Fonksiyonları 661
19.6.3. Koordinatlar 661
19.6.4. Metin Formatlama 661
19.6.5. Grafik Penceresinde Mesaj Yazdırma 662
19.6.6. Mouse Input 662
19.7. “Borland Turbo C” İçin Yazılmış Olan Örnek “Konsol Grafiği Programları”nın Dev–C++ Derleyicisinde Win32 GUI veya Win32 Konsol Modunda Çalıştırılması 662
Yirminci Bölüm:
EKLER
20. EKLER 667
20.Ek–1. İşlemcilerin Öncelik Sıraları 667
20.Ek–2. Depolayıcıların Üye Fonksiyonları 670
20.Ek–3. Algoritma Tabloları 671
20.Ek–3.1. Genel Açıklamalar 671
20.Ek–3.2. Değişmeyen Ardışıklık (Ardıllık) İşlemleri 672
20.Ek–3.3. Değişen Ardışıklık (Ardıllık) İşlemleri 673
20.Ek–3.4. Sıralama ve İlgili İşlemler 674
20.Ek–3.5. Genelleştirilmiş Sayısal İşlemler 677
20.Ek–4. Algoritmalar İçin Gerekli Olan İteratörler 678
20.Ek–5. zaman 680
20.Ek–5.1. zamanh.h 680
20.Ek–5.2. zamanCPP.cpp 680
20.Ek–6. Sınıflar 681
20.Ek–6.1. siniflarh.h 681
20.Ek–6.2. siniflarCPP.cpp 684
20.Ek–7. Kalıtım 685
20.Ek–7.1. kalitimh.h 685
20.Ek–8. Çalışan 687
20.Ek–8.1. calisanlarh.h 687
20.Ek–8.2. calisanlarCPP.cpp 689
20.Ek–9. Kişiler 690
20.Ek–9.1. kisilerh.h 690
20.Ek–9.2. kisilerCPP.cpp 692
Kaynaklar 695
Kavramlar Dizini 697 |