Commodore sayı 4, sayfa 25
Sayfanın metni

Sayfa 25

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

25 Bz4:Cz3 40 A-BAC

Ölçüyoruz... Olamaz, sadece %41.7'lik bir hızlanma ile 10.35 saniye. Hayır, hiçbir şeyi yanlış yapmadık. Sorun, COMMODORE 64'ün üs almada kullandığı metodun kötülüğünde yatmakta. Öyleyse ne yapalım?. Bir-iki ufak değişiklik ile elde edeceğimiz TEST23, bize cevabı verecek:

40 A-—B*'B*B

Yaptığımız, üs alma yerine çarpma kullanmak oldu. Sonuç şaşırtıcı: 2.05 saniye ile TEST21'e göre %480.53'lük bir hızlanma !! DİKKAT 8 !!!

* Üs alma işlemi, mümkün olduğu kadar çarpma haline dönüştürülmelidir. Artık, altprogramları incelemeye geçebiliriz. Önce TEST24'ü yazın. Gördüğünüz gibi, burada altprogramı GOTO komutu ile çağırıp, altprogramdan da gene GOTO komutu 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

TEST1

10 20 PRINT CHRS$C147) 30 2-0 490 POKE 10244*2,1:POKE 5529642,14 60 IF 2-374 THEN 1800 78 GÜT0 48

1080 POKE 214,18:PRINT:PRINT

READY.

TEST4

10 20 PRINT CHR$C(147)

30

40 POKE RE4Z,BA SO 60 IF Z-BIİ THEN 1888 78 GOTO 48

1008 POKE 214,18:PRINT:PRINT

READY.

TEST6

10 206 PRINT CHR$<147) 30 Z2-0:B-374 40 SO 2-211 68 IF Z-B THEN 1088 78 GOT0O 48 *

1008 POKE 214,18:PRINT:PRINT TI/68

READY.

"SANIYE"

Ölçtüğümüzde elde ettiğimiz 3.15 saniye, TEST24'den %43.07 daha fazla. Bir başka önemli nokta, altprogram ile programın başlangıcı arasındaki uzaklıktır. Şimdi, deminki programlarımızı biraz değiştirelim ve altprogramlarımızı program başına alalım. Önce TEST26'yı yazın. Süremiz, 3.06 saniye ile TEST25'den bile az olacaktır (%42.85). TEST27 için şu değişiklikleri yapın:

6 RETURN 33 GOSUB4A

GOTO yerine GOSUB koyduğumuzda, 2.93 saniye ile daha hızlı bir program elde ediyoruz, gördüğünüz gibi. Bu TEST24'den %49.84 daha hızlı bir değerdir. Yeni kurallarımızı toparlayacak olursak:

!! DİKKAT 9

* 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 olarak 2.883 saniye olacaktır. Şimdi, DİKKAT7'de belirttiğimiz kurallardan birini deneyelim. 30 numaralı satırdaki A=0 yerine A=. koyarak TEST29'u elde edelim ve zamanı ölçelim. Gerçekten de 2.283 saniye ile bir artış oldu.

TEST13

REM&

m

40 SO NEXT

kalk oka

Şimdi de aynı satırdaki A1 değişkeninin 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östermektedir. TEST31'de ise, AA yerine sadece A harfini kullanalım. 2.23 saniye ile TEST28'den %422.65 daha hızlı program elde ettik. Son olarak da, karakter değişkenlerine değer konmasını inceleyeceğiz. Şimdi TEST32'yi yazın. Süresi, 2.45 saniye olacaktır. TEST33'ü elde etmek için 25 numaralı satırı silin ve şu değişikliği yapın:

30 AS —-

Elde edeceğimiz 2.316 saniye, TEST 32'den 45.46 daha hızlı olacaktır.

İl! DİKKAT 410!!!

* Eğer iki karakterden oluşan değişken isimleri kullanılıyorsa, ikinci karakterin bir rakam olmasına dikkat edilmelidir. Ancak en iyisi tek karakterli değişken adlarıdır. * Karakter dizileri, bir karakter değişkenine yüklenirken tırnak içinde verilmiş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. Şimdi daha hızlı programlar yazacağınız günler sizi bekliyor!!

*

& *

*

kok ak ak ak akk kak ok ak ak

PRINT TO 3 EKRANI SILMEK 308 FOR Zzi TO 374:REM 57

4 KARAKTER

999 REM ZAMANI GÖSTERME 1000 POKE 214,18:PRINT:PRINT “SANIYE":END

READY.

TEST14

10 20

38 FORZ-1T0374 40 PRINT"A"; NEXT

1080 END

READY.

TESTİ6 5

10 20 PRIİINTCHRS$<147)

38 SYS7168

1000 20080

29028 READB

2010

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