|
Bu kitap, program geliştiren, matematik ve
mühendislik problemlerini bilgisayar ortamında çözmek isteyen, iş dünyasına
yönelik yazılım tasarımları yapan her düzeyden programcı veya yazılımcılar
için ciddi bir başvuru kitabıdır. Kitap, aynı zamanda, üniversitelerin
bilişimle ilgili bölümlerinde okutulan Veri Yapıları ve Algoritmalar
dersleri için bir ders kitabı özelliğindedir. Program ve yazılım
tasarımında, ciddi bir bakış açısı yakalamak isteyenlere önerilir...
Veri Yapıları ve Algoritmalar, program
tasarımında çoğu zaman eksikliği hissedilen önemli bir konu; yalnız başına
bir programlama dili bilmek, program geliştirmeye yetmemektedir.
Bu kitap, C programlama diline dayanılarak çeşitli veri yapıları ve
modellerini ele almakta, onlara ait programın algoritmik ifadesini
incelmekte ve örneklerle açıklamaktadır; bütün bunlara ek olarak, program
tasarımında yapılması gereken aşamalar sistem analizi ve tasarımı konularına
uygun olarak adım adım açıklanmış ve Network yazılımı ve Veri modeli de
açıklanmıştır.
Program tasarımında en önemli konu, ele
alınan uygulamaya en uygun veri modelinin belirlenmesi, veri yapısının
tanımlanması ve programın algoritmik olarak ifade edilmesidir.
Veri yapısı, verinin veya bilginin bellekte tutulma şeklini ve
düzenini gösterir. Veri modeliyse, verilerin birbirleriyle ilişkisel ve
sırasal durumunu gösterir. Bilgisayar ortamında uygulanacak tüm matematik ve
mühendislik problemleri bir veri modeline yaklaştırılarak veya yeni veri
modelleri tanımlanması yapılarak çözülebilmektedir. Uygun bir veri modeliyle
çözüme gidilemeyen problemler, çoğu zaman ya çözümsüz kalmakta veya bellek
yetmiyor, bilgisayarın hızı yetmiyor gibi sebeplerle yarım bırakılmaktadır.
Uygulamada, her problem, doğası
gereği en uygun bir veri modeline sahiptir.
Kitap, sırasıyla şu bölümleri kapsamaktadır:
Bilgisayar Yazılım Dünyası, Program/Yazılım Geliştirme Süreci, Algoritmik
Yaklaşımda C Dili Esnekliği ve Özellikleri, Veri Yapıları, Veri Modelleri,
Algoritmalar ve Tasarım Yaklaşımları, Program Çalışma Hızı ve Bellek
Gereksinimi, Sıralama Algoritmaları, Arama Algoritmaları, Bağlantılı
Listeler ve Uygulamaları, Yığın ve Kuyruk Yapısı, Ağaç Veri Modeli,
AğaçUygulamaları, Graf Veri Modeli, Graf Algoritmaları, Durum Makinası ve
Gramer Çözümleme, Veri Sıkıştırma Yöntemleri, Yazılım geliştirme süreci.
ÖNSÖZ
Ülkemizde bilişim
alanında kitap yazmak iki açıdan, diğer alanlara göre çok daha zor ve
risklidir. Bir yandan, bu bilim dalındaki başdöndürücü gelişmeler kitapları
çok kısa sürede eskitmektedir. Diğer yandan, konu hem akademik ve hem de
sektörel olduğundan, iki farklı okuyucu kitlesine birlikte hitap etmenin
getirdiği zorluk vardır. Öğrenciler bir ders kitabı formatını isterken,
sektör mensupları da daha pratik ve referans türü kitaplar görmek
istiyorlar.
İşte böyle zor bir
ortamda genç bir yayınevi genç bir akademisyenin bilişim alanında yazdığı
kitapları peşpeşe çıkardığında, yayın ve eğitim dünyası için sevinmek
gerekir. Papatya Yayıncılık ve yazarı Dr. Rifat Çölkesen gerek içerik ve
gerek formatıyla kitaba değer verdiklerini göstermektedirler. Bu kitapların
üretimindeki kalite ve profesyonellik artık okuyucuların özlediği
düzeydedir. Bugün kişisel bilgisayarlarda profesyonel masaüstü
yayıncılığının tüm olanakları varken, bilgisayar alanında kitap yazanların
bundan yararlanmıyor olması düşünülemezdi.
Günümüzde Bilgisayar
Mühendisliği, Matematik-Bilgisayar veya İnformatik adı altında eğitim
yapılan tüm bölümlerde Veri Yapıları ve Algoritmalar dersi artık omurga ders
olmuştur. Öğrencinin bu derste iyi yetişmesi o bölümün ciddiliği için esas
kriter olmuştur. Kitap bu açıdan, içerik zenginliği ve hacmi ile, hem lisans
ve hem de lisansüstü düzeyinde okutulabilecek düzeydedir.
Diğer olumlu gördüğüm bir nokta da Sayın Çölkesen'in yazdığı
kitapların arkasında oluşudur. Bundan önceki kitaplarında olduğu gibi,
bilimdeki gelişmelere paralel olarak, uygun aralıklarla kitaptaki konuları
güncelleyecek ve okuyucuya destek olacaktır; bunun için gerekli bilgi ve
gayreti vardır.
Sayın Çölkesen'in Veri Yapıları ve Algoritmalar adlı yeni
kitabına öğrenci ve öğretim üyelerim adına hoşgeldin diyor, ülkemiz eğitim
dünyasında yararlı olmasını diliyorum. -
Prof.Dr. Bekir KARAOĞLU
İÇİNDEKİLER
Önsöz
Kitap
Hakkında
Bölüm 1.
Bilgisayar Yazılım Dünyası
Yazılım ve Program
Program Kodu
Donanım ve Bellek
İşletim Sistemi
Veri Yapısı
ve Veri Modeli
Algoritma
Program Çalışma Hızı ve
Büyük O
Programın Bellek
Gereksinimi
İşlemci, Makina Kodu ve
Assembly Dili
Programlama Dilleri
Görsel Programlama
Dilleri
Nesneye Dayalı
Programlama Dilleri
Editör, Derleyici ve
Profiler
Veritabanı ve SQL
ORACLE, SYBASE, MYSQL
Böl ve Yönet Yaklaşımı
Kullanıcı/Sunucu Mimarisi
Network
Yazılımı/Programlaması
Internet ve TCP/IP Hizmet
Türleri
Kıyaslama
(Benchmarking)
Sorular
Bölüm 2.
Algoritmik Yaklaşımda C Dili Esnekliği
ve Özellikleri
2.1. C Dilinde Bilinmesi Gerekenler
Bir C programı
2.2. Bellek Düzeni ve
Diziler
2.3. Yapısal Veri Tanımlaması
2.4. İşaretçiler
2.5. İşaretçi ve Diziler
Arasındaki İlişki
2.6. Dinamik Bellek
Kullanımı
2.7. Fonksiyon Çağırma
Yöntemleri
2.8. Fonksiyona
Veri/Parametre Aktarımı
2.9. Rekürsif
Fonksiyonların Çalışma Şekli
2.10. Disk ve Saklama
Birimlerine Erişim
2.11. ...
2.12. Proje Çalışması
2.5. Özet
2.6. Sorular
Bölüm 3.
Veri Yapıları ve Veri Modelleri
3.1.
Veri Yapıları
3.1.1. Temel Veri
Yapıları
Karakter,
Tamsayı, Kesirli Sayı
Katar ve Karakter Dizisi
Dizi ve Matrisler
3.1.2. Tanımlamalı Veri
Yapıları
Topluluk
Ortaklık
bit Düzeyinde
3.2.
Veri Modelleri
Ağaç Veri Modeli
Graf Veri Modeli
Durum Makinası Veri
Modeli
Veritabanında İlişkisel
Veri Modeli
Ağ (Network) Veri Modeli
3.3. Proje Çalışması
3.4. Özet
3.5. Sorular
Bölüm 4.
Algoritmik Program Tasarımı ve Akış
Şemaları
4.1. Program/Yazılım
Tasarımı
4.2. Algoritma Tasarımı
Algoritmik, “Heuristic” Yaklaşımlar
4.3. Akış Şemaları
4.3.1. Çeşitli Akış
Şemaları Örnekleri
4.3.2. N-S
(Nassi-Schnederman)
Şemaları
4.3.3. W-O
(Warnier-Orr)
Diyagramları
4.4. Proje Çalışmaları
4.5. Özet
4.6. Sorular
Bölüm 5.
Program Çalışma Hızı ve Bellek Gereksinimi
5.1. Temel Kavramlar
5.2. Program Çalışma Hızı
ve Karmaşıklık
Başarım Sınaması
(Benchmarking)
Algoritma Analizi
5.2.1. Yürütme Zamanı
(Running Time)
5.2.2. Karmaşıklık
(Complexity)
5.3. programın Bellek
Gereksinimi
5.4. Asimtotik
Notasyonlar
5.5. Proje Çalışmaları
5.6. Özet
5.7. Sorular
Bölüm 6.
Sıralama Algoritmaları
6.1. Temel Kavramlar
6.2. Araya Sokma
Sıralaması
(Insertion Sort)
6.3. Seçmeli Sıralama
(Selection Sort)
6.4. Kabarcık Sıralaması
(Bubble Sort)
6.5. Birleşmeli Sıralama
(Merge Sort)
6.6. Kümeleme Sıralaması
(Heap Sort)
6.7. Hızlı Sıralama
(Quick Sort)
6.8. Algoritmaların
Karşılaştırılması
6.9. Proje Çalışmaları
6.10. Özet
6.11. Sorular
Bölüm 7.
Arama Algoritmaları
7.2. İkili Arama
(Binary Search)
Sıralı Dizi Üzerinde İkili Arama
İkili Ağaç Üzerinde İkili Arama
7.3. Çırpı Algoritması
(Hash Algorithm)
Çatışma Çözümlemesi: Açık Adresleme,
Bağlantılama
7.4. Proje Çalışmaları
7.5. Özet
7.6. Sorular
Bölüm 8.
Bağlantılı Listeler ve Uygulamaları
8.1. Temel Kavramlar ve
Bağlantılı Listeler
Tek Yönlü Bağlantılı
Liste
Çift Yönlü Bağlantılı
Liste
Çevrimsel Bağlantılı Liste
Karma Bağlantılı Liste
8.2. Bağlantılı Liste
Uygulamaları
8.2.1. Tek Yönlü
Bağlantılı Liste Uygulaması
8.2.2. Çift Yönlü
Bağlantılı Liste Uygulaması
8.3. Özel Amaçlı
Bağlantılı Listeler
8.4. Proje Çalışmaları
8.5. Özet
8.6. Sorular
Bölüm 9.
Yığın ve Kuyruk Yapısı/Modeli
9.2. Kuyruk Tasarımı
9.3. .....
9.4. Proje Çalışmaları
9.5. Özet
9.6. Sorular
Bölüm 10.
Ağaç Veri Modeli
10.1. Ağaçlar Üzerine
Temel Kavramlar
10.2. Ağaç Türleri ve
Ağaç Üzerindeki İşlemler
10.3. Ağaçların Bellek
Üzerinde Tutulması
10.3.1. ...
10.3.2.
İndis-Bağıntısıyla Ağaç Kurulması
10.4.İkili Ağaçları
10.4.1. İkili Ağaç Üzerinde Dolaşma/Düğümlere
Erişim
10.4.2. Bağıntı Ağaçları
10.4.3. Sıralı İkili Ağaçlar İçin Algoritmalar
Ağaca Düğüm Ekleme
Düğümleri Listeleme/Dolaşma
Düğüm Silme Algoritması
Düğüm Sayısını Bulma
10.5. Dengeli Ağaç ve AVL
Ağaç Yapısı
10.6. Kümeleme Ağacı
10.7.
Trie Ağacı ve Sözlük Ağacı
10.8. Kodlama Ağacı ve
Uygulaması
10.8.1. Huffman Kodlama
Ağacı
10.8.2. Shannon-fano
Kodlama Ağacı
10.9. Proje Çalışması
10.10. Özet
10.11. Sorular
Bölüm 11.
Ağaç
Uygulamaları
Bölüm 12.
Graflar ve Temelleri
12.2. Grafların Bellek
Üzerinde Tutulma Biçimi
12.2.1. Matris Üzerinde
Tutulması
12.2.2. İki-Dizi Üzerinde
Tutulması
12.2.3. Bağlantılı Liste
ile Tutulması
12.2.4. Dizili-Bağlantılı
Liste ile Tutulması
12.3. Graf Üzerinde
Dolaşma
DFS – Önce Derinlik Sınaması
BFS – Önce Genişlik Sınaması
12.4. Greedy
Algoritması/Yaklaşımı
Bölüm 13.
Graf Algoritmaları
13.1. En Kısa Yol
(Shortest Path) Problemi Bulunması
13.1.1. Dijkstra’nın
Algoritması
13.1.2. Bellman ve Ford
Algoritması
13.1.3. Floyd’un
Algoritması
13.2. Yol Ağacı
(Spanning Tree) Bulunması Problemi
13.2.1. Kruskal’ın
Algoritması
13.2.2. Prim’in
Algoritması
13.2.3. Soolins’in
Algoritması
13.3. Gezgin Satıcı
(Salesman)
Problemi
13.4. Proje Çalışması
13.5. Özet
13.6. Sorular
Bölüm 14.
Durum Makinası
ve Gramer Çözümleme
14.1. Durum Makinası
Kavramları
14.2. Sonlu Duurm
Makinası
14.3.Turing Makinası
14.4. Gramer Çözümleme
14.5. Proje Çalışması
14.7. Sorular
Bölüm 15.
Veri Sıkıştırma Yöntemleri
15.1. Verideki
Fazlalıklar
15.2. Sıkıştırma
Teknikleri
15.4. Adaptif Sıkıştırma
Teknikleri
15.5. Proje Çalışması
15.6.
Özet
15.7. Sorular
Bölüm 16.
Program/Yazılım Geliştirme Süreci
Yazılım Projesi Analizi ve Tasarımı
.
Kaynakça
Dizin
Teknik Bilgiler:
416 sayfa, 18,5x24 cm2,
80 gr 1. hamur kağıt.
Yayınevimizin konuyla
ilgili eserleri:
Diskrete Matematik Ortak
Yazarlı
Veri Madenciliği
Dr. Gökhan SİLAHTAROĞLU
Veri Madenciliği
Yöntemleri Dr. Yalçın ÖZKAN
Network TCP/IP ve
UNUX El Kitabı Dr. Rifat ÇÖLKESEN
Network/Veri
Haberleşmesi Uygulamaları Yasin KAPLAN
Veri
Haberleşmesi/Network Temelleri Yasin KAPLAN
Veri
Haberleşmesi/Network Kavramları Yasin KAPLAN
Java ve Yazılım Tasarımı
Altuğ Altıntaş
Bilgisayar
Mimarisi Ortak Yazarlı
Elektronik
Mühendisliğine Giriş Ortak Yazarlı
Endüstri
Mühendisliğine Giriş
Ortak Yazarlı (Editör: Prof. Dr. Ercan ÖZTEMEL)
Bilgisayar
Ağları Dr. Demir ÖNER
Bilgisayar
Mühendisliğine Giriş
Ortak yazarlı (Editör: Dr. Rifat ÇÖLKESEN)
Veritabanı ve
Uygulamaları Yılmaz KAYA ve Ramazan TEKİN
Sistem Analizi ve
Tasarımı (Bilgisayar Bilimlerinde) Prof.Dr.
Oya KALIPSIZ ve ark.
Yazılım
Mühendisliği
Dr.Erhan SARIDOĞAN
C++ ve Nesneye Yönelik
C Programlama
Dr.Erhan SARIDOĞAN
Programlama Sanatı Algoritmalar (C Uyarlaması)
Dr.Cengiz UĞURKAYA (Editör)
C Programlama Dili -
İşte C Dr.Rifat ÇÖLKESEN
Uygulamalı C
Programlama Dili Bora TUNCER
Veri Yapıları
ve Algoritmalar
Dr.Rifat ÇÖLKESEN
Veri
Yapıları Algoritma Temelleri
Dr.Sefer KURNAZ
MATLAB Kılavuzu
Dr.Aslan İNAN
JAVA ve Yazılım Tasarımı
Altuğ B. ALTINTAŞ
Linux Altında
Programlama
Ali VARDAR
GTK/GNOME Programlama
Ali VARDAR
Kitaplarımızın tüm listesi için
buraya tıklayınız.
Akademik
Kitaplar - Bilimsel Kitaplar - Üniversite Kitapları
|