1.2. Programlama Dili Nedir?
40
1.3. Programlama Dillerinin Sınıflandırılması
41
1.3.1. Programlama Dillerinin Seviyelerine Göre Sınıflandırılması
41
1.3.2. Programlama Dillerini Uygulama Alanlarına Göre Sınıflandırma
47
1.3.3. Dilleri Tasarım Paradigmalarına Göre Sınıflandırma
49
1.3.3.1. Imperative Paradigmayı Destekleyen Diller
50
1.3.3.2. Nesneye Yönelik Paradigmayı Destekleyen Diller
51
1.3.3.3. Fonksiyonel Programlama
52
1.3.3.4. Mantıksal Paradigmayı Destekleyen Diller
52
1.4. Programlama Dillerinin Değerlendirme Ölçütleri
53
1.4.1. İfade Gücü (Expression Power)
54
1.4.2. Veri Türleri ve Yapıları (Data Types and Structures)
54
1.4.3. Giriş/Çıkış (Input/Output, I/O Facility) Kolaylığı
54
1.4.4. Taşınabilirlik (Portability)
54
1.4.5. Alt Programlama Yeteneği (Modularity)
55
1.4.6. Verimlilik (Efficiency)
55
1.4.7. Okunabilirlik (Readability)
55
1.4.8. Esneklik (Flexibility)
56
1.4.9. Öğrenme Kolaylığı (Pedagogy)
56
1.4.10. Genel Amaçlılık (Generality)
56
1.4.11. Yapısallık (Structural Programming)
57
1.4.12. Nesne Yönelimlilik (Object Orientation)
58
1.5. Dil Seçimini Etkileyen Etkenler
58
1.6. C Programlama Dili
59
1.6.1. MinGW GNU C Derleyicisinin Kurulumu
59
1.6.1.1. Örnek Bir C Kodunun Derlenmesi
60
1.7. Java Programlama Dili
64
1.8. Komut Satırı Parametreleri
68
1.9. Lisp Programlama Dili
68
1.11. Çalışma Soruları
70
DİLLERİN TARİHÇESİ VE ÇEŞİTLERİ
2. PROGRAMLAMA DİLLERİNİN TARİHÇESİ VE ÇEŞİTLERİ
73
2.6. PL/I (Programming Language One)
79
2.7. APL ve SNOBOL (Dinamik Diller)
80
2.9. ALGOL’un Torunları
81
2.9.2. C Programlama Dili
82
2.20. C# Programlama Dili
88
2.22. Çalışma Soruları
90
DİLLERİN TANIMLANMASI VE TASARIMI
3. DİLLERİN TANIMLANMASI VE TASARIMI
95
3.1. İfade Notasyonları
96
3.2. Soyut Sözdizim Ağaçları
96
3.2.1. İfadelerin Ağaç ile Gösterimi
97
3.3. Metinsel (Lexical) Analiz
99
3.3.1. Token’lar ve Heceler
99
3.4. Dilbilgisi (Gramerler)
102
3.4.2. Parse Ağaçlarının Somut Sentaks Tanımlaması
105
3.4.3. Belirsizlik (Ambigouity)
107
3.4.4. Sallanan Else (Dangling – Else) Belirsizliği
108
3.4.6. Aritmetik İfadeler için Gramerler
110
3.4.6.1. İşlem Önceliği (Precedence)
110
3.4.6.2. Birleşme Özelliği (Associativity)
112
3.5. Dilbilgisi Çeşitleri
115
3.6. Sözdizim Grafikleri
117
3.7. Anlamsal Tanımlama ve Dilin Standartlaştırılması
118
3.8. Çalışma Soruları
119
4.1.1. Sözcüksel (Lexical) Analiz
125
4.1.2. Sözdizim (Syntax) Analizi
127
4.1.3. Anlam (Semantic) Analizi
129
4.1.4. Kod Optimizasyonu
129
4.2. Derleyici ve Yorumlayıcının Karşılaştırılması
133
4.3. Farklı Programlama Dillerinin Bir Arada Kullanılması
135
4.4. Çalışma Soruları
136
TEMEL PROGRAMLAMA KAVRAMLARI
5. TEMEL PROGRAMLAMA KAVRAMLARI
141
5.1. Değişkenlerin İsim Özelliği
142
5.1.1. İsim Maksimum Uzunluğu (Maximum Length)
142
5.1.2. Büyük Küçük Harf Duyarlılığı (Case Sensitivity)
143
5.1.3. Özel Kelimeler
143
5.2. Değişkenlerin Tipi
144
5.4. Programlama Dillerinin İşlemcileri (Operators)
147
5.4.1. Genel Özelliklere Göre
147
5.4.1.1. İşlenen Sayısı
147
5.4.1.2. İşlemcinin Yeri
148
5.4.1.3. İşlem Önceliği
148
5.4.1.4. Birleşme Özelliği
149
5.4.2. Niteliğe Göre İşlemciler
150
5.4.2.1. Sayısal İşlemciler
150
5.4.2.2. İlişkisel İşlemciler
151
5.4.2.3. Mantıksal İşlemciler
153
5.6.1. Çoklu Hedefli Atama
156
5.6.2. Koşullu Hedefler
157
5.6.4. Tekli Atama İşlemcileri
158
5.7. Çalışma Soruları
159
6. VERİ TİPLERİ VE YAPILARI
163
6.1. İlkel Veri Tipleri
163
6.1.1. Sayısal Tipler
164
6.1.1.1. Tamsayı (Integer)
164
6.1.1.2. Kayan Noktalı Sayı (Floating Point)
165
6.1.1.3. Onlu (Decimal)
166
6.1.1.4. Mantıksal Veri Türü (Boolean)
167
6.1.1.5. Karakter Tipi
168
6.1.1.6. Karakter Katarı (String)
169
6.1.2. Kullanıcı Tanımlı Sıralı Tipler
170
6.1.2.1. Sayılama Tipleri (Enumeration)
170
6.1.2.2. Altalan Tipleri (Subrange)
171
6.2. Türetilmiş Veri Tipleri
172
6.2.1.1. Dizi Tiplerinin Adres Polinomu
173
6.3. Kayıt (Record) Tipi
177
6.4. Ortaklık (Union) Tipi
178
6.6. Gösterge (Pointer) Tipi
179
6.7. Kullanıcı Tanımlı Veri Türleri
181
6.8.1. Statik Bellek Bölgesi
182
6.8.2. Çalışma Anı Yığını
183
6.8.3. Heap Bellek Bölgesi
184
6.8.4. void Göstericisi
185
6.8.5. Sallanan Gösterici
186
6.9. Kuvvetli Tipleme
187
6.11. Tip Dönüşümleri
188
6.12. Atamalarda Tip Dönüştürme
192
6.14. Çalışma Soruları
193
7. BAĞLAMA KAVRAMI VE İSİM KAPSAMLARI
197
7.1. Statik Tip Bağlama
198
7.1.1. Örtülü Tip Bağlama
198
7.1.2. Dışsal Tip Bağlama
199
7.2. Dinamik Tip Bağlama
199
7.3.1. Program Çalışma Zamanı Bellek Düzeni
201
7.3.2. Değişkenlerin Bellek Yeri Bağlaması
202
7.3.2.1. Statik Değişkenler
202
7.3.2.2. Yığıt Dinamik (stack–dynamic) Değişkenler
203
7.3.2.3. Dışsal Heap Dinamik Değişkenler
203
7.3.2.4. Örtülü Heap Dinamik Değişkenler
204
7.4.1. Statik Kapsam Bağlama
205
7.4.2. Dinamik Kapsam Bağlama
207
7.6. Çalışma Soruları
212
8. YAPISAL PROGRAMLAMA
215
8.2. Seçimlik Yapılar
217
8.2.1. İç İçe Seçimlik Yapılar
218
8.2.1.1. Koşullu Operatör Ataması
219
8.2.2. Çoklu Seçim Yapıları
220
8.2.3. Kısa Devre Değerlendirme
221
8.3. Tekrar (Döngü) Yapıları
223
8.3.1. Sayaç Kontrollü Döngü Yapıları
223
8.3.1.2. Foreach Döngüsü
225
8.3.2. Mantıksal Kontrollü Döngü Yapıları
226
8.3.2.1. While Döngüsü
226
8.3.2.2. Do–While Döngüsü
227
8.4. Döngü Kontrol Mekanizmaları
228
8.6. Durum Etiketleri
230
8.7. Çalışma Soruları
231
ALT PROGRAMLAR VE MODÜLASYON
9. ALT PROGRAMLAR VE MODÜLASYON
235
9.1. Modül (Alt Program)
235
9.2.1. Fonksiyonlarda Çağrı Kısmı
236
9.2.2. Fonksiyonlarda Dönüş Kısmı
236
9.3. Prototip Tanımlama
242
9.4. Parametre Geçirme Yöntemleri
243
9.4.1. Değer İle Çağırma ( Pass–By–Value)
244
9.4.2. Referans İle Çağırma ( Pass–By–Reference)
244
9.4.3. Gösterici İle Çağırma (Adres ile Çağırma, Pass–By–Pointer)
246
9.4.4. Sonuç İle Çağırma ( Pass–By–Result)
250
9.4.5. İsim İle Çağırma ( Pass–By–Name)
251
9.6. Varsayılan Parametre
254
9.7. Değişken Sayıda Parametre
255
9.8. Çalışma Soruları
258
NESNEYE DAYALI PROGRAMLAMA
10. NESNEYE DAYALI PROGRAMLAMA
261
10.1. Nesnelerin Harici ve Dahili Görünüşleri
263
10.2. Nesneye Dayalı Düşünme
265
10.3. Sınıf Hiyerarşisi
265
10.3.2. Nitelik (Property) Tanımı
272
10.3.3. İç İçe Sınıf Tanımı
273
10.3.4. Yıkıcı Metotlar
274
10.3.5. Erişim Niteleyicileri
276
10.5. Overload (Aşırı Yükleme) ve Override (Ezme) Terimleri
283
10.6. C Dilinde Kalıtımın Benzetilmesi
284
10.7. Nesnelerin Karşılaştırılması
289
10.10. Object Veri Türü
297
10.11. Prosedür Esaslı Yaklaşım ile Karşılaştırma
298
10.12. Çalışma Soruları
299
İSTİSNAİ DURUMLAR VE ÖNLEMLERİ
11. İSTİSNAİ DURUMLAR VE ÖNLEMLERİ
305
11.1. Hata Kaynakları
305
11.2. Hata İle Başa Çıkma
306
11.3. Hata Yakalamada Kullanılan Kelimeler
310
11.3.1. try ve catch İfadesi
310
11.3.2. finally İfadesi
311
11.3.3. throws ifadesi
313
11.4. Hata Sınıfı Tasarlamak
315
11.5. Çalışma Soruları
320
EŞ ZAMANLILIK VE THREAD YAPISI
12. EŞ ZAMANLILIK VE THREAD YAPISI
323
12.1. Öncelik Grafları
323
12.2. Eşzamanlık Şartları
325
12.3. FORK ve JOIN Yapıları
327
12.3.1. Programlama Dillerinde Eşzamanlılığın Gerçekleştirimi
330
12.3.2. Programlama Dillerinde Eşzamanlılığın Gerçekleştirimi C Örneği
332
12.4. Parbegin–Parend Eş Zamanlılık Deyimleri
337
12.5. Bir İşlemin Durumları
339
12.6.1. İşlem Oluşturma
340
12.6.1.1. Execution (Yerine Getirme)
340
12.6.1.2. Sharing (Paylaşma)
340
12.6.2. İşlem Sonlandırılması
342
12.6.3. İki İşlem Yazılım Çözümleri
343
12.7. Kritik Bölge Problemi
343
12.8. Semaforlar (Semaphores)
350
12.9. Matris Çarpımının Java’da Thread ile Gerçekleştirimi
352
12.10. Çalışma Soruları
354
13. FONKSİYONEL PROGRAMLAMA
359
13.1. Yorumlayıcı (Interpreter)
359
13.2. Fonksiyonel Tanım
359
13.3. Değişkenin Rolü
361
13.4. Programcı Tarafından Fonksiyon Tanımlanması
363
13.5. Yerel Bildirimler
363
13.6. Tipler Değerler ve İşlemler
365
13.6.1. Tiplerin Çarpımı
365
13.6.2. Fonksiyon Uygulamaları
365
13.6.3. Tip Bildirimleri
365
13.7. Parametrik Çok Biçimlilik
366
13.9.1. Lisp Programlama Dilinde Kontrol Blokları
370
13.9.2. Lisp Programlama Dilinde Döngüler
371
13.9.3. Opsiyonel Parametre Tanımlama
372
13.9.4. Lisp Dilinde Listeler
373
13.10. Çalışma Soruları
375
14. MANTIKSAL PROGRAMLAMA
379
14.1. Mantıksal Konsept
379
14.1.3. Eşitlik Kavramı
381
14.2. Mantıksal Operatörler
381
14.2.1. Durum Yapıları
381
14.6. Özyinelemeli Çağrımlar
384
14.7. Çalışma Soruları
384