|
C dilini ögrenmenin
en kolay yolu...
Bu kitap C dilini ögretmek
üzere tasarlanmis olup X3J11 grubunun belirledigi standart olan ANSI C temel
alinmistir; standart C içerisinde tanimli bütün C fonksiyonlari ayrintili
olarak ele alinarak, ayni zamanda bir basvuru kitabi olma özelligi
kazandirilmistir. Kitap, hangi programlama diliyle olursa olsun program
gelistiren yazilimcilarin basvuru kitabi gibi yararlanabilecegi; ve
üniversitelerin Bilgisayar, Elektronik, Elektrik, Fizik, Matematik ve
Endüstri bölümlerinde okutulan C programlama dersi için ders kitabi
olabilecek niteliktedir.
Kitap herbiri farkli konulara
odaklanmaya çalisilan 16 Bölüm ve 2 Ekten olusmaktadir. C dilinin bu kitapla
ögrenilmesi için bütün bölümler sirayla okumali, örnek olarak verilen
programlar dikkatle incelenmeli ve sorular yanitlanmaya çalisilmalidir.
Verilen örnekler ANSI C'yi destekleyen herhangi bir derleyicide derlenebilir
sekildedir.
Kitabin ilk dört bölümünde, C’yi yeni ögrenenler için degiskenler, sabitler,
operatörler ve program denetim deyimleri gibi C dilinin temel yapi taslari
verilmektedir; 5. Bölüm ise C fonksiyon yapisini ayrintili olarak ele
almakta ve Bölüm 6’da Standart C’de tanimli bütün fonksiyonlar
açiklanmaktadir. Sirasiyla 7, 8, 9, 10, 11 ve 12. Bölümlerde Diziler,
Isaretçiler (pointers) Katarlar (strings) ve Yapisal Veri Tipleri ele
alinmistir. Onüçüncü bölümde ise Disk Dosyalari
üzerinde durulmustur; dosyanin açilmasi, dosyaya erisilmesi ve
kapatilmasi için kullanilan standart fonksiyonlar ve UNIX isletim sisteminin
disk dosyasi için kullanilan sistem çagrilari da bu bölümde verilmistir.
Ondördüncü bölümde esnek ve tasinabilir program tasarimina imkan veren
önislemçi komutlari, onbesinci bölümde ise seri haberlesme için gerekli
program yapisi ele alinmistir. Onaltinci bölümde, gerçeklenmesi C
derleyicisi hazirlayanlara birakilan, bir standart belirlenmeyen Grafik
Fonksiyonlar üzerinedir. Bu bölümde grafikle ilgili
bazi kavramlar verilmis ve Turbo C 2.0 paketinin grafik fonksiyonlari
tanitilmistir.
Eklerde ise, önce bir C
programinin nasil derlenecegi/çalistirilacagi üzerinde durulmus ve ardindan
ASCII çizelge verilmistir. Bir C programinin PC tabanli bir isletim
sisteminde ve UNIX isletim sisteminde nasil derlenecegi ve çalistirilacagi
açiklanmistir.
Bölüm
10’da büyükçe sayilabilecek 3 tane örnek verilmis ve adim adim
açiklanmistir; hemen hemen C dilinin tüm özellikleri kullanilmaya
çalisilmistir. Ayni uygulama, dizi, baglantili liste ve ikili agaç modeline
göre uygulanarak adim adim açiklanmis ve aralarindaki farklara
deginilmistir. Bu içerigiyle kitap, C dilini ögrenmek isteyenler ve C
dilinde basvuru kitabina ihtiyaç duyacak programcilar ve sistem yöneticileri
için ciddi bir kitap niteligindedir.
Türkiye'nin İnternet
kitapçısı --->
www.tdk.com.tr
Şimdi
satın al
|
ÖNSÖZ
Sanirim C dilinin varligini UNIX isletim sistemine borçluyuz. Bu isletim
sistemini uygun bir yüksek düzey dil kullanarak yazmak isteyen
Dennis Ritchie, bundan 20 yil
kadar önce Bell Laboratuvarlarinda C adini verdigi yepyeni bir dili
yaratti. C dili ilk kez yazarin "The
C Programming Language" isimli yayiniyla tanitildi (1978). Geçen
zaman içinde C, dünyanin hemen tüm dillerinde pek çok kitaba konu oldu.
Bugün C derleyicisinin mikro sistemlerden süper bilgisayarlara kadar her
düzeydeki mimari için, kullaniciya makinenin dogal ve vazgeçilmez bir
parçasi olarak sunulduguna tanik olmaktayiz. Önceleri çok övülen ve
parlak bir gelecek öngörülen pek çok dil bugün yavas yavas solarken,
C'nin belki yaraticisinin bile düslemedigi yükselisi, acaba neden?
*
Sistem programcilarina düsüncelerini çok kisa ve öz biçimde
kodlamayi saglayan bir araç oldugu için mi?
*
Içerdigi güçlü operatörler nedeniyle mi?
* Basarili standartlasma
sonucu program tasinabilirliliginin çok büyük
ölçüde saglanmis
olmasindan mi?
*
Gerektiginde donanima kolayca ve dogrudan erisebilmeyi olanakli
kilmasindan mi?
*
Ya da UNIX'in yazildiktan hemen sonra üniversitelerde sinirsizca
kullanilmaya ve didiklenmeye
özendirilmesinin bir sonucu mu?
Saydigim etkenlerin mutlaka herbirinin, C dilinin bugünkü durumuna
ulasmasinda az ya da çok katkisi oldu.
Günümüz bilgisayar kullanicisi, eristigi sistem boyutu ve sistemi
kullanmadaki amaci ne olursa olsun, mutlaka öyle ya da böyle C
dilinde program yazmaktan kaçinamayacaktir. O halde, C dilinin
kurallarini çok iyi özümsemek zorundayiz. C derleyicilerinin basvuru
kitaplarinin bunun için dogru bir baslangiç noktasi oldugunu hiç
sanmiyorum. Bu kitaplarin buz gibi soguk diline ancak profesyoneller
katlanabilir. Herhalde bu dili ögrettigini savlayan bir ders kitabi ile
ise baslamak çok daha iyi bir yaklasim sayilmalidir. Ama acaba hangisi
ile? Geçerli yabanci dillerde titizlikle hazirlanmis bir çok C kitabi
var. Ancak bu kitaplar insanin kendi dilinde yazili bir kitaptan alacagi
hazzi, hele kisi o dile yeterince hakim de degilse verebilecek mi? Daha
da ötesi bizler C üzerinde tartismalarimizi yabanci bir dilde mi
yapacagiz?
Bugün teknik dallardaki eğitmenler Türkçe kitap yazmaktan çekiniyor,
çünkü Türkçe karsiligi belirli olmayan onlarca sözcüge ya benimsenecegi
pek süpheli karsiliklar önermek, ya da "save etmek" gibi gariplikler
türetmek ikilemiyle karsi karsiya gelmek istemiyor. Elinizdeki kitap
gelecekte pek çok basarili yayinlara da imza atacagina inandigim, çok
sevdigim bir genç meslektasim tarafindan hazirlandi. Bu meslektasim
büyük bir titizlikle pek çok kaynagi tarayarak, kitabin düzenlenisi,
örneklerin seçimi, uygun Türkçe sözcüklerin türetilmesi alanlarinda,
çevresindeki pek çok bilgili ve deneyimli kisi ile de yakin bir diyalog
kurarak, bence çok kapsamli bir eser hazirladi. Kendisini kutlar, bu
kitabin alanindaki bir boslugu doldurduguna yürekten inandigimi
belirtmek isterim. -
Prof.Dr.
Bülent ÖRENCİK
|
IÇINDEKILER
BÖLÜM 1. Giriş
Tarihçe
Standart C ve ANSI C
Kitap Üzerine
Bölümler
C Dili Anahtar Sözcükleri
Ekler
BÖLÜM 2.
C Fonksiyonları
2.1. C Fonksiyonlarinin Genel Yapisi
2.2. main() Fonksiyonu
2.3. Özet
2.4. Sorular
BÖLÜM 3. Degişkenler,
Sabitler ve Operatörler
3.1. Degiskenler
3.1.1. Temel Degisken Tipleri
3.1.2. Degiskenlerin Bildirim Yerleri ve Türleri
Yerel Bildirim
Genel Bildirim
Formal Bildirim
Dissal (Extern) Bildirim
Statik (Static) Degisken Bildirimi
Saklayici Tipli (Register) Degisken Bildirimi
volatile Tipli Degisken Bildirimi
3.1.3. Degiskenlere Baslangiç Degeri Verilmesi
3.2. Sabitler ve Sabit Degerler
Sabit Bildirimi
Sabit Degerler
Tamsayilar
Gerçel Sayilar
Karakterler
3.3. Operatörler
3.3.1. Aritmetik Operatörler
3.3.2. Karsilastirma Operatörleri
3.3.3. Mantiksal Operatörleri 46
3.3.4. Bitler üzerinde islem yapan (bitwise) Operatörler
3.3.5. Diger Operatörler
( atama, bitisik atama, ?, *, & ve sizeof )
Atama Operatörleri
?: Karsilastirma Operatörü
& ve * Isarteçi Operatörleri
sizeof Operatörü
3.4. Operatörlerin Öncelikleri ve Bagintilar
3.5. Bagintilarda Tip Dönüsümleri
3.6. Özet
3.7. Sorular
BÖLÜM 4.
Program Denetim Deyimleri
4.1. Karsilastirma Deyimleri
4.1.1. if, if-else
4.1.2. switch
4.2. Döngü Deyimleri
4.2.1. while
4.2.2. do...while
4.2.3. for
4.3. break ve continue Deyimleri
4.3.1. break
4.3.2. continue
4.4. goto Deyimi ve Etiket
4.5. Özet
4.6. Sorular
BÖLÜM 5.
Fonksiyonlar
5.1. Fonksiyonlarin Ayrintilari
Fonksiyonlarin Tanimlanmasi ve Bildirimi
Fonksiyona Parametre Aktarimi
main() Fonksiyonuna Parametre Aktarimi
Fonksiyonlarin Isaretçiyle Çagrilmasi
Ayni Fonksiyona Farkli Sayida Arguman Aktarimi
5.2. Rekürsif Fonksiyonlar
5.3. Baslik Dosyalari (*.h)
5.3.1. Makro ile Kütüphane Fonksiyonu
Arasindaki Fark
5.3.2. Standart Baslik Dosyalari
5.3.3. Özel Baslik Dosyasi Olusturma
5.4. Özet
5.5. Sorular
BÖLÜM 6.
Hazır Kütüphane Fonksiyonları
6.1. Karakterler Üzerinde Islem Yapan Fonk.
<ctype.h>
6.2. Katarlar Üzerinde ve Bellek A. Isl. Yapan Fonksiyonlar <string.h>
6.3. Standart Giris Çikis Fonksiyonlari
<stdio.h>
6.4. Matematiksel Fonksiyonlar <math.h>
6.5. Genel Amaçli Fonksiyonlar <stdlib.h>
6.6. Esnek Arguman Fonksiyonlari <stdarg.h>
6.7. Zaman ve Tarih Fonksiyonlari <time.h>
6.8. Yerel Olmayan Dallanma Fonksiyonlari
<setjmp.h>
6.9. Ayricalikli Durum Kontrolu <signal.h>
6.10. Hata Ayiklama Fonksiyonlari <assert.h>
6.11. Yerellestirme Fonksiyonlari <locale.h>
6.12. Özet
6.11. Sorular
BÖLÜM 7.
Diziler
7.1. Bir Boyutlu Diziler
7.2. Matrisler
7.3. Çok Boyutlu Diziler
7.4. Dizilere Baslangiç Degeri Verilmesi
7.5. Dizilerin Fonksiyona Aktarilmasi
7.6. Dizi Uygulama Örnekleri
Kabarcik Siralamasi (Bubble Sort) , Hizli
Siralama (Quicksort)
Ikili Arama (Binary Search), Matris Toplama
Mat. Satirlarini Toplayip Vektöre Atama, Matris
Çarpma
Yigin / Kuyruk Yapisi
Varyans / Standart Sapma
7.7. Özet
7.8. Sorular
BÖLÜM 8.
Işaretçiler
8.1. Isaretçi Bildirimi ve Kullanimi
8.2. Isaretçi Aritmetigi
8.3. Isaretçilerin Karsilastirilmasi
8.4. Isaretçi ve Diziler Arasindaki Iliski
8.5. Dinamik Diziler
8.6. Tipi Isaretçi Olan Fonksiyonlar
8.7. Özet
8.8. Sorular
BÖLÜM 9.
Katarlar (Strings)
9.1. Katar Bildirimi
9.2. Katarlara Baslangiç Degeri Verilmesi
9.3. Katar Dizileri
9.4. Bazi Katar Fonksiyonlarin Tanimlanmasi
9.5. Özet
9.6. Sorular
BÖLÜM 10.
Yapısal Veri Tipleri
10.1. typedef Deyimi
10.2. Topluluk (struct) Deyimi
Topluluk Bildirimi ve Kullanimi
Topluluk Üyelerine Baslangiç Degeri Verilmesi
Toplulugun Fonksiyonlar ile Kullanimi
10.3. Büyükçe Örnek 1: struct Dizisi Kullanimi
10.4. Büyükçe Örnek 2: Dogrusal Baglantili
Liste Uyg.
10.5. Büyükçe Örnek 3: Ikili Agaç Uygulamasi
10.6. Ortaklik (union) Deyimi
10.7. Özet
10.8. Sorular
BÖLÜM 11.
Yeni Veri Türü Oluşturmak
11.1. Yeni Veri Türü Tanimlamak
11.2. Yeni Kümenin Elemanlari ve Atama
11.3. Özet
11.4. Sorular
BÖLÜM 12.
bit Düzeyinde (bitwise) Çalışmak
12.1. bit Düzeyinde Degisken
Bildirimi
12.2. bitlere Erisim
12.3. Özet
12.4. Sorular
BÖLÜM 13.
Disk Dosyaları
Metin Dosyasi – Ikili Dosya
13.1. Üst Düzey Dosya Yapisi
Dosyanin Açilmasi
Dosyanin Kapatilmasi
Dosyaya Karakter Düzeyinde Erismek
Dosyaya Karakter Katari Düzeyinde Erismek
Dosyaya Formatli Erisim
Dosyaya Toplu Erisim
Dosya Içeriklerine Dogrudan Erisim
13.2. Alt Düzey (UNIX Benzeri) Dosya Yapisi
Dosyanin Açilmasi
Dosyanin Kapatilmasi
Dosyaya Erisme
Dosya Içindekilere Dogrudan Erisim
13.3. Standart Giris Çikislar
13.4. Özet
13.5. Sorular
BÖLÜM 14.
C Dili Önişlemci Komutları
14.1. #define Önislemci Komutu
14.2. #undef Önislemci Komutu
14.3. #include Önislemci Komutu
14.4. #if, #endif, #elif, #ifdef, #ifndef
Önislemci Komutu
14.5. #line Önislemci Komutu
14.6. #error ve #pragma Önislemci Komutlari
14.7. Özet
14.8. Sorular
BÖLÜM 15.
Seri Iletisim Fonksiyonları
15.1. Seri Iletisim Temeli ve C Fonksiyonlari
15.2. Örnek Program
15.3. Özet
15.4. Sorular
BÖLÜM 16.
Grafige Bir Bakış
Renk Kümesi, Sayfa, En Son Parlatilan Nokta
16.1. Çizim Moduna Geçmek
16.2. Grafik Fonksiyonlar
16.2.1. Çizim Fonksiyonlari
16.2.2. Taramali Çizim Fonksiyonlari
16.2.3. Durum Degiskenlerini Degistirme Fonksiyonlari
16.2.4. Sorgulama Fonksiyonlari
16.2.5. Yazim Fonksiyonlari
16.2.6. Hata Yönetimi Fonksiyonlari
16.2.7. Diger Fonksiyonlar
16.3. Özet
16.4 Sorular
EK A:
Programın Derlenmesi ve Çalıştırılması
EK B:
ASCII Çizelgesi
KAYNAKÇA
DIZIN
|