language

ustmenu

searchbar

Commodore 1986-06-01 Sayfa 25

Commodore Dergisi, 1 Haziran 1986, Sayfa 25

 



Özet

TESTI.



Diğer Dergiler



Tam metin içeriği

Eh, biz de sayıları değişkenlere yer-
leştiririz. Hemen bir TEST22 yazalım:

25 B—-4:C-3
40 A-BAC

Ölçüyoruz... Olamaz, sadece 961.7“
lik bir hızlanma ile 40.35 saniye. Ha-
yır, hiçbir şeyi yanlış yapmadık. Sorun,
COMMODORE 64'ün üs almada kul-
andığı metodun kötülüğünde yat-
makta. Öyleyse ne yapalım?

Bir-iki ufak değişiklik ile elde edece-
ğimiz TEST23, bize cevabı verecek:

25B-4
40 A-B'B'B

Yaptığımız, üs alma yerine çarpma
kullanmak oldu. Sonuç şaşırtıcı: 2.05
saniye ile TEST24'e göre 9680.53'lük bir
hızlanma

11! DİKKAT 8 11!

* Üs alma işlemi, mümkün olduğu
kadar çarpma haline dönüştürülme-
lidir.

Artık, aliorogramları incelemeye
geçebiliriz. Önce TEST24'ü yazın.

Gördüğünüz gibi, burada altprog-
ramı GOTO komutu ile çağırıp, alt-
programdan da gene GOTO komu-
tu ile geri dönüyoruz. Süreyi ölçtüğü-
müzde, 3.25 saniye elde edeceğiz.

Peki, GOTO yerine GOSUB... RETURN
kullanırsak ne olacak? TEST25 için şu
değişiklikleri yapalım:

40 GOSUB40000
60000 RETURN

TESTİ

10 TI$-"000009"
20 PRINT CHR$(147)

30 2-0

48 POKE 102417Z,1:POKE 5529612,14
50 2-211

69 IF d m” THEN 1008

70 GOTO

1000 POKE” 214,18:PRINT:PRINT T1/68
READY.

TEST4

19 TI$-"000009"
20 PRINT CHR$(147)

30 2-0:81-374:V1-1024:RE- SEP HAZI:BA-14

49 POKE VItz, ya: POKE REtZ,B
50 27:211
Sİ eb IF Z-BI THEN 1000

REA

TESTE

10 TI$-"000009"

e9 ba CHR$( 147)
30 2-0:B-374

40 PRİNTOİRS<E5))
50 2-21

60 IF Z- ig THEN 1000
70 GOTO 40 *

MERİY POKE 214,18:PRINT:PRINT T1/68

"SANIYE"SEND 3

0TO0 40
1808 İKE 214,18:PRINT:PRINT T1/88

"SANIYE "SEND

"SANIYE":END

Ölçtüğümüzde elde ettiğimiz 3.45
saniye, TEST24'den 43.07 daha fazla.

Bir başka önemli nokta, altorogram
ile programın başlangıcı arasındaki
uzaklıktır. Şimdi, deminki programla-
rımızı biraz değiştirelim ve altprog-
ramlarımızı program başına alalım.
Önce TEST26'yı yazın. Süremiz, 3.06 sa-
niye ile TEST25'den bile az olacaktır
(702.85).

TEST27 için şu değişiklikleri yapın:

6 RETURN
33 GOSUBA4

GOTO yerine GOSUB koyduğumuz-
da, 2.93 saniye ile daha hızlı bir prog-
ram elde ediyoruz, gördüğünüz gibi.
Bu TEST24'den 969.84 daha hızlı bir de-
ğerdir. Yeni kurallarımızı foparlayacak
olursak:

11 DİKKAT 9 111

* Altprogramları GOSUB ile çağırıp,
ana programa RETURN ile dönmek,
aynı işlemleri GOTO ile yapmaktan
daha hızlıdır.

* Sık sık kullanılan altprogramların,
anaprogramın başlarında olması, hız
sağlayacaktır.

Artık birkaç ufak-tefek nokta daha
kaldı. Önce TEST28'i yazın. Zaman ola-
rak 2.883 saniye olacaktır. Şimdi,
DİKKAT7'de belirttiğimiz kurallardan
birini deneyelim. 30 numaralı satırdaki
A4 -0 yerine A4. koyarak TEST29'u
elde edelim ve zamanı ölçelim. Ger-
çekten de 2.283 saniye ile 9620.84'lik
bir artış oldu.

TEST13

FOR 2-1
PRINT*A";

TI$-"000000"
2 rkkiddeköeneelkieelei
x

RERİATEST- PROGRAMI *

*
REHİAeeşseaseszssressrrasasi
PRINT CHR$(147)7:

Şimdi de aynı satırdaki A4 değişke-
ninin yerine AA değişkenini koyalım ve
böylece oluşturduğumuz TEST30'u öl-
çelim. Elde ettiğimiz 2.3 saniye bize
açıkça bir yavaşlamanın varlığını gös-
termektedir.

TEST34'de ise, AA yerine sadece A
harfini kullanalım. 2.23 saniye ile
TEST28'den “22.65 daha hızlı prog-
ram elde ettik.

Son olarak da, karakter değişken-
lerine değer konmasını inceleyeceğiz.
Şimdi TEST32'yi yazın. Süresi, 2.45 sa-
niye olacaktır.

TEST33'ü elde etmek için 25 numar-
ralı satırı silin ve şu değişikliği yapın:

30 FORİ—4TO4000:
AS—“TT:NEXT

Elde edeceğimiz 2.346 saniye, TEST
32'den “5.46 daha hızıl olacaktır.

111 DİKKAT 10 1!

* Eğer iki karakterden oluşan değiş-
ken isimleri kullanılıyorsa, ikinci karak-
terin bir rakam olmasına dikkat edil-
melidir. Ancak en iyisi tek karakterli
değişken adlarıdır.

* Karakter dizileri, bir karakter de-
ğişkenine yüklenirken tımak içinde ve-
rilmişlerse, daha önce bir başka de-
ğişkene yüklenmiş olmalarına oranla
daha hızlı işlerler.

Artık bitti! Herhalde birçok önyargı
bu yazıyı okurken yıkılıp gitmiştir. Şim-
di daha hızlı programlar yazacağınız
günler sizi bekliyor!!!

EKRANI SILMEK

TO 374: REM 74 KARAKTER

50 NEXT
999 REM ZAMANI GOSTER

ME
1000 POKE 214,18:PRINT:PRINT T1/68 "SANIYE":END
READY.

TEST14

10 TI$-"000000"
29 RL

30 FORZ
40 PRINT"A";
50 NEXT

1000 POKE214,18:PRINTIPRINTTI/68"SANIYE "SEND
READY.

TESTİ16G
5 6G0T02000

10 TI$-"000000"
0 PRINTCHR$( 147)

e
30 SYS7168

1000 POKE214, 22 ill PRINTTI/60"SANIYE”":END

2000 PRINTCHR$
2020 READB

2010 FORA 7168107200

25



Bu sayıdaki diğer sayfalar: