|
Bu kitabımız program tasarimina
yeni baslayanlar için programlama temelleri ve mantigini kazandirmak
amaciyla hazirlanmistir. Bilindigi gibi programlama dilleri ögrenilmeden
önce programlama teknigi ve algoritma tasarimi mantigi ögrenilmedir.
Programlama Sanati Algoritmalar adli bu kitabimiz ögrencilerimize bol bol
akis semasi örnekleri vererek kendi kendilerine programlama yapabilme ve
algoritma olusturabilme becerisi ve yetenegi kazandirmaya çalismaktadir.
Üniversitelerde ilk yillarda verilen Bilgisayar
Programlama, Programlama Teknikleri,
Programlamaya Giris ve Programlama
Mantigi gibi derslerin ana kitabi veya yardimci kitabi olma
özelligindedir.
Güçlü bir
temel kazanmak program tasarimi için en önemli baslangiç adimidir
denilebilir...
Programlama teknigini ve mantigini ögrenmek ve bol
örneklerle gelistirmek isteyen ögrencilerimize yararli bir kaynak
özelligindedir.
İÇİNDEKİLER
Bölüm 1.
Program TasarImInda Temel Kavramlar
Program, Yazilim, Program kodu
Degisken, Diziler, Operatör, Deyim/Ifade, Atama deyimi, Donanim
Bellek, Saklama birimi, Islemci, Makina kodu, Assembly dili
Isletim sistemi
Dosya, Dosya sistemi, Karakter tablosu
Sözce (String), Dinamik/statik bellek kullanimi, Veri yapisi, Veri
modeli
Böl
ve yönet yaklasimi, Çevrimli ve rekürsif yaklasim, Programlama dilleri
ve C/C++/JAVA
Veritabani ve SQL, Alt-program/yordam, Sinif/nesne
Kullanici/sunucu mimarisi, Ag programlama
Program zaman ve bellek maliyetleri
Kiyaslama (Benchmarking), Kümeleme
Karakterleri
Sorular
Bölüm 2.
algoritma tasarImI
ve
aKIŞ ŞemalarI
2.1.
Algoritmada Olmasi Gereken Özellikler
2.2.
Algoritma Tasarimi
2.3.
Akis Semalari
2.3.1. Akis Semasi Simgeleri
2.3.2. Tipik Akis Semasi Parçalari
2.4.
Akis Semasi Örnekleri
2.5.
Akis Semasi Disinda Sekilsel Tasarim
2.6.
Özet
2.7.
Sorular
Bölüm 3.
c diliNE GIRIS
Yeni
Baslayanlarin C Dilinde Bilmesi Gerekenler
C
Dili Anahtar Sözcükleri (keywords)
3.1.
Bir C programi
3.2.
main() Fonksiyonu
3.3.
C Dilinde Fonksiyonun Genel Yapisi
3.4.
printf()
ve
scanf()
Fonksiyonlari
3.5.
Fonksiyona Parametre Aktarimi/Alis-Verisi
Dizilerin Fonksiyona Aktarilmasi
3.6.
Özet
3.7.
Sorular
Bölüm 4.
c dili TEMEL VERI TÜRLERI
VE
DEGISKENLER
4.1.
Temel Veri Türleri
4.1.1. Karakter
(Character)
ASCII Karakter Tablosu
Ünikod
4.1.2. Tamsayi
4.1.3. Gerçel Sayi
4.1.4. Sözce/Karakter Dizisi
4.1.5. Dizi/Matris
4.2.
Türetilmis/Tanimlamali Veri Türleri
4.3.
Degisken Bildirim Yerleri
Yerel Bildirim
Genel (Global) Bildirim
Formal Bildirim
Dissal (Extern) Bildirim
Statik (Static) Degisken Bildirimi
Saklayici Türden (Register) Degisken Bildirimi
volatile
Türden Degisken Bildirimi
4.4.
Sabitler
4.5.
Özet
4.6.
Sorular
Bölüm 5.
c dili OPERATÖRLERI
5.1.
Aritmetik Operatörler
5.2.
Karsilastirma/Iliski Operatörleri
5.3.
Mantiksal Operatörler
5.4.
Bitler Üzerinde Islem Yapan (bitwise) Operatörler
5.5.
Diger Operatörler
5.5.1. Atama Operatörleri
5.5.2. ?: Karsilastirma Operatörü
5.5.3. & ve * Isaretç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
DENETIM 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çiçe Kullanilmasi
6.2.
Denetim Deyimleri
6.2.1. Karsilastirma Deyimleri
if-else
Deyimi
switch
Deyimi
6.2.2. Dallanma/Kirma Deyimleri
goto
Deyimi ve Etiket,
break
continue
6.3.
Özet
6.4.
Sorular
Bölüm 7.
GİRİŞ/ÇIKIŞ İŞLEMLERİ
7.1.
Standart Giris Çikis Kütüphanesi
7.2.
Temel Giris Çikis Islemleri
7.2.1. getchar( ) - putchar( ) Ikilisi
7.2.2. gets( ) - puts( ) Ikilisi
7.2.3. scanf( ) - printf( ) Ikilisi
7.2.4. Diger Giris/Çikis Fonksiyonlari
7.3.
Dosya Giris Çikis Islemleri
7.3.1. getch( ) - putc( ) Ikilisi
7.3.2. fgetc( ) - fputc( ) Ikilisi
7.3.3. fgets( ) - fputs( ) Ikilisi
7.3.4. fscanf( ) - fprintf( ) Ikilisi
7.3.5. fread( ) - fwrite( ) Ikilisi
7.3.6. fopen( ) - fclose( ) Ikilisi
7.3.7. Diger Dosya Fonksiyonlari
7.4.
Diger G/Ç Fonksiyonlari
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 Baslangiç Degeri Verilmesi
8.6.
Dizi Ile Isaretçi Arasindaki Iliski
8.7.
Dinamik Dizi Kullanimi
8.8.
Dizilerin Fonksiyona Aktarilmasi
8.9.
Dizi Uygulama Örnekleri
Kabarcik Siralama
Hizli Siralama, Ardisil Siralama
Ikili Arama
Matris Toplama
Matris Çarpma
Varyans/Standart Sapma
8.10. Hazir Dizi Fonksiyonlari
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 Yapilari
10.3. Topluluk
(struct)
Deyimi
10.4. Ortaklik
(union)
Deyimi
10.5. Yeni Veri Sinifi ve
enum
10.5.1. Yeni Kümenin Elemanlari ve Atama
10.6. Özet
10.7. Sorular
BÖLÜM 11.
dosyalama/saklama
11.1. Metin (Text) Dosyasi - Ikili (Binary) Dosya Ne Demektir?
11.2. Üst Düzey Dosya Erisimleri Örnek Uygulamalar
11.3. Alt Düzey Dosya Erisimleri Örnek Uygulamalari
11.4. Özet
11.5. Sorular
BÖLÜM 12.
VERİ MODELLERİ
12.1. Baglantili Liste Veri Modeli
Ekleme Islemi
Listeleme Islemi
Arama Islemi, Silme Islemi
Baglantili Liste Uygulamasinin Tam Kodu
12.2. Agaç Veri Modeli
Agaca Dügüm Ekleme
Agaci Dolasma/Dügümleri Listeleme/Arama Algoritmasi
Dügüm Silme/Çikartma Algoritmasi
Dügüm Bilgisini Hazirlama
Ikili Agaç Uygulamasinin Tam Kodu
12.3. Graf Veri Modeli
12.4. Durum Makinasi Veri Modeli
12.5. Veri-tabaninda Iliskisel Veri Modeli
12.6. Ag Veri Modeli
12.7. Özet
12.8. Sorular
BÖLÜM 13.
C DİLİNE HAS ÖZELLİKLER
13.1. Isaretçiler (Pointers)
13.1.1 Isaretçi Degiskenler Üzerinde Aritmetik Islemler
13.1.2. Isaretçilerin Karsilastirilmasi
13.1.3. Isaretçi ve Diziler Arasindaki Iliski
13.1.4. Isaretçiyle Fonksiyon Çagirma
13.2. Arka Planda Denetimsizlik
13.3. Kütüphane Ekleme Kolayligi
13.4. Özet
13.5. Sorular
BÖLÜM 14.
SÖZCE
(STRING)
VE
KARAKTER FONKSİYONLARI
14.1. Sözce Fonksiyonlari
14.1.1. Sözce Karsilastirma
14.1.2. Sözce Kopyalama
14.1.3. Sözce Birlestirme
14.1.4. Sözce Içerisinde Sözce veya Karakter Arama
14.1.5. Sözceden Sayisala Dönüsüm
14.1.6. Diger Sözce Fonksiyonlari
14.2. Bellek Fonksiyonlari
14.3. Karakter Fonksiyonlari
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 Aktarimi
15.3. Fonksiyona Degisik Sayida Parametre Aktarimi
15.4. Ana Programa/main()'e
Parametre Aktarimi
15.5. Fonksiyonlarin Isaretçiyle Çagrilmasi
15.6. Baslik
(Header)
Dosyalari (*.h)
15.6.1. Standart Baslik Dosyalari
15.6.2. Makro Fonksiyon/Kütüphane Fonksiyonu?
15.6.3. Özel Baslik Dosyasi Olusturma
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 Fonksiyonlari
16.1.3. Logaritmik ve Üssel Fonksiyonlar
16.1.4. Mutlak Deger, Bölme, Karekök v eRasgele Sayi Fonksiyonlari
16.2. Çesitli UUygulamalar
. Faktöriyel Hesabi
Ikinci Dereceden Denklemin Kökleri
OBEB Bulunmasi, OKEK Bulunmasi
Aritmetik/Geometrik Ortalama
Seri Hesabi
Integral Hesabi
Basit Differansiyel Denklem Hesabi
16.3. Özet
16.4. Sorular
BÖLÜM 17.
DENETIM
VE
HATA AYIKLAMA FONKSİYONLARI
17.1. Ayricalikli Durum Denetimi
17.2. Hata Ayiklama Fonksiyonlari
17.3. Yerel Olmayan Dallanma Fonksiyonlari
17.4. Özel Amaçli Fonksiyon Sonlandirma Fonkisyonlari
17.5
Özet
17.6. Sorular
BÖLÜM 18.
TARIH/ZAMAN
VE
YERELLESTIRME FONKSIYONLARI
18.1. Tarih/Zaman Fonksiyonlari
18.2. Yerellestirme Fonksiyonlari
18.3. Özet
18.4. Sorular
BÖLÜM 19. İŞLETIM SISTEMINE DAYALI UYGULAMALAR
19.1. Isletim Sistemiyle Etkilsen Birkaç Fonksiyon
19.1
Ag Programlama
19.3. Sorular
BÖLÜM 20. c dİLİ ÖNIŞLEMCİLERİ (prePROCESSOR)
20.1. Önislemci #define
20.2. Önislemci #undef
20.3. Önislemciler #include
20.4. Önislemciler #if, #else, #endif, #elif, #ifdef ve #ifndef
20.5. Önislemci #line
20.6. 20.2. Önislemciler #error ve #pragma
20.7. Özet
20.8. Sorular
BÖLÜM 21.
PROGRAM
TASARIMINDA
ÇOK KARŞILAŞILAN HATALAR
KAYNAKÇA
DIZIN
ÖNSÖZ
Program
tasarimi/yazilim gelistirme islemi, kanimca ve deneyimlerime göre
gerçekten bir sanat isi; hem konuyla ilgili bilgilere evrensel düzeyde sahip
olacaksin hem de ürününe yansitabilecegin hayal gücün olacak; hem de
birseyler üretme hirsin/istegin olacak.
Her ne
kadar bu kitabin yazari gibi görünsem de, meslek yasamimda, mesleki anlamda
son kitabim Veri yapilari ve Algoritmalardir; bu kitap üzerine çok
ugrastim, tabii ki arka plada, ancak kitap konusunda istedigim birçok seyi
yapabildigimi saniyorum. Su ana tarafima gelen elestiriler/öneriler de bu
yönde...
Programlama Sanati Algoritmalar adli bu eser, daha önceki kitaplarimdan ve
sayin Dr.Sefer Kurnazin Veri Yapilari ve Algoritma Temelleri adli
kitabindan toparlanmis ve bir miktarda yeni seyler eklenmis konulari
itibariyle pek te yeni olmayan bir kitaptir. Bu kitabin hazirlanmasindaki
amacimiz, programlamaya yeni baslayanlara iyi bir baslangiç yaptirmak ve iyi
bir temel kazandirmaktir. Çünkü dogada da hersey temel üzerine/kök üzerine
kurulmustur. Herseyde oldugu gibi temeli atmak zor gelebilir; ancak güçlü
temelin üzerine yapi çok kolay ve güvenli kurulur.
Kitabimizda dile çok önem verilmistir; hangi dil olursa olsun, onunla
konusuyor onunla yaziyor isek kurallarina özen göstermeli, gelismesine ve
zenginlesmesine destek olmaliyiz. Dolayisiyla, Türkçe olan bu kitabimizda
Türkçe Dili kurallarina özen göstermeye asiri gayret ettik. Üstelik uzun
süredir pek karsiligi üretilemeyen Ingilizce string sözcügüne
karsilik dilcimiz sayin Yusuf Çotuksöken ile birlikte sözce
karsiligini bulduk; gerçekten de çok uygun oldu...
Bu
kitabimizin genç meslektaslarimiza, bilgisayar konusunda ögrenci olan
gençlerimize yararli olacagini umuyorum. Sizlerin, ileride, daha iyilerini
üretmeniz dilegiyle...; bayrak yarisinda görevimizi yaptigimiza inaniyorum.
Bayrak artik sizin ellerinizde,
Sevgilerimle,
Dr.Rifat ÇÖLKESEN
Yayinevimizin konuyla
ilgili eserleri:
Veri Madenciligi (teori ve
uygulamasiyla)
Dr. Gökhan SILAHTAROGLU
Veri Madenciligi
Yöntemleri
Dr. Yalçın ÖZKAN
Bilgisayar
Mühendisligine Giris
Ortak Yazarli (Editör: Dr. Rifat ÇÖLKESEN)
Elektronik Mühendisligine Giris
Ortak Yazarli (Editör: Dr. Cengiz UGURKAYA)
Endüstri Mühendisligine Giris
Ortak Yazarli (Editör: Prof. Dr. Ercan ÖZTEMEL)
Bilgisayar
Mimarisi
Ortak Yazarlı
Modern
Sezgisel Teknikler ve Uygulamalari
Ortak Yazarlı
Elektronik Mühendisligine Giris
Ortak Yazarli (Editör: Dr. Cengiz UGURKAYA)
Endüstri Mühendisligine Giris
Ortak Yazarli (Editör: Prof. Dr. Ercan ÖZTEMEL)
Veritabani ve
Uygulamalari Yilmaz
KAYA
ve Ramazan TEKIN
Sistem Analizi ve
Tasarimi (Bilgisayar Bilimlerinde) Prof.Dr.
Oya KALIPSIZ ve ark.
Yazilim
Mühendisligi
Dr.Erhan SARIDOGAN
C++ ve Nesneye Yönelik
C Programlama
Dr.Erhan SARIDOGAN
Programlama Sanati Algoritmalar (C Uyarlamasi)
Dr.Cengiz UGURKAYA (Editör)
Programlama Sanati Algoritmalar (JAVA Uyarlamasi)
Dr.Rifat ÇÖLKESEN (Editör)
C Programlama Dili -
Iste C Dr.Rifat ÇÖLKESEN
Uygulamali C
Programlama Dili Bora TUNCER
Veri Yapilari
ve Algoritmalar
Dr.Rifat ÇÖLKESEN
Veri
Yapilari Algoritma Temelleri
Dr.Sefer KURNAZ
MATLAB Kilavuzu Dr.Aslan INAN
JAVA ve Yazilim Tasarimi
Altug B. ALTINTAS
Linux Altinda
Programlama
Ali VARDAR
GTK/GNOME Programlama
Ali VARDAR |