Commodore sayı 73, sayfa 19

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 19

1500. satırda en çok problemi yaratan program var: negatifini alma. İlk olarak, RAKAM = 0 ise, yani sayı girilmediyse ekrandaki sayıyı alıyoruz. Eğer bu sayı da sıfırsa beklemeye dönüyoruz. Değilse EK(X)'i eksi EK(X) yapıyoruz. Sayı almanın başındaki sıralama bu rutinin başındaki EKRAN$'ın alınmasından dolayı ortaya çıkıyor. Eğer bu sıralamayı yapmazsak sonradan basılan sayılar bu sayıya eklenmeye başlıyor. Son olarak, 1600. satırda da sadece şu anda alınmakta olan değerlerin hepsi sıfırlanıp ekrana yazılıyor. 1900. satırdaysa ekran (tabii ki hesap makinesinin ekranı) temizleniyor, ekrana yazılıyor, EKRAN$'a da bu değer atanıyor. EK(X)'e göre eksi işareti de basıldıktan sonra tuş beklemeye geri dönülüyor. Programın en zor kısmını bitirmiş olduk böylece, Artık diğer kısımlarla devam ederiz. İkinci alt programımız 2000. satırda başlıyor. Burada ilk olarak A1'e AR$(1)'in, A2'ye de AR$(2)'nin eksi veya artılısı yerleştiriliyor. Daha sonra IS$(1)'in değerine göre +, -, * veya / işlemlerinden biri yapılıyor. Bölme işlemini yapmadan önce A2'nin değerine bakıyoruz. Eğer bu değer 0 ise 9030'a gidip ekrana “OE” yazdırıyoruz ve AC anlamındaki “A”'ya basılmasını bekliyoruz. A'ya basılınca da her şeyi sıfırlayıp başa dönüyoruz. Eğer her şey yolundaysa sonucun mutlak değerini (ABS(A1)) diziye çevirip (STR$(sayı)) AR$(1)'e koyuyoruz.

EK(1)'i hesaplamak ise daha kolay. A1'in işaretini (SGN(A1)) Yalnız SGN(0) fonksiyonu 0 sayısını verdiği için sonuç sıfırsa EK(1)'e 1 vermeliyiz. AR$(2)'yi de gereksiz yere sıraladıktan sonra geri dönüyoruz.

3000. satırdan başlayan üçüncü alt program dergimizde yayınlanmış olan EKRAN Yapıcı programın bir çıktısı ve sadece ekrana bir hesap makinesi çizmekle yükümlü, Bu arada belirtmeden geçmeyeyim, ekran düzeni tamamen EMRE'ye ait (sanırım memnun ol artık).

7000. satırda bulunan kısacık rutin ise bu programı yazmamızın asıl sebebi olan ok kullanarak ekrandan bir şeyler okutma programı. Buraya ilk sıçranıldığında hemen ateş tuşu kontrolü yapılıyor. Eğer ateşe basılmıyorsa zaten yapılacak bir şey olmadığından hemen geri dönüyoruz. Ateşe basılıysa da, bu sefer ateş tuşu bırakılana kadar bekliyoruz (7020. satır). Bunun sebebi, ateşe basıldığında bir tuşu iki kere okumayı engellemek. Bu gibi ufak rutinler programları daha kolay kullanılır hale getirirler. Daha sonra ekrandaki tuş matrisine göre, ok hangi satırdayken ateşe basıldığını kontrol ediyoruz. Eğer 5, 7, 9 veya 11. satırdaysa “Tuşlardan biri olabilir.” diyerek satır alt rutinlerine sıçrıyoruz. Satır tutmuyorsa Z$'a dokunmadan geri dönüyoruz. Eğer 5. satırda ateşe basıldıysa kolonlara bakıyoruz (7100'deki alt program): 14. kolonsa Z$'a bir “7” 16. ise “8” 18. ise “9” koyuyoruz. İki karelik tuşları kontrol etmek için OR işlemiyle: “20. VEYA 21. kolonlarsa Z$'ı “C” yap.” diyoruz. Aynı şekilde AC'yi VEYA 24. kolonlardaysa Z$'a “A” yaz.” şeklinde ayarlıyoruz (7130. ve 7140. satırlar). Eğer bu kolonlardan hiçbiri değilse Z$'a dokunmadan geri dönüyoruz. Ok 7. satırdaysa hemen 7200'e sıçrıyoruz ve kolona göre değerler veriyoruz:

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