Amiga Dünyası sayı 22, sayfa 16

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 16

strcpy(a,"Amiga Dunyasi");

satırları ile, kullanacağımız değişkenleri belirliyoruz. Burada 'a' değişkeni, ekrana yazacağımız diziyi saklıyor, 'a' değişkenine yazdıracağımız 'Amiga Dünyası' dizisini, strcpy() fonksiyonu ile kopyalıyoruz, 'a' değişkeninin, char tipinde olduğunu unutmamalıyız.

Diğer değişkenlerden 'lin' ve 'col', yazacağımız pozisyonu belirliyor. 'lin' satır, 'col' kolon pozisyonunu saklıyor, 'max' değişkeni ise yazılacak olan dizinin byte olarak uzunluğunu içeriyor. Burada dizinin uzunluğunu,

max=strlen(a);

satırındaki strlen() fonksiyonu ile öğreniyoruz. Daha sonra kendi hazırlamış olduğumuz new_print() alt fonksiyonuna sıçrıyor ve bu fonksiyonun işlevinin icrasından sonra da return() fonksiyonu ile programımızdan hatasız olarak çıktığımızı belirtiyoruz.

new_print(a,lin,col,max);

return(0);

new_print() fonksiyonu, daha önce de söylediğim gibi ekranın verilen pozisyonuna istediğimiz diziyi kaydırarak yazdırmamızı sağlıyor. Bu fonksiyonun istediği değerleri, daha önce değişkenler vasıtasıyla hazırlayabileceğimiz gibi, doğrudan fonksiyonu çağırırken de verebiliriz. Biz bu örneğimizde fonksiyonun istediği değerleri değişkenler vasıtasıyla belirledik. Burada fonksiyon ilk parametre olarak diziyi, daha sonra da satır, kolon ve maksimum uzunluk parametre değerlerini istemektedir. Bu nedenle gerekli parametreleri fonksiyonun doğru çalışması için sırasıyla vermeliyiz.

Sıra geldi bu fonksiyonun çalışmasına.

new_print(a,lin,col,max) chara[50]; int lin,col,max;

{ … } Fonksiyonun (ya da rutinin) genel yapısı yukarıda yazılı olduğu gibidir. Rutinimizin parametreleri 'a', 'lin', 'col' ve 'max' olarak tekrar tanımlanmaktadır. Fonksiyon konularımızdan da hatırlayabileceğiniz gibi, fonksiyonun kullandığı değişken isimleri diğer değişken isimleri ile aynı olabilir. Bizim bu fonksiyonu çağırırken kullandığımız değişken isimlerinde olduğu gibi. Bu noktada dikkat edilmesi gereken, gelen değişken tiplerinin tekrar aynı tipte olmasıdır. Aksi takdirde fonksiyon doğru çalışmaz.

Fonksiyonun iç kısımlarında ise ilk olarak 'i' değişkeni integer olarak döngüde kullanılmak üzere tanımlanıyor. Daha sonra for komutu ile döngümüz 'max' değişkeninden 0'a kadar sürüyor. Burada döngüyü 'max' değişkeninden başlatmamızın sebebi, dizimizin son karakterden itibaren yazılmaya başlamasından doğuyor. Sonraki satırlarda, scr_curs(lin,col); printf("%c\n",a[i]); scr_curs() fonksiyonu ile yazılacak karakterin pozisyonunu belirliyoruz. Buradaki 'lin' ve 'col' değişkenlerinin değerlerini daha önceden belirlediğimizi unutmayın. Sonra da printf() ile o noktaya dizi içerisindeki 'i' indisinde bulunan karakterimizi yerleştiriyoruz. Dikkat ettiyseniz, printf() içerisinde "%c" yanında bir de \n" return kontrol karakter komutunu ekledik. Bunu eklememizdeki sebep, scr_curs() fonksiyonu return işleminden sonra işlemini yerine getiriyor olması.

scr_cursup(); scr_cinsert(); Delay(1); satırlarında, scr_cursup() ile kursor pozisyon göstergecini bir satır yukarı alıyor ve scr_cinsert() fonksiyonu ile de bu satıra bir boş karakter yerleştiriyoruz. Delay() ile bir süre bekledikten sonra aynı şekilde dizi sonuna kadar döngü sürüyor ve programdan çıkıyoruz..

Bu örneğimizin üzerinde çalışarak daha da geliştirebilirsiniz. Sıra geldi ikinci örneğimize. Bu örneğimiz ile istediğiniz Utility programlarını bir diskette topladıktan sonra, disketinizdeki programları aşağıda vermiş olduğum program vasıtasıyla menüden çağırabilirsiniz. Şimdi örneğimize bir göz atalım.

/* Programming by Cenker OZKURT */ /* Amiga Dunyasi */

#include <stdio.h> #include <exec/types.h>

UBYTE*key=0xbfec01;

char *a[] = {"Utility 1",0); /* Buradaki isimleri disketteki */ char *b[] = {"Utility 2",0}; /* isimler ile değiştirmeyi */ char *c[] = {"Utility 3",0 j; /* unutmayın.Mesela Utility 1 */ char *d[] ={"Utility 4",0}; /* yerine XcopyPro yazabilirsiniz */ char*e[] = {"Utility 5",0}; char*f[] = {"Utility 6",0};

char text[30];

main()

{

menu(); while(l) { switch(*key) { case 95: scr_clear();

sprintf(text,"%s is Loading!..",a[0]); new_print(text,0,0,strlen(text)); fexecv(a[0],a); menu(); break; case 93: scr_clear();

sprintf(text,"%s is Loading!..",b[0]); new_print(text,0,0,strlen(text)); fexecv(b[0],b); menu(); break; case 91: scr_clear();

sprintf(text,"%s is Loading!..",c[0]); new_print(text,0,0,strlen(text)); fexecv(c[0],c); menu(); break; case 89: scr_clear();

sprintf(text,"%s is Loading!..",d[0J); new_print(text,0,0,strlen(text)); fexecv(d[0],d); menu(); break; case 87: scr_clear();

sprintf(text,"%s is Loading!..",e[0]); new_print(text,0,0,strlen(text)); fexecv(e[0],e); menu(); break; case 85: scr_clear();

sprintf(text,"%s is Loading!..",f[0]); new_print(text,0,0,strlen(text)); fexecv(f[0],f); menu(); break; case 77: scr_clear();'

exit(0); } }

}

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