29.10.2014 Views

Amiga Dunyasi - Sayi 13 (Haziran 1991).pdf - Retro Dergi

Amiga Dunyasi - Sayi 13 (Haziran 1991).pdf - Retro Dergi

Amiga Dunyasi - Sayi 13 (Haziran 1991).pdf - Retro Dergi

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

kullanarak değiştirmelisiniz (sonlarındaki<br />

takıları silerek).<br />

CHAIN komutuyla kullanılan COM-<br />

MON komutunda hem ana programda,<br />

hem de yüklenen alt-programda gerekli<br />

değişkenleri ve sabitleri programın ilk satırında<br />

tanımlamanız gerekir. Bu tanımlama<br />

sırasında tüm değişken ve sabitleri ana<br />

programdaki COMMON satırında nasıl<br />

sıralamışsanız, alt-programlarda da aynı<br />

sırayı kesinlikle takip etmeniz gerekli. Ayrıca<br />

matris değişkenleri de COMMON<br />

kullanılarak sadece aşağıdaki şekillerde<br />

tanımlanabilir:<br />

DIM STATIC B( 10,3,2)<br />

COMMON B ya da<br />

COMMON K(4)<br />

DIM K(8,12,2,6)<br />

FRE komutu ile kullanılabilen -1, 0 ve 1<br />

parametreleri, nedense hep aynı değerleri<br />

vermekte. Bunun sebebi, herhalde AC-<br />

BASIC'in programlanmasındaki bir hatadan<br />

kaynaklanmakta. Bu yüzden bu komutu<br />

kullanmanın pek anlamı yok. Aynı<br />

şekilde CLEAR komutu da çalışmakta. İstediğiniz<br />

değeri girin, AC-BASIC bunu<br />

CLEAR gibi algılayacaktır. Bu komutun<br />

zaten pek faydası yok; çünkü compile edilen<br />

programlar sistem rutinlerini kullandıklarından<br />

gerektiği kadar hafızayı otomatik<br />

olarak ayırırlar.<br />

AC-BASIC'in bir diğer dezavantajı da<br />

matris değişkenlerinde ortaya çıkıyor. Bildiğiniz<br />

gibi, <strong>Amiga</strong>BASIC maksimum<br />

255 matris değişkenine izin veriyor. AC-<br />

BASIC bu konuda çok daha cimri; izin<br />

verdiği matris değişkeni sayısı 7!<br />

Alt-rutinlerde DIM SHARED komutu<br />

kullanılamaz; çünkü compiler hazırlanırken,<br />

piyasadaki <strong>Amiga</strong>BASIC de bu komutu<br />

alt-rutinlerde kullanamıyordu. Fakat<br />

compiler ile birlikte verilen SORTSUBS<br />

programı sayesinde bu tür hatalar engellenebilir.<br />

<strong>Amiga</strong>BASIC matris değişkenlerinin<br />

hepsi dinamiktir. Bu, matrisin gerektiğinde<br />

ekstra komut kullanımı gerekmeden islenilen<br />

boyuta getirebileceği anlamına<br />

gelmekte. Fakat compiler bunun yanı sıra<br />

bir de statik matrislere izin vermekte.<br />

Bunları tanımlamak için matrisi DIM komutu<br />

ile yaratırken satırın sonuna STATIC<br />

kelimesini eklemek yeter. Bu durumda<br />

derleyici compile işlemi sırasında tüm statik<br />

matrisleri ve bunlara ait tüm adresgöstergeçleri<br />

(addresspointer) yaratarak<br />

bunları programa hafıza adresleri olarak<br />

girer. Bu sayede compile edilen program,<br />

sonuçta bir hayli hızlı çalışacaktır. Fakat<br />

bu hızın da bir (hatta daha çok) bedeli<br />

vardır:<br />

1. ERASE komutu statik matrislerde kesinlikle<br />

kullanılamaz.<br />

2. Statik bir matris değişkeninin boyutları,<br />

program akışı sırasında değiştirilemez,<br />

sabit kalmalıdır.<br />

3. Matris değişkenlerinde grafik saklanacaksa<br />

(grafik için olan GET ve PUT komutlarıyla),<br />

bunların boyutunu iyi planlayarak<br />

hesabınızı yapmanız gerekmekte.<br />

Grafikler çok renkli ise, 3 boyutlu bir<br />

matris işinizi görecektir.<br />

4. OPTION BASE komutunu, ilk matris<br />

tanımlamasından (gerek statik, gerek dinamik)<br />

ve ilk matris kullanımından önce<br />

kullanmalısınız.<br />

DEF (DEFDBL, DEFINT, DEFLNG,<br />

DEFSNG, DEFSTR ve DEF FN) komutlarını<br />

kullanırken de bazı garipliklere rastladım.<br />

Bunun sebebi, komutu yanlış yerde<br />

kullanmam oldu. Bu komutlar DIM SHA-<br />

RED komutundan önce kullanılmalı. Ayrıca<br />

DEFINT'te de nedenini çözemediğim<br />

bir hata var. Bu yüzden bu komutu ya kullanmamanızı<br />

ya da çok dikkatli olmanızı<br />

tavsiye ederim.<br />

Bu kadar hatanın ve dezavantajın üzerine<br />

AC-BASIC compiler'm avantaj ve fazlalıklarına<br />

geçebiliriz. Bunlar arasında en<br />

yararlı bir tanesi var ki. bunun sayesinde<br />

kilometrelerce süren IF ... THEN ... EL-<br />

SE ... IF ... dizimlerinden kurtulabiliriz.<br />

Sadece compiler'da bulunan bu güzel komut<br />

paketi, SELECT ... CASE ... END<br />

SELECT komut dizimidir. Bunlar sayesinde<br />

rahatlıkla içice döngüler gerçekleştirebilirsiniz.<br />

Aşağıda bu iki yeni komutu<br />

kullanan ufak bir program bulunmakta.<br />

Bu sayede, komutların kullanımını rahatlıkla<br />

öğrenebilirsiniz:<br />

INPUT a,b<br />

PRINT "a değişkenini"<br />

SELECT CASE a<br />

CASE-1,>0<br />

PRINT "ya -1 ya da pozitif bir değerdir."<br />

CASE 7 TO 11<br />

PRINT "6'dan büyük ve 12'den küçük<br />

bir değerdir."<br />

CASE ,

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!