Üçüncü Baskı İçin Birkaç Söz
7
1.1. Bilgisayar Kullanmanın Önemi
31
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.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.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
2. C++ PROGRAMLAMA DİLİ
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.7. Program Yazma Şekli
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.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.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.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.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.7. Formatlı Yazdırma
94
2.8. İkili Sayı Sistemi
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
3.1.1. Karşılaştırma İşlemcileri
123
3.1.2. İşlemcilerin Öncelik Sıraları
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.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.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.7. Sorular ve Alıştırmalar
154
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
STRING ve KARAKTER VERİ TİPLİ DİZİ
5. string ve Veri TİPLİ DİZİLER
179
5.3. İki Boyutlu Karakter Dizisi
185
5.6. Sorular ve Alıştırmalar
187
YAPI VE NUMARALAMA VERİ TİPLERİ
6. YAPI VE NUMARALAMA VERİ TİPLERİ
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
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
8. SINIF VERİ TİPİ ve NESNE
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.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
İŞ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.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
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.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
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
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.19. Göstericiyi Gösteren Gösterici
403
12.20. Göstericilerin Öncelik Sıraları
405
12.21. Sorular ve Alıştırmalar
406
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
14.1.1. Akış ve Buffer (Tampon)
442
14.1.2. Başlık Dosyaları
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.5. iostream ve _withassign Sınıfları
458
14.5.1. Ön Tanımlı Akış Nesneleri (Predefined Stream Objects)
458
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.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
15. ÇOK DOSYALI PROGRAMLAR
513
15.2. Çok Dosyalı Program Oluşturma
514
15.2.1. Başlık Dosyaları
514
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
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
17. KURAL DIŞI DURUMLAR
547
17.1. Kural Dışı Durumlar (istisnalar)
547
17.2. Sorular ve Alıştırmalar
553
STANDART ŞABLON KİTAPLIĞI (SŞK) = STL
18. STANDART ŞABLON KİTAPLIĞI (SŞK) = STL
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.1. Algoritma Örnekleri
588
Algoritmalara _if Ekleme
600
for_each() Algoritması
601
transform() Algoritması
603
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
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.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
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.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.4. Metin Formatlama
661
19.6.5. Grafik Penceresinde Mesaj Yazdırma
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
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.2. zamanCPP.cpp
680
20.Ek–6.1. siniflarh.h
681
20.Ek–6.2. siniflarCPP.cpp
684
20.Ek–7.1. kalitimh.h
685
20.Ek–8.1. calisanlarh.h
687
20.Ek–8.2. calisanlarCPP.cpp
689
20.Ek–9.1. kisilerh.h
690
20.Ek–9.2. kisilerCPP.cpp
692