Makale GoSub ve Return

Bu Makale Yararlı Oldu mu?

  • Evet

  • Hayır


Sonuçlar yalnızca oylamadan sonra görülebilir.
Bu ifade, herhangi bir şartta, prosedür içerisinde belirtilen etiket satırına gitmesi ve sonrasında
Return ifadesiyle de geri gelerek kaldığı yerden devam etmesi istendiğinde kullanılır.
Birden fazla GoSub ifadesi kullanılabilir ve bu ifadelerle aynı veya farklı etiket satırlarına gidilebilir.
Etiket satırı olarak belirtilen ifade, GoTo deyiminde olduğu gibi metin veya sayısal olabilir.
Metin olursa etiket satırı aşağıdaki kodda olduğu gibi : (iki nokta) ile bitirilmeli, Sayısal olursa : (iki nokta) işaretini kullanmanıza gerek yoktur.
GoSub ile varış noktasına ulaşıldıktan sonra Return ifadesiyle bildirime geri dönecektir.
GoSub ve onun karşılığı olan Return aynı prosedür içinde yer almalıdır.
Bu, başka bir prosedürün içinden bir alt yordamı çağırmak için GoSub'ı kullanamayacağınız anlamına gelir.
Fazla kullanılan bir ifade olmamasına karşın, koşullarınız arttığında prosedür içerisinde istenilen satıra giderek farklı farklı işlemler yaptırabildiğiniz bir ifade olarak kullanılabilir.

Bu ifadeyi net olarak anlayabilmeniz için aşağıda 3 örnek verilmiştir.

Örnek Kullanımlar
PHP:
Sub ExcelTurkey()
    Dim a As Integer
    a = InputBox("Lütfen sayısal bir değer girin")
    If a < 10 Then GoSub devam
        MsgBox a
    Exit Sub
devam:
    a = a + 10
    Return
End Sub
PHP:
Sub ExcelTurkey()
    Dim a As Integer
    a = InputBox("Lütfen sayısal bir değer girin")
    If a < 10 Then GoSub 10
    If a = 10 Then GoSub esit
        MsgBox a
    Exit Sub
10 a = a + 10
    Return
esit:
    a = a - 5
    Return
End Sub
PHP:
Sub ExcelTurkey()
    GoSub ANoktasi
    GoSub BNoktasi
    GoSub 1000
    Exit Sub
ANoktasi:
    MsgBox "Şu an A Noktasındasınız"
    Return
BNoktasi:
    MsgBox "Şu an B Noktasındasınız"
    Return
1000
    MsgBox "Şu an hedefe ulaştınız.."
    Return
End Sub
 
Admin

Yorumlar

#3
Makale için teşekkür ederim. Bugüne kadar GoTo kullandığım hiçbir koddan istediğim verimi alamadım. Hep deneyip, daha sonra başka çözümlere yöneldim. Arada bir denemek lazım. Ama bir yandan da düşününce acaba nerede lazım olacak diyor insan. Sonuçta GoSub ile bir yere gönderip kodu çalıştırıp geri gelmesini sağlayacaksak, neden mevcut satıra direkt o kodları yazıp çalıştırmıyoruz ki diye düşünüyor insan. Ama tabii tecrübe etmek lazım, belki gerekli olacağı bir yer vardır :) Mesela ikinci verilen örnek, If-Then-Else kod yapısının daha da uzatılmış hali gibi duruyor.

Bir de merak ettiğim birşey var. Bu etiketlerden sonra belirtilen kodlar normal kod işleyişinde kale alınmıyor değil mi ?

Yani;

-- Kodlar
If Then GoSub veya GoTo EtiketA
--Kodlar

EtiketA:
Return (GoTo kullanılırsa bu ifade yok)

Böyle bir kod yapısında if koşulu sağlanmasa bile EtiketA dan sonra gelen kodların işleyiş sırasına göre sub yordamın içinde çalışma ihtimali var mıdır ?
 
Üst Alt