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