İÇİNDEKİLER
Önsöz 5 BİRİNCİ BÖLÜM GİRİŞ 1. GİRİŞ 21 1.1. BAŞLARKEN 21 1.1.1. Anlatım 21 1.1.2. Giriş Seviyesindeki Bir Kitabın Taşıması Gereken Bazı Özellikler 21 1.2. UYARILAR VE AÇIKLAMALAR 22 1.2.1. Kitap Hakkında Uyarılar 22 1.2.2. Kitap Hakkında Açıklamalar 22 1.2.3. Kitabın Yazılış Tarzı 22 1.2.4. Yapılmaması Gerekenler 23 1.3. PROGRAMLAMA DİLLERİ 23 1.3.1. İlk Programlama Dilleri 23 1.3.2. İkinci Nesil Diller 24 1.3.3. Üçüncü Nesil Diller 24 1.3.3.1. Genel Amaçlı Yüksek Düzeyli Diller 24 1.3.3.2. Nesnelerle Programlama Yapan Yüksek Düzeyli Diller 24 1.3.4. Dördüncü Nesil Diller 25 1.3.5. Zamanımıza Kadar C++ 25 1.3.6. Dünyada "C++ Programlama Dili" Kullanımı 25 1.3.7. Derleyici 26 1.3.8. Derleyici ve Donanım 26 1.4. C++ PROGRAMLARINDA KULLANILAN NİCELİKLER 26 1.4.1. Anahtar Kelimeler 26 1.4.2. Belirleyiciler (İsimler) 27 1.4.3. Sabitler 27 1.4.3.1. Tam Sayı Sabitler 27 1.4.3.2. Karakter Sabitler 27 1.4.3.3. Ondalık Sayı Sabitler 28 1.4.3.4. Numaralama Sabitleri 28 1.4.4. String-Karakter Dizisi Sabitler 28 1.4.5. İşlemciler 29 1.4.6. Ayırıcılar 29 İKİNCİ BÖLÜM C++ PROGRAMLAMA DİLİ 2. C++ Programlama Dili 31 2.1. C++ Programlama Dilinde Kullanılan Niceliklere İsimverme 31 2.2. C++ Programlama Dilinintemel Yapısı 32 2.2.1. iostream Başlık Dosyası 33 2.2.2. İsim Uzayı 34 2.2.3. main() Fonksiyonu 35 2.2.4. Fonksiyonlar 36 2.2.5. Açıklamalar 37 2.2.6. Program Yazma Şekli 37 2.2.7. İfadeler 38 2.2.7.1. Basit İfadeler 38 2.2.7.2. Basit Olmayan İfadeler 38 2.3. TEMEL VERİ TİPLERİ 39 2.3.1. Tam Sayı Veri Tipleri 39 2.3.2. Ondalık Sayı Veri Tipleri 40 2.3.3. Karakter Veri Tipi ve Küçük Tam Sayılar 41 2.3.4. bool Veri Tipi 43 2.3.5. Tam Sayıların Kullanılması 44 2.3.6. Sayısal İşlemlerde Sınır Kavramı 44 2.4. DEĞİŞKENLER VE SABİTLER 45 2.4.1. Değişkenler 45 2.4.1.1. Bir Deyimin l-değerli (left-value) Olması 46 2.4.1.2. Bir Deyimin r-değerli (right-value) Olması 46 2.4.2. Değişken Deklerasyonları ve Tanımları 46 2.4.3. Sabitler 49 2.5. FORMATLI YAZDIRMA 50 2.6. TİP DÖNÜŞÜMÜ 51 2.6.1. Tip Dönüşümü Çeşitleri 52 2.6.1.1. Derleyici Tarafından Kendiliğinden Gerçekleştirilen Tip Dönüşümü 52 2.6.1.2. Tip Atamaları 52 2.6.2. Tip Dönüşümleri Sırasında Karşılaşılan Önemli Problemler 54 2.6.2.1. Birinci Durum 54 2.6.2.2. İkinci Durum 54 2.6.2.3. Üçüncü Durum 54 2.6.2.4. Dördüncü Durum 54 2.6.2.5. Beşinci Durum 55 2.7. ARİTMETİK İŞLEMCİLER 56 2.7.1. Aritmetik İşlemciler 56 2.7.1.1. Bölme İşlemcisive Tam Sayı Bölme işlemcisi 56 2.7.2. Kalan İşlemcisi 56 2.7.3. Aritmetik Atama İşlemcileri 57 2.7.4. Artırma İşlemcisi 58 2.7.5. Ön Ek (prefix) ve Son Ek(postfix)Gösterimi 58 2.7.6. Eksiltme İşlemcisi 59 2.8. HAZIR FONKSİYONLAR 59 2.8.1. Başlık Dosyaları 60 2.9. SORULAR VE ALIŞTIRMALAR 61 ÜÇÜNCÜ BÖLÜM SEÇME VE DÖNGÜ 3. SEÇME VE DÖNGÜ 63 3.1. KARŞILAŞTIRMA 63 3.2. SEÇME ÇEŞİTLERİ 64 3.2.1. if İfadesi 64 3.2.1.1. Basit if ifadesi 64 3.2.1.2. if … else … ; İfadesi 67 3.2.1.3. Koşullu İşlemci (the conditional operator) 70 3.2.2. switch İfadesi 71 3.3. DÖNGÜ (Loop)ÇEŞİTLERİ 73 3.3.1. for Döngüsü 73 3.3.1.1. for Döngüsünün Başlığı 74 3.3.1.2. for Döngüsünün Gövdesi 75 3.3.1.3. Bloklar ve Değişkenlere Erişebilme(Variable Visibility) 76 3.3.1.4. Değişikfor Döngüleri 76 3.3.1.5. for İfadelerinin İçinde Tanımlanan Değişkenler 76 3.3.1.6. Birden Çok İlk Değer Atama ve Sınama Deyimleri 77 3.3.1.7. for Döngüsünde Adım Aralığını Değiştirme 77 3.3.1.8. for Döngüsünde string 77 3.3.2. while Döngüsü 78 3.3.2.1. Öncelik Sırası: Aritmetik ve Mantıksal İşlemciler 80 3.3.3. do while Döngüsü 80 3.4. MANTIK İŞLEMCİLERİ 81 3.4.1. VE (&&) İşlemcisi 82 3.4.2. VEYA (||)İşlemcisi 82 3.4.3. DEĞİL (!) İşlemcisi 84 3.5. BAZI İŞLEMCİLERİN ÖNCELİK SIRASI 84 3.6. DİĞER KONTUROL İFADELERİ 84 3.6.1. break İfadesi 84 3.6.2. continue İfadesi 84 3.6.3. goto İfadesi 85 3.7. SORULAR ve ALIŞTIRMALAR 86 DÖRDÜNCÜ BÖLÜM DİZİ VERİ TİPİ 4. DİZİ VERİ TİPİ 87 4.1. VERİ TİPLERİ 87 4.1.1. Basit Veri Tipleri 87 4.1.2. Basit Olmayan Veri Tipleri 87 4.2. BİR BOYUTLU DİZİ 87 4.2.1. Bir Boyutlu Dizi Deklerasyonu 87 4.2.2. Dizi Elemanlarına Değer Atama 88 4.2.3. Dizinin Elemanlarını Kullanma 89 4.2.4. Dizinin Elemanlarına İlk Değerleri Atama 89 4.2.5. Dizilere Başlangıç Değeri Verme Kuralları 90 4.3. İKİ BOYUTLU DİZİ 91 4.3.1. İki Boyutlu Dizi Deklerasyonu 91 4.3.1.1. İki Boyutlu Bir Diziyi Bir Fonksiyona Argüman Olarak Gönderme 93 4.4. DEĞİŞİK DİZİ ÖRNEKLERİ 95 4.5. DİZİLER VE DİNAMİK BELLEK KULLANIMI 97 4.5.1. Diziyi Belleğe Dinamik Olarak Yerleştirme 97 4.5.2. Dinamik Olarak Belleğe Yerleştirilen Diziye İlk Değerleri Verme 98 4.5.3. Diziyi Bellekten Silme 98 4.6. SORULAR VE ALIŞTIRMALAR 98 BEŞİNCİ BÖLÜM STRING ve KARAKTER TİPLİ DİZİ 5. STRING ve KARAKTER TİPLİ DİZİ 101 5.1. STRING 101 5.2. KOPYALAMA 103 5.3. İKİ BOYUTLU KARAKTER DİZİSİ 104 5.4. STRING TİPLİ DEĞİŞKENDEKİ KARAKTERLER 104 5.5. BAŞKA ÖRNEKLER 105 5.6. SORULAR ve ALIŞTIRMALAR 105 ALTINCI BÖLÜM YAPI ve NUMARALAMA VERİ TİPLERİ 6. YAPI ve NUMARALAMA VERİ TİPLERİ 107 6.1. YAPI VERİ TİPİ 107 6.1.1. Yapı Veri Tipi Tanımı 108 6.1.2. Yapı Veri Tipli Değişken Tanımlama 108 6.1.3. Yapının Üyelerine (Elemanlarına) Erişme 108 6.1.4. Yapı Veri Tipinin Diğer Özellikleri 109 6.1.4.1. Yapı Üyelerine İlk Değerlerin Atanması 109 6.1.4.2. Atama İfadelerinde Yapı Tipli Değişkenler 110 6.1.5. Yapı İçinde Yapı 110 6.1.6. Kümelenmiş Yapıların Üyelerine Erişme 111 6.1.7. Kümelenmiş Yapılara İlk Değer Atama 112 6.1.8. Kümelenme Derinliği 112 6.2. NUMARALAMAVERİ TİPİ 113 6.2.1. Numaralama (enum) Sabitlerinin Değerlerini Açıkça Belirtme 115 6.2.2. Numaralama Veri Tipi ve Giriş/Çıkış 115 6.2.3. Numaralama Örnekleri 116 6.3. SORULAR ve ALIŞTIRMALAR 116 YEDİNCİ BÖLÜM FONKSİYONLAR: 1 7. FONKSİYONLAR: 1 119 7.1. GİRİŞ 119 7.2. ARGÜMANSIZ (BASİT) FONKSİYONLAR 119 7.2.1. FonksiyonuDeklere Etme 120 7.2.2. Fonksiyonu Çağırma 120 7.2.3. Fonksiyonu Tanımlama 121 7.2.4. Fonksiyon Tanımını Kütüphane Fonksiyonları İle Karşılaştırma 121 7.2.5. FonksiyonunDeklerasyonundan Kurtulma 121 7.3. ARGÜMANLI FONKSİYONLAR 122 7.3.1. Fonksiyona SabitleriArgüman OlarakGönderme 122 7.3.2. Fonksiyonun Parametreleri 123 7.3.3. Fonksiyona DeğişkenleriArgüman Olarak Gönderme 124 7.4. FONKSİYONA ARGÜMAN GÖNDERME ŞEKİLLERİ 125 7.4.1. Fonksiyona Argümanı DEĞER Olarak Gönderme 125 7.4.1.1. Fonksiyona Yapı Tipli Argümanı DEĞER Olarak Gönderme 125 7.4.1.2. Fonksiyona Dizi Tipli Argümanı DEĞER Olarak Gönderme??? 126 7.4.2. Fonksiyona Argümanı REFERANS Olarak Gönderme 127 7.4.3. Fonksiyona Argümanı GÖSTERİCİ Olarak Gönderme 127 7.5. FONKSİYONDAN DEĞER DÖNDÜRME 127 7.5.1. return İfadesi 128 7.5.1.1. return İfadesinde Gereksiz Değişkenlerden Kurtulma 130 7.5.2. Fonksiyonlardan YAPI TİPLİ Argümanları Döndürme 130 7.5.3. Fonksiyondan Dizi Tipli Bir Veriyi Gösterici Kullanarak Döndürme 131 7.5.4. Fonksiyonlardan Argümanları REFERANS Olarak Döndürme 132 7.5.4.1. Referans Veri Tipi 132 7.5.4.2. Referans Veri Tipli Değişken Tanımlama ve OnaBaşlangıç Değeri Verme 132 7.5.4.3. Referans Olarak Tanımlanan Değişkeni Kullanma 133 7.5.4.4. Referans Olarak Tanımlanan Bir Değişkene Değer Atama 133 7.5.4.5. Referans Örnekleri 133 7.5.4.6. Argümanları Fonksiyonlara REFERANS Olarak Gönderme 134 7.5.4.7. Basit Veri Tiplerini Fonksiyonlara Referans Olarak Gönderme 136 7.5.4.8. Fonksiyona Referans Olarak İki Argüman Gönderme 137 7.5.5. Fonksiyona YapıTipli VerileriReferans Olarak Gönderme 138 7.6. FONKSİYONLARIN AŞIRI YÜKLENMESİ 139 7.6.1. Fonksiyonların Aşırı Yüklenmesi 139 7.6.2. Fonksiyonların Aşırı Yüklenmesi ve Dönüş Tipi 141 7.7. FONKSİYONLARIN BAZI ÖZELLİKLERİ 141 7.7.1. Fonksiyonların Kendi Kendini Çağırması 141 7.7.2. Yerel Fonksiyonlar 142 7.7.3. Fonksiyonların Varsayılan Argümanları 143 7.7.4. Yerel ve Genel Değişkenler 143 7.7.4.1. Statik Yerel Değişkenler 144 7.7.5. Referans Tipli Dönüş Değerleri 144 7.7.5.1. Bir Fonksiyonun const Referans Argümanları 145 7.8. STANDART FONKSİYONLAR 145 7.9. SORULAR ve ALIŞTIRMALAR 147 SEKİZİNCİ BÖLÜM SINIF VERİ TİPİ VE NESNE 8. SINIF VERİ TİPİ ve NESNE 149 8.1. SINIF (class) VERİ TİPİve NESNE (object) TANIMI 149 8.1.1. Yapısal Programlama Hakkında Birkaç Söz 149 8.1.2. Gerçek Dünyanın Modellenmesi 149 8.1.3. Sınıfa Neden İhtiyaç Duyulur? 149 8.1.4. Yapı ve Sınıf Veri Tipleri Arasındaki İlişki 150 8.1.5. Sınıf Tanımı 151 8.1.6. Sınıf Veri Tipinin Özellikleri 151 8.2. BASİT BİR SINIF VERİ TİPİ VE BASİT BİR NESNE 151 8.2.1. Sınıf Veri Tipi ve Nesne 152 8.2.2. Sınıf Veri Tipini Tanımlama 152 8.2.3. private ve public Belirticileri 153 8.2.4. Sınıf Veri Tipinin Üye Verileri 153 8.2.5. Sınıf Veri TipininÜye Fonksiyonları 153 8.2.6. Sınıf Veri Tipinin Kullanılması 153 8.2.6.1. Nesnelerin Tanımlanması 153 8.2.6.2. Nokta İşlemcisi ve Üye Fonksiyonların Çağırılması 154 8.3. FİZİKSEL NESNELER OLARAK C++ NESNELERİ 154 8.3.1. Nesne Olarak Kimlik Bilgileri 155 8.3.2. Nesne Olarak Daire 155 8.4. KURUCUFONKSİYON 157 8.4.1. Nesneleri İlk Kullanıma Hazırlama 157 8.4.2. Nesnelerin Kendi Kendilerini İlk Kullanıma Hazırlaması 157 8.4.3. Kurucu Fonksiyon 158 8.4.4. Kurucu Fonksiyon - Daire Örnegi 159 8.4.5. Kurucu Fonksiyonun Özellikleri 160 8.4.6. Nesnelere Atanan İlk Değerlerin Listesi 160 8.5. YOK EDİCİ FONKSİYONLAR 161 8.6. NESNELERİN FONKSİYON ARGÜMANLARI OLARAK KULLANILMASI 161 8.7. KURUCU FONKSİYONLARIN AŞIRI YÜKLENMESİ 162 8.8. ÜYE FONKSİYONLARIN SINIFIN DIŞINDA TANIMLANMASI 163 8.8.1. Kapsam Çözünürlük İşlemcisi 163 8.9. ARGÜMAN OLARAK NESNELERİN KULLANILMASI 163 8.10. VARSAYILAN KOPYALAMA KURUCUFONKSİYONU 164 8.11. FONKSİYONLARDAN NESNELERİ DÖNDÜRME 165 8.12. ARGÜMANLAR VE NESNELER 165 8.13. YAPILAR VE SINIFLAR 167 8.14. SINIFIN STATİK ÜYE VERİSİ 168 8.14.1. Sınıfın static Üye Verisi 168 8.14.2. Sınıfın static Üye Verisini Kullanma 169 8.14.3. static Üye İçin Deklerasyon ve Tanım Ayrı Ayrı 170 8.15. ÜYE FONKSİYONLARIN const OLARAK DEKLERE EDİLMESİ VE TANIMLANMASI 170 8.15.1. Üye Fonksiyonun const Argümanları 171 8.15.2. const Olarak Tanımlanan Nesneler 171 8.16. SINIF ÜYESİ OLARAK KARAKTER DİZİLERİ 172 8.17. "String"ve "string" SINIFLARI 175 8.18. SORULAR ve ALIŞTIRMALAR 177 DOKUZUNCU BÖLÜM İŞLEMCİLERİNAŞIRI YÜKLENMESİ 9. İŞLEMCİLERİNAŞIRI YÜKLENMESİ 179 9.1. TEKLİ İŞLEMCİLERİN AŞIRI YÜKLENMESİ 179 9.1.1. operator Anahtar Kelimesi 179 9.1.2. İşlemci (operator) Fonksiyonunun Argümanları 180 9.1.3. İşlemci Fonksiyonunun Döndürdüğü Değer 181 9.1.4. İsimsiz Geçici Nesneler 182 9.2. İKİLİİŞLEMCİLERİN AŞIRI YÜKLENMESİ 184 9.2.1. Aritmetik İşlemcilerin Aşırı Yüklenmesi 184 9.2.1.1. Nesneleri Toplama 184 9.2.1.2. Karakter Katarlarını Birbirine Ekleme 186 9.2.2. Karşılaştırma İşlemcileri 187 9.2.3. Aritmetik Atama İşlemcileri 187 9.3. "İNDİS" İŞLEMCİSİ 188 9.3.1. get() ve put() Fonksiyonları 188 9.3.2. Referans Olarak Dönen Bir Tek access() Fonksiyonu 189 9.3.3. Referans Olarak Dönen Aşırı Yüklenmiş [] İndis İşlemcisi 190 9.4. İŞLEMCİLERİN AŞIRI YÜKLENMELERİNE GETİRİLEN SINIRLAMALAR 190 9.4.1. Aşırı Yüklenecek İşlemcilerin Etki Edeceği İfadelerin Özelliği 190 9.4.2. Başlangıçtaki Yazım Kuralına Uyma 191 9.4.3. Aşırı Yüklenemeyen İşlemciler 191 9.4.4. Aşırı Yüklenebilen İşlemciler 191 9.4.5. Sadece Üye Fonksiyonlar Kullanılarak Aşırı Yüklenebilen İşlemciler 192 9.5. SORULAR ve ALIŞTIRMALAR 193 ONUNCU BÖLÜM KALITIM 10. KALITIM 195 10.1. KALITIM 195 10.2. TEMEL SINIF ve TÜRETİLMİŞ SINIF 195 10.2.1. Türetilmiş Sınıfın Tanımında Temel Sınıfı Açıkça Yazmak Gerekir 196 10.2.2. Türetilmiş Sınıfın Nesnelerinden Temel Sınıfın Üyelerine Erişme 197 10.2.2.1. Temel Sınıfın Kurucu Fonksiyonlarını Kullanma 197 10.2.3. Temel Sınıfın Üye Fonksiyonlarını Kullanma 198 10.2.4. protected Erişim Belirticisi 198 10.3. ÜYE FONKSİYONLARI DİKKATE ALMAMA 200 10.3.1. Hangi Fonksiyon Tanımı Kullanılır? 201 10.3.2. Dikkate Alınmayan Üye Fonksiyonlar ve Kapsam Çözünürlük İşlemcisi 202 10.4. SINIF HİYERARŞİSİ 202 10.4.1. Soyut Temel Sınıf ("Abstract" Base Class) 203 10.5. public ve private KALITIM 204 10.5.1. Erişme Kombinezonları 205 10.6. ÇOKLU KALITIM 206 10.6.1. Çoklu Kalıtımda Belirsizlik 207 10.6.1.1. Bir Başka Tür Belirsizlik 208 10.6.2. Çalışanların Eğitim Durumu 209 10.7. KALITIM ve DİNAMİK BELLEK KULLANIMI 210 10.7.1. Türetilmiş Sınıfın new Kullanmaması Durumu: 210 10.7.2. Türetilmiş Sınıfın new Kullanması Durumu: 211 10.8. SORULAR ve ALIŞTIRMALAR 212 ONBİRİNCİ BÖLÜM VERİ TİPİ DÖNÜŞÜMÜ 11. VERİ TİPİ DÖNÜŞÜMÜ 213 11.1. VERİ TİPİ DÖNÜŞÜMÜ 213 11.1.1. Temel Veri Tipleri Arasındaki Dönüşümler 213 11.1.2. Nesneler ve Temel Veri Tipleri Arasındaki Dönüşümler 214 11.1.3. Temel Bir Veri Tipinden Kullanıcı Tanımlı Veri Tipine Dönüşüm 215 11.1.4. Kullanıcı Tarafından Tanımlanan Tiplerden Temel Tiplere Dönüşüm 215 11.1.5. C. Karakter Katarları ve String Tipli Nesneler Arasında Dönüşüm 216 11.2. explicit ve mutable ANAHTAR KELİMELERİ 217 11.2.1. explicit Sayesinde Dönüşümleri Engelleme 217 11.2.2. mutable Kullanarak const Nesne Verilerini Değiştirme 218 11.3. DİNAMİK TİP BİLGİSİ (Dynamic Type Information) 219 11.3.1. dynamic_cast Yardımıyla Bir Sınıfın Tipini Konturol Etme 219 11.3.2. dynamic_cast Yardımıyla Gösterici Tiplerini Değiştirme 220 11.3.3. typeid İşlemcisi 221 11.4. SORULAR ve ALIŞTIRMALAR 221 ONİKİNCİ BÖLÜM GÖSTERİCİVERİ TİPİ 12. GÖSTERİCİVERİ TİPİ 223 12.1. GÖSTERİCİ VERİ TİPİ 223 12.1.1. Gösterici Veri Tipi Tanımı 223 12.1.2. Kullanılan Bellek Alanlarını Karşılaştırma 223 12.2. GÖSTERİCİNEİŞE YARAR ? 224 12.3. NİCELİKLERİN BELLEK ADRESLERİ VE GÖSTERİCİLER 225 12.3.1. Adresi Alİşlemcisi 225 12.4. GÖSTERENDEĞİŞKEN : Gösterici 226 12.4.1. Gösterici Değişkenin Veri Tipi Nedir? 227 12.5. GÖSTERİLEN DEĞİŞKEN(dereference) 228 12.6. void’u GÖSTEREN GÖSTERİCİ 231 12.7. GÖSTERİCİ KULLANMANIN ZORLUĞU 232 12.8. GÖSTERİCİLER ve DİZİLER 233 12.8.1. Dizi Gösterimi 233 12.8.2. Dizinin Gösterici İle Temsili 233 12.8.3. Dizi ve Gösterici Temsilinin Birlikte Kullanılması 234 12.8.4. Dizi Gibi Davranan Bir Sınıf Tanımı 235 12.9. GÖSTERİCİLER ve FONKSİYON ARGÜMANLARI 235 12.9.1. Basit Değişkenleri Fonksiyona ReferansArgüman Olarak Gönderme 236 12.9.2. DiziyiFonksiyona Argüman Olarak Gönderme 237 12.9.3. Göstericileri Fonksiyon Argümanları Olarak Kullanma 238 12.10. FONKSİYONLARI GÖSTEREN GÖSTERİCİLER 239 12.10.1. Bir Fonksiyonun Adresini Elde Etme 239 12.10.2. Fonksiyon Göstericisinin Deklerasyonu 240 12.10.3. Fonksiyon Çağırmak İçin Fonksiyon Göstericisini Kullanma 240 12.11. GÖSTERİCİLER ve KARAKTER KATARLARI 242 12.12. DİNAMİK DEĞİŞKEN venew İŞLEMCİSİ 243 12.12.1. Otomatik Değişken 243 12.12.2. Statik (static) Değişken 243 12.12.3. Dinamik Değişken 243 12.13. GÖSTERİCİLERİ KULLANARAK ÜYEFONKSİYONLARA ERİŞME 247 12.13.1. Ok İşlemcisi (arrow operator) 247 12.14. new İŞLEMCİSİNİN DÖNDÜRDÜĞÜ GÖSTERİCİNİN İÇERİĞİNE ULAŞMA 249 12.15. GÖSTERİCİLER ve NESNELER 249 12.16. BAĞLI LİSTE 250 12.17. GÖSTERİCİLERİN ÖNCELİK SIRALARI 250 12.18. SORULAR ve ALIŞTIRMALAR 251 ONÜÇÜNCÜ BÖLÜM FONKSİYONLAR: 2 13. FONKSİYONLAR: 2 253 13.1. GİRİŞ 253 13.2. SANAL FONKSİYONLAR 253 13.2.1. Sanal Fonksiyonlara Neden İhtiyaç Duyulur? 253 13.2.2. Göstericilerle Erişilen Normal Üye Fonksiyonlar 254 13.2.3. Göstericilerle Erişilen Sanal Üye Fonksiyonlar 256 13.2.4. Soyut Sınıflar ve Saf Sanal Fonksiyonlar 258 13.2.5. SANAL Üye Fonksiyon ve Grafik Örnekler 259 13.2.6. Sanal YOK EDİCİ Fonksiyonlar 260 13.3. ARKADAŞ-DOST FONKSİYONLAR(Friend Functions) 260 13.3.1. Dost Fonksiyonlar 261 13.3.1.1. Çarpma İşlemcisi 261 13.3.2. Dost (friend) Sınıflar 264 13.4. STATİK FONKSİYONLAR 265 13.4.1. static Fonksiyonlara Erişme 266 13.4.2. Nesneleri Numaralama 266 13.5. AŞIRI YÜKLENMİŞ ATAMA İŞLEMCİSİ 267 13.6. KOPYALAMA KURUCU FONKSİYONU 267 13.7. this GÖSTERİCİSİ 269 13.7.1. Nesnenin Adresini Göstermek İçin this Göstericisini Kullanma 269 13.7.2. Üye Veriye this Göstericisini Kullanarak Ulaşma 270 13.7.3. Değer Döndürmek İçin this Göstericisini Kullanma 270 13.8. SORULAR ve ALIŞTIRMALAR 271 ONDÖRDÜNCÜ BÖLÜM AKIŞ VE DOSYA 14. AKIŞ VE DOSYA 273 14.1. AKIŞ 273 14.1.1. Başlık Dosyaları 274 14.2. ios SINIFI 275 14.2.1. Biçimlendirme İşaretleri 275 14.2.2. Biçimlendirme İşaretlerini Ayarlama 277 14.2.3. İki Argümanlı setf() Fonksiyonunu Kullanma 277 14.2.3.1. Tam Sayıları Formatlı Yazdırma 277 14.2.3.2. Ondalık Sayıları Formatlı Yazdırma 278 14.2.4. ios Düzenleyicileri(Manipulators) 279 14.2.5. ios Fonksiyonları 281 14.3. istream SINIFI 283 14.4. ostream SINIFI 284 14.5. iostream VE _withassign SINIFLARI 284 14.5.1. Öntanımlı Akış Nesneleri(Predefined Stream Objects) 285 14.6. AKIŞ HATALARI 285 14.6.1. Hata Durum İşaretleri(Error. Status Bits) 285 14.6.2. Sayıları Girme 286 14.6.3. Çok Fazla Karakter Girme Problemi 287 14.6.4. Girdisiz Girdi 287 14.6.5. Karakter ve Karakter KatarıGirişi(Inputting Character and String) 288 14.7. AKIŞLARLA DİSK DOSYASI GİRİŞ/ÇIKIŞLARI 289 14.7.1. Biçimlendirilmiş Disk Dosyası 290 14.7.2. Verileri Disk Dosyasına Yazdırma 290 14.7.3. Programlar Çalışırken Oluşturulan DosyalarıBulma ve Açma 292 14.7.4. Verileri Dosyadan Okutma 293 14.7.5. Verileri Dosyaya Yazdırma Ve Dosyadan Okutma 294 14.7.6. Boşluk İçeren String’ler 295 14.7.7. Dosya Sonunu Tespit Etme 296 14.7.8. Karakter I/O(Character I/O) 297 14.8. İKİLİ SİSTEMDEGİRİŞ/ÇIKIŞ (Binary Input/Output) 298 14.8.1. reinterpret_cast<>()İşlemcisi 300 14.8.2. Dosyaları Kapatma 300 14.8.3. Nesne Giriş/Çıkışları 300 14.8.3.1. Bir Nesneyi Diske Yazma 300 14.8.3.2. Diskten Bir Nesne Okutma 301 14.8.4. Uyumlu Veri Yapıları 301 14.8.5. Birden Fazla Nesne İle Giriş/Çıkış 302 14.9. fstream SINIFI 302 14.9.1. open() Fonksiyonu 302 14.9.1.1. Mod Bitleri (Sabitleri)(The Mode Bits) 303 14.10. DOSYA GÖSTERİCİLERİ (File Pointers) 304 14.10.1. Konumu Belirleme(Specifying the Position) 304 14.10.2. Ötelemeyi Belirleme(Specifying the Offset) 304 14.10.3. tellg() Fonksiyonu 305 14.11. HATALARIN BULUNMASI 306 14.12. ÜYE FONKSİYONLARLA DOSYA GİRİŞ/ÇIKIŞI 307 14.12.1. Kendilerini Okuyup Yazabilen Nesneler 307 14.12.2. Kendi Kendilerini Okuyup Yazan Sınıflar 309 14.12.2.1. Statik Fonksiyonlar 309 14.12.2.2. typeid() Fonksiyonunun Kullanılması 309 14.13. ÇIKARMA VE EKLEME İŞLEMCİLERİNİ AŞIRI YÜKLEME 313 14.13.1. cout ve cin İçin Aşırı Yükleme 313 14.13.2. << ve >> İşlemcilerini Dosyalar İçin Aşırı Yükleme 314 14.14. BİR AKIŞ NESNESİ OLARAK BELLEK 315 14.14.1. Komut Satırı Parametreleri(Command. Line Arguments) 316 14.14.2. Yazıcı Çıktısı 318 14.15. SORULAR ve ALIŞTIRMALAR 320 ONBEŞİNCİ BÖLÜM ÇOK DOSYALI PROGRAMLAR 15. ÇOK DOSYALI PROGRAMLAR 321 15.1. GİRİŞ 321 15.1.1. Arayüz 321 15.1.2. Uygulama 321 15.2. ÇOK DOSYALI PROGRAM OLUŞTURMA 321 15.2.1. Başlık Dosyaları 322 15.2.2. Dizin 322 15.2.3. Projeler 322 15.3. DOSYALAR ARASINDAKİ HABERLEŞME 323 15.3.1. Kaynak Dosyaları Arasındaki Haberleşme 323 15.3.2. Değişkenlerin Dosyalar Arasında Ortak Kullanılması 323 15.3.2.1. Programda Geçerli Tanım Sayısı 323 15.3.2.2. Genel Değişkene Farklı Bir Dosyadan Erişme 324 15.3.2.3. Bir Kısıtlama 324 15.3.2.4. Genel Değişkenleri Aynı İsimle Farklı Dosyalarda Kullanma 325 15.3.3. Fonksiyonların Dosyalar Arasında Ortak Kullanılması 326 15.3.3.1. Deklerasyon ve Tanım 326 15.3.3.2. Birden Çok Deklerasyon 326 15.3.3.3. Statik Fonksiyonlar 327 15.3.4. Sınıfların Dosyalar Arasında Ortak Kullanılması 327 15.3.5. Başlık Dosyaları 328 15.3.5.1. Başlık Dosyası Kullanma Sebebi 328 15.3.5.2. Tanımları Başlık Dosyasına Koyma 329 15.3.5.3. Sınıf Tanımını Kaynak Dosyaların Her Birine Koyma 329 15.3.5.4. Harici Dosyaların Tanımları 330 15.3.6. Birden Çok "include" Tehlikesi 330 15.3.7. Birden Çok "include" u Önleme 331 ONALTINCI BÖLÜM ŞABLONLAR 16. ŞABLONLAR 333 16.1. FONKSİYON ŞABLONLARI 333 16.1.1. Bu Kavrama Ne Gerek Var? 333 16.1.2. Basit Bir Fonksiyon Şablonu 334 16.1.3. Fonksiyon Şablonunun Söz Dizimi 335 16.1.4. Birçok Argümanı Olan Fonksiyon Şablonları 335 16.2. SINIF ŞABLONLARI 336 16.2.1. Üye fonksiyonların Sınıfın Dışında Tanımlanması Durumu 338 16.2.2. Şablon Kullanılan Bir Bağlı Liste Sınıfı 341 16.3. BİR TİPİN JENERİK ve ÖZEL ARGÜMANLARI 343 16.4. BİRDEN ÇOK TİP PARAMETRESİNE SAHİP OLAN ŞABLONLAR 345 16.4.1. Varsayılan Tipli Şablon Parametreleri 346 16.5. ŞABLONLARIN “ÜYE” OLARAK KULLANILMASI 346 16.6. SORULAR ve ALIŞTIRMALAR 347 ONYEDİNCİ BÖLÜM KURALDIŞI DURUMLAR 17. KURALDIŞI DURUMLAR 349 17.1. KURAL DIŞI DURUMLAR 349 17.2. SORULAR ve ALIŞTIRMALAR 353 ONSEKİZİNCİ BÖLÜM STANDART ŞABLON KÜTÜPHANESİ (SŞK) = STL 18. STANDART ŞABLON KÜTÜPHANESİ (SŞK) = STL 355 18.1. GİRİŞ 355 18.2. DEPOLAYICILAR 355 18.2.1. Sıralı Depolayıcılar 356 18.2.1.1. Vektörler(vectors) 357 18.2.1.1.1-push_back(), size() ve operator [] Üye Fonksiyonları 357 18.2.1.1.2- swap(), empty(), back() ve pop_back() Üye Fonksiyonları 358 18.2.1.1.3- insert() ve erase() Üye Fonksiyonları 360 18.2.1.2. Listeler(lists) 361 18.2.1.2.1- push_front(), front() ve pop_front() Üye Fonksiyonları 361 18.2.1.2.2- reverse(), merge() ve unique() Üye Fonksiyonları 362 18.2.1.3. Çift Uçlu Kuyruk (Deque) 363 18.2.2. Birleşik Depolayıcılar 365 18.2.2.1. Kümeler ve Çoklu Kümeler 366 18.2.2.2. Eşlemeler ve Çoklu Eşlemeler 368 18.2.2.3. Birleşik Dizi 369 18.2.3. Depolayıcıların Kendi Üye Fonksiyonları 371 18.2.4. DepolayıcıUyarlayıcıları 371 18.3. ALGORİTMALAR 372 18.3.1. Algoritma Örnekleri 373 18.3.1.1. find() Algoritması 373 18.3.1.2. count() Algoritması 374 18.3.1.3. sort() Algoritması 374 18.3.1.4. search() Algoritması 376 18.3.1.5. merge() Algoritması 377 18.3.2. Algoritmalara _if Ekleme 377 18.3.2.1. for_each() Algoritması 378 18.3.2.2. transform() Algoritması 379 18.4. İTERATÖRLER 379 18.4.1. Akıllı Gösterici Olarak İteratör 381 18.4.2. Sıradan Göstericilerin Durumu 381 18.4.3. İteratörleri Tamamen Ayrı Bir Sınıf Olarak Tanımlama 382 18.4.4. Arayüz Olarak İteratörler 382 18.4.5. Algoritmaları Depolayıcılarla Eşleme 384 18.4.6. DepolayıcıUcu 384 18.4.7. İteratörü Algoritmaya Bağlama 385 18.4.8. Üye Fonksiyonlarla Algoritmalar Arasında Seçim Yapma 386 18.4.9. İteratörlerin Kullanılması 387 18.4.9.1. Veriye Erişme 387 18.4.9.2. Veri Ekleme 388 18.4.9.3. Algoritmalar ve İteratörler 388 18.4.10. Özelleştirilmiş İteratörler 390 18.4.10.1. İteratör Uyarlayıcıları 390 18.4.10.1.1- Ters İteratörler 391 18.4.10.1.2- Ekleme İteratorleri 392 18.4.10.1.3- Akış İteratörleri 394 18.4.10.2. ostream_iterator Sınıfı 394 18.4.10.3. istream_iterator Sınıfı 396 18.4.11. Kullanıcı Tarafından Tanımlanan Nesneleri Depolama 398 18.4.11.1. Kisi Sınıfının Nesnelerinin Kümesi 398 18.4.11.2. Gerekli Üye Fonksiyonlar 399 18.4.11.3. Sıralama 400 18.4.11.4. Tıpkı Temel Tipler Gibi 400 18.4.11.5. Kisi Sınıfının Nesnelerinin Listesi 400 18.4.11.6. Belirli Bir İsme Sahip Tüm Kişileri Bulma 402 18.4.11.7. Belirli Bir Telefon Numarasına Sahip Tüm Kişileri Bulma 402 18.5. FONKSİYON NESNELERİ 403 18.5.1. Derleyicide Tanımlı Fonksiyon Nesneleri 403 18.5.2. Kendi Fonksiyon Nesnelerini Yazma 405 18.5.3. KisileriKarsilastir() Fonksiyon Nesnesi 408 18.5.4. KisiYaz() Fonksiyon Nesnesi 408 18.5.5. Depolayıcının Davranışını Değiştirmek İçin KullanılanFonksiyon Nesneleri 409 18.6. STL İLE İLGİLİ ENDİŞELER 409 EKLER E.1. İŞLEMCİLERİN ÖNCELİK SIRALARI 411 E.2. DEPOLAYICILARIN ÜYE FONKSİYONLARI 414 E.3. ALGORİTMA TABLOLARI 415 E.3.1. Genel Açıklamalar 415 E.3.2. Değişmeyen Ardışıklık (Ardıllık) İşlemleri 416 E.3.3. Değişen Ardışıklık (Ardıllık) İşlemleri 417 E.3.4. Sıralama ve İlgili İşlemler 418 E.3.5. Genelleştirilmiş Sayısal İşlemler 420 E.4. ALGORİTMALAR İÇİN GEREKLİ İTERATÖRLER 421 E.5. ŞEKİL 423 E.5.1. sekilh.h 423 E.5.2. sekilCpp.cpp 426 E.6. C913.cpp 428 E.6.1. C913h.h 428 E.6.2. C913pp.cpp 428 E.7. SINIFLAR 429 E.7.1. siniflarh.h 429 E.7.2. siniflarCpp.cpp 431 E.8. KALITIM 432 E.8.1. Kalitimh.h 432 E.9. ÇALIŞAN 433 E.9.1. calisanh.h 433 E.10. DUYARLIK SINIRLARI 435 E.11. GÖSTERİCİYİ GÖSTEREN GÖSTERİCİ 437 Kaynaklar 439 Kavram Dizini 441 |