ETE HOCAMIZ DAN YARDIM GOTO G0SUB RETURN NASIL KULLANILIR

Başlatan harmanx, 23 Nisan 2012, 17:59:02

harmanx

 SAYIN  Hocam
GOTO GUSUB RETURN program yazılırken nerelerde nasıl kullanılır gosub,goto,return arasındaki farklar nelerdir.. kafam karıştı??

muhittin_kaplan

ben cevaplasam ayıp etmiş olmam sanırım

goto: belirtilen etikete gider. sadece bu kadar.
gosub: belirtilen alt programa gider (alt program bir etiketle başlar ve return ile biten program blogudur)
return:gosub ile gidilen altprogramda bulunur ve geri dönmeye yarar.

http://muhittin-kaplan.blogspot.com/2012/02/proton-plus-derleyici-bildirileri.html

ete

Ayıp olmaz elbette . Bende ek açıklama ilave edeyim

Her ikiside dallanma yani programı bir yerlere yönlendirme komutudur.
Goto ile gidilen yerden yalnızca başka bir Goto ile dönülür. Bu nedenle sonuçta gittiğiniz yerin altına yazacağınız bir goto komutu sizi hep aynı yere götürür.

Gosub ile gidilen yerden ise RETURN komutu ile dönülür. Bu komut goto ya göre avantajlıdır. Çünki program GOSUB komutunu aldığı zaman ayrıldığı yerin adresini STACK denilen ara hafızaya yazar otomatik olarak. Orada işini bitirip RETURN komutu ile geri dönerken Stack da yazılı olan adresi geri alır ve aynı yere döner. Bu nedenle daha kullanışlı bir komuttur. Tabiiki bazı kısıtlamalar mevcut. Bir birinin içine girmiş Gosub komutları sayısı işlemci tipine bağlı olarak değişir. Ortalam 5-6 tanedir. Yani;
- Bir yere GOSUB ile gittin, ger dönmeden oradan başka bir yere yine GOSUB ile gittin , geri dönmeden yine başka Gosub ile yine başka bir yere gidersen iç içe geçmiş 3 adet gosub kullanmış olursun. Bu kısıtlama aslında stack boyutu ile alakalıdır. Her gidilen gosub adresi stack'e yazıldığı için bu şekilde gitmeye devam ederseniz sonuçta stack da yazılacak yer kalmayacak ve bu nedenle de program gideceği yerleri bulmakta zorlanıp kilitlenecektir.
Gosub ile gidilen yerden mutlaka return ile dönülmelidir. Dönüşü Goto ile yaparsanız stack den dönüş adresi alınamayacağı için o adres stackde sabit kalır ve silinemez. Bu şekilde kullanım kısa sürede stack taşmasına sebep olup program yine kilitlenir.
O halde temel kaide unutulmamalıdır. Gosub ile gidilen yerden Return ile dönülür.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

harmanx