Goto, Gosub, Sub, Function
Programlarımızdaki kodlar arttıkça veya programın işlevleri arttıkça bazı tekrar eden işlemler gerekli olabilir. Ya da içinde birkaç şey değiştirerek aynı işlemler yapmak gerekir. Bunun için alt programlar kullanılır. Ayrıca Fonksiyonlar ve Alt programlar kullanmak programınızın okunurluğunu kolaylaştıracaktır.
GOTO
Goto komutunu daha önce döngü oluştururken de görmüştük. Aslında Goto ve gosub komutlarına çok az ihtiyaç duyacaksınız. Sadece diğer basic dillerine uyumlu olsun diye konulmuş. Program kodunun herhangi bir yerinde işleyişini bırakıp başka bir noktadan çalışması için kullanılır. Goto ve ardında bir etiket yada satır numarası yazılmalıdır.
GOSUB
Gosub ile alt programlar oluşturabiliriz. Gosub ‘u da kullanmanıza gerek yoktur. Onun yerine SUB kullanmak daha iyi olacaktır. Gosub da goto gibi programın işleyişi bırakıp başka bir noktadan başlaması sağlanır. Fakat farklı olarak RETURN komutunu görünce kaldığı yere geri dönerek çalışmasına devam eder. Alt programa, istediğimiz yerden istediğimiz kadar atlayabiliriz. GOSUB ve ardından bir etiket ya da satır numarası yazılmalı. Gosub ile atladığımız yerde RETURN bulunmazsa geri dönüş olmaz.
SUB
GwBasic gibi diğer dillerde Sub veya Function özellikleri yoktur. O yüzden program kodları büyüdükçe okumak ve kontrol etmek epey zor olacaktır. İlk başta Sub ve Functionların faydalarını anlamak zor olabilir. Alıştığınızda bir defa yapacağınız işlemler için bile bunları kullanacaksınız belki de.
Sub yapısı: [ ile ] arası şart değil gerekirse kullanılır
Bir sub veya function eklemek için EDIT menüsündeki New Sub… ya da New Function dan faydalanabilirsiniz ya da direkt yazabilirsiniz. Alt programı eklediğinizde bunlar ayrı bir sayfa olarak görünür. Sub veya Function listesini görmek ve istediğinizi incelemek için F2 tuşuna basın.
Uygulama:
Menüden File / New Program ile yeni bir projeye başlayın. SUB yaziyaz yazıp ENTER’ e bastığımızda hemen iki alt satıra END SUB yazıldığını göreceksiniz. Kodlarımızı SUB ile END sub satırları arasında olmalı. Arasına şunları ekleyin
F2 tuşuna basın Altprogramları listeleyen ekran gelecek Untitled kaydedilmemiş basic dosyamız oluyor ve alt programların anası oluyor kaydettiğimizde bu isim değişir. yaziyaz ise alt program ismi. Alt tarafta seçili olan ile ilgili işlemler var.
Edit in Active: Düzenlemek için aç
Edit in Split: Düzenleme ekranına ayrı bir bölme olarak aç
Delete : Modülü yani alt programı sil
Move : Modülü açık olan başka bir basic dosyaya taşı. Qbasic de aynı anda çok sayıda dosya açılabilir.
Edit in Active: Düzenlemek için aç
Edit in Split: Düzenleme ekranına ayrı bir bölme olarak aç
Delete : Modülü yani alt programı sil
Move : Modülü açık olan başka bir basic dosyaya taşı. Qbasic de aynı anda çok sayıda dosya açılabilir.
Siyah şerit Untitled üzerindeyken ENTER’e basın.
Şimdi oluşturduğumuz altprogramı çağıracağız. Çağırmak için yalnızca
yaziyaz
yazabiliriz. Ama programın okunurluğu açısından
CALL yaziyaz
ile çağırmak en doğrusu olacaktır. F5 ile programımızı çalıştırdığımızda çalıştığını göreceksiniz.
Kodları şu hale getirip çalıştırın. Buradaki kodlama kolaylığını öğrenmeye çalışın
Şimdi oluşturduğumuz altprogramı çağıracağız. Çağırmak için yalnızca
yaziyaz
yazabiliriz. Ama programın okunurluğu açısından
CALL yaziyaz
ile çağırmak en doğrusu olacaktır. F5 ile programımızı çalıştırdığımızda çalıştığını göreceksiniz.
Kodları şu hale getirip çalıştırın. Buradaki kodlama kolaylığını öğrenmeye çalışın
Parametre kullanımı:
Alt programımız çalışırken ona bazı değerler gönderip farklı şekillerde çalışmasını sağlayabiliriz. Az önceki SUB da parametre yoktu. Parametre veri değişken tipinin ne olacağını belirtmekte fayda var. Belirtilmezse SINGLE olarak kabul edilir. Bazı örnekler:
SUB ekranayaz (satir AS INTEGER, sutun AS INTEGER)
aynı satırı şöyle de yazabiliriz
SUB ekranayaz (satir%, sutun%)
aynı satırı şöyle de yazabiliriz
SUB ekranayaz (satir%, sutun%)
PROBLEM:
- Yukarıdaki programı alt program kullanmadan yapmaya çalışın.
- Alt program kullanarak sağa yaslı yazı yardırmayı deneyin
yazisagayasla 4 , “Merhaba”
gibi
FUNCTION
Functionların yapısı SUB lar gibidir. Yukarda açıklananlar bunda da geçerli. Function’un farkı verilen değerler üzerinde işlem yapıp bir sonuç ile geri döndürmesi. Qbasic in kendi yapısındaki birçok komutun Function özelliği vardır. Örneğin : X = SQRT(81) yazdığımızda verilen 81 sayısı SQRT(karekök alma) fonksiyonu tarafından işlenir ve sonuç olarak 9 döner. Bu sonuç X değişkenine atanır.
Şimdi biz kendimiz bir fonksiyon oluşturalım
Function da tek satır ile sonucu alabilirdik. Anlaşılır olması bakımından uzun yazıldı. Kısa olarak:
STATIC, SHARED, COMMON
STATIC:Bazen tanımladığımız değişkenin değerini kaybetmeden SUB ve FUNCTION içinde de kullanmak gerekli olabilir. Alt program içinde değişkeni STATIC ile tanımlarsak değişken değerini kaybetmez aklında tutar. Yoksa her fonksiyon ve sub başlangıcında tanımlanan değişkenlerin değerleri sıfırlanır. Örnek:
Burada dikkat ederseniz SUB a satır numarasını göndermedik 0 dan başladı her SUB başlamasında 1 arttı ve yazılar alt alta ortalı olarak yazıldı. STATIC i DIM ile değiştirin farkı göreceksiniz.
SHARED:Bazen de bir değişkenin değerini kaybetmeden tüm SUB ve FUNCTION içinde geçerli olması istenebilir. Buna değişkeni global (genel, her yerde geçerli) tanımlama diyoruz. Alt program içinde yapılan değişken tanımlamaları Local tanımlama(yerel, sadece alt program içinde geçerli)diyoruz. Global tanımlamayı Ana program içinde yapmalıyız
1
2
3
4
5
6
7
8
9
10
|
'basit bir örnek daha
DIM SHARED a
CLS
a = 5
PRINT a
CALL karesi
PRINT a
PRINT ussu(3)
PRINT a
PRINT ussu(4)
|
COMMON:
Common, shared gibidir ama daha genel bir tanımlama yapılır. Qbasic ile CHAIN komutuyla başka bir bas dosyaya bağlantı kurabiliriz. Değişken Common ile tanımlama yapılırsa değeri bağlantı kurulan bas dosyada da geçerli olur. Zaten başlangıçta tek bas dosya üzerinde çalışacağınızdan bu gerekli olmayacak.
Bu bilgiler http://www.evrence.com/ alınmıştır.
Bu bilgiler http://www.evrence.com/ alınmıştır.
Qbasic Kursu Asıl Kaynak: http://akcansoft.blogspot.com
YanıtlaSilYazar: Mesut Akcan