AMIGA BASIC

Merhaba... Geçen sayı son olarak, Amiga Basic'in CLS komutunu incelemiştik. Dikkat ettiyseniz, komutları alfabetik sırasıyla ve Amiga'nız ile birlikte verilen kitapçıktaki sırayla anlatıyoruz. Komutlar biraz ilerlediğinde, örnek programcıklara başlayarak konuyu pekiştirmeye çalışacağız. Konunun en kolay anlaşılmasının yolu örneklerle çalışmak. Siz de küçük programlar yapıp yeni komutları kullanabilirsiniz.

COLLISION KOMUTU:

Kullanım Şekli: COLLISION(Obje-no) COLLISION fonksiyonu, objelerin birbiri ile ya da içinde bulundukları pencere çerçevesi ile çarpışması için kullanılır. OBJECT.SHAPE yönergesi ile tanımlanmış bir obje, başka bir obje ile ya da içinde bulunduğu pencerenin çerçevesi ile çarpıştığında, bir COLLISION oluşur. İşte hangi objelerin birbiriyle çarpıştığını tespit etmek için bu fonksiyon kullanılır.

Bu kullanım şekli, COLLISION'ın bir fonksiyon olduğu durumları belirtir. AmigaBasic aynı anda 16 çarpışmayı bir çarpışma kuyruğu (collision queue) halinde arka arkaya dizerek tutabilir. 16'dan sonraki tüm çarpışma bilgilerini atar. COLLISION fonksiyonunun her çağrılışında, kuyruktan bir çarpışma bilgisi atılarak yeni çarpışmalar için yer açılır.

COLLISION aslında tüm bilgisayarlarda BASIC'i aşan bir komut. Genelde profesyonel programcılar bu fonksiyon için Assembler ve C gibi dilleri kullanırlar.

Birbiri ardına yazılan her collision kuyrukta arka arkaya dizildiği için, arkadan gelen çarpışmaların her biri için bir gecikme süresi oluşur.

Komut formatında çarpışmaya sebep olan objenin numarası, parantez içinde yönergenin yanına yazılır. Obje numarası -1 ile OBJECT.SHAPE ile tanımlanan en yüksek obje numarası sınırlarında olabilir.

Fonksiyonun sonucu ise, obje numarasını vererek sorduğunuz obje ile çarpışan objenin numarasıdır. Tabii bu pencere ile çarpışmaların sonucu da olabilir.

obje-no 0 ise, fonksiyon, çarpışma kuyruğundan bir bilgi atmaksızın son çarpışmaya sebep olan objenin numarasını verir.

COLLISION(-1), çarpışmanın oluştuğu pencereyi verir. Bu birden fazla pencere kullandığınızda çarpışmanın hangi pencerede oluştuğunu bilebilmeniz açısından faydalıdır.

obje-no sıfır değilse, fonksiyon obje-no ile çarpışan objenin numarasını verir ve çarpışma kuyruğundan bir çarpışma bilgisi atılır.

Fonksiyon, -1 ile -4 arasında negatif bir değer alırsa, obje-no ile belirtilen obje içinde bulunduğu pencerenin dört çerçeve kenarından biri ile çarpışmış demektir:

-1 Üst kenar -2 Sol kenar -3 Alt kenar -4 Sağ kenar COLLISION ON COLLISION OFF COLLISION STOP KOMUTLARI: Kullanım Şekli: COLLISION ON

COLLISION OFF COLLISION STOP Bu komutlar, obje çarpışmalarının event trapping'i için kullanılan komutlardır. COLLISION ON komutu, bilgisayarın çarpışmalarını izlemeye başlamasını sağlar. COLLISION OFF komutu izlemeye son verir, COLLISION STOP ise bir COLLISION ON komutu gönderilene kadar çarpışmaları izlemeyi durdurur.

COLLISION ON komutu verildiğinde, bir çarpışma oluştuğu zaman ON COLLISION .... GOSUB ile uygun bir rutine dallanma yapabilirsiniz. Bu, çarpışma oluştuğunda event trapping'e olanak (event trapping'i hatırlıyorsunuz değil mi?) sağlamak demektir. Tabii sonra da COLLISION fonksiyonu ile çarpışan objeler tespit edilebilir.

COLLISION OFF, program içinde bir COLLISION ON yönergesi çalıştırılana kadar hiçbir event trapping'i umursamaz. COLLISION STOP fonksiyonu ile ise event trapping beklemeye alınır, ancak COLLISION ON yönergesi işletilince event trapping'i devreye sokar.

COLOR KOMUTU: Kullanım Şekli: COLOR [ön zemin renk-no] [,arka zemin renk-no] Kullanılacak ön ve arka zemin renkleri-

BASIC

ni belirtmek için kullanılır. AmigaBasic bu komutla verilen ön zemin renk numarasını çizim noktalarını, çizgileri, alan doldurma ve yazı rengi olarak kullanır. Arka zemin renk numarası ise tüm bunların arkasındaki zeminin renk numarası olarak verilir, ön zemin renk-no ve arka zemin renk-no bildirimlerinin herbiri, bir PALETTE yönergesinde tanımlanan renk numaralarına karşılık gelir.

Programda tanımlanmış bir COLOR yönergesi yoksa ve bir palet yönergesi sistem renklerini iptal etmemişse, AmigaBasic sistemdeki tanımlı renkleri kullanır. Bu renkler, başlangıçta ön zemin beyaz, arka zemin mavi olarak tanımlanmıştır. Workbench'teki Preferences aracından sistem renkleri değiştirilmişse, geçerli renkler bu renkler olur.

Başlangıçta tanımlı renkler ön zemin için 1 (beyaz), arka zemin için 0 (mavi)'dır. Örneğin ön zemin rengini portakal, arka zemin rengini siyah yapmak isterseniz, COLOR 3,2 yönergesini kullanmalısınız.

COMMON KOMUTU: Kullanım Şekli: COMMON değişkenlistesi

CHAIN komutu ile ana program içinden çağrılan bir alt programa değişken geçişlerini tanımlamak için kullanılır. Yönerge her zaman CHAIN yönergesi ile birlikte kullanılır ve programın herhangi bir yerinde olabilir. Ancak tanımlamanın programın başlangıcında yer alması tavsiye edilir. Çünkü böylece dallanma yapılmadan önce geçişi istenen değişkenlere karar verilecektir. Bu da, program kontrolünde olabilecek hataları azaltacaktır.

Program içinde birden fazla COMMON yönergesi kullanılabilir, ancak her değişken sadece bir kez belirtilir. Dizi değişkenleri, değişken ismine parantezler ("()") eklenerek ifade edilir. CHAIN yönergesinde ALL opsiyonu kullanılırsa, tüm değişkenler alt programa geçirilir ve COMMON yönergesi umursanmaz. Bir genel kullanım örneği verirsek:

CHAIN "program adı" 
COMMON A,b$,X%,Renkler(),dizi$()

CONT KOMUTU: Kullanım Şekli: CONT Bir programın çalışması Run menüdeki Stop seçeneği, CTRL-C, CTRL-F3 tuşları ya da program içindeki STOP komutu ile kesildiğinde, bu komut ile kaldığı yerden devam ettirilebilir.

Bu fonksiyon özellikle programın test edilmesinde STOP ile birlikte hata ayıklama için çok faydalıdır. Çalışma kesildiğinde programın aşamasında program değişkenlerinin değerleri sorulabilir ve dış pencereden doğrudan modda bu değerler değiştirilebilir. Sonra da yine bu modda CONT veya GOTO ile program tekrar çalıştırılabilir. GOTO komutu kullanıldığı durumlarda program burada belirtilen satırdan çalışmaya başlar. CONT bazen bir hata oluştuğunda da kullanılabilir. CONT, kesinti esnasında editlemeler yapıldığında geçerlidir. Bir STOP ve CONT kullanımı örneği vererek bu komutun tanıtımını tamamlayalım:

A!=86:B!=5:A$="AMIGA" 
PRINT A!,B!,A$
STOP 
LET TOPLAM!=A!+B! 
PRINT TOPLAM! 
END

COS KOMUTU:

Kullanım Şekli: COS(değer) COS fonksiyonu, verilen değerin kosinüsünü hesaplar, değer, parantez içinde ve radyan olarak verilir. Değeri dereceden radyana çevirmek isterseniz, aşağıdaki formüllerden birini kullanın:

Radyan = (π* Derece)/180 Radyan = 0.0175 * Derece

Bu ifadenin değerlendirilmesi, verilen argüman tek açıklıktaysa tek açıklıkta; çift açıklıktaysa çift açıklıkta olarak yapılır.

Aşağıdaki örnek 1,100 ve 1000 sayılarının kosinüsünü alır: 
PRINT "1'İN KOSİNÜSÜ: " COS(1) 
PRINT "100'ÜN KOSİNÜSÜ: " COS(100) 
PRINT "1000'İN KOSİNÜSÜ:" COS(1000) 
Sonuç:

1’İN KOSİNÜSÜ: .540323 100'ÜN KOSİNÜSÜ: .8623189 1000'İN KOSİNÜSÜ: .5623189 CSNG KOMUTU: Kullanım Şekli: CSNG(değer) Sayısal değerlerin formatını değiştirmek için kullanılan komutlardan biridir. Verilen değer'i tek açıklıkta reel sayıya çevirir.

Şimdi isterseniz iki sayı için bir örnek yapalım: 
A#=1350:B#=300000 
PRINT A#*B# 
PRINT CSNG(A#*B#) 
Sonuç: 
405000000 
4.05E+08 
CSRLIN KOMUTU:

Kullanım Şekli: CSRLIN

CSRLIN, bir sistem değişkenidir. Tıpkı DATE$ VE FRE(0) gibi CSRLIN'e de AmigaBasic tarafından bir değer atanır. CSRLIN değişkeni içindeki bu değer kursor'un o an üzerinde bulunduğu satırın numarasıdır ve ya 1'e eşit ya da birden büyük olur. CSRLIN, kalem pozisyonunun belirlendiği LOCATE yönergesine karşılıktır.

Yazı satırının ölçülendirilmesi, o anki çıktı penceresinin üstünden kalemin bulunduğu yerin uzaklığıdır. Hesaplama tabanı olarak, pencerenin fontları arasındaki 0 karakterinin genişlik ve yüksekliği esas alınır.

Aşağıdaki örnek; önce kursor'un bulunduğu satır ve sütun numarasını saklıyor, sonra kursor'u ekranın bir yerleşimine göndererek bir mesaj yazdırıyor ve kursor'u tekrar orijinal konumuna gönderiyor:

X = CSRLIN 'KURSOR'UN BULUNDUĞU SATIR (DİKEY POZİSYON) 
Y = POS(0) 'KURSORUN KOLON NUMARASI (YATAY POZİSYON) 
LOCATE 20,1 KURSOR'U 20. SATIR 1. SÜTUNA (EKRANIN ALTINDAN) 
PRINT "BURASI 20,1 YERLEŞİMİ (SAYFANIN ALTINDAN)" 
LOCATE X,Y KURSOR'U ORJİNAL KONUMUNA GETİR 
PRINT "BURASI KURSORUN ORJİNAL KONUMU"

CVI CVL CVS CVD KOMUTLARI:

Kullanım Şekli: Değer = CVI(2-bayt uzun dizi) Değer = CVL(4-bayt uzun dizi) Değer = CVS(4-bayt uzun dizi) Değer = CVD(8-bayt uzun dizi)

Rasgele erişimli (Random) dosyalardaki farklı uzunluklarda yazısal dizi olarak tanımlanmış değerleri sayısal değerlere çevirmek için kullanılan fonksiyonlardır.

CVI, rasgele erişimli dosyadan 2-bayt yazısal dizi okur ve 16-bitlik kısa integer bir sayısal değere çevirir. CVL, aynı işlemi 4 baytlık dizileri 32-bitlik uzun integer sayıya çevirir. CVS, 4 baytlık uzun yazısal diziyi tek açıklıkta reel sayıya, CVD ise 8 baytlık uzun yazısal diziyi çift açıklıkta reel sayıya çevirir.

Örnek:

OPEN Dosya-adı$ FOR INPUT AS 1 
RenkSeti = CVL(INPUT$(4,1)) 
DataSeti = CVL(INPUT$(4,1))

Bu aylık da bu kadar. Gelecek aya kadar, hoşçakalın......