Özet
Biliyorsunuz, Commodore 64 için program yazarken, NEXT komutunun arkasında yer alan değişken adı ya- zılmasına de oluyor. Bir de bunu deneyelim, bakalım ne olacak?
Diğer Dergiler
Tam metin içeriği
Biliyorsunuz, COMMODORE 64 için
program yazarken, NEXT komutunun
arkasında yer alan değişken adı ya-
zılmasa da oluyor. Bir de bunu dene-
yelim, bakalım ne olacak?
50 NEXT
Böylece elde ettiğimiz TEST4 2'nin za-
manı, 1 saniye ile TEST44'e 749.09 ve
TEST4'e de 7690.43 fark atıyor. Eh ar-
tık iyice hızlandı. Acaba biraz da-
ha?... Ama önce yeni kurallarımız:
1! DİKKAT 5 HI
* Döngüleri kurarken, IF...THEN yeri-
ne FOR...NEXT komutunu kullanmak
avantaj sağlayacaktır.
* NEXT komutunun arkasından ge-
len değişken adı yazılmadığında,
programın hızı artacaktır.
Şimdiye kadar programı hep hızlan-
dırdık, biraz da yavaşlatalım. TEST43'ü
verildiği gibi yozın. Burada programı
biraz süslemek, biraz da açıklayıcı ha-
le getirmek için REM komutları kattık.
Ölçüm sonucunda da göreceğiniz gi-
bi, programımız 1.2 saniye ile 7620 ya-
vaşladı (TEST42'ye göre).
Eğer bu REM komutlarını ve diğer
komutlar arasında bulunan ve prog-
ramın okunaklılığını artıran boşlukları
ortadan kaldırırsak, dökümünü verdi-
ğimiz TEST44'ü elde ederiz. Çalışma
zamanı olarak ölçeceğimiz 4 saniye,
sanki bize “Aferin, iyi ettiniz!” der gi-
bi, di mi?
Artık son adıma geldik. TEST/'in ala-
bileceği son hızı şimdi göreceksiniz.
Her şeyi tek satırda toparlayacağız.
Ama bunun için COMMODORE 64 el-
kitabında belirtilen komut kısaltma
yöntemlerine ihtiyacınız var. Biz gene
de bir özetleyelim:
EEE
24
PRİNT için ? işareti, CHR$ için C ve
SHIFT-H, FOR için F ve SHIFI-O, NEXT için
N ve SHIFT-E, POKE için P ve SHIFT-O.
Artık TEST45'i yaratabiliriz:
40 TI$ -“000090":PRINT
CHRS(147):FORZ—4TO
374:PRINTA”;:NEXT:
POKE214,18:PRINT:
PRINTTI/6O “SANİYE”:
END
Elde ettiğimiz 0.96 saniye ile TEST44-
den 744 ve TEST4'den de 7690.84 hızlı
bir program elde ettik. Düşünün 10.45
saniyeden 0.96'ya inebildik. Hani
COMMODORE 64 yavaştı?
11 DİKKAT 6 WI
*REM komutları ve komutlar arasın-
da 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 orta-
dan kaldırdığını unutmayın lütfen!
Başta, makina dile yok demiştik.
Ama gene de, deminden beri uğraş-
tığımız şeyi, yani 374 tane A yazma işi-
ni 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 TEST4:e 999.20 farkl!
Fazla söze gerek yok.
Bundan sonra, BASIC'in değişik yön-
lerini inceleyeceğiz. Örneğin, iki sayıyı
300 kere birbiriyle çarpalım. Bunun
için önce TEST47'yi yazın. Çalıştırıp, za-
manı ölçmeye kalkıştığınızda lütfen
sabırlı olun: 13.083 saniye. Kamlum-
bağalar kıskanacak?
Ufak bir numara yapalım. İki sayının
yerini değiştirelim. Şu ufak değişiklik-
le TEST48'i hazırlayın:
40 A-0.123456789*3
Zamanı ölçtüğümüzde, gerçekten
de bir hızlanma görüyoruz. 12.683 sa-
niye ile az ama gene de 9463.05'lik bir
hızlanma. Tıpkı 45643* 5'in hesaplan-
masının 5* 15643'ün hesaplanmasın-
dan daha kolay olması gibi.
Haydi, minicik bir değişiklik daha
yapalım. Ondalık noktasından önce
gelen sifir rakamını atalım (TEST 49)
40 A-.123456789*3
42.483 saniye ile TEST47'den 44.58
daha hızlı olduk.
1! DİKKAT 7 11
* Bir çarpma işlemi sırasında, daha
uzun olan sayının ilk sayı olarak yazıl-
ması gerekir.
* Sıfır sayısı yerine sadece ondalık
nokta koymak daha fazla hız sağla-
yacaktır (A0 yerine A .). Ayrıca, on-
dalıklı sayılarda -4 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 A-B'C
Göreceğiniz gibi, aniden 2688.53'-
lük bir hızlanma ile 4.5 saniyeye ge-
leceğiz. Nasıl ama?!
Şimdi de aynı programı, bilgisaya-
rımızın üslü sayıları hesaplamaktaki hi-
zını görmek için kullanalım. Verdiğimiz
TEST24'i yazın ve çalıştırın. Göreceği-
niz gibi, 4'ün kübünü 300 kere almak
bize 10.53 saniyeye patlıyor.