1 Haziran 1986 Tarihli Commodore Gazetesi Sayfa 23

1 Haziran 1986 tarihli Commodore Gazetesi Sayfa 23
Metin içeriği (otomatik olarak oluşturulmuştur)

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ı.

Bu sayıdan diğer sayfalar: