Eh, biz de sayıları değişkenlere yer- leştiririz. Hemen bir TEST22 yazalım: 25 Bz4:C-3 40 A-zBAC Ölçüyoruz... Olamaz, sadece 4 1.7'- lik bir hızlanma ile 10.35 saniye. Ha- yır, hiçbir şeyi yanlış yapmadık. Sorun, COMMODORE 64'ün üs almada kul- landığı 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 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ülme- lidir. Artık, altprogramları 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$-z"g0aaga" 20 PRINT CHR$C147) 30 Z-0 40 POKE 102442,1:POKE 5529642,14 36 Z-2141 60 IF Z-374 THEN 1808 78 GÜT0 48 10880 POKE 214,18:PRINTEPRINT TI/6A READY. Ölçtüğümüzde elde ettiğimiz 3.15 saniye, TEST24'den X3.07 daha fazla. Bir başka önemli nokta, altprogram 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 (42.85). TEST27 için şu değişiklikleri yapın: 6 RETURN 33 GOÖOSUBA 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 X9.84 daha hızlı bir de- ğerdir. Yeni kurallarımızı.toparlayacak olursak: lll DİKKAT 9 !! * Altprogramları GÖSÜB ile çağırıp. ana programa RETURN ile dönmek, aynı işlemleri GOTO ile yapmaktan daha hızlıdır. * Sık siık kullanılan altperogramları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 A1—. koyarak TEST29'u elde edelim ve zamanı ölçelim. Ger- çekten de 2.283 saniye ile 220.81'lik bir artış oldu. TEST13 10 TI$-"B08000O" Şimdi de aynı satırdaki A7 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şlamcının varlığını gös- termektedir. TEST31'de ise, AA yerine sadece A harfini kullanalım. 2.23 saniye ile TEST28'den X22.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 numa- ralı satırı silin ve şu değişikliği yapın: 30 FORİ- 1TO1000: A$ —- TT :NEXT Elde edeceğimiz 2.316 saniye, TEST 32'den 45.46 daha hızıl olacaktır. lll DİKKAT 10 !!! * 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- gişkenine yüklenirken tırmcak 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 bekliyorl!!! O 182 REMH bit dokkkok ol kak k 13 REMk£ 14 REM*TEST-PROGRAMI & 15 REMx£ 26 86 46 16 REMI*#*İX#*!ll#**ti*l**** $ 20 PRIİINT CHR$(147) EKRAN "SANIYE"#END 38 FÜşNş_âı 40 PR ı-ı hEK T4 HRHK 5SO NEXT 999 REM ZAMANI GÜSTERME âgggYPOKE 214,18:PRINT:PRINT TI/6G “SANIİYE":END TESTA 10 TI$z"0008 20 PRINT CHR$ 147) 30 Z-zBiBI- 3?4 VIs1024i RE 55285 HAS1iBAZIŞ TEST14 48 PDKE VI4*2,HAiPOKE RE S0 Zezti 10 TI$- 68 IF Z-BI THEN 1088 eğ PRINTCHR$(147)ı 7a GOTO ü 3a FDRZ 374 1000 PÜKE 214,18:PRINT:PRINT TI/BA "SANIYE":END 40 TEST& 18 TI$-"8888000" 28 PRINT CHR$<C147) 5o NEXT âşggYPOKEEl4,lB:PRINT:PRINTTI/SB“SHNIYE':END TEST16 5 GüÜTÜ2208 30 2z0:B-374 48 PRINTCHRS(SS)r 8 IF Z-B THEN 1688 ıgag POKE 214,18:PRINT:PRIİNT TI/68 "SANIYE":END 200 10 TI$-"2808800 20 PRINTCHR$(147J 384 5Y 68 1808 POKE214,18:PRINT:PRİNTTIİ/68"SANIYE":END 2202 PRİNTCHRS$(147) 2018 FDRH 7168T07208 2028 READ 25