Bu sayfadaki yazılar
Sayfanın metni
Sayfa 73
Else ifadesi bir önceki if karşılaştırmasının doğru veya yanlış olmasına göre ardından gelen işlemi yapmaktadır. Eğer bir önceki if ifadesi doğruysa else ile başlayan işlem yapılmamakta, if ifadesi 0 mantıksal değerine karşılık geliyorsa bu işlem yapılmaktadır.
DİZİLER
C'de dizilerin kullanımı diğer dillerdeki dizi işlemlerine büyük benzerlik gösterir. C'de kullanılan tüm değişken tipleri çeşitli boyutlarda dizi oluşturabilir. Basit bir örnek programla tek boyutlu bir dizi kullanımı inceleyelim. Bu örnek klavyeden girilen karakterlerin sadece rakam olanlarını saymakta ve hangi rakamdan kaç defa giriş yapıldığını vermektedir. Ayrıca örnekte görüldüğü gibi dizilerin de kullanılmadan önce tanımlanması gerekmektedir. Bu tanımlamada dizinin isminin yanısıra kaç elemanı olduğu da tanımlanmalıdır. Çünkü C derleyicisi o dizi için bellekte eleman sayısı kadar yer ayıracaktır. Bu örnek de The C Programming Language adlı kaynak kitabında, sayfa 20'de yer almaktadır. Yalnız bu örnekte, rakamların yanısıra rakam olmayan karakterler de sayılmaktadır. Biz sadece rakam sayma işlemini inceleyeceğiz. main() /* rakam sayma programı */ {
int rakam|10|; forfi * *i) rakam |(i| - 0; while ((c getchar())! EOF) if (e> && c<-'9) 4 * rakam
printf (“rakamlar — *"); for * -i) rakam (i)
| örnekte görüldüğü gibi dizi 10 elemanlı olarak, int rakam[10]; şeklinde tanımlanmıştır. Hemen alttaki for işlemi ile tüm elemanlar sıfıra eşitlenmiştir. Bunun nedeni değer atılmamış değişkenlerin C'de tanımlanmamış olmasıdır. Programda ilk if ifadesinde mantıksal VE (AND) işlemi kullanılmıştır. C'de VE işlemi && ile gösterilmektedir.
if (c >= '0' && c <= '9') ifadesi girilen karakterin sıfır karakterine büyük eşit ve 9 karakterine küçük eşit olması şartı taşımaktadır. Bu örnekte karşılaşılan ilginç bir kullanım ise bir sayıdan karakter çıkarma işlemidir. Bu ifade,
++rakam[c-'0'] içinde yer alan ifadesidir. Bu ifadede dizi elemanları sayılarla ifade edilmektedir ve bu sayı pozitif tamsayıdır. Bu nedenle C girilen karakterin ASCII kodunu gösterdiğinden '0' da 0 karakterinin ASCII koduna çevrilmektedir. Bu fark ise 0 ile 9 arasında yeralmakta, bu da dizi elemanını göstermektedir.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 72
SEYFETTİN ÇANKAYA
Geçen yazı dizisinde karakter ve satır sayma örnek programlarını görmüştük. Kelime sayma programıyla yazımıza devam edelim.
KELİME SAYMA
Kelime sayma işleminde uygulanan yöntem, içinde boşluk (blank), tab ve satırbaşı (newline) içermeyen ve kontrol karakterlerinden oluşmamış dizilerin sayılmasıdır. Bu açıklamalardan sonra programı yazalım.
main() /* kelime sayma * | int kelime, kontrol; kelime — 0; kontrol - 0; while ((c — getchar())! — EOF)
|
if (cs -'/1) kontrol — 0;
else if (kontrol - -0) |
kontrol — 1; * * kelime;
|
|
Örnekte boşluk, tab ve satırbaşı karakterler kontrol edilmekte, eğer bunlardan biri varsa kontrol değişkeni sıfır değerini almaktadır. Bu değişken arka arkaya gelen her boşluk, tab ve satırbaşı karakterlerin kelime olarak sayılmasını önlemek için kullanılmıştır. Eğer kontrol değişkeni sıfır ise kelime sayma işlemi yapılmakta ve kontrol değişkeni 1 yapılarak arkadan gelen sözkonusu karakterlerin sayılması önlenmektedir. İlk if satırında yeni göreceğimiz mantıksal veya (OR) işlemi görülmektedir. OR işleminin C dilinde ifadesi || şeklindedir. İf satırı burada eğer (c boşluk VEYA tab VEYA SATIRBAŞI) ise mantıksal ifadesini göstermektedir.
ELSE
Ayrıca mantıksal karşılaştırmalarda if ile birlikte kullanılan else komutu da bu programda kullanılmıştır.