Özet
Bu ilk programda amacımizi POKE komutları ile gerçekleştireyiz. Önce ekran hatızasına, "A" harfinin kodunu yerleştiririz, sonra da renk hatızasına görecek renk kodunu. Bu arada, bir sayaç değişikliği ile kaça tane yazdırımağı kontrol ediyoruz. Zamanı ölçüğümüze 10.45 saniye elde ediyoruz. Çok da sıklık değişiklik yapalım. 30 ve 40 numaralı satırları şöyle değiştirelim (TEST2):.
Diğer Dergiler
Tam metin içeriği
Bu ilk programda amacımızı POKE
komuiları ile gerçekleştiriyoruz. Önce
ekran hafızasına, “A” harfinin kodunu
yerleştiriyoruz, sonra da renk hafızası-
na gereken renk kodunu. Bu arada
da, bir sayaç değişkeni ile kaç tane
yazdırdığımızı kontrol ediyoruz. Zama-
nı ölçtüğümüzde 10.45 saniye elde
ediyoruz. Çok can sıkıcı değil mi?
Haydi, bir-iki değişiklik yapalım. 30
ve 40 numaralı satırları şöyle değişti-
relim (TEST2):
30 Z-0:VIDEO— 1024:
RENK—55296
40 POKE VIDEO-Z,4:
POKE RENK 2,44
Burada yaptığımız, kullandığımız
bazı sayıları, daha önceden değiş-
kenlere yüklemek oldu. Zamanı ölçe-
lim... Aman Tanrım! A'lar uçuyor! 7.25
saniye...
Tam 30.62 hız kazancımız var.
TEST3 için, 30, 40 ve 60 numaralı sa-
tırları aşağıdaki gibi değiştirip, bu se-
fertüm sayıları değişkenlere yükleye-
lim:
30 Z-0:BITISDEGERİ 374:
VIDEO 1024:
RENK—55296:HARF- 4:
BASKI 44
40 POKE VIDEO #Z,HARF:
POKE RENK #Z,BASKI
60 IF Z—BİTISDEGERİ
THEN 4000
Ölçtüğümüzde, 6.03 saniye elde
edeceğiz. TEST2'ye göre 9616.82,
TEST4'e göre 642.29 daha hızlı. Güze-
ecel...
TEST için, verdiğimiz programa ba-
karak gereken değişiklikleri yapın. Bu-
rada, daha önce kullandığımız değiş-
ken adlarını iki karakter uzunluğa kı-
salttık. Sonuç: 5.6 saniye. TEST3'den
967.13, TEST4'den 9646.41 daha hızlı.
Hatta TESTS için, bu adları daha da kı-
saltıp tek karakterli yapalım. Gereken
değişiklikler:
30 Z7-0:B—374:V— 1024:
R—55296:H-1:A-414
40 POKE V#Z.H:
POKE R#Z.A
60 IF Z-B THEN 1000
Ölçtüğümüzde elde edeceğimiz
5.483 saniye, TEST4ten 962.08 ve
TEST4'den de 647,53 daha hızlı. Aklı-
nıza gelir miydi, değişkenlerin uzunlu-
ğunun bu kadar önemli olacağı?
Programı hemen hemen, 2 kat hızlan-
dırdık. Ama durun, daha bitmedi! Da-
ha da hızlanacak. Daha önce, ilk ku-
rallarımız yazalım:
11! DİKKAT 4 11!
* Programda sık sık kullanılacak
olan, özellikle döngülerin içinde yer
alan sayıların programın başında de-
ğişkenlere yerleştirilmesi gerekir.
* Bir değişkenin sahip olduğu de-
ğer, program içinde değişiyorsa bile,
programın başında örneğin Z—0 gi-
bi belirtilmesi faydalı olacaktır.
* Programın başında, sayıları değiş-
kenlere yerleştirirken, en çok kullanı-
lacak sayıyı ilk önce yerleştirmek hız
kazandıracaktır (Bilgisayar, o değişke-
ni daha çabuk bulabilecektir).
* Şimdi TESTE'yı verildiği gibi yazın.
Artık POKE komutu yerine, PRİNT komu-
tunu kullanıyoruz. ve yeni bir rekor: 4
saniye. TEST5'e 27.04, TESM4'e de
661.72 fark attık. Demek ki, PRİNT ko-
mutu POKE'dan hızlı çalışıyor.
Ufak bir değişiklik yapalım. CHR$
(65)'i önceden bir karakter değişkeni-
ne yükleyelim. Şu değişiklikleri yapın
(TEST7):
30 Z7-0:B-374:
A$—CHR$(65)
40 PRINTAŞ;
Zaman ölçümü ve 3.05 saniye ile
23.75'lik bir hızlanma daha. TEST4
ise artık çok yavaş kaldı (9670.84 fark
var!ı).
Bu hızı, TEST8 ile azıcık da olsa artı-
racağız. Şu değişiklikleri yapın:
30 Z-0:B-374
40 PRINT “A”;
2.983 saniye ile 902.19'luk bir hızlan-
ma. Az ama önemli (TEST4'den
674.45 hızlı). Toparlayalım...
11! DİKKAT 211!
* Döngü halinde yazılması gereken
yazıları POKE yerine, PRINT ile yazmak
çok daha iyidir.
* PRINT komutunun arkasından ge-
lenlerin ya önceden yazı değişkenle-
rine yüklenmiş ya da tırnak içinde ya-
zılmış olması gerekir.
Gelelim TEST9'a... Küçücük bir deği-
şiklik ve küçücük bir hızlanma:
60 IF Z-B GOTO 4000
THEN yerine GOTO koyduk ve prog-
ram 2.96 saniye ile 960.77 daha hız-
landı.
Bir ufak değişiklik daha ve (TEST40):
60 IFZ(2B GOTO 40
Bu sırada, 70 numaralı satırı silebi-
lirsiniz, çünkü artık bir işe yaramıyor.
Dolayısıyla programımızı bu ufak de-
ğişiklikle, bir satır kısaltmış olduk. Hızı-
mız 2.93 saniye ile 9641.04 daha arttı.
TEST4'den ise 9674.96 daha hızlıyız.
11! DİKKAT 3 11!
* Döngülerde IF..GOTO komutu,
IF...THEN komutundan daha hızlıdır.
* Kontrollerde eşit olmama durumu:
nun kontrol edilmesi, eğer program-
dan satır eksiltiyorsa yararlı olacaktır.
Bu arada programlarla örnek ver-
meden bir diğer kural daha göstere-
ceğiz, hazır laf IF..THEN komutundan
açılmışken. Şöyle bir program parçası
düşünün:
100 IF Az1 AND B—2
AND C—3 THEN 999
110 GOTO 50
Bilgisayar, her defasında her üç şartı
da kontrol edecektir ve ancak her
üçü de doğru ise 999'a gidecektir. Di-
yelim ki, C'nin 3 olma ihtimali çok az,
ama A4 veB-2 her zaman olabilir.
Bu durumda C-3 olmadığı durumlar-
da da, diğer iki şart kontrol edilecek
ve bu da boşuna zaman kaybı ola-
cak. Ancak şöyle bir satır düşünün:
100 IF C—3 THEN
IF B—2 THEN
IF A—4 THEN 999
Bu durumda, sadece ve sadece
C-3 olduğunda diğerleri kontrol edi-
lecektir. Hatta A'nın kontrolü için de
B-2 şartı aranacaktır. Bunun getire-
ceği hızlanma herhalde tarafınızdan
takdir olunur...
1! DİKKAT 4 11!
* Birbirine AND ile bağlanmış birden
fazla şarttan oluşan IF...THEN komutla-
rının, en ender olandan en sık olana
doğru sıralanmış bir IF... THEN zincirine
çevrilmesi gerekir.
Şimdi sıra geldi TEST4 4'e... Artık bi-
raz stil değiştirmenin zamanı geldi.
Deminden beri kullandığımız GOTO
komutlarının yerine. BASIC'in bize bah-
şettiği başka bir komutu, daha doğ-
rusu komut ikilisini kullanacağız:
FOR..NEXT
Şimdi klavye başına geçin ve şu de-
ğişiklikleri yapın:
30 FORZ—1TO 374
40 PRINT“A”;
50 NEXTZ
60 numaralı satırı da silebilirsiniz. Ye-
niden zaman ölçümü yaptığımızda
yeni bir hızlanma daha görüyoruz: 4.4
saniye. TEST10'dan 562.45 ve TEST1'-
den de 989.47 daha hızlı.
23