Amiga Dünyası sayı 8, sayfa 22

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 22

label2'ye, 3 ise label3'e .... atlar.

PRINT "1-GELİŞ" PRINT "2-GİDİŞ" BURArINPUT "SECİMİNİZ";a ON a GOTO JUMP,SERDAR PRINT "KUSURA BAKMAYIN SA- DECE IKI SEÇENEK"

GOTO BURA JUMP:PRINT "1'i seçtiniz" END SERDAR:PRINT "2'yi seçtiniz" END Bu programda input komutuna 1 sayısı ile cevap verirseniz, program JUMP label'ına dallanır, eğer cevabınız 2 ise, program SERDAR label'ına dallanır. Seçiminiz bunlardan biri değilse, program sizi uyarır ve yeniden giriş yapmanızı ister.

[ON...GOSUB] [ON...GOSUB] komutunun kullanımı, [ON...GOTO] komutu ile aynıdır. [ON (değişken) GOSUB (label1, label2, label3...)] olarak kullanılır. İşlevi değişkenin değerine karşılık gelen label'a atlamaktır.

Diğer bir dallanma komutu da [EVERY..GOSUB]'tır. [EVERY (sabit) GOSUB (label)] olarak kullanılır. Buradaki sabitin değerine göre label'a atlar. Verilen sabit, bir saniyenin ellide biri süre içinde dallanılan program bölümünün uzunluğunu belirtir. Buradaki en önemli nokta, GOSUB işlemi ile dallanılan alt program bu periyod zamanından az sürmelidir; yoksa hata mesajı verir. Bu komut kullanıldıktan sonra sistem otomatik olarak kapanır, bu nedenle devamı akıcı olarak sağlayabilmek için EVERY ON komutu ile beraber kullanılmalıdır.

örneğin; EVERY 50 GOSUB ALIŞTIRMA DO PRINT "ANA PROGRAM" LOOP ALIŞTIRMA: INC X:PRINT "ATLAMA SIRASI";X EVERY ON :RETURN

Not:EVERY ON komutu Amiga Basic'teki ON TIMER komutuna benzer. [EVERY ON/OFF]

[EVERY ON], sistemin [EVERY] komutu ile kullandığı interrupt'ı (kesintiyi) yeniden başlatır. Bu komut, dallanmadan sonra işleme geri dönmeden konmalıdır. Böylece olayın akıcılığını sağlamış oluruz.

[EVERY OFF] komutu ile dallanma olanağı tamamen kapatılır. Bu komut sistemin interrupt'ını kapatır.

[PROCEDURE] Eğer büyük programlar yazmaya kalkarsanız, Amos Basic size programın karışmaması ve anlaşılır olması için birçok komut sağlamıştır. Bunlardan en çok kullanılanı [PROCEDURE]'dur. Büyük programlar iç içe birçok küçük programların birleşmesinden oluşur. Bu küçük programları ayrı ayrı adlar altında toparlamazsanız, daha sonra siz bile işin içinden çıkamazsınız. İşte [PROCEDURE] küçük programları bir başlık altında toplama ve istenilen yerde doğrudan kullanma olanağı sağlar. [PROCEDURE İSİM (değişkenler)] olarak kullanılır. PROCEDURE OSMAN [a$] gibi. Bu komutla, program içinde yeni komutlar yaratılabilir.

PROCEDURE YAZ[a$] PRINT a$ END PROC Bu PROCEDURE çağrıldığında, a$ değişkenini ekrana yazacaktır. PROCEDURE'u çağırmak için sadece adını ve eğer varsa değişkeninin değerini yazmak yeterlidir. Yukarıdaki PROCEDURE'u çağırmak için [YAZ "OSMAN"] yazmamız yeterli olacaktır ve ekrana OSMAN yazısı çıkacaktır. PROCEDURE'u [GOSUB] komutunun yaptığı işleve benzetebiliriz. Fakat ikisi hiçbir zaman aynı değildir. Bir PROCEDURE'un bittiğini belirtmek için, komutların sonuna [END PROC] komutu konularak ana programa dönüş sağlanır.

PROCEDURE'ler, alt program olduklarından değişken tanımlamalarında çoğu zaman hata yapılmaktadır. Bunun için ilk önce değişkenleri iyice tanımamız gerekir.

YEREL VE GENEL

DEĞİŞKENLER Bir PROCEDURE'de kullanılan değişkenler, ana programda kullanılan değişkenlerden ayrıdır ve aralarında bağ yoktur. PROCEDURE'lerde kullanılan değişkenlere yerel değişkenler denir.

A=1333:B=13 TEST PRINT A,B PROCEDURE TEST PRINT A,B END PROC programı çalıştırıldığında, bu iki değişke- nin PROCEDURE'ın içinde ayrı, ana programda ayrı olduğunu göreceksiniz.

PROCEDURE'lerin dışındaki ana program değişkenlerine genel değişken denir. PROCEDURE'un dışında kullanılan değişkenler, içerisinden çağrılamaz.

FOR KAPI=1 TO 20 ANAHTAR NEXT KAPI END PROCEDURE ANAHTAR IF KAPI=10 THEN PRINT "BURASI" END PROC programında, PROCEDURE'un içindeki BURASI yazısı hiçbir zaman çıkmayacaktır. Normalde çoğu insan KAPI değişkeninin PROCEDURE içinde değişmediğini düşünür. Fakat PROCEDURE içindeki KAPI değişkeninin bu işlemler sırasında değeri 0'dır. Sadece ana programda 1'den 20'ye kadar değişmektedir.

[SHARED] Bu komut, PROCEDURE içinde kullanılır. Kullanımı [SHARED (değişken listesi)] şeklindedir. Bu komut içinde virgüller ile ayrılarak sıralanan değişkenler, genel değişkenler olarak değerlendirilir, böylece procedure içerisinde kullanılan değişkenleri ana program içerisinde kullanma olanağına sahip oluruz. Ya da ana program içerisindeki değişkenleri procedure'ler içerisinde kullanabilme imkanı sağlar.

Örneğin; X=387085:Y=1990 DENEME PRINT X,Y PROCEDURE DENEME SHARED X,Y X=X+Y:Y=Y+1000 END PROC Bu test programında x ve y değişkenlerini SHARED ile tanımlamak suretiyle procedure içerisinde işleme tabi tutabiliyoruz. Procedure dışarısında tanımlanan x ve y değerleri, procedure içerisinde SHARED komutu vasıtasıyla tekrar okutulup üzerlerine yeni değerler yazılıyor.

[GLOBAL] Büyük bir program yazarken birçok değişkeni PROCEDURE'lerin içinde kullanmak isteyebilir ya da zorunda kalabilirsiniz. Her PROCEDURE'de ayrı ayrı [SHARED] komutunu kullanmak hem zor olur, hem de zaman bakımından çok sıkıntı çekersiniz. Bunun kolay yolu, PROCEDURE içinde kullanılacak değişkenlerin [GLOBAL] komutu ile ana programın başında belirtilmesidir. [GLOBAL], gerçekten çok yararlı bir komuttur. Şimdi olmasa bile, ileride oldukça çok kullanacaksınız.

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