GOSUB / RETURN

Bir programda, programın ayrı yerlerinde aynı işlemi kullandığımızda bu işlemi her defasında programa eklemektense yapılan işlemi bir kere yazıp, programı istenildiğinde oraya yönlendirip işlem bittiğinde tekrar kaldığı yerden devam etmesi için bu komutu kullanırız. Tabi bu açıklama biraz, hatta biraz değil oldukça karmaşık oldu. Bu yüzden bu olayı örnekle açıklayalım. Diyelim ki bir satış ve stok programı yapıyoruz. Ve bu program da tabi ki menülerden oluşuyor. Bu menüleri yaparken ekranda bir çerçeve içerisinde görünmesini istiyoruz. Ana menümüz ve alt menüler şöyle olsun:

ANA MENÜ

  1. STOK MENÜSÜ
  2. SATIŞ MENÜSÜ
  3. ÇIKIŞ

STOK MENÜSÜ

  1. BİLGİ GİRİŞİ
  2. DÜZELTME
  3. SİLME
  4. EKRAN LİSTE
  5. YAZICI LİSTE
  6. ANA MENÜ

SATIŞ MENÜSÜ

  1. BİLGİ GİRİŞİ
  2. DÜZELTME
  3. SİLME
  4. EKRAN LİSTE
  5. YAZICI LİSTE
  6. ANA MENÜ

Şimdi bu üç menünün de aynı ebatlarda bir çerçeve içinde görünmesini istiyoruz. Normalde her menüyü yaparken önce ekrana bir çerçeve çizdirmemiz gerekir. Ama her üç menüde de aynı ebat ve özelliklerde çerçeve çizileceği, yani aynı işlem tekrarlanacağı için biz bu bölümü ayrı bir yerde bir defa hazırlıyoruz ve her menü için çerçeve çizileceğinde programı bu çerçeve çizdiren bölüme yollayıp işlem bittiğinde tekrar kaldığı yerden devam ettiriyoruz. Şimdi basit olarak yukarıdaki örneği görelim.

10 CLS

20 GOSUB 500

30 LOCATE 9,30:PRINT "A N A M E N Ü"

40 LOCATE 11,28:PRINT "1. STOK MENÜSÜ"

50 LOCATE 12,28:PRINT "2. SATIŞ MENÜSÜ"

60 LOCATE 13,28:PRINT "3. ÇIKIŞ"

70 LOCATE 15,28:LINE INPUT "Seçiminiz .......:";X$

80 IF X$="1" THEN 150

90 IF X$="2" THEN 300

100 IF X$="3" THEN END

110 GOTO 70

150 CLS

160 GOSUB 500

170 LOCATE 7,34:PRINT "STOK MENÜSÜ"

180 LOCATE 9,28:PRINT "1. BİLGİ GİRİŞİ"

190 LOCATE 10,28:PRINT "2. DÜZELTME"

200 LOCATE 11,28:PRINT "3. SİLME"

210 LOCATE 12,28:PRINT "4. EKRAN LİSTE"

220 LOCATE 13,28:PRINT "5. YAZICI LİSTE"

230 LOCATE 14,28:PRINT "6. ANA MENÜ"

240 LOCATE 15,28:LINE INPUT "Seçiminiz ........:";X$

245 IF X$="1" THEN 1000

250 IF X$="2" THEN 1100

255 IF X$="3" THEN 1200

260 IF X$="4" THEN 1300

265 IF X$="5" THEN 1400

270 IF X$="6" THEN 10

275 GOTO 240

300 CLS

310 GOSUB 500

320 LOCATE 7,34:PRINT "SATIŞ MENÜSÜ"

330 LOCATE 9,28:PRINT "1. BİLGİ GİRİŞİ"

340 LOCATE 10,28:PRINT "2. DÜZELTME"

350 LOCATE 11,28:PRINT "3. SİLME"

360 LOCATE 12,28:PRINT "4. EKRAN LİSTE"

370 LOCATE 13,28:PRINT "5. YAZICI LİSTE"

380 LOCATE 14,28:PRINT "6. ANA MENÜ"

390 LOCATE 15,28:LINE INPUT "Seçiminiz ........:";X$

400 IF X$="1" THEN 2000

410 IF X$="2" THEN 2100

420 IF X$="3" THEN 2200

430 IF X$="4" THEN 2300

440 IF X$="5" THEN 2400

450 IF X$="6" THEN 10

460 GOTO 390

500 CLS

510 LOCATE 6,25:PRINT "Bu bölüme siz bu yazıları değil de ALT tuşu ile beraber 201, 205 ve 187 yazarak çift çizgi ile çerçeve çizeceksiniz."

520 LOCATE 7,25:PRINT "alt+186 YETERİ KADAR BOŞLUK VE alt+186"

530 LOCATE 8,25:PRINT "alt+186 YETERİ KADAR BOŞLUK VE alt+186"

540 LOCATE 9,25:PRINT "alt+186 YETERİ KADAR BOŞLUK VE alt+186"

550 LOCATE 10,25:PRINT "alt+186 YETERİ KADAR BOŞLUK VE alt+186"

560 LOCATE 11,25:PRINT "alt+186 YETERİ KADAR BOŞLUK VE alt+186"

570 LOCATE 12,25:PRINT "alt+186 YETERİ KADAR BOŞLUK VE alt+186"

580 LOCATE 13,25:PRINT "alt+186 YETERİ KADAR BOŞLUK VE alt+186"

590 LOCATE 14,25:PRINT "alt+186 YETERİ KADAR BOŞLUK VE alt+186"

600 LOCATE 15,25:PRINT "alt+186 YETERİ KADAR BOŞLUK VE alt+186"

610 LOCATE 16,25:PRINT "alt+200 YETERİ KADAR BOŞLUK VE alt+188"

620 RETURN

510 nolu satırdaki PRINT komutundan sonra tırnak içinde yazılan bölüme oradaki yazıları yazmayacaksınız. Onlar açıklama. Burada yapacağınız işlem şu. Tırnak işaretini açtıktan sonra bir parmağınızla klavyedeki Alt tuşunu basılı tutarken diğer elinizle klavyenin numerik bölümünden 201 yazıp Alt tuşunu bırakacaksınız. Bıraktığınız anda Çerçevenin sol üst köşesi çizilecektir. Aynı şekilde Alt tuşu basılı iken 205 yazıp Alt tuşunu bıraktığınız zaman yatay çift çizgi çizilir. Bu çizgiden 27 adet çiziniz. En sonunda da Alt tuşu ile beraber 187yazınız bu da çerçevenin sağ üst köşesidir.

520 no lu satırda ise Alt tuşu ile 186 yazdığınızda dikey çift çizgi çizilir. 27 kez aralık çubuğuna basıp sonra yine Alt+186 yazın. Bu şekilde Alt tuşu ile beraber diğer çizgileri de üretebilirsiniz. Ayrıca 27 kez yatay çizgi çekmek yerine daha evvelki sayfalarda öğrendiğiniz STRING$ komutunu kullanarak tek bir komutla 27 çizgi çizebilirsiniz. Yani buna göre 510 no lu satırı şöyle de yazabiliriz:

510 LOCATE 6,25:PRINT CHR$(201);:PRINT STRING$(27,205);:PRINT CHR$(187)

Şimdi yukarıdaki programa bakarsak (tabi bu bir programın sadece menü kısmı) 10 nolu satırda ekran siliniyor. 20 nolu satırda ise bir GOSUB 500 komutu var ki bunun anlamı şudur. 500 no 'lu satıra git ve oradaki işlemleri yap. Ne zamana kadar; Ta ki RETURN komutunu görünceye kadar. Bu RETURN komutunun anlamı ise NEREDEN GELDİYSEN ORAYA DÖN VE BİR ALT SATIRDAN DEVAM ET. Demek ki program 20 no lu satırdan 500 no lu satıra geldiğine göre 620 no lu satırda RETURN komutunu görünce 20 no lu satıra geri dönerek bir alt satırdan yani 30 no lu satırdan çalışmaya devam edecek. Eğer 160 no lu GOSUB 500 komutu ile 500 no lu satıra gitmiş ise 620 no lu satıra gelip RETURN komutunu görünce 160 no lu satıra geri dönüp bir alt satırdan yani 170 no lu satırdan çalışmaya devam edecektir.

 

 

24.Sayfa 26.Sayfa

 

GWBASIC MENU


Eğer bu sayfaya bir arama motorundan veya her hangi bir şekilde direk geldiyseniz ve Ana sayfayı göremiyorsanız, Ana sayfaya ulaşmak için;

T I K L A Y I N