* Önsöz
* Giriş
* Veri Tipleri, Değişkenler
* Operatörler
* Temel G/Ç Fonksiyonları
* Temel Kütüphane Fonksiyonları
* Karşılaştırma Deyimleri
* Döngüler
* Fonksiyonlar I
* Fonksiyonlar II
* Diziler
* Gösterici (Pointer) Kavramı
* Katarlar (Stringler)
* Dinamik Bellek Yönetimi
* Gösterici Uygulamaları
* Yapılar ve Birlikler
* Dosya Yönetimi
* Bit Düzeyinde Çalışmak
* Port Denetimi
* Grafik Kullanımı
* C Makroları
* Kısaca C++
* Derleme Seçenekleri
* Tarih-Saat Fonksiyonları
* Monte-Carlo Yöntemleri
* Fortran ve C
* Yararlanılan Kaynaklar
* Dev-C++
* Salford (silversoft FTN95)
* GCC
* Turbo C
* Eclipse IDE
* NetBeans IDE
* programlama.com
* C Programcıları Derneği
* C (wikipedia)
* C++ (wikipedia)
* cplusplus.com
* koders.com
* Hot scripts
|
|
Ders 1: Giriş
###################- (%95)
|
En son güncelleme: Wed, 30 Nov 2011 13:22:02 +0200
Giriş
Bu ilk derste, bir C programın nasıl derlenip çalıştırılacağı ve Internet'te bulabileceğiz
derleyicilerden bahsedilecektir. En basit C programının derleyip çalıştırdıktan sonra,
geriye kalan sadece C Programlama Dili'nin kurallarını, yapısını ve deyimlerini öğrenmekten ibarettir.
1.1 Tarihçe
C Programlama Dili genel amaçlı orta seviyeli ve yapısal bir programlama dilidir.
1972 yılında Dennis Ritchie tarafından Bell Telefon Labaraturvarında Unix işletim sistemi
ile kullanılmak için tasarlanmıştır.
C, özellikle sistem programlamada sembolik makine dili (Asembler) ile tercih edilmektedir.
İşletim sistemleri, derleyiciler ve debug gibi aşağı seviyeli sistem
programlarının yazılımında yoğun olarak C programlama dili kullanılır.
C'nin yayılması ve gelişmesi, büyük bir bölümü C dili ile yazılan UNIX işletim
sisteminin popüler olmasıyla başlamıştır. C Programlama Dili, hemen her alanda kullanılmaktadır.
Günümüzde nesneye yönelik programlama dilleri
(C++, Java) ve script dilleri (JavaScript, JavaApplet, PHP) gibi
programlama dilleri C Programlama Dili'nden esinlenmiştir.
C taşınabilir (portable) bir dildir. Yani herhangi bir C programı hiçbir değişikliğe uğramadan,
veya çok az bir değişimle, başka bir derleyicide ve/veya işletim sisteminde derlenebilir.
Örneğin, Windows işletim sistemlerinde yazılan bir C kodu, Linux, UNIX
veya VAX gibi işletim sistemlerinde de derlenebilir.
Taşınabilirlik, herkesin kabul ettiği bir standart ile gerçekleştirilebilir.
Bugün, C Programla Dili için American National Standards Institute (ANSI) kurumunun
Mart 2000'de belirlediği C99: ISO/IEC 9899:1999 standartı Standart C olarak kabul edilmiştir.
Burada verilen C notarında, ağırlıklı olarak ANSI C veya diğer adıyla Standart C konu edilmiştir.
1.2 Neden C?
- C, en popüler dildir. Bkz: langpop.com
- C, güçlü ve esnek bir dildir. C ile işletim sistemi veya derleyici yazabilir, kelime işlemciler oluşturabilir veya grafik çizebilirsiniz.
- C, iyi bir yazılım geliştirme ortamına sahiptir.
- C, özel komut ve veri tipi tanımlamasına izin verir.
- C, taşınabilir bir dildir.
- C, gelişimini tamamlamış ve standardı oluşmuş bir dildir.
- C, yapısal bir dildir. C kodları fonksiyon olarak adlandıralan alt programlardan oluşmuştur.
- C++, Java, JavaScript, JavaApplet, PHP, C#, ... gibi diller C dilinden esinlenmiştir.
1.3 İlk C Programı
Program 1.1 de verilen C programı derlendikten sonra, ekrana 'Merhaba Dünya!'
yazısını basan yalın bir C programıdır. Satır başlarına yerleştirilen 1:, 2: 3: ...
rakamlarının yazılmasına gerek yoktur.
Bu rakamlar sadece daha sonra program ile ilgili açıklama yapılırken, ilgili
satırda bulunan kodlar izah edilirken kullanılacaktır.
Bu programın bilgisayarda ilk.c adı ile kaydedilmiştir.
Program 1.1: Derlendikten sonra ekrana 'Merhaba Dünya!' yazar
01:
02:
03:
04:
05:
06:
07:
|
/* ilk.c: ilk C programi */
#include <stdio.h>
main()
{
printf("Merhaba Dünya!\n");
} |
- /* ... */
- Programda, 1. satırda /* ... */ sembolleri görülmektedir.
Bu ifadeler arasında yazılan herhangi bir metin, işlem vb. satırlar, derleyici tarafından işlenmez
(değerlendirilmez). Yani /* */ ifadeleri açıklama operatörüdür.
NOT
Açıklama operatörü olarak C++ tarzı iki-bölü (//) de kullanılmaktadır.
Günümüzde birçok C derleyicisi // operatörünü desteklemektedir.
Bu operatörü kullanmadan önce derleyicinizin bu operatörü
desteklediğinden emin olun.
/*
Bu satırlar derleyici tarafından
değerlendirilmez. Ayrıca programın C tarzı
çalışma hızını da değiştirmez.
*/
// Bu satırlar derleyici tarafından
// değerlendirilmez. Ayrıca programın C++ tarzı
// çalışma hızını da değiştirmez.
|
- #include <stdio.h>
- 2. satırdaki #include deyimi, programda eklenecek olan başlık dosyanını işaret eder.
Bu örnekte verilen başlık dosyası (header file) stdio.h dir. #include <stdio.h> ifadesi
stdio.h dosyasının derleme işlemine dahil edileceğini anlatır[1]-[2].
Bu dosyalardan, Bölüm 20'de tekrar bahsedilecektir.
- main()
- 4. satırdaki main() özel bir fonksiyondur. Ana program bu dosyada saklanıyor anlamındadır.
Programın yürütülmesine bu fonksiyondan başlanır. Dolayısıyla her C programında
bir tane main() adlı fonksiyon olmalıdır.
- printf()
- 6. satırdaki printf() standart kütüphane bulunan ekrana formatlı bilgi yazdırma fonksiyondur.
stdio.h dosyası bu fonksiyonu kullanmak için program başına ilave edilmiştir.
Aşağıda printf() fonksiyonunun basit kullanımı gösterilmiştir.
Örnek kullanım şekli |
|
|
Ekranda yazılacak ifade |
printf("Element: Aluminyum"); |
|
|
Element: Aluminyum |
printf("Atom numarası = %d",13); |
|
|
Atom numarası = 13 |
printf("Yoğunluk = %f g/cm3",2.7); |
|
|
Yoğunluk = 2.7 g/cm3 |
printf("Erime noktası = %f derece",660.32); |
|
|
Erime noktası = 660.32 derece |
Daha fazla bilgi için bkz. Bölüm 4.
1.4 Başlık Dosyaları
C dilinde bir program yazılırken, başlık dosyası (header file) olarak adlandırılan
bir takım dosyalar #include önişlemcisi kullanılarak program içine
dahil edilir. C kütüphanesinde bulunan birçok fonksiyon, başlık dosyaları içindeki
bazı bildirimleri kullanır. Bu tür dosyaların uzantısı .h dir.
ANSI C'deki standart başlık dosyaları şunlardır:
assert.h locale.h stddef.h
ctype.h math.h stdio.h
errno.h setjmp.h stdlib.h
float.h signal.h string.h
limits.h stdarg.h time.h
Bir çok C derleyicisinde yukarıdakilere ek olarak tanımlanmış başlık dosyaları
da vardır. Bunlar derleyicinin yardım kısmından veya derleyicinin kullanım
kılavuzundan öğrenilebilir. Ayrıca Bkz. Bölüm 20
ilk.c programında kullanılan başlık dosyası stdio.h,
#include <stdio.h> ifadesi ile derleme işlemine dahil edilmiştir.
stdio.h standard giriş/çıkış
(STandarD-Input-Output) kütüphane fonksiyonları için bazı bildirimleri barındıran bir
dosyasıdır. Programda kullanılan printf() fonksiyonunu kullanmadan önce
bu başlık dosyası programın başına mutlaka ilave edilmelidir. Aksi halde derleme esnasında
undefined reference to _printf
şeklinde bir hata mesajı ile karşılaşılır.
1.5 Kaynak Kodunun Derlenmesi
C programları veya kaynak kodları (source code) uzantısı .c olan dosyalarda saklanır.
Kaynak kod, bir C derleyicisi (C compiler) ile nesne koduna (object code) daha sonra uygun bir bağlayıcı
(linker) programı ile işletim sistemininde çalıştırılabilen (executable) bir koda dönüştürülür.
Derleme işlemi ayrıntılı olarak Bölüm 22'de anlatılmıştır.
Bazı işletim sistemleri ile kullanılan C Derleyicileri ve bu derleyicilerde
ilk.c programının komut satırında nasıl derleneceği Tablo 1.1'de verilmiştir.
Eğer ismi geçen derleyicinin bir editörü varsa ilk.c bu editör de derlenebilir.
Tablo 1.1: İşletim sistemleri, bazı derleyiciler ve derleme komutları
İşletim Sistemi |
Derleyici |
Derleme |
Çalıştırma |
MS-DOS / Windows |
Microsoft C |
cl ilk.c |
ilk.exe |
Borland Turbo C Web |
tcc ilk.c |
ilk.exe |
Borland C |
bcc ilk.c |
ilk.exe |
Zortec C |
ztc ilk.c |
ilk.exe |
GCC (GNU Compiler Collection) Windows için Web |
gcc ilk.c -o ilk.exe |
ilk.exe |
UNIX / Linux |
GCC (GNU Compiler Collection) Web |
gcc ilk.c -o ilk |
./ilk veya nice ilk |
Bunların dışında, komut satırını kullanmadan, kodlarınızı
Windows ortamında çalışan GCC tabanlı DevC++ veya Salford Plato3 derleyicileri
ile derlemek mümkün. Bu tip derleyicilerde hata ayıklama işlemini kolaylaştırmak için
kodlar farlı renkte gösterilir. Fakat program çıktıları için kullanılan ekran klasik DOS ekranıdır.
Şekil 1.1 ve 1.2"de bu programların ekran görüntüleri verilmiştir.
Şekil 1.1: DevC++ derleyicine ait editör. Derleme ve çalıştırma işlemleri araç çubuğu üzerindeki
butonlarla yapılır.
Şekil 1.2: Silverfrost Salford (Plato3) derleyicine ait editör. Derleme, bağlama ve çalıştırma
işlemleri araç çubuğu üzerindeki butonlarla yapılır.
Derslerimizde kullanılan kaynak kodları, Turbo C ve GCC derleyicileri ile komutsatırında derlenmiştir.
Turbo C derleyicisi isteğe bağlı editörden veya komut satırından derlenebilir.
Editörü başlatmak için C:\TC> dizini altındaki TC.EXE dosyasının çalıştırılması yeterlidir.
Şekil 1.3'de Turbo C editör ortamı gösterilmiştir.
Şekil 1.3: Turbo C derleyicisine ait editör. Derleme için F9, Derleme bağlama ve çalıştırma
işlemleri için CTRL+F9 tuş kombinasyonu kullanılabilir..
NOT
DevC++, Salford, GCC ve Turbo C derleyicilerini C/C++ Derleyicileri
kısmında bulabilirsiniz.
|
ilk.c nin Borland Turbo C ve GCC Programları ile derlenmesi ve çalıştırılması:
DERLEME ve ÇALIŞTIRMA
MS DOS (Turbo C) |
Linux (GCC) |
C:\TC> tcc ilk.c
C:\TC> ilk.exe
|
$ gcc ilk.c -o ilk
$ ./ilk
|
ilk.c nin çıktısı:
ÇIKTI
1.6 C Kodlarının Temel Özellikleri
Bir C programı aşağıda verilen özellikleri mutlaka taşımalıdır.
- Yazılımda kullanılacak olan her fonksiyon için ilgili başlık dosyası programın
başına ileve edilmedlidir.
- Her C programı main() fonksiyonunu içermelidir.
- Program içinde kullanılacak olan değişkenler ve sabitler mutlaka tanımlanmalıdır.
- Satırın sonuna ; işareti konmalıdır.
- Her bloğun ve fonksiyonun başlangıcı ve bitişi sırasıyla
{ ve } sembolleridir.
- C dilinde yazılan kodlarda küçük-büyük harf ayrımı vardır (case sensitive).
Örneğin A ile a derleyici tarafından farklı değerlendirilir.
- Açıklama operatörü /* */ sembolleridir.
1.7 Kod Yazımı için Bazı Tavsiyeler
- Program açıklamalarını ve döküman hazırlama işini program yazıldıkça yapın! Bu
unutulmaması gereken çok önemli husustur.
- Değişken, sabit ve fonksiyon adları anlamlı kelimelerden seçilip yeterince
uzun olmalıdır. Eğer bu isimler bir kaç kelimeden oluşacak ise, kelimeler
alt çizgi ( _ ) ile ayrılmalıdır veya her kelime büyük harfle başlamalıdır.
Örneğin:
int son_alinan_bit;
void KesmeSayisi();
float OrtalamaDeger = 12.7786;
- Sabitlerin bütün harflerini büyük harfle yazın. Örneğin:
#define PI 3.14;
const int STATUS = 0x0379;
- Her alt yapıya girerken birkaç boşluk veya TAB tuşunu kullanın.
Bu okunabilirliği arttıracaktır. Örneğin:
k = 0;
for(i=0; i<10; i++)
{
for(j=0; j<i; j+=2)
{
do{
if( j>1 ) k = i+j;
x[k] = 1.0/k;
}while(k!=0);
}
}
- Aritmetik operatörler ve atama operatörlerinden önce ve sonra boşluk karakteri kullanın.
Bu, yazılan matematiksel ifadelerin daha iyi anlaşılmasını sağlayacaktır.Örneğin:
h_max = pow(Vo,2) / (2*g);
Tf = 2*Vo/g;
Vy = Vo - g*t;
y = Vo*t - (g*t*t)/2.0;
z = ( a*cos(x) + b*sin(x) )*log( fabs(y) );
- Program bittikten sonra tekrar tekrar programınızı inceleyerek, programınızı daha
iyi şekilde yazma yollarını arayın ve aynı fonksiyonları daha kısa algoritmalarla
ve/veya daha modüler şekilde elde etmeye çalışın.
|