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çeC 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 Proglamlama 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. Bu ders notarında ağırlıklı olarak Standart C veya ANSI C konu edilmiştir.
1.2 Neden C?C Programlama Dili'ni popüler kılan önemli nedenler aşağıda listelenmiştir:
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.
- Kod:
-
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.
Ş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.. 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
Merhaba Dünya!
1.6 C Kodlarının Temel ÖzellikleriBir 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ı TavsiyelerProgram açıklamaları ve döküman hazırlama 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 arrtı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ı fonsiyonları daha kısa algoritmalarla ve daha modüler şekilde elde etmeye çalışın. Programınızın anlaşılması için elinizden ne geliyorsa yapın. Bilginizi ve eserinizi başkalarına en iyi şekilde akatarın.