Amiga Dünyası sayı 3, sayfa 51

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 51

DIM B (15) A = 4 CALL KARE (A,B (3)) PRINT A,B (3) END

SUB KARE (X,Y) STATIC

X = X+l Y = X*X END SUB

Bu programda her Y değeri B dizisinin üçüncü elemanı, her X değeri de A değişkeni olarak kabul edilir. Alt program çalıştığında sonuçlar 5 ve 25 olarak ekrana basılır.

Aşağıdaki örnek tüm bir diziyi alt programa geçirmek için kullanılır:

CALL ÖRNEK (X%, Y%„ P 0, R 0) END

SUB ÖRNEK (N %, M %, A(2), B(2), C(3)) STATIC

END SUB

Bu örnekte alt programın parametre listesindeki N% ve M% tamsayı değişkenler, A ve B iki elemanlı ve C ise üç elemanlı dizi tanımlaması yapılmıştır. Bu liste, argüman listesi ile karşılıklı olarak uyumludur.

Assembly dili ile yazılmış alt programlar da Amiga Basic programlar içinden çağrılabilir. Bu konuyu ilerde örnekleri ile açıklayacağız. EVENT TRAPPING (KOŞUL YAKALAMA):

Event Trapping, programınızdaki mevcut koşulları (event) kontrol ederek, programı uygun rutinlere dallandırır. Mevcut olabilecek koşullar; zaman (ON TIMER), mouse işlevleri (ON MOUSE), kullanıcı tarafından tanımlanan menünün seçimleri (ON MENU), kullanıcının programı durdurmaya çalışması (ON BREAK) ve bir animasyon objesini diğer bir obje ya da pencere ile birleştirmek (ON COLLISION) olabilir. Event Trapping aktif olduğunda, Amiga Basic her yönergeyi çalıştırmadan mevcut koşulların var olup olmadığını kontrol eder. Koşul mevcutsa, kontrol otomatik olarak etiketi (label) belirtilen rutinin başlangıcına transfer edilir.

Event Trapping ana formatı: ON (koşul belirteci) GOSUB (etiket) şeklindedir. Koşul belirteci, yukarıda sıraladığımız koşullardan biridir.

Event Trapping'i aktif hale getirmek için:

(koşul belirteci) ON komutu verilir. Durdurmak ya da sona erdirmek için ise sırayla:

(koşul belirteci) OFF (koşul belirteci) STOP komutları kullanılır. BELLEK YÖNETİMİ:

Amiga Basic, içerdiği CLEAR yönergesi ile fazla bellek isteyen programlar gibi farklı amaçlar için bellek tahsisine yardımcı olur. CLEAR yönergesini kullanarak stack, data dilimleri (data segment) ve System heap'i (yığın) olmak üzere belleğin üç farklı bölümünün genişliğini kontrol edebilirsiniz. Komutun formatı:

CLEAR [, [data-segment-genişliği] [, stack-genişliği] data-segment-genişliği, Amiga Basic'in data dilimleri için kaç byte ayrılacağını belirtir. Bu bölüm programın tamamını, sayısal değişken ve dizileri, açık dosyalar için file buffer'larını bellekte tutabilmek için kullanılır. Amiga Basic bu işlem için otomatik olarak 25000 byte ayırır. Bu miktarı artırabilir ve azaltabilirsiniz. Uzun bir program yazıyorsanız ve bu bölümün genişliğini artırmak isterseniz sadece bellekle sınırlı olduğunuzu unutmayın. stack-genişliği ise, stack için ne kadar byte'lık yer ayrılacağını belirtir. Stack, iç içe geçmiş GOSUB'lar, FOR ... NEXT, WHILE/WEND ve kullanıcı tanımlı fonksiyonların muhafaza edildiği yerdir.

Data dilimleri ve stack için ayrılan RAM miktarından sonra da kalan RAM, System Heap için ayrılır. Bu bölüm Amiga'nın LIBRARY, WINDOW ve SCREEN gibi diğer işlevleri tarafından paylaşılır. SOUND ve WAVE bilgilerinin buffer'larını da bu bölüm içerir.

Bellek yönetiminde kullanılan diğer bir fonksiyon da FRE'dir. Bu fonksiyonla kalan serbest RAM miktarı öğrenilebilir. Fonksiyonun kullanımı iki türlü olabilir:

FRE (n) FRE (" ") FRE (n) formunda, üç farklı fonksiyon vardır:

• (n) -1 ise, heap'in serbest byte miktarını verir.

• (n) -2 ise, stack'in asla kullanılamayan byte miktarını verir.

• (n) bunlardan farklı bir sayı ise ya da FRE (" ") fonksiyonunu kullanıyorsanız, data segmentlerinin serbest miktarını öğrenebilirsiniz.

Gelecek ay Amiga Basic'te obje yaratma konusunu inceleyecek ve yapısal özelliklere devam edeceğiz. Hoşça kalın.

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