| Programlama Sanatı ve Algoritmalar Toros Rifat ÇÖLKESEN Editör: Cengiz UĞURKAYA
ISBN: 975-6797-53-3 22. basım, 336 sayfa, (16,5x24 cm2) şimdi satın al | |||||
Bu kitabın amacı, program tasarımına yeni başlayan bireylere konuyla ilgili temel kazandırımı sağlamaktır; programlama konusunda uzmanlaşmak için gerekli alt-yapıyı sağlıklı ve kalıcı bir şekilde kazandırmaktır. Kitabımızda, ayrıca, veri modelleri ve yapıları, dosyalama sistemleri, çevrimli ve rekürsif programlama, G/Ç sistemleri gibi konular da yalın bir dille ele alınmıştır. Konular ele alınırken bolca gerçekçi örnekler verilerek konuların iyice anlaşılması hedeflenmiştir. Kitabımız “Bilgisayar Programlama Dilleri”, “Bilgisayar Programlama Teknikleri”, “Programlamaya Giriş” ve “Programlama Tasarımı ve Mantığı” gibi dersler için ciddi bir kaynak kitap özelliğindedir. program tasarımında temel kavramlar ~ algoritma tasarımı ve akış şemaları C Programlama Dili ~ veri türleri ve değişkenler ~ operatörler; döngü ve denetim G/Ç işlemleri ~ dizi ve matrisler ~ çevrimli ve rekürsif programlama ~ veri yapıları ~ disk erişimi dosyalama ~ veri modelleri ~ sözce ve karakter fonksiyonlar matematiksel fonksiyonlar ~ hata ayıklama fonksiyonları ~ tarih zaman ve yerelleştirme fonksiyonları ~ işletim sistemine dayalı uygulamalar ~ önişlemciler
İÇİNDEKİLER Bölüm 1. Program TasarImInda Temel Kavramlar Program, Yazılım, Program kodu Degisken, Diziler, Operatör, Deyim/İfade, Atama deyimi, Donanım Bellek, Saklama birimi, Işlemci, Makina kodu, Assembly dili İşletim sistemi Dosya, Dosya sistemi, Karakter tablosu Sözce (String), Dinamik/statik bellek kullanımı, Veri yapısı, Veri modeli Böl ve yönet yaklaşımı, Çevrimli ve rekürsif yaklaşım, Programlama dilleri ve C/C++/JAVA Veritabanı ve SQL, Alt-program/yordam, Sınıf/nesne Kullanıcı/sunucu mimarisi, Ag programlama Program zaman ve bellek maliyetleri, Kıyaslama (Benchmarking) Kümeleme Karakterleri Sorular
Bölüm 2. algoritma tasarImI ve aKIŞ ŞemalarI 2.1. Algoritmada Olması Gereken Özellikler 2.2. Algoritma Tasarımı 2.3. Akış Şemaları 2.3.1. Akış Şeması Simgeleri 2.3.2. Tipik Akış Şeması Parçaları 2.4. Akış Şeması Örnekleri 2.5. Akış Şeması Dışında Şekilsel Tasarım 2.6. Özet 2.7. Sorular
Bölüm 3. c diliNE GİRİş Yeni Başlayanların C Dilinde Bilmesi Gerekenler C Dili Anahtar Sözcükleri 3.1. Bir C Programı 3.2. main() Fonksiyonu 3.3. C Dilinde Fonksiyonun Genel Yapısı 3.4. printf() ve scanf() Fonksiyonları 3.5. Fonksiyona Parametre Aktarımı Dizilerin Fonksiyona Aktarılması 3.6. Özet 3.7. Sorular
Bölüm 4. c dili TEMEL VERI TÜRLERI VE DEĞİŞKENLER 4.1. Temel Veri Türleri 4.1.1. Karakter (Character): ASCII Karakter Tablosu ve Ünikod 4.1.2. Tamsayı 4.1.3. Gerçel Sayı 4.1.4. Sözce/Karakter Dizisi 4.1.5. Dizi/Matris 4.2. Türetilmiş/Tanımlamaı Veri Türleri 4.3. Degişken Bildirim Yerleri Yerel Bildirim, Genel (Global) Bildirim, Formal Bildirim, Dışsal (Extern) Bildirim Statik (Static) Değisken Bildirimi, Saklayıcı Türden (Register) Değişken Bildirimi volatile Türden Değişken Bildirimi 4.4. Sabitler 4.5. Özet 4.6. Sorular
Bölüm 5. c dili OPERATÖRLERİ 5.1. Aritmetik Operatörler 5.2. Karsilastirma/Iliski Operatörleri 5.3. Mantıksal Operatörler 5.4. Bitler Üzerinde İşlem Yapan (bitwise) Operatörler 5.5. Diğer Operatörler 5.5.1. Atama Operatörleri 5.5.2. ?: Karsilastirma Operatörü 5.5.3. & ve * İşaretçi Operatörleri 5.5.4. sizeof Operatörü 5.6. Operatörlerin Öncelikleri ve Bagintilar 5.7. Bagintilarda Tür Dönüsümleri 5.8. Özet 5.9. Sorular
Bölüm 6. DÖNGÜ VE DENETİM DEYİMLERİ 6.1. Döngü Deyimleri 6.1.1. while Deyimi 6.1.2. do-while Deyimi 6.1.3. for Deyimi 6.1.4. Döngü Deyimlerinin İçiçe Kullanılması 6.2. Denetim Deyimleri 6.2.1. Karşılaştırma Deyimleri if-else Deyimi, switch Deyimi 6.2.2. Dallanma/Kırma Deyimleri: goto Deyimi ve Etiket, break, continue 6.3. Özet 6.4. Sorular
Bölüm 7. GİRİŞ/ÇIKIŞ İŞLEMLERİ 7.1. Standart Giriş Çıkış Kütüphanesi 7.2. Temel Giris Çıkış İşlemleri 7.2.1. getchar( ) - putchar( ) İkilisi 7.2.2. gets( ) - puts( ) İkilisi 7.2.3. scanf( ) - printf( ) İkilisi 7.2.4. Diger Giris/Çikis Fonksiyonları 7.3. Dosya Giriş Çıkış İşlemleri 7.3.1. getch( ) - putc( ) İkilisi 7.3.2. fgetc( ) - fputc( ) İkilisi 7.3.3. fgets( ) - fputs( ) İkilisi 7.3.4. fscanf( ) - fprintf( ) İkilisi 7.3.5. fread( ) - fwrite( ) İkilisi 7.3.6. fopen( ) - fclose( ) İkilisi 7.3.7. Diğer Dosya Fonksiyonları 7.4. Diger G/Ç Fonksiyonları 7.5. Özet 7.6. Sorular
Bölüm 8. diZİLER ve matrisler 8.1. Dizi Türleri ve C Dili 8.2. Vektör Diziler 8.3. Matris Diziler 8.4. Uzay Diziler 8.5. Dizilere Baslangıç Değeri Verilmesi 8.6. Dizi Ile İşaretçi Arasındaki Iliski 8.7. Dinamik Dizi Kullanımı 8.8. Dizilerin Fonksiyona Aktarılması 8.9. Dizi Uygulama Örnekleri Kabarcık Sıralama Hizli Siralama, Ardisil Sıralama İkili Arama Matris Toplama Matris Çarpma Varyans/Standart Sapma 8.10. Hazır Dizi Fonksiyonları bsearch() qsort() 8.11. Özet 8.12. Sorular
Bölüm 9. ÇEVRİMLİ ve rekürsif programlama 9.1. Çevrimli Programlama 9.2. Rekürsif Programlama 9.3. Çevrimli mi ? - Rekürsif mi? 9.4. Özet 9.5. Sorular
Bölüm 10. veri yapIlarI ve TanImlamalI Veri Türleri Ham Veriden Bilgiye Dönüsüm 10.1. Temel Veri Yapilari 10.2. Tanimlamali Veri Yapıları 10.3. Topluluk (struct) Deyimi 10.4. Ortaklık (union) Deyimi 10.5. Yeni Veri Sinifi ve enum 10.5.1. Yeni Kümenin Elemanları ve Atama 10.6. Özet 10.7. Sorular
BÖLÜM 11. dosyalama ~ saklama İŞLEMLERİ 11.1. Metin (Text) Dosyası - İkili (Binary) Dosya Ne Demektir? 11.2. Üst Düzey Dosya Erişimleri Örnek Uygulamalar 11.3. Alt Düzey Dosya Erişimleri Örnek Uygulamaları 11.4. Özet 11.5. Sorular
BÖLÜM 12. VERİ MODELLERİ 12.1. Bağlantılı Liste Veri Modeli Ekleme İşlemi, Listeleme İşlemi, Arama İşlemi, Silme İşlemi Bağlantılı Liste Uygulamasının Tam Kodu 12.2. Agaç Veri Modeli Ağaca Düğüm Ekleme, Ağacı Dolaşma/Düğümleri Listeleme/Arama Algoritmasi Düğüm Silme/Çıkartma Algoritması, Düğüm Bilgisini Hazırlama İkili Ağaç Uygulamasının Tam Kodu 12.3. Graf Veri Modeli 12.4. Durum Makinası Veri Modeli 12.5. Veritabanında Ilişkisel Veri Modeli 12.6. Ağ Veri Modeli 12.7. Özet 12.8. Sorular
BÖLÜM 13. C DİLİNE HAS ÖZELLİKLER 13.1. İşaretçiler (Pointers) 13.1.1 İşaretçi Değiskenler Üzerinde Aritmetik İşlemler 13.1.2. İşaretçilerin Karşılaştırılması 13.1.3. İşaretçi ve Diziler Arasındaki İlişki 13.1.4. İşaretçiyle Fonksiyon Çağırma 13.2. Arka Planda Denetimsizlik 13.3. Kütüphane Ekleme Kolaylığı 13.4. Özet 13.5. Sorular
BÖLÜM 14. SÖZCE (STRING) VE KARAKTER FONKSİYONLARI 14.1. Sözce Fonksiyonları 14.1.1. Sözce Karsilastirma 14.1.2. Sözce Kopyalama 14.1.3. Sözce Birleştirme 14.1.4. Sözce Içerisinde Sözce veya Karakter Arama 14.1.5. Sözceden Sayısala Dönüsüm 14.1.6. Diger Sözce Fonksiyonları 14.2. Bellek Fonksiyonları 14.3. Karakter Fonksiyonları 14.4. Özet 14.5. Sorular
BÖLÜM 15. C FONKSİYONLARI ÜZERİNE AYRINTI 15.1. Fonksiyon Tanimi ve Bildirimi 15.2. Fonksiyonlara Parametre Aktarımı 15.3. Fonksiyona Degisik Sayida Parametre Aktarımı 15.4. Ana Programa/main()'e Parametre Aktarımı 15.5. Fonksiyonların İşaretçiyle Çağrılması 15.6. Baslik (Header) Dosyalari (*.h) 15.6.1. Standart Başlık Dosyaları 15.6.2. Makro Fonksiyon/Kütüphane Fonksiyonu? 15.6.3. Özel Başlık Dosyası Oluşturma 15.7. Özet 15.8. Sorular
BÖLÜM 16. MATEMATİK FONKSİYONLARI VE UYGULAMALARI 16.1. Matematiksel Fonksiyonlar 16.1.1. Trigonometrik Fonksiyonlar 16.1.2. Yuvarlatma Fonksiyonları 16.1.3. Logaritmik ve Üssel Fonksiyonlar 16.1.4. Mutlak Değer, Bölme, Karekök ve Rasgele Sayı Fonksiyonları 16.2. Çeşitli UUygulamalar Faktöriyel Hesabı, İkinci Dereceden Denklemin Kökleri OBEB Bulunması, OKEK Bulunması Aritmetik/Geometrik Ortalama Seri Hesabı, Integral Hesabı Basit Differansiyel Denklem Hesabı 16.3. Özet 16.4. Sorular
BÖLÜM 17. DENETİM VE HATA AYIKLAMA FONKSİYONLARI 17.1. Ayrıcalıklı Durum Denetimi 17.2. Hata Ayıklama Fonksiyonları 17.3. Yerel Olmayan Dallanma Fonksiyonları 17.4. Özel Amaçlı Fonksiyon Sonlandırma Fonkisyonları 17.5 Özet 17.6. Sorular
BÖLÜM 18. TARIH/ZAMAN VE YERELLEŞTİRME FONKSİYONLARI 18.1. Tarih/Zaman Fonksiyonları 18.2. Yerellestirme Fonksiyonları 18.3. Özet 18.4. Sorular
BÖLÜM 19. İŞLETİM SİSTEMİNE DAYALI UYGULAMALAR 19.1. İşletim Sistemiyle Etkileşen Birkaç Fonksiyon 19.1 Ağ Programlama 19.3. Sorular
BÖLÜM 20. c dİLİ ÖNIŞLEMCİLERİ (prePROCESSOR) 20.1. Önişlemci #define 20.2. Önişlemci #undef 20.3. Önişlemciler #include 20.4. Önişlemciler #if, #else, #endif, #elif, #ifdef ve #ifndef 20.5. Önişlemci #line 20.6. Önişlemciler #error ve #pragma 20.7. Özet 20.8. Sorular BÖLÜM 21. PROGRAM TASARIMINDA ÇOK KARŞILAŞILAN HATALAR KAYNAKÇA DİZİN
ÖNSÖZ
Program tasarımı/yazılım geliştirme işlemi, kanımca ve deneyimlerime göre gerçekten bir sanat işi; hem konuyla ilgili bilgilere evrensel düzeyde sahip olacaksın hem de ürününe yansıtabileceğin hayal gücün olacak; hem de birşeyler üretme hırsın/isteğin olacak. Her ne kadar bu kitabın yazarı gibi görünsem de, meslek yaşamımda, mesleki anlamda son kitabım “Veri yapıları ve Algoritmalar”dır; bu kitap üzerine çok ugraştım, tabii ki arka plada, ancak kitap konusunda istediğim birçok şeyi yapabildiğimi sanıyorum. Şu ana kadar tarafıma gelen eleştiriler/öneriler de bu yönde... “Programlama Sanatı Algorıtmalar” adlı bu eser, daha önceki kitaplarımdan ve sayın Dr.Sefer Kurnaz’ın “Veri Yapıları ve Algoritma Temelleri” adlı kitabından toparlanmış ve bir miktarda yeni şeyler eklenmiş konuları itibariyle pek te yeni olmayan bir kitaptır. Bu kitabın hazırlanmasındaki amacımız, programlamaya yeni başlayanlara iyi bir başlangıç yaptırmak ve iyi bir temel kazandırmaktır. Çünkü doğada da herşey temel üzerine/kök üzerine kurulmuştur. Herşeyde olduğu gibi temeli atmak zor gelebilir; ancak güçlü temelin üzerine yapı çok kolay ve güvenli kurulur. Kitabımızda dile çok önem verilmiştir; hangi dil olursa olsun, onunla konuşuyor onunla yazıyor isek kurallarına özen göstermeli, gelişmesine ve zenginleşmesine destek olmalıyız. Dolayısıyla, Türkçe olan bu kitabımızda Türk Dili kurallarına özen göstermeye aşırı gayret ettik. Üstelik uzun süredir pek karşılığı üretilemeyen İngilizce “string” sözcüğüne karsılık dilcimiz sayın Yusuf Çotuksöken ile birlikte “sözce” karşılığını bulduk; gerçekten de çok uygun oldu... Bu kitabımızın genç meslektaşlarımıza, bilgisayar konusunda öğrenci olan gençlerimize yararlı olacağını umuyorum. Sizlerin, ileride, daha iyilerini üretmeniz dileğiyle... Toros Rifat ÇÖLKESEN Diğer programlama ve mühendislik kitaplarımızı incelemek için buraya tıklayınız. Programlama Kitapları - Bilgisayar Kitapları - Üniversite Ders Kitapları |