Amiga Dünyası sayı 14, sayfa 45

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 45

int boy; int yas;

};

Func1()

{

struct isim p; func2(&p); /* sorun yok */ }

func2(&p) /* Fakat burası fonksiyon kullanımına aykırı */ struct isim p;

{ … } Görüldüğü gibi problem açık. Çünkü fonksiyonlar tanımlanırken parametrelerde '&' operatörü kullanılamıyor. Bunun tek çözümü, pointer'lar. İşte bir örnek;

struct isim *p; *p artık isim yapısının adresini göstermektedir. Artık bu adresi istediğimiz fonksiyona yollayarak isim yapısını kullanabiliriz.

routine(p) struct isim *p; { … } Örnekte, routine() fonksiyonuna isim yapısının adresi yollan- mış ve bu adres yeniden tanımlanarak yapının değerleri kullanı- labilir hale gelmiştir. Yapılarda, pointer olarak kullanılan değişkenlerin üyelerine; p->boy; olarak ulaşılmaktadır. Burada '.' nokta yerine '->' operatörü kul- lanıldığını görüyorsunuz. Aslında bu ifade şöyle de çalışabilir: (*p).boy;

Fakat pointer yapılar C dilinde çok sık kullanıldığından, daha basit olan '->' operatörü seçilmiştir.

Şimdi sizlere, Amiga'da Workbench ekranına grafik olarak nasıl ulaşılabildiğini gösteren bir örnek vermek istiyorum. Fakat bu örneği incelerken bilmediğiniz bazı noktalar çıkacaktır. Bunları yeri geldikçe açıklayacağım.

/* WBench Ekranina Çizim */

#include <exec/types.h> #include <graphics/gfxbase.h> #include <intuition/intuitionbase.h> #include <functions.h>

struct IntuitionBase *IntuitionBase; struct GfxBase *GfxBase;

struct RastPort *rp; struct Screen *screen;

main()

{ IntuitionBase=(struct IntuitionBase *)

OpenLibrary("intuition.library",0); GfxBase=(struct GfxBase *)

OpenLibrary("graphics.library",0);

screen=IntuitionBase->ActiveScreen;

rp=&(screen->RastPort);

cls():

CloseLibrary( IntuitionBase); CloseLibrary(GfxBase);

}

cls()

{ SetAPen(rp,0); for(y=0;y<200;y++) {

Move(rp,0,y); Draw(rp,640,y); } }I

/* Program sonu */

Bu program sayesinde, Workbench ekranını silebilirsiniz. Programımız Amiga sistemini kullandığımız ilk program oluyor. Bu nedenle şimdilik anlayamadığınız yerler olacaktır. Verdiğim programı yazarak deneyin ve inceleyin. Programımızın açıklamasını gelecek ay vereceğim. Unutmadan hatırlatmak istiyorum ki, bu programı Aztec-C V3.6'da derleyebilirsiniz. Herhangi bir editör programında programı yazdıktan sonra, prog.c olarak kaydedin ve compile edin. Bu compile işlemlerini daha önceki sayılarımızdan da hatırlayacaksınız. Fakat programınızın çalışması için, bu işlemleri doğru yapmalısınız.

Bu aylık da bu kadar diyorum. Gelecek ay programımızın açıklamasını ve yeni örnek programları vereceğim. C dilindeki temel konularımız burada sona erdi. Artık, daha önce de söylediğim gibi, Amiga-C örnekleri ile C yazımıza devam edeceğiz.

Bol komutlu günler dilerim.

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