Commodore sayı 40, sayfa 10

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 10

Örneğin programınıza yeni bir rutin koyduktan sonra onu bu yeni haliyle kaydetmek yerinde bir uygulamadır. Yeni rutininizi program içinde çalıştırmanız mümkün olmazsa veya sistem uçarsa önceki kopyaya geri dönerek programlamaya devam edebilirsiniz. Şimdi biraz her gün karşılaşılan programlama ve programa girme hatalarına bakalım. Herhangi bir programcının herhalde en sık karşı karşıya geldiği hata mesajı ünlü SYNTAX ERROR'dür. Bu mesajın sebepleri arasında en başta programı BASIC tarafından yorumlanamayan bir biçime dönüştüren yazım hataları gelir. Genellikle, yanlış yazılmış bir komut (ör: POKE yerine POEK veya 0 harfi yerine 0 sayısını basmak gibi) şeklindedir. Syntax error komutunun bize yaptığı en büyük yardım, hatanın meydana geldiği satırı söylemesidir. Eğer belli bir satırda SYNTAX ERROR'ün nerede olduğunu göremiyorsanız bu satırı baştan girin. Bazen satırı olmadığı halde doğruymuş gibi görürüz ve satırı baştan girmek burada basit bir çözüm olabilir. Asıl mesele çıkaran syntax error, kullanıcı tarafından tanımlanan bir fonksiyondaki (DEF FN) hatadan kaynaklanır. Eğer fonksiyon hatalıysa hata mesajında belirtilen satır, fonksiyonun tanımlandığı satır yerine fonksiyonu çağıran satırı işaret eder. Syntax error'den programın her satırını dikkatli bir şekilde girerek ve kullanılan BASIC komutları ile tanışıklık sahibi olarak sakınılabilir. Bir kez daha, bu komutlarla ilgili tecrübenin okuyarak kısa zamanda kazanılabileceğini hatırlatalım. Başka bir yaygın problem, programın işlemesi sırasında bilgisayarın koyduğu bazı sınırlamalardan dolayı meydana gelir. Bu tür hatalarda, program sentaksı doğrudur ancak program, bilgisayarı yerine getiremeyeceği bir şey yapmaya zorlamaktadır. Syntax error'ler gibi işleme hataları program içinde belli bir satırı sebep olarak gösterirler. Hatanın nedenlerini bulmak pek kolay olmadığından, düzeltmede sorunlar çıkabilir. Örnek olarak ILLEGAL QUANTITY hatası herhangi bir bellek adresini sıfırdan küçük veya 255'ten büyük bir sayı ile POKE etmeye çalıştığınızda alacağınız bir mesajdır. Bu değer, program içinde başka bir satırda hesaplanıyor olabilir ancak hata mesajında verilen satır bu değeri kullanmaya çalışan satırın numarasıdır. Hatayı düzeltmek için bu yanlış OUT OF DATA mesajı da bir başka yaygın hatayı bildirir. Bu mesajla karşılaştığınızda hemen READ komutunun okuyacak data bulamadığını düşünmelisiniz. Aslında OUT OF DATA'nın sebepleri çok farklı olabilir: eksik bir data ifadesi veya satırı; okunacak data miktarını aşan bir FOR/NEXT döngü artışı; unutulan virgüller ya da virgül yerine konan noktalar veya datayı RESTORE yapmadan tekrar READ ile okutmaya çalışmak gibi. Uzun data satırlarını bilgisayara girmek bütün programcılar için sinir bozucu bir işlemdir. Sonsuz gibi gözüken satırlarda yanlış girilmiş dataları bulmak saman içinde topluiğne aramaya benzer. Burada yapılacak şey datayı kolonlar ve satırlar halinde teker teker kontrol etmek ve bu arada virgül yerinde bulunan noktalarla 0 ile karışan O harflerini ve benzer yazım hatalarını bulmak olmaktadır. Bazı durumlarda sayıları ters yazmak (02'yi 20 yazmak gibi) programı çalıştırdığınızda hata mesajı almadan programınızın kilitlenmesine sebep olabilir. Hatalı girilmiş dataların genellikle programın son çeyrek kısmında ve satır sonlarında bulunduklarını kendiniz de keşfedebilirsiniz. Burada size tavsiyemiz programı ağır ve düzenli bir şekilde yazmaktır. Sakın 10K'lık bir programı bir oturuşta yazmayı düşünmeyin, mutlaka bir yerlerde hata yaparsınız. Örneğin bir data satırını yazmayı unuttuğunuzda değişkenlerin hatadan sonraki kısmının tamamı yanlış değerler alabilir. Üstelik bir de satırları saklamadıysanız ve sistem uçarsa bunları baştan tekrar yazmak bir işkence haline gelecektir. Altrutinlerden birini atladığınızda veya program tarafından çağrılmayacak biçimde yerleştirdiğinizde RETURN WITHOUT GOSUB hata mesajını karşınızda bulursunuz. NEXT WITHOUT FOR mesajı da benzer sebeplerden meydana gelir. En muhtemel mesajlardan biri de UNDEFINED STATEMENT ERROR'dür. Bu hata, programda olmayan bir satıra gidilmesini bildiren bir satırda ortaya çıkar. Sonuçta en iyisi programlarınızı belli aralıklarla ve dikkatle girmek olacaktır. Analitik hatalar takip edilmeleri en zor olan hatalar arasında başta yer alırlar. Bunlar BASIC'in fark edemeyeceği, program dizaynı ve mantık hatalarıdır. Yani program doğru bir sentaks ile çevrildiği halde gerektiği biçimde çalışmaz. Örneğin aşağıdaki programda bir bölüm hesaplamak için iki değişken kullanılmaktadır.

— 9 20B - 5 30C — B/A 40 A — A-l: B

50 1IFB < 1 THEN END 60 GOTO 20

Döngünün değerinin her azalışında değişkenlerden birisinin 1'den küçük olup olmadığı kontrol ediliyor. GOTO ifadesi yanlış satır numarasını gösterdiğinden kontrol edilen B değişkeni aynı değeri tekrar alırken bölen durumundaki A değişkeni, satır 30'da bir DIVISION BY ZERO hatası verinceye kadar satır 40'ta azalmaya devam eder. Hata esasında satır 60'tadır ve GOTO ifadesi, satır 30'u göstermelidir. Benzer tipte programlama hataları sonucunda program hata mesajı vermeden yanlış sonuçlar bildirecek şekilde çalışabilir. Bunu önlemek için programı zihinden veya kâğıt üzerinden adım adım izleyerek hesapların ters gittiği satırları bulmak gerekmektedir. Bazen bir programı run etmeye çalışırsınız ve hiçbir şey olmaz. Ekran kaybolur ve öylece değişmeden kalır. Bu programın bir döngüye takıldığının veya tamamen uçtuğunun bir işaretidir. Veya yazı rengi arkaplan rengine dönüşüp mesaj okunmaz hale gelmiş olabilir. Bunu halletmenin en basit yolu RUN/STOP tuşuna bastıktan sonra ekran rengini değiştirmektir. RUN/STOP programı durdurup bilgisayarın çalıştırdığı en son satırın numarasını verecektir. Ekran rengini değiştirerek bu durdurma mesajını okunabilir duruma getirebilirsiniz. Mesajın verdiği satır numarası, hatayı ilk arayacağınız yer olacaktır. Eğer bunları yapmanız mümkün olmuyorsa makineniz kilitlenmiş demektir ve bu durumda makinenizi resetleyebilir (ayrıca satın alacağınız bir reset switch ile) veya kapatıp açabilir ve programınızın en son kaydetmiş olduğunuz versiyonuyla çalışmaya devam edebilirsiniz. Diyelim ki, pek çok ifade içeren bir satırı kontrol etmek istiyorsunuz ve hangi ifadenin sorun çıkardığından emin değilsiniz. Bu tür satırları düzeltirken her satırı tek ifadeli satırlara bölmek gerekebilir. Bunu yapmanın çabuk bir yolu satırda kaç ifade varsa o sayıda programda bulunmayan değişik satır numarasını bu satırın başına yazıp herbiri için return'e basın. Böylelikle aynı satırın içindeki ifadelerin sayısı kadar kopyalarını çıkarmış olursunuz. Sonra bunları kursor ve delete tuşlarıyla tek ifadeli satırlara kolaylıkla dönüştürebilirsiniz. Örnek olarak satırınız şöyle olsun:

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