Amiga Dünyası sayı 11, sayfa 28

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 28

Bu ay, C dilinde program akış kontrollerini sağlayan cümleleri, blokları ve kontrol komutlarını göreceğiz.

C dilinin diğer dillerde de olduğu gibi, kendine göre bir yazılım şekli (syntax'i) vardır. Amiga C'yi öğrenen arkadaşlara önceden şunu belirtmek isterim ki; C dilinin bu yazılım şeklini uygulamak, programın anlaşılırlığı bakımından oldukça yararlı olacaktır. Örneğin bir satırda ne kadar az komut kullanılırsa, programınızın hatalarını çözmek o kadar kolay olmaktadır.

C dilinde noktalı virgül işareti, bize bir cümlenin bitmiş olduğunu belirtmektedir. BASIC dilindeki ':' gibi. İstendiğinde bir satıra birden fazla cümle yazılabilir.

x=0; i++; printf("x=%d, i=%d",x,i);

Buradaki örnekte üç cümle (ya da komut, işlem, fonksiyon... olabilir) vardır.

Küme işaretleri, { ve } C dilinin temelini oluşturmaktadır. Bilindiği gibi, C dili yapısal bir dildir.

Birden fazla komutu veya ifadeyi bu küme işaretleri içerisinde kullanarak programımızın yapısını oluştururuz. Şimdi ise programımızın akışını etkileyen kontrol komutlarına geçmek istiyorum. İlk olarak IF-ELSE ikilisini inceleyelim.

IF-ELSE

If-Else ikilisi, C dilinde karar vermek için kullanılır. Kullanım şekli ise şöyledir;

IF (ifade)

1. Cümle ELSE

2.Cümle

If komutundaki ifadeye göre 1. cümle veya 2. cümle işlenmektedir. İfade doğru ise 1. cümle, yanlış ise 2. cümle aktif hale geçer. Burada Else komutunu bazı durumlarda kullanmayabiliriz. Bu durumda ifadenin yalnız doğruluğunu kontrol etmiş oluruz. Ayrıca ifadenin değerine göre sıfır yanlış, sıfırdan farklı bir sayı ise doğru anlamına gelmektedir.

Aşağıdaki yazılım şekline dikkat edin,

IF (a>b)

z=a; ELSE

z=b;

İfadenin doğruluğuna göre z, büyük sayıya eşitlenecektir.

Burada birden fazla işlem yapılabilmektedir. Bu durumda küme işareti kullanılır.

If(a>b) {

z=a; printf("z=%d",z); | ELSE | z=b:

printf("z=%d",z); }

Aşağıdaki örnekte, ikilik sisteme göre arama rutini verilmiştir (Binary Search).

binary(x, v, n) int x, v[], n;

{

int low, high, mid; low=0; high=n-1; while(low<=high) {

mid=(low+high) 2; if(x<v[mid])

high=mid-l; else if (x>v[mid])

low=mid+l; else return(mid); } return(-l);

}

Buradaki rutinde x aranan sayı, v aranacağı dizi, n dizinin uzunluğunu belirtmektedir. V dizisi, sıralanmış bir dizidir.

SWITCH

Switch komutu, ifadenin değerine göre birden fazla satıra dallanabilmektedir. Aşağıdaki örneği inceleyerek bu komutun kullanım şeklini daha rahat anlayabiliriz.

#define EOF -1 AMIGA main()

{

int c,i,diger,digit[10];

diger=0; for(i=0;i<10;i++)

digit[i]=0;

while((c=getchar()) !=EOF)

switch (c) { case '0': case T: case '2': case '3': case '4': case '5': case '6': case '7': case '8'; case '9': digit[c-'0']++;

break; default:

diger-H-; break; } for(i=0;i<10;i++) printffdigit %d=",digit[i]); printf("diger = %d",diger);

Yukarıdaki program, basılan nümerik sayıların ve diğer tuşların adedini vermektedir. Switch kümesinin içinde ise 'case', 'default' ve 'break' komutlarının kullanımına dikkat edin. Burada switch'ten sonraki ifadeye göre 'case' satırlarına geçilir, 'case'ten sonraki ifade, switch'ten sonraki ifadeye eşit ise o satır işlenir, 'break' ise bir sonraki 'case' satırına geçilmemesi için kullanılır, 'default'a ise switch'ten sonraki ifade ile 'case'lerden sonraki ifadeler, birbirlerinden farklı ise geçilir. Yani diğer bir deyişle, hiçbir 'case' satırına geçilmezse bu satır işlenmektedir.

Programımızın genel çalışma prensibi şöyledir: İlk olarak 'EOF' bir sembolik sabit olarak tanımlanmaktadır. Daha sonra bütün değişkenler sıfırlanır. c=getchar() ile klavyeden bir tuşa basılması için while döngüsü başlar. Basıldığı anda, yukarıda anlattığımız gibi switch komutu işler. Eğer RETURN tuşuna basarsak c=EOF olacağından program döngüden çıkar ve basılan nümerik sayıların sayısı ile diğer basılan tuşların sayısını yazar. Görüldüğü gibi programımız oldukça basit.

Yeni başlayan arkadaşlara, programımızı çalıştırmak için yapılması gerekenleri tekrar hatırlatmak istiyorum, ilk olarak Aztec C derleyicinizi hazırlayın. Daha sonra yukarıdaki listeyi bir editör programı ile yazarak ramdiske deneme.c ismi ile kaydedin. Burada örnek olarak 'deneme' ismi verilmiştir. Bu ismin yerine başka bir isim kullanabilirsiniz. Fakat sonuna '.c' uzantısını eklemeyi unutmayın. Daha sonra 'cc deneme.c' yazarak programınızı compile edin. Compile işleminin sonunda ramdiske 'deneme.o' adı altında yeni bir dosya açılır. Bu dosyayı da 'ln deneme.o -lc' ile link ettikten sonra, 'deneme' yazarak programınızı çalıştırabilirsiniz.

Klavyeyle gezinmek için ← ve → tuşları.