Commodore sayı 4, sayfa 24
Sayfanın metni

Sayfa 24

Biliyorsunuz, COMMODORE 64 için program yazarken, NEXT komutunun arkasında yer alan değişken adı yazılmasa da oluyor. Bir de bunu deneyelim, bakalım ne olacak?

50 NEXT

Böylece elde ettiğimiz TEST12'nin zamanı, 41 saniye ile TEST11'e 49.09 ve TEST1'e de 490.43 fark atıyor. Eh artık iyice hızlandı. Acaba biraz daha?... Ama önce yeni kurallarımız:

!!! DİKKAT 5!!!

* Döngüleri kurarken, IF...THEN yerine FOR...NEXT komutunu kullanmak avantaj sağlayacaktır. * NEXT komutunun arkasından gelen değişken adı yazılmadığında, programın hızı artacaktır. Şimdiye kadar programı hep hızlandırdık, biraz da yavaşlatalım. TEST13'ü verildiği gibi yazın. Burada programı biraz süslemek, biraz da açıklayıcı hale getirmek için REM komutları kattık. Ölçüm sonucunda da göreceğiniz gibi, programımız 1.2 saniye ile 420 yavaşladı (TEST12'ye göre). Eğer bu REM komutlarını ve diğer komutlar arasında bulunan ve programın okunaklılığını artıran boşlukları ortadan kaldırırsak, dökümünü verdiğimiz TEST14'ü elde ederiz. Çalışma zamanı olarak ölçeceğimiz 1 saniye, sanki bize “Aferin, iyi ettiniz!” der gibi, di mi? Artık son adıma geldik. TEST1'in alabileceği son hızı şimdi göreceksiniz. Her şeyi tek satırda toparlayacağız. Ama bunun için COMMODORE 64 elkitabında belirtilen komut kısaltma yöntemlerine ihtiyacınız var. Biz gene de bir özetleyelim:

PRINT için ? işareti, CHR$ için C ve SHIFT-H, FOR için F ve SHIFT-O, NEXT için N ve SHIFT-E, POKE için P ve SHIFT-O. Artık TEST15'i yaratabiliriz:

10 TI$ — “000000“:PRİNT CHRS(4147)/:FORZ —- 41TO POKE214, 18:PRINT: PRINTTI/60 “SANİYE”: END

Elde ettiğimiz 0.96 saniye ile TEST14'ten 44 ve TEST1'den de 490.81 hızlı bir program elde ettik. Düşünün 10.45 saniyeden 0.96'ya inebildik. Hani COMMODORE 64 yavaştı?

!!! DİKKAT 6 !!!

*REM komutları ve komutlar arasında boşlukları olmayan programlar daha hızlı çalışır. * Satır sayısını azaltmak amacıyla, bir satıra sığdığı kadar emir koymak da hız sağlayacaktır. Ancak, bu son kuralların programın okunurluluğunu da tamamen ortadan kaldırdığını unutmayın lütfen! Başta, makina dili yok demiştik. Ama gene de, deminden beri uğraştığımız şeyi, yani 374 tane A yazma işini yapan bir makina dili programının da süresini ölçelim dedik. Hadi şimdi de TEST16'yı yazıp çalıştırın. Sonuç 0.083 saniye ile %499.20 fark!!! Fazla söze gerek yok... Bundan sonra, BASIC'in değişik yönlerini inceleyeceğiz. Örneğin, iki sayıyı 300 kere birbiriyle çarpalım. Bunun için önce TEST17'yi yazın. Çalıştırıp, zamanı ölçmeye kalkıştığınızda lütfen sabırlı olun: 13.083 saniye. Kaplumbağalar kıskanacak?

Ufak bir numara yapalım. İki sayının yerini değiştirelim. Şu ufak değişiklikle TEST18'i hazırlayın:

40

Zamanı ölçtüğümüzde, gerçekten de bir hızlanma görüyoruz. 12.683 saniye ile az ama gene de bir hızlanma. Tıpkı 15643 * 5'in hesaplanmasının 5 * 15643'ün hesaplanmasından daha kolay olması gibi. Haydi, minicik bir değişiklik daha yapalım. Ondalık noktasından önce gelen sıfır rakamını atalım (TEST 19):

40 A-.123456789*3

12.483 saniye ile TEST17'den %44.58 daha hızlı olduk.

!! DİKKAT

* Bir çarpma işlemi sırasında, daha uzun olan sayının ilk sayı olarak yazılması gerekir. * Sıfır sayısı yerine sadece ondalık nokta koymak daha fazla hız sağlayacaktır (A=0 yerine A=. ). Ayrıca, ondalıklı sayılarda -1 ile 1 arasındaki değerleri yazarken, ondalık noktasından önce gelen sıfır rakamı yazılmamalıdır. Bir de daha önceden öğrendiğimiz, değişken metodunu uygulayarak TEST20'yi elde edelim:

25 B-.123456789:C-3 40 AzB*C

Göreceğiniz gibi, aniden büyük bir hızlanma ile 1.5 saniyeye geleceğiz. Nasıl ama?! Şimdi de aynı programı, bilgisayarımızın üslü sayıları hesaplamaktaki hızını görmek için kullanalım. Verdiğimiz TEST21'i yazın ve çalıştırın. Göreceğiniz gibi, 4'ün kübünü 300 kere almak bize 10.53 saniyeye patlıyor.

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