1.8. C Deyimleri Ve Program Gövdesi
C programları deyimlerden oluşur. Yazılabilecek en basit deyim bir ifade deyimidir. Bir ifade deyimi, arkasına noktalı virgül konmuş herhangi bir ifadedir. Örneğin,
a + b * c; i++;
iki ayrı ifade deyimidir; ancak bunlardan ilki
pek bir işe yaramaz, oysa ikincisi, yan etkisinden dolayı, bir işe
yarar: i
’nin değerinin bir artırılmasına neden olur.
Bileşik bir deyim dışında her deyim noktalı virgülle sona erer.
Bir bileşik deyim
(ayrıca, bildirimler içerdiği zaman, blok
da denir), aşağıdaki gibi çengelli parantezler arasına alınmış bir deyimler
sırasıdır. Bileşik deyimden sonra noktalı virgül olmadığına dikkat edin.
{ bildirimleropt deyim1 opt deyim2 opt … deyimn opt }
Sözdizimsel açıdan bir bileşik deyim tek bir deyime eşdeğerdir.
İsteğe bağlı olarak, bir bileşik deyimin ilk yürütülebilir deyiminden önce
değişken tanımları ve bildirimleri bulunabilir. Tanımların bir bileşik deyim
içine konmasının önemli bir sonucu vardır. Yürütme esnasında, bir bileşik
deyim içinde tanımlanmış bulunan değişkenler için bloğa girildiğinde bellek
ayrılır; bloktan çıkıldığında ise bu bellek bölgesi serbest bırakılır. Eğer
bileşik deyim dışında aynı isimde değişkenler varsa, bloğa girildiğinde,
bunların kimlikleri geçici olarak unutulur
ve yeni tanımlar etkili
olur. Bloktan çıkıldığında eski tanımlar etkilerini tekrar kazanırlar. Bu
durum içiçe olan bloklar için meydana gelebilir. (Daha güncel C
Standartları bir blok içindeki tanım ve bildirimlerin deyimler arasına da
konmasına izin vermiştir; ancak bu kitapta böyle bir kullanımdan
kaçınılmıştır.)
Şimdilik, bir C programının genel şekli aşağıdaki gibi özetlenebilir:
/* * * * * * * * * * * * * * * * * * * * * * * * * * *\ * * * Programın ne yaptığını, kimin tarafından, ne * * zaman yazıldığını vs. belirten açıklamalar. * * * \* * * * * * * * * * * * * * * * * * * * * * * * * * */ … bütün önişlemci emirleri … int main (void) { … veri tanımları … deyimler … return 0; } /* main */
Program gövdesinin büyük bileşik bir deyimden oluştuğuna
dikkat ediniz. Daha sonra anlatılacağı gibi, fonksiyon tanımları da aynı şekilde
yazılır, yani ana program da bir bakıma bir fonksiyondur. Genelde, program
gövdesinin sonunda return 0;
deyimi bulunur. Bu deyim,
program biterken işletim sistemine döndüreceği bir başarı durumu değeri
içerir. 0
değeri programın beklenen şekilde sonlandığını bildirir;
sıfırdan farklı (genelde 1
ile 127
arasında) bir
tamsayı ise programın çalışma sırasında bir hata aldığını göstermek için
kullanılır.
Aslında
nun sonundaki
main
fonksiyonureturn 0;
deyimi opsiyoneldir; yani derleyici, eğer
main
fonksiyonunun sonunda return 0;
deyimi
yoksa, otomatik olarak ekleyecektir. Bu özellik ileride göreceğimiz diğer
fonksiyonlar için geçerli değildir ve karışıklık yaratmaması için bu kitaptaki
örneklerde genelde return 0;
deyimi, gereksiz olmasına
rağmen, kullanılmıştır.