Amiga Dünyası sayı 4, sayfa 64

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 64

• BASIC dilinde yazılmış programlarında, disketten çalışır bir dosyayı yükleyip bunu çalıştırmak isteyenler için aşağıdaki program bir hayli yardımcı olacaktır. Fakat ilk önce ikinci programı yazıp diskete kaydedin. Bunu çalıştırdığınızda disketinizde "ŞORT" isimli bir program hazırlanacaktır. Bu program, çok basamaklı tam sayıları sıraya koyan bir programdır. Aşağıdaki ilk programı da yazıp kaydedin. Bunu çalıştırdığınız zaman disketten Şort programı okunacak ve sıraya koyma işlemi çok hızlı bir şekilde yapılacaktır. Aynı sıralama rutini BASIC'de yapılmış olsaydı bunun 30-40 katı bir yavaşlıkta çalışırdı.

REM ***** Program : Cem GENCER 1990 ***** DECLARE FUNCTION LoadSeg& LIBRARY DECLARE FUNCTION UnLoadSeg& LIBRARY LIBRARY "dos.library" ON BREAK GOSUB dummy BREAK ON CALL LoadObject("Sort' ',adr&) PRINT PRINT "Rasgele sayılan" FOR t=0 TO 9

f&(t)=INT(RND(l)*100000&) PRINT f&(t) NEXTt CALL adr&(VARPTR(f&(0)),10&) PRINT PRINT "Sıralanmış olarak :" FOR t=0 TO 9

PRINT f&(t) NEXT t CALL UnLoadObject(adr&) BREAK OFF LIBRARY CLOSE END dummy:

BEEP RETURN

SUB LoadObject(Na$,ca&) STATIC

ca&=LoadSeg&(SADD(Na$+CHR$(0))) IF ca&<=0 THEN ERROR 53 ca&=ca&*4+4 END SUB

SUB UnLoadObject(ca&) STATIC

ca&=ca&/4-l d&=UnLoadSeg&(ca&) END SUB

Liste I - Örnek program

REM ***** Program : Cem GENCER 1990 ***** CLS OPEN "df0:Sort" FOR OUTPUT AS 1 READ adet FOR i=1 TO adet

READ h$ değer1=ASC(LEFT$(h$,l)) IF değer1>64 THEN değerl=değer1-87 ELSE değer1 =değer1-48 değer1=değer1*16 değer2=ASC(RIGHT$(h$,1)) IF değer2>64 THEN değer2=değer2-87 ELSE değer2=değer2-48 değer=değer1 +değer2 PRINT #l,CHR$(değer); NEXT CLOSE1 END Değerler: DATA 148 DATA 00,00,03,f3,00,00,00,00,00,00 DATA 00,01,00,00,00,00,00,00,00,00 DATA 00,00,00,14,00,00,03,e9,00,00 DATA00,14,23,ef,00,08,00,00,00,48 DATA 23,ef,00,04,00,00,00,4c,48,e7 DATA ff,fe,20,79,00,00,00,4c,22,48 DATA 20,39,00,00,00,48,67,le,e5,88 DATA 45,f0,08,fc,b3,ca,67,14,20,19 DATA 22,11,b2,80,6c,f4,22,80,23,01 DATAb3,c8,67,ec,59,49,60,e8,4c,df DATA 7f,ff,4e,75,00,00,00,00,00,00 DATAO0,O0,00,00,03,ec,00,00,00,04 DATA 00,00,00,00,00,00,00,04,00,00 DATA 00,0c,00,00,00,16,00,00,00,le DATA 00,00,00,00,00,00,03,f2

Liste II - Bu program, diskette "ŞORT" isimli dosyayı oluşturur.

• Çoğunuz BASIC'te yazdığınız programınızda mouse işaretçisinin şeklinin kendi dizayn ettiğiniz bir biçimde olmasını istersiniz. Aşağıdaki program da tam bu işi yapmaktadır:

REM ***** Program : Cem GENCER 1990 ***** DECLARE FUNCTION AllocRemember& LIBRARY LIBRARY "intuition.library" | ON BREAK GOSUB dummy BREAK ON Hafızaayır: Remember&=0

RememberKey&=VARPTR(Remember&) Memory&=AIlocRemember&(RememberKey&,68&,65538&) IF Memory&=0 THEN FreeRemember& RememberKey&,-l :END UserSpriteDatas: POKEL Memory&,0 FOR Offset&=4 TO 62 STEP 2

READ datas POKEW Memory&+OfTset&,datas NEXT POKEL Memory&+64,0 Spritegörüntüsü:

DATA&H0100,&H0000,&H0000,&H0100,&H0100,&H0000 DATA&H0000,&H0100,&H0100,&H0000,&H0000,&H0100 DATA&H0O00,&H0O00,&Ha92a,&H5554,&H000O,&H0000 DATA&H0000,&H0100,&H0100,&H0000,&H0000,&H0100 DATA&H0100,&H0000,&H0000,&H0100,&H0100,&H0000 Açma: SetPointer& WINDOW(7),Memory&,15,16,-8,-7 Bitiş: PRINT" Programdan çıkmak için herhangi bir tuşa basınız." WHILEINKEY$="" :WEND ClearPointer& WINDOW(7) FreeRemember& RememberKey&,-l LIBRARY CLOSE END

Dummy:

BEEP RETURN

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