AMIGA BASIC

Merhaba... 1990 yılını bitirip 1991 yılını tüketmeye başladık. Son 1990 sayımız olan 7. sayıda, son olarak yazısal dizi değerlerini sayısal değerlere çeviren CVI, CVL, CVS ve CVD komutlarını incelemiştik. Yeni yıl için her şeyin en iyisini sizler için dileyerek DATA komutu ile anlatımlarımıza devam ediyoruz.

DATA KOMUTU:

Kullanım Şekli: DATA sabitler-listesi

Bir READ yönergesi ile erişilebilecek sayısal ve yazısal sabitlerin verildiği yönergedir.

DATA yönergesinin tek başına herhangi bir fonksiyonu yoktur ve programın herhangi bir bölümüne yerleştirilebilir. Satır uzunluğuna uygun olarak, muhtelif sayıda yazısal ya da sayısal sabit DATA yönergesi arkasından virgülle ayrılmak suretiyle sıralanabilir ve bir program içinde gereken miktarda DATA yönergesi kullanılabilir. READ yönergesi, DATA bilgilerine programın başından sonuna doğru uygun sırada erişir. Yani ilk READ yönergesi, 1. DATA yönergesinin 1. sabit data bilgisini okur ve sonra sırayla devam eder. BASIC'te READ yönergesinin bir okuma işaretçisi kullandığını düşünürseniz, READ-DATA komutlarının çalışma mantığını çok daha rahat kavrarsınız. Mesela READ komutunun bir döngü içinde 10 sayısal data okuduğunu farz edelim: FOR I=1 TO 10 READ A PRINT A NEXT I DATA 3,5,34,5,6 DATA 4,7,9,0,2,1,6,4,1

Program çalıştırıldığında, READ komutu birinci DATA satırındaki 3 datası ile sabitleri okumaya başlayacak; ilk satırdaki datalar bitince ikinci DATA satırına atlayacak ve kalan 5 datayı buradan okuyarak

AMIGA BASIC

MAHMURE ÜNYELİ kullanılamaz. DATA yönergesindeki yazısal sabitler nokta, virgül, boşluk içeriyorsa tırnak işaretleri içinde yazılmalıdır. Bu karakterleri içermiyorsa, tırnak işareti içinde yazılmasına gerek yoktur. (Tabii READ yönergesinde yazısal sabit değişkeni olarak isim sonuna $ eklemeyi unutmuyoruz).

DATA ve READ yönergelerinde en önemli nokta; READ ile okunacak yazısal ve sayısal değişken tipi karşılığındaki DATA satırındaki sabit tipinin uyumlu olmasıdır.

DATE$ KOMUTU

Kullanım Şekli: DATE$

Bu fonksiyon güncel sistem tarihini verir.

A değişkenine atayacaktır. Program içinde kullanılan DATA sayısı READ ile okunması gereken bilgi sayısından az olamaz. Evet, program ikinci data satırındaki ilk 5 datayı da okuduktan sonra kalan dört datayı okumadan çalışmasını bitirecektir. Biraz önce bahsettiğimiz okuma işaretçisi, işte burada devreye giriyor. Okuma işaretçisi bir sonraki (eğer varsa) READ yönergesi tarafından kullanılmak üzere ikinci DATA satırının 6. bilgisi olan 1 üzerine yerleşir ve aynı programda kullanılacak başka bir READ yönergesi için okuma buradan başlatılır. Programlarınızda aynı dataları birden fazla READ yönergesi ile okutacaksanız, uygun bir yerde RESTORE yönergesini vererek okuma işaretçisini ilk DATA satırının ilk bilgisi üzerine getirebilirsiniz.

Tarih aa-gg-yyyy formatında 10 karakterlik bir dizi olarak yazılır. Sistem tarihi sürekli güncelleştirilmiyorsa, tarih eski olacağından anlamsızdır.

Komut, PRINT DATE$ olarak verilir ve çalıştırıldığında tarih ekrana yazılır: 11-28-1990

DECLARE FUNCTION KOMUTU:

Kullanım Şekli: DECLARE FUNCTION id [{parametre-listesi)] LIBRARY id ile belirtilen makine dili bir fonksiyon için LIBRARY yönergesi ile açılan sistem kütüphanesini tarar, id, geçerli bir BASIC belirtecidir ve makine dili bir fonksiyonun adıdır. Opsiyonel olarak %, &, ! ve # gibi tanımlama karakterleri içerebilir. Tanımlama karakteri verilmişse, fonksiyon tarafından bu tip kullanılır, verilmezse kurallara uygun olarak standart karakter tipi geçerli olur.

parametre-listesi, fonksiyon parametrelerinin listesidir. Fonksiyon belirtilen library içinde bulunduğunda burada verilen parametreler fonksiyona geçirilir, parametre-listesi belirtmek zorunlu değildir, ancak parantezler mutlaka konulur.

Örnek: 
LIBRARY "intuition.library" 
DECLARE FUNCTION VıewPortAddress- 
&0 LIBRARY 
VPA& = VıewPortAddress&(WINDOW (7)) 
Bu   örnek,   renk   bilgilerinin   tutulduğu 
ViewPortAddress& library fonksiyonu ta- 
rafından bulunan değerleri VPA& değiş- 
kenine yerleştirir.

sabitler-listesi içerisinde kullanılan sayısal sabitler reel, tamsayı gibi istenen formatta verilebilir, ancak sayısal ifadeler

DEF FN KOMUTU:

Kullanım Şekli: DEF FN isim [(parametre-listesi)]=fonksiyon tanımı

Kullanıcıya fonksiyon tanımlama olanağı sağlayan komuttur.

isim, boşluk içermeyen geçerli bir değişken ismi olmalıdır ve DEF FN'den sonra isim boşluk bırakılmadan yazılmalıdır.

parametre-listesi, fonksiyon tanımındaki değişken isimlerini içerir ve fonksiyon program tarafından çağrıldığında bu değişkenler kullanılır. Değişken isimleri, virgül ile ayrılarak yazılır ve bu değişkenler çağrılan program fonksiyonundan geçirilen argüman değişkenlerinin karşılığı olan belirli değerleri ihtiva ederler.

fonksiyon tanımı, bir sayısal değer ifadesidir. Bir satırla sınırlıdır ve fonksiyondaki işlemi ifade eder. İfadedeki değişken isimleri, program değişkenleri ile aynı olmak zorunda değildir.

Bir fonksiyon çağrıldığında, bir değişken ismi fonksiyon tanımı ve parametre listesinde aynı değerle belirtilir. Aksi takdirde, fonksiyon tanımındaki değişkenin o anki değeri kullanılır.

DEF FN ifadesinde, sayısal ya da yazısal fonksiyonlar tanımlanabilir. Fonksiyon, genellikle çağrılan ifadede belirtilen tipi alır. Yönergede kullanılan data tipi ile çağrılan ifadedeki data tipi arasındaki uyumsuzluk, AmigaBasic'in "Type mismatch" hatası vermesine sebep olur.

İki ayrı DEF FN yönergesinde aynı isimle iki fonksiyon belirtirseniz, Amiga-Basic'in son tanımlamayı geçerli sayacağını unutmayın.

DEF FN, program akışında fonksiyonun çağrılmasından önce yerleştirilmelidir. Aksi takdirde bu kez de "Undefined user function" hatasını alırsınız. DEF FN ifadesi, çıktı penceresinde doğrudan modda ya da bir alt program içinde tanımlanamaz.

Örnek: 
DEF FNYÜZDE(A,B)=(A/B)* 100 
INPUT  "BÜTÜNDEKİ PAYİ GİRİN ",PAY 
INPUT  "TOPLAM MİKTAR? ".TOPLAM 
SONUÇ=FNYÜZDE(PAY,TOPLAM) 
PRTNT "TOPLAMDAKİ PAY %";SONUÇ

Program çalıştırıldığında PAY değişkenini 47, TOPLAM'ı 235 olarak verirseniz, çıktı penceresinde aşağıdakiler görüntülenir: BÜTÜNDEKİ PAYI GİRİN 47 TOPLAM MİKTAR NEDİR? 235 TOPLAMDAKİ PAY %20

DEFDBL, DEFINT, DEFLNG, DEFSNG, DEFSTR KOMUTLARI:

Kullanım Şekli: DEFDBL değişken-sınırı

DEFINT değişken-sınırı, DEFLNG değişken-sınırı, DEFSNG değişken-sınırı, DEFSTR değişken-sınırı

Verilen değişken tipindeki değişkenlerin baş harfleri sınırlanarak programda kullanılacak değişken tiplerini tanımlamak için kullanılan ifadelerdir. Değişken isimlerinde tiplere göre sınırlama için istenen harfler, değişken-sınırı kısmında belirtilir. Değişken Tanımlama İsmi Tip Karakteri DEFDBL Çift Açıklık # DEFINT Kısa Tamsayı % DEFLNG Uzun Tamsayı & DEFSNG Tek Açıklık (tanımlı) ! DEFSTR Yazısal Dizi $ Örnek: DEFLNG a-p,w

Bu yönerge, uzun tamsayı değişkenlerine verilecek isimleri a ve p harfi arasındaki tüm harfler ile w harfi ile başlayanları kabul eder.

DELETE KOMUTU:

Kullanım Şekli: DELETE [başlangıç satırı] [-bitiş satırı]

Program satırlarını silmek için kullanılır. Yönergede satır numaraları ya da alfanümerik etiketler kullanılabilir. Belirtilen satırlar bulunamazsa, "Illegal function call" hata mesajı alırsınız.

DIM KOMUTU:

Kullanım Şekli: DIM [SHARED] değişken-listesi

Dizi için boyut belirtme komutudur. Bu komut, dizi değişkenleri için maksimum sayı belirtir ve saklama alanı yaratır.

DIM yönergesinde belirtilen boyut, 10'dan büyük olmalıdır; aksi takdirde AmigaBasic "Subscript out of range" hatası üretebilir. Verilebilecek en küçük değer (aksi OPTION BASE yönergesinde belirtilmedikçe) 0'dır. DIM ile belirtilebilecek maksimum dizi boyutu 255'tir; ancak bu sayı mevcut bellek miktarına göre arttırılabilir.

DIM yönergesi ile açılan dizi elemanlarının başlangıç değeri sıfır olarak Amiga-Basic tarafından yerleştirilir.

SHARED seçeneği, değişkenleri ana ve alt programlar tarafından erişilebilir yapmayı sağlar. DIM SHARED yönergesi her zaman ana program içinde belirtilmelidir. Bu seçeneği kullanarak tekrar yazmaksızın aynı DIM yönergesini birçok alt programda kullanabilirsiniz.

Bir dizi, bir programda yalnızca bir kez tanımlanabilir, aynı isimle yeni bir tanımlamaya izin verilmez. Farkında olmadan bu işlemi yapmışsanız ya da DIM yönergesini yanlış bir yere yazmışsanız, programı çalıştırdığınızda "Redimensioned array" hata mesajı ile karşılaşırsınız. Bu hatadan kaçınmak için, DIM yönergelerini programın başına yerleştirmelisiniz.

Şimdi bir örnekle bu komutu da tamam- 
layalım: 
DIMB(15) 
FOR 1=1 TO 19 
READ B(I)
PRINT B(I); 
NEXT I 
DATA 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15

END KOMUTU:

Kullanım Şekli: END

Tüm açık dosyaları kapatarak program çalışmasını bitirir ve bir önceki moda döner.

END yönergesi, programın çalışmasını bitirmek için istenen herhangi bir yere yerleştirilebilir, ancak genellikle programın sonu olması uygun görülür.

EOF KOMUTU:

Kullanım Şekli: EOF(dosya numarası)

End-Of-File (Dosya Sonu) koşulunu kontrol eder. Program içinde datalarınızı sakladığınız bir bilgi dosyasını okuma için bu kontrol kullanılır.

Fonksiyon, sıralı (sequential) bir giriş dosyasının sonuna ulaşıldığında, -1 (doğru) değeri alır. Bir INPUT yönergesi ile data okuma sırasında "Input past end" hatası almamak için EOF ile dosya sonunu kontrol ettirmek şarttır.

EOF, rasgele (random) erişimli bir dosyada kullanıldığında, son GET yönergesinin tam bir kayıt okuyamadığı durumlarda doğru değeri alır.

Ve koşula uygun olarak daha sonraki program adımına geçerek çalışmasını sürdürür.

EOF fonksiyonun çalışmasını bir ömek 
üzerinde inceleyelim: 
ÖPEN T',#l,"ADRES" 
WHILE NOT EOF(l) 
PRINT ASC(INPUT$(1,#1)) 
LET C=C+1:IF C=10 THEN PRINT:LET 
C=0 
WEND 
CLOSE#l 
END

Dosya açma işlemlerini OPEN komutunu incelerken daha rahat anlayacaksınız. Örnekte var olan bir ADRES dosyası kullanılıyor ve WHILE NOT EOF koşulu ile işlemin dosya sonu olana kadar yapılması isteniyor. Dosya sonu olduğunda ise, END komutu ile program sona eriyor.

ERASE KOMUTU:

Kullanım Şekli: ERASE dizideğişken-listesi

Dizileri bellekten siler. DIM komutu ile oluşturulup içine bilgi saklanan diziler bellekte silininceye ya da makine kapatılıncaya kadar saklanır. Ancak henüz açılmamış bir dizi silinmek istenirse, bir hata mesajı alınır.

Örnek: 
ERASE Dizi

Bu aylık da bu kadar. Gelecek ay görüşmek üzere, hoşçakalın.....