Commodore sayı 69, sayfa 45

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 45

Basamakları Sıfırla

Sayı >>10000 iken

SayızSayı-10000

Onbinler-Onbinler--1

—

Sayı >>1000 iken

Sayı—Sayı-1000 Binler-Binler41

Sayı >—>100 iken

Yüzler-Yüzler4İ

Sayı >>10 iken

Onlar-Onlar4 1

Birler-$304Sayı

Rakamları Yaz

Konuda verebileceğim son püf noktası da şu: Yatay border açmaya kalkarsanız önce sprite'ları hep duracakları Y koordinatlarına koyun ve açın, sonra border'ı açmaya çalışın. Aksini yaparsanız, ilk sprite'ı koyduğunuz anda zamanlamanız çöker.

Şimdi de gelelim mektuplarda sorulanları cevaplamaya: Levent Ünal'ın problemi sayıları hexadecimal'den decimal'e çevirmekle ilgili. Bu işi yapabilecek bir rutin yazmış, fakat rutin oldukça yavaş işliyor ve 50000 gibi bir sayıyı çevirirken oldukça bekliyor. Bu rutinin ana problemi algoritmasında, programda ondalığa çevrilecek sayı bir azaltılırken, basamak sayısı da bir artırılıyor ve bu artan sayının ondalık değerlerle karşılaştırılması sonucunda sonuç bulunuyor. Yani 50000'in ondalık değerini bulmak için en az 50000'den geriye saymak gerekiyor. Öyleyse ilk olarak programa yeni bir algoritma bulmak gerekiyor. Program sadece iki baytlık yani 0-65535 arası sayıları çevirebilsin diyerek işe başlıyoruz. Bu durumda en fazla on binler basamağı olacaktır. O zaman ilk olarak sayının on binden büyük olup olmadığını kontrol etmeliyiz. Eğer on binden büyükse sayıdan on bin çıkartıp on binler basamağını bir artırıyoruz. Bu basamakların doğrudan doğruya sayıların ASCII değerlerini vermesi için hepsini en başta $30 - "0" yapıyoruz. Bu değeri dokuz kere artırdığımızda $39 - "9" değerini elde edebiliriz ki, bunları doğrudan doğruya ekrana basmak mümkündür. Her neyse, konuyu dağıtmayalım. On binler basamağını bir artırdık-

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