Bu ilk pProgramda amacımızı POKE komulları 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ıkicı değil mi? Haydi, bir-iki değişiklik yapalım. 30 ve 40 numarall satırları şöyle değişti- relim (TEST2): 30 Z-0:VİDEO- 1024: RENK— 55296 40 POKE VİDEO -- Z, 1: POKE RENK -4 Z,14 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- fer tüm sayıları değişkenlere yükleye- lim: 30 Z- 0:BİTİSDEGERİ — 374: VİDEO - 1024: RENK — 55296:HARF — 1: BASKI — 14 40 POKE VİDEO 4 Z.HARF: POKE RENK 4 Z,BASKI 60 IF Z- BİTİSDEGERİ THEN 1000 Ölçtüğümüzde, 6.03 saniye elde edeceğiz. TEST2'ye göre 410.82, TEST1'e göre X42.29 daha hızlı. Güze- eel... TEST4 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 X7.13, TEST1'den 446.41 daha hızlı. Hatta TESTS için, bu adları daha da kı- saltıp tek karakterli yapalım. Gereken değişiklikler: 30 Z-0:B-374:V — 1024: R>55296:H- 1:A— 14 40 POKE VA Z,H: POKE RA4ZA 60 İF Z—B THEN 4000 Ölçtüğümüzde elde edeceğimiz 5.483 saniye, TEST4A'ten 42.08 ve TEST1'den de 447,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 durün, daha bitmedi! Da- ha da hızlanacak. Daha önce, ilk ku- rallarımız yazalım: lll DİKKAT 4 !! * 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 TEST6'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 427.04, TEST1'e de 961.72 fark attık. Demek ki, PRINT ko- mutu POKE'dan hızlı çalışıyor. Ufak bir değişiklik yapalım. CHRS (65)'i önceden bir karakter değişkeni- ne yükleyelim. Şu değişiklikleri yapın EST7): 30 2-0:B-374: AS — CHRS(65) 40 PRINTAS; Zaman ölçümü ve 3.05 saniye ile 923.75'lik bir hızlanma daha. TEST1 ise artık çok yavaş kaldı (470.81 fark varl!). 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 42.19'luk bir hızlan- z ama önemli (TEST1'den %71 45 hızlı). Toparlayalım... l1 DİKKAT 2 !! * Döngü halinde yazılması gereken yazıları POKE yerine, PRINT ile yazmak çok daha iyidir. * PRİNT 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 IİF ZEB GÖOTO 1000 THEN yerine GOTO koyduk ve prog- ram 2.96 saniye ile 40.77 daha hız- landı. Bir ufak değişiklik daha ve (TEST10): 60 IFZ<>BGOTO 40 Bu sırada, 70 numarall satırı silebi- lirsiniz, çünkü artık bir İişe yaramıyor. Dolayısıyla programımızı bu ufak de- ğgişiklikle, bir satır kısaltmış olduk. Hızi- mız 2.93 saniye ile 41.01 daha arttı. TEST1'den ise 471.96 daha hızlıyız. !! DİKKAT 3 !! * Döngülerde 1F...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 kornutundan açılmışken. Şöyle bir program parçası düşünün: 100 |F A->1 ANDB-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 A- 1 ve B—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 İF C—3 THEN IF B>2 THEN IF A—1 THEN 999 Bu durumda, sadece ve sadece C-z3 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... !! DİKKAT 4 ! * Birbirine AND ile bağlanmış birden fazla şarttan oluşan |F...THEN komutla- rınin, en ender olandan en sık olana doğru siıralanmış bir IF...THEN zincirine çevrilmesi gerekir. Şimdi sıra geldi TEST1 4'e... Artık bi- raz stil değiştirmenin zamanı geldi. Deminden beri kullandığımız GOÖTO 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- gişiklikleri yapın: 30 FORZ-1 TO 374 40 PRİNT“A”: 50 NEXTZ 60 numarallı satırı da silebilirsiniz. Ye- niden zaman ölçümü yaptığımızda yeni bir kızlanma daha görüyoruz: 1.1 saniye. TEST10'dan X62.45 ve TEST1- den de 489.47 daha hızlı.