C, C++, Java vb. bir çok programlama dili için hazırlanan görsel resimli flash animasyonlu dersler bilgiler programlama ile ilgilenen kişilerin çok işine yarayacak bir döküman özellikle flash animasyınlar ile yapılan benzetimler daha kolay anlamayı sağlıyor.
Dersin Hedefi
Bu derste, programlama dillerinin temel kavramları ve bu kavramlar için çeşitli dillerde sağlanan yapılar incelenecektir. Tanıtılan kavramları örneklemek için, Pascal, C, C++, Java gibi çeşitli programlama dilleri kullanılacaktır.
Bu dersin amacı, öğrencinin hem programlama dillerinin temelindeki kavramları öğrenmesi, hem de programlama dilleri alanında kapsamlı bir bakış açısına sahip olmasıdır.
Programlama dilleri kavramlarının ve farklı programlama dillerinin incelenmesi;
* Etkin algoritmalar geliştirilmesi,
* Varolan programlama dillerinin kullanımının geliştirilmesi,
* Programlama yapıları hakkındaki bilginin artırılması,
* Programlama dilleri arasındaki seçimin kolaylaştırılması,
* Yeni bir dil öğrenilmesinin kolaylaştırılması
konularında yararlı olacaktır.
BÖLÜM 1 – Programlama Dillerine Genel Bir Bakış
Programlama dilleri, genellikle bir dil tasarımcısı veya bir komite tarafından tanımlanır. Bu tanımlama ile, o programlama dili için hem insanlar hem de bilgisayarlar tarafından ortak olarak anlaşılacak kurallar ve semboller belirlenir.
Makine Dili Bir programlama dilinin bilgisayar tarafından anlaşılması için, o dilin sözdiziminin ve anlamının makine diline çevrilmesi gereklidir. Makine dili, bir bilgisayarın doğrudan anladığı gösterim olup, bilgisayarların ana dili olarak nitelenebilir.
Programlama dillerinin makine diline çevrilmesi, üçüncü bölümde incelenecek olan derleme veya yorumlama yöntemleriyle sağlanır.
1.1. Programlama Dili Nedir?
1.2. Programlama Dillerinin Gelişimi
1.2.1. Programlama Dillerini Düzeylere Ayırmak
1.2.2. Programlama Dillerinin Sınıflandırılması
1.2.2.1. Sayısal Uygulamalara Yönelik Programlama Dilleri
1.2.2.2. Ticari Uygulamalara Yönelik Programlama Dilleri
1.2.2.3. Yapay Zeka Uygulamaları için Programlama Dilleri
1.2.2.4. Sistem Programlama Dilleri
1.3. Programlama Dilleri Değerlendirme Kriterleri
1.3.1. Okunabilirlik
1.3.2. Yazılabilirlik
1.3.3. Güvenilirlik
1.4. Yazılım Mühendisliğinde Programlama Dilleri
1.4.1. Yazılım Geliştirme Yaşam Döngüsü Nedir?
1.4.2. Programlama Paradigmaları
1.4.2.1. Imperative Paradigmayı Destekleyen Diller
1.4.2.2. Nesneye Yönelik Paradigmayı Destekleyen Diller
1.4.2.3. Fonksiyonel Paradigmayı Destekleyen Diller
1.4.2.4. Mantık Paradigmayı Destekleyen Diller
BÖLÜM 2 – Dil Tanımı
2.2. Soyut Söz dizim
2.3. Metinsel Söz dizim
2.4. Programlama Dillerinde Gramer
2.4.1. BNF: Backus-Naur Form
2.4.1.1. BNF: Backus-Naur Form (Devam)
2.4.2. Gramerler ve Türetmeler
2.4.2.1. Gramerler ve Türetmeler (Devam)
2.4.3. Ayrıştırma Ağaçları
2.4.4. Genişletilmiş BNF
2.4.4.1. Seçimlik (optionality) [ ]
2.4.4.2. Yineleme (repetition) { }
2.4.4.3. Değiştirme (alternation) |
2.4.4.4. Genişletilmiş BNF (Devam)
2.4.5. Sözdizim Grafikleri
2.5. Programlama Dillerinin Anlamsal Olarak Tanımlanması
2.5.1. Programlama Dillerinin Anlamsal Olarak Tanımlanması (Devam)
2.6. Programlama Dillerinin Standartlaştırılması
BÖLÜM 3 – Dil Çevrimi
3.1.1. Yorumlayıcılar
3.2. Derleme Yaklaşımı ile Dil Çevrimi
3.2.1. Derleme Sürecine Genel Bir Bakış
3.2.2. Derleme Sürecinin Aşamaları
3.2.2.1. Metinsel Çözümleme
3.2.2.2. Sözdizim Çözümleme
3.2.2.2.1. Sözdizim Çözümleme (Devam)
3.2.2.3. Anlam Çözümleme
3.2.2.4. Kod Oluşturma
3.2.2.5. Eniyileme
3.3. Dil Çevrim Yöntemlerinin Karşılaştırılması
3.3.1. Zaman Etkinliği Açısından
3.3.2. Bellek Kullanma Etkinliği Açısından
3.3.3. Hata Bildirme Yöntemleri Açısından
3.3.4. Taşınabilir Kod
Bölüm Özeti
Değerlendirme Soruları
BÖLÜM 4 – Temel Programlama Elemanları
Bölüm Hedefi
4.1. Giriş
4.2. Değişkenler
4.2.1. İsimler
4.2.1.1. En Fazla Uzunluk
4.2.1.2. Küçük-Büyük Harf Duyarlılığı (Case Sensitivity)
4.2.1.3. Özel Kelimeler
4.2.2. Veri Tipi Kavramı
4.3. Sabitler
4.4. İşlemciler
4.4.1. Genel Özellikler
4.4.1.1. İşlenen sayısı (arity)
4.4.1.2. İşlemcinin Yeri
4.4.1.3. Öncelik
4.4.1.4. Associativity
4.4.2. Niteliğine Göre İşlemciler
4.4.2.1. Sayısal İşlemciler
4.4.2.2. İlişkisel İşlemciler
4.4.2.3. Mantıksal İşlemciler
4.4.2.4. Değerlendirme
4.4.3. İşlemci Yükleme
4.5. İfadeler
4.6. Deyimler
Bölüm Özeti
Değerlendirme Soruları
BÖLÜM 5 – Temel Programlama Kavramları
Bölüm Hedefi
5.1. Bağlama Kavramı
5.1.1. Bağlama Zamanı
5.1.2. Tip Bağlama
5.1.2.1. Durağan Tip Bağlama
5.1.2.2. Dinamik Tip Bağlama
5.1.3. Bellek Bağlama
5.1.3.1. Bellek Düzeni
5.1.3.2. Değişkenlerin Bellek Yeri Bağlamalarına Göre Sınıflanması
5.1.3.2.1. Durağan (static) Değişkenler
5.1.3.2.2. Yığıt Dinamik (stack-dynamic) Değişkenler
5.1.3.2.3. Dışsal Yığın (explicit heap) Dinamik Değişkenler
5.1.3.2.4. Örtülü (implicit) Dinamik Değişkenler
5.1.3.2.5. Değerlendirme
5.1.3.3. Değişken İlkleme
5.2. İsim Kapsamları
5.2.1. Durağan Kapsam Bağlama
5.2.1.1. Blok Yapısı
5.2.1.2. Blok Yapılı Diller
5.2.1.3. Durağan Kapsam Bağlamadaki Sorunlar
5.2.2. Dinamik Kapsam Bağlama
5.2.2.1. Pascal’da Dinamik Kapsam Bağlama
5.2.2.2. Dinamik Kapsam Bağlamanın Sorunları
BÖLÜM 6 – Veri Tipleri
6.2. İlkel Veri Tipleri
6.2.1. Sayısal Tipler
6.2.1.1. Integer (Tamsayı)
6.2.1.2. Floating point (Kayan Noktalı)
6.2.1.3. Decimal (Onlu)
6.2.2. Boolean (Mantıksal)
6.2.3. Character (Karakter)
6.2.4. Character String (Karakter Dizgi)
6.2.4.1. Karakter Dizgilerin Uzunlukları
6.2.5. Kullanıcı Tanımlı Sıralı Tipler
6.2.5.1. Enumeration (Sayılama) Tipleri
6.2.5.2. Subrange (Altalan) Tipleri
6.3. Yapısal Veri Tipleri
6.3.1. Diziler
6.3.1.1. Dizi İndisleri
6.3.1.2. Dizi Tiplerinin Gerçekleştirimi
6.3.1.3. Dizilerin Belleğe Eşleştirilmesi
6.3.2. Record (Kayıt) Tipi
6.3.2.1. Kayıt Sahalarına Başvuru
6.3.2.2. Pascal ve C’ de Kayıt Sahalarına Başvuru
6.3.2.3. Kayıt Ataması
6.3.3. Union (Bileşim) Tipi
6.3.4. Set (Küme)Tipi
6.3.5. Pointer (Gösterge) Tipi
6.3.5.1. Genel Özellikler
6.3.5.2. Gösterge Tipi için Atama ve Başvuru Çözme
6.3.5.3. Gösterge Aritmetiği
6.3.5.4. Gösterge Veri Tipi Sorunları
6.3.5.4.1. Sallanan Gösterge
6.4. Kuvvetli Tipleme
6.5. Tip Denetimi
6.5.1. Tip Dönüşümleri
6.5.1.1. Örtülü Tip Dönüşümleri
6.5.1.2. Dışsal Tip Dönüşümleri
BÖLÜM 7 – Yapısal Programlama ve Akış Denetimi
7.1. Yapısal Programlama
7.1.1. Yapısal Programlama (Devam)
7.2. Program Akış Denetim Deyimleri
7.2.1. Atama Deyimi
7.2.1.1. Atama İşlemcisi
7.2.1.2. Atama Deyimlerinin Tasarımı
7.2.1.2.1. Koşullu Hedefler
7.2.1.2.2. Birleşik Atama
7.2.1.2.3. Artırma – Azaltma – Atama
7.2.2. Seçim Yapıları
7.2.2.1. İkili ve Tekli Seçim Deyimleri
7.2.2.1.1. Yuvalanmış if Deyimi
7.2.2.1.2. If Deyimlerinin Sonunun Belirtilmesi
7.2.2.2. Kısa Devre Değerlendirme
7.2.2.2.1. Kısa Devre Değerlendirme (Devam)
7.2.2.3. Çoklu Seçim Deyimi
7.2.2.3.1. Case Yapısının Ortak Noktaları
7.2.3. Yineleme Yapıları
7.2.3.1. Sayaç Denetimli Döngüler
7.2.3.1.1. FORTRAN IV
7.2.3.1.2. FORTRAN77 ve FORTRAN90
7.2.3.1.3. ALGOL 60
7.2.3.1.4. Pascal
7.2.3.1.5. C
7.2.3.2. Mantıksal Denetimli Döngüler
7.2.4. Akış Denetimini Koşulsuz Değiştirme
7.2.4.1. Goto Deyimi
7.2.4.2. Döngüler için Aktarma Deyimleri
7.2.4.2.1. QuickBASIC ve Ada’da Döngüler için Aktarma Deyimleri
7.2.4.2.2. C’de Aktarma Deyimleri
BÖLÜM 8 – Altprogramlar
8.1. Yazılım Mühendisliği Açısından Alt programlar
8.2. Alt programların Özellikleri
8.2.1. Alt programların Bölümleri
8.2.1.1. Alt program Başlığı
8.2.1.2. Yerel Tanımlamalar
8.2.1.3. Bir Dizi Çalıştırılabilir Deyim
8.2.2. Yordam ve Fonksiyonlar
8.2.3. Parametreler
8.2.3.1. Yordam Çağırımı
8.2.3.1.1. Konumsal Parametreler
8.2.3.1.2. Anahtar Kelime Parametre Yöntemi
8.2.3.2. Fonksiyon Çağırımı
8.2.4. Parametre Aktarım Yöntemleri
8.2.4.1. Parametre Aktarım Yöntemleri (Devam)
8.2.4.1.1. Değer ile Çağırma (Call by Value)
8.2.4.1.2. Sonuç ile Çağırma (Call by Result)
8.2.4.1.3. Değer ve Sonuç ile Çağırma (Call by Value Result)
8.2.4.1.4. Başvuru ile Çağırma (Call by Reference)
8.2.4.1.5. İsim ile Çağırma (Call by Name)
8.2.4.1.6. Çağırma Yöntemlerinin Karşılaştırılması
8.2.5. C’de Parametre Aktarımı
8.2.6. Pascal’da Parametre Aktarımı
8.2.7. Etkinlik Kayıtları
8.2.7.1. Yığıt Bellek Düzeni
8.2.7.2. Altprogram Çağırım İşlemleri
8.2.8. Özyinelemeli Bir Altprogramın Çoklu Çağrımı
8.2.8.1. Özyinelemeli Bir Altprogramın Çoklu Çağrımı (Devam)
BÖLÜM 9 – Program Ayrıştırma
9.2 Yazılım Geliştirmede Soyutlama ve Modülerlik
9.2.1. Yordam ve Fonksiyonların Modülerliği
9.2.2. Bilgi Saklama
9.2.2.1. C
9.2.2.2. C++
9.3. Ayrı ve Bağımsız Derleme
9.3.1. Pascal
9.3.2. C
9.4. Veri Soyutlama
BÖLÜM 10 – Nesneye Yönelik Programlama
10.2. Nesneye Yönelik Tasarım
10.3. Nesneye Yönelik Programlama
10.3.1. Temel Kavramlar
10.3.2. Sınıflar ve Nesneler
10.3.2.1. Sınıflar ve Nesneler (Devam)
10.3.2.2. Yığıt Sınıfının Tanımı
10.3.2.3. Sınıf Veri ve Metodlarının Saklanması
10.3.3. Kalıtım
10.3.3.1. Kalıtım ile Sınıflar ve Sınıf Hiyerarşileri Oluşturma
10.3.3.2. Is-a ve Has-a İlişkileri
10.3.3.3. Kalıtımın Kullanılma Amaçları
10.3.4. Çokyapılılık
10.3.4.1. Sınıf, Alt sınıf ve Çokyapılı Değişken Tanımlama
10.3.5. Metod Yükleme
10.3.6. Metod Üzerine Yazma
10.4. Nesneye Yönelik Programlama Dilleri
10.4.1. Smalltalk
10.4.1.1. Smalltalk (Devam)
10.4.2. C++
10.4.2.1. C++’da Virtual Metodlar
10.4.3. Java
10.4.3.1. Java ve C++
10.4.3.2. Java’da Alt Sınıf Tanımlama
10.4.3.3. Java’da Çokyapılılık
10.4.3.4. Java’da Arayüz
10.4.3.5. Package’ler
Bölüm Özeti
Değerlendirme Soruları
Hazırlayan: Alper ÖZÇELİK – Ahmet Yesevi Üniversitesi Emeği geçen hazırlayan kişilere teşekkürler.
Not: Flash programının fişi çekildi artık geliştirilmiyor ve desteklenmiyor. Dosyada görsel anlatımlarda flash animasyonları kullanılıyor index.html dosyasını ücretsiz ve kurulumsuz “Basilisk” tarayıcı ile açıp animasyonları görüntüleyebilirsiniz. Basilisk tarayıcısını indirmek için Tıklayınız.
Şifre-Pass: 320volt.com
Yayım tarihi: 2010/10/26 Etiketler: c dersleri, nesneye yönelik programlama, programlama algoritmalar, programlama dersleri
Güzel bir payşalım teşekkürler