Amiga Dünyası sayı 10, sayfa 18

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 18

Merhaba... Hatırlarsanız geçen ay BASIC dersimizi GET komutu ile bitirmiştik. Bu ay BASIC'in yeni bir dallanma komutu ile devam ediyoruz.

GOSUB..... RETURN KOMUTU:

GOSUB satır

RETURN [satır]

Program içindeki bir alt rutine atlamak ve geri dönmek için kullanılan komuttur. Bir alt rutin GOSUB ile çağrıldığında, Amiga Basic GOSUB satırının bulunduğu yeri not eder ve sonra belirtilen satıra dallanır. Bu alt rutinde bir RETURN komutu bulursa ve RETURN komutunda herhangi bir satır belirtilmemişse, GOSUB komutunun bulunduğu satırı takip eden satırdan itibaren çalışmasını sürdürür. RETURN komutunda satır belirtilmişse, Amiga Basic buradan belirtilen satıra atlar.

GOSUB ve RETURN yönergelerinde verilen satır, programın dallanacağı alt rutinin ilk satırının satır numarası ya da etiketidir.

Bir alt rutin program içinden birkaç kez çağırılabileceği gibi, bir başka alt rutin içinden de çağrılabilir. Bu tür iç içe geçmiş alt rutinler sadece bellek miktarı ile sınırlıdır.

RETURN komutundaki satır seçeneği, geri dönüşün GOSUB komutunu takip eden satırdan değil de başka herhangi bir satırdan devam etmesi istendiğinde kullanılır. Komutun bu formatı dikkatli kullanılmalıdır. Zira bir diğer GOSUB, WHILE ya da FOR yönergesi aktif iken aynı anda sizin GOSUB'ınız da aktif olur. Bunun sonucunda da döngüler ya da diğer alt rutinler yanlış yerlerde sonlanabilir ve Amiga Basic'in "FOR WITHOUT NEXT" (NEXT'siz FOR) ya da "WHILE WITHOUT WEND" gibi hata mesajları vermesine sebep olur.

Alt rutinler, programın herhangi bir yerine yerleştirilebilir. Ancak ana programdan ayırt edilebilir bir şekilde yerleştirilmesi daha uygundur. Alt rutine istenmeyen girişleri önlemek için, alt rutinin başlangıcından önce STOP, END ya da GOTO yönergeleri ile program akışı kontrol edilmelidir.

Programda kullanılan GOSUB yönergesi sayısı ile RETURN sayısı aynı olmalıdır. Yani her GOSUB için ona ait bir RETURN yönergesi bulunmalıdır. Aksi takdirde programınız hata mesajı verecektir.

Komutların çalışmasını aşağıdaki örnek programda inceleyin:

'Yazı stili DEFLNG a-Z LIBRARY "graphics.library" DECLARE FUNCTION AskSoftStyleO LIB- RARY 'Geçerli stil seti Allowed%=AskSoftStyle(WINDOW(8)) 'Görüntüle GOSUB StilYap LIBRARY CLOSE END StilYap: FOR i=0 TO 7 CALL SetSoftStyle (WINDOW (8), i, Allo-

wed%)

'Bitleri kontrol et IF i=0 THEN CALL PrintMsgfplain ") IF (i AND 1) THEN CALL PrintMsgfboldface ") IF (i AND 4) THEN CALL PrintMsgfitalic ") PRINT NEXT 'Normale dön CALLSetSoftStyle(WINDOW(8),0,255) RETURN SUB PrintMsg(msg$) STATIC CALL Text (WINDOW(8) ,SADD (msg$), LEN (msg$)) END SUB

Program, yazı stilini değiştirmek için yazılmış. Stil değiştirmek için kullanılan alt rutin ve programların çoğu library rutinlerinden çağrılıyor. GOSUB ile gönderilen StilYap rutini değişik stilleri gösteren yazıları görüntüleyerek RETURN komutuyla GOSUB satırının altındaki komuttan itibaren çalışmasına devam etmektedir.

GOTO KOMUTU:

Kullanım Şekli:

Bu komut, programın belli bir satıra dallanarak çalışmasına oradan devam etmesini sağlar.

satır, satır numarası ya da etiket olabilir. Program komutu takip eden satır belirtecinde istenen satıra atlayarak çalışmasına oradan devam eder. Satırda çalıştırılabilir bir yönerge varsa o işlemi yapar; DATA ya da REM gibi işlevi olmayan bir satırsa, buradan sonraki çalıştırılabilir ilk satırdan itibaren çalışmasını sürdürür.

Genellikle dallanma işleminde GOTO yerine ON..GOTO, IF..THEN..ELSE gibi yapısal kontrollerin kullanılması tavsiye edilir; çünkü programda çok sayıda GOTO olması, programın incelenmesini ve hata ayıklanmasını zorlaştırır.

Diyelim ki kullanıcıdan Evet ya da Hayır şeklinde cevap isteyen ve bu cevaba göre çalışmasına devam eden bir programda GOTO kullanalım: 100 IF A$="E" THEN PRINT "EVET.":GOTO 120 110 PRINT "EVET DEĞİL." 120 REM PROGRAM BURADAN DEVAM EDİYOR.... Aynı işlemi IF..THEN..ELSE ile yaparsak problemi tek satırda halledebiliyoruz: 100 IF A$="E" THEN PRINT "EVET." ELSE PRINT "EVET DEĞİL."

Programda bunun gibi pek çok dallanma olduğunu düşünürseniz, programın ne kadar uzayacağını kestirmek fazla zor değil. Tabii ki programlarınızın içinde bu komutu yine de oldukça sık kullanmanız gerekecek.

HEX$ KOMUTU: Kullanım Şekli: HEX$(değer) Bu fonksiyon, ondalık bir sayının onaltılık

AMIGA BASIC

Kullanım Şekli:

GOTO satır karşılığını verir, değer, -32768 ile 65535 arasında bir sayı olabilir ve HEX$(değer) işleminden önce yuvarlanır. Örneğin;

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