Bu sayfadaki yazılar
Sayfanın metni
Sayfa 59
SEYFETTİN ÇANKAYA
Geçen sayıda sözünü ettiğimiz çevrimin içini incelemeye başlıyoruz. Fahrenayt Santigrat ısı dönüşümlü formülü: sant = (5.0/9.0)*(fahr-32.0); satırıyla programlaştırılmıştır. Örnekte 5.0, 9.0 ve 32.0 ifadelerinde noktadan sonraki 0 ifadesi, yapılan işlemin gerçek sayı olduğunu göstermektedir. Yani 5/9=0, 5.0/9.0=0,555'dir. Burada = endüşük; ifadesinde çelişki varmış gibi görülebilir. Çünkü endüşük değişkeni tamsayı, fahr ise gerçek sayı olarak tanımlanmıştır. C'de esnek bir uygulamayla bu eşitlikte endüşük değişkeninin değeri otomatik olarak gerçek sayıya çevrilmektedir. Bu özellik,
while (fahr < — enyüksek)
ifadesinde parantez içindeki çevrim şartında da görülmektedir. Printf fonksiyonu içindeki ifadelere gelince;
printf sant);
% işareti basılacak her bir değişkeni ifade etmektedir.
Arkadan gelen %4.0f ifadesi 4 karakter uzunluğunda ve noktadan sonra ondalık bölümü bulunmayan gerçek (floatp.) sayıyı göstermektedir. Hemen onu takip eden %06.1f ifadesi ise gerçek değişkenin 6 karakter uzunluğunda ve 1 ondalık haneye sahip olduğunu göstermektedir. ise bildiğiniz satırbaşı gösterimidir. Bu açıklamalar “...” işaretleri arasında yapılmıştır. Bundan sonra ise sözkonusu değişkenler açıklamadaki sırayla yazılır. Yeni gördüğümüz ve değişkenleri ifade eden % işareti değişik şekillerde kullanılabilir;
%d desimal tamsayı %u tamsayı %x Hex (16'lık) tamsayı %c karakter
fahr karakter dizisi fahr karakter olarak kullanılması
fahr = fahr + adım; ifadesi her bir hesaplama değerini adım kadar arttırmaktadır. Bu program çalıştığında aşağıdaki sonuç alınır.
0 -17.8 20 - 6.6 40 4.4 60 15.6
260 126.7 280 137.8 300 148.9
FOR ÇEVRİMİ: C'de kullanılan en önemli komutlardan biri de for işlemidir. Bundan önce vermiş olduğumuz ısı çevrimi programını for döngüsü kullanarak ne kadar basit yazılabileceğini görelim:
main ( ) /* aynı işlemin for çevrimiyle yapılması */
|
ınt fahr; for (fahr —-0; fahr — —300; fahr * 20) printf (© fahr, (5.0/9.0) *fahr- 32);
|
Program çalıştırıldığında bir önceki sonucun aynısını verecektir. Şimdi farkları inceleyelim. Öncelikle birçok değişkenin kullanımı yerine sadece bir değişken kullanılmıştır. Alt ve üst ısı limitleri ve adım değişkenleri yerine for işleminin parametreleri olarak yapılabildiği bu örnekte görülmektedir. printf içinde (5.0/9.0)*(fahr-32) formülü ile santigrat değeri hesaplanmakta ve aynı zamanda yazılmaktadır.
For çevrimini while işleminin genelleştirilmişi olarak düşünebiliriz. Çünkü while işlemi for işleminin özel bir durumudur. For işlemi üç bölümde incelenebilir. Bunlardan birincisi değişkene atama yapan bir bölümdür. Bu örnekte,
fahr - 0
işlemi bu şekilde kullanılmıştır.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 58
1414 LDA $DA4A 1413 CMP #$57 1415 $1411 1417 CMP # $58 1419 $ 1411 141B LDA $O0F
değeri :NO SCROLL tuşu mu? ;Evet, bekle
Bir sonraki BASIC ;komuUutu 141D STA $02 Çalıştır LDA # $4A
1421 STA $03 1423 LDA # SA2
1425 STA $04 1427 1429 STA $05 142B JMP $02E3
HELP ve RUN/STOP tuşları
Bilgisayarımızın sekiz fonksiyon tuşu olduğunu söylemiştik. HELP ve RUN/STOP tuşlarını da saydığımızda bilgisayarımız on tane fonksiyon tuşuna sahip demektir. Ancak bu iki tuşa KEY komutu ile tanımlama yapamayız. Dokuz numaralı fonksiyonu kullanmak için SHIFT ve RUN/STOP tuşlarına basmamız yeterli olur. Bu fonksiyon
DLOAD”* RUN
komutlarını taşır. Disket sürücüdeki ilk programı bulup yüklemek isterseniz kullanabilirsiniz. Dokuz ve on numaralı fonksiyonları istediğimiz şekilde tanımlamak için Program Döküm Eki'ndeki PROGRAMI 1'i yazın. Fonksiyon tuşuna RETURN tuşunu eklemek için '1' tuşuna basmanız gerekiyor.
Fonksiyon tuşlarına yazmış olduğumuz tanımlamalar 4096 ($1000) ile 4352 ($1100) adresleri arasında yer alır. İlk on byte fonksiyon tuşlarına tanımlanan yazıların uzunluğunu taşır. Bu değerlerden başlayarak fonksiyonların yazılarının başlama adreslerini bulabilirsiniz. On fonksiyon tuşuna toplam 245 harf kullanabilirsiniz.
Adres 24
24 numaralı adresle oldukça ilginç işler yapabiliriz. Mesela,
POKE 24,37:LIST
komutunu verdiğinizde programınızın satır numarası olmadan ekrana geldiğini göreceksiniz. Eğer FORMULA TOO COMPLEX ERROR ile karşılaşırsanız,
POKE 24,27
deneyin. 27'den başka değerler BASIC listelerine çeşitli değişiklikler yapar. Almış olduğunuz herhangi bir hata mesajı 24 numaralı adresin içeriğini değiştirir. POKE 24,37 komutu satır numaralarını yok etmesinden yararlanarak kendimize amatör bir kelime işlem programı yapabiliriz. Mesela,
10 Bu bir kelime işlem 20 programı olarak kullanıma 30 örnektir.
Yazdığımız programı normal bir program gibi kasete veya diskete kaydedebiliriz. Printer'a yazdırmak için, POKE 24,37:OPEN 4,4:CMD 4:LIST:PRINT# 4:CLOSE 4 komutunu yazın.
Program Hataları
C64'de çalışırken programınız bir hata yüzünden durursa hatanın nerede olduğunu ve neden kaynaklandığını sizin bulmanız gerekir. BASIC 7.0'daki HELP tuşu sayesinde hatanın programın hangi satırında neden kaynaklandığını anlamanız mümkün olur. TRAP komutu sayesinde de normalde hata mesajı vererek duracak olan programınızın çalışmaya devam etmesini sağlayabilirsiniz. Programınızda bir hata olduğunda program programınızda yer alan TRAP komutundan sonraki satırda yer alan kısma atlar. Sisteme ait olan ER değişkeni size iletilen hata mesajının numarasını verir.
PRİNT ERRS(ER)
komutu vererek hatanın ne olduğunu ekrana basabilirsiniz. EL değişkeni ise hatalı satır numarasını taşır.
10 FORİ-1 TO 41 20 PRİNT LERRS(İ) 30 NEXT |
programını çalıştırdığınızda mevcut olan hata mesajları ekrana yazılır. : Programınızda bir hata olduğunda kontrol TRAP'ten sonra gelen numaranın belirttiği satıra atlar ve burada durur. Bundan sonra RESUME komutunu üç ayrı şekilde kullanarak programın devamını sağlayabilirsiniz. Sadece RESUME yazarsanız bilgisayar programı hatalı satırın bulunduğu yerden devam etmek ister.
RESUME satır numarası şeklinde kullanırsanız program akışı verdiğiniz satır numarasından devam eder. Son olarak,
RESUME NEXT
komutu ile program akışı hataya neden olan satırdan sonra gelen satırdan devam eder. Eğer programınızın çalışmasını satır satır görmek isterseniz TRON ve TROFF komutlarını kullanabilirsiniz. RESUME komutunu satır numarasız kullanacak olursanız sonsuz döngüye girebilirsiniz. Aşağıdaki programı deneyin. Bu programda disket sürücü kapalı olduğu sürece disket sürücüyü açın mesajı ekrana yazılacak.
10 TRAP 1000 20 DİRECTORY 30 END 1000 İF ER—5 THEN PRİNT CHRS(19): “DİSKET SURUCUYU ACIN”:RESUME 1010 END
Hoşça kalın. 59