Visual Basic GoTo

Herkese merhabai Visual Basic yazılarımıza kaldığımız yerden devam ediyoruz. Bu yazımızda Visual Basic’te GoTo deyimi üzerinde duracağız. Hadi başlayalım !
GoTo, birçok programlama dilinde var olan bir şey, yani Visual Basic’e özgü birşey değil. Fakat son zamanlardaki dillerde artık destek verilmemeye başlandı. GoTo yerine farklı kombinasyonlar kullanılmakta. Visual Basic gibi eski bir programlama dilinde de olmazsa olmazdı tabi 🙂
GoTo, Türkçe’sinden de anlaşılacağı üzere bir yere gitmek için kullanılıyor ve GoTo deyiminden sonra gideceği yerin adını vermeniz gerekiyor. Kod, GoTo alanına gelince ilgili kod bloğuna gidecek ve GoTo ile hedef kod bloğu arasındaki kodları atlayacaktır. Örneğin, bir tane if koşulumuzun olduğunu düşünelim. if içerisinde herhangi bir şeyi kontrol ettikten sonra artık if’ten sonraki belli sayıda kodun işlenmesine gerek yoksa, yani o aradaki kodlar atlanacaksa araya bi GoTo koyarak istediğiniz kodu atlayarak işleme devam ettirebiliyorsunuz.
GoTo deyimi en çok fonksiyonlarda kullanılmakta. Örneğin, bir veritabanı işleminiz var diyelim. Veritabanına bir sorgu gönderip sonucu almak istiyorsunuz. Veritabanı sorgusu sonucu elde ettiğiniz verileri bir tane GridView’de göstereceksiniz fakat boş veri gelirse de GridView’i dahi göstermeyeceksiniz diyelim. İşte bu durumda GoTo kullanabilirsiniz (Tabi if şartı ile de bu yapılabilir fakat GoTo ile de yapılabilir). Yada farklı yerlerde birden çok veritabanı işlemi yapmanız gerekiyor, veritabanı bağlantısını açtınız ve işlemlerinizi yapıyorsunuz. Yapacağınız işlemlerde belirli şartlara göre yapılıyor. Her bir şart için bir if koyup if bloğu içerisinde de yapılacak işlemi yapmanız ve sonrasında veritabanı bağlantısını kapatmanız gerekiyor. Yani her if bloğunda tekrar eden aynı kodlar bulunacak. İşte böyle bir durumda tekrar eden kodları bir tane GoTo bloğu içerisine koyup if bloklarının kapanışını da ilgili GoTo labeline götürürseniz hem tekrar eden kod yazmak kurtulursunuz, hemde bir tane if sağlanırsa diğerlerine bakılmadan doğrudan işlemin tamamlanmasını sağlayabilirsiniz.
Yada bir işlem yapıyorsunuz fakat işlemde bir hata olabileceğinden korkuyorsunuz diyelim. İşte burada Visual Basic’in sevdiğim yönlerinden bir tanesi olan On Error GoTo ifadesi yardımınıza koşuyor olacaktır. Fonksiyonu tanımlayıp fonksiyon bloğu içerisine On Error GoTo yazıp sonrasında GoTo labeli verirseniz fonksiyon içerisinde herhangi bir yerde hata olması durumunda GoTo ile yönlendirme yapıp sonraki işlemleri atlayabilir ve örneğin kullanıcıya “Bir hata oluştu” şeklinde bir uyarı gösterebilirsiniz.
GoTo deyiminin kod yapısı şu şekilde olmaktadır;
Sub fonksiyon_adı()
' Fonksiyon işlemleri
' Fonksiyon işlemleri
' Fonksiyon işlemleri
GoTo goto_label
' Fonksiyon işlemleri
' Fonksiyon işlemleri
goto_label:
' GoTo içerisinde yapılacak işlemler
End Sub
Mesela buradaki fonksiyonu çağırdığınızda fonksiyon içerisindeki ilk üç satır yapılacak, dördüncü satırdaki GoTo goto_label satırına gelinince sonraki iki satır atlanıp goto_label: satırından sonrasına geçilecek ve oradan sonraki kodlar işlenecektir.
On Error GoTo deyiminin kod yapısı da şöyle olabilir;
Sub fonksiyon_adı()
On Error GoTo goto_label
' Fonksiyon işlemleri
' Fonksiyon işlemleri
' Fonksiyon işlemleri
goto_label:
' GoTo içerisinde yapılacak işlemler
End Sub
Burada ise fonksiyon çağrıldığında kod bloğu içerisindeki herhangi bir yerde hata olması durumunda altındaki kodlar atlanıp doğrudan goto_label: satırına gidecek ve oradan devam edecektir. Herhangi bir yerde hata olmaması durumunda ise goto_label: satırı ve sonrasındakiler işlenmeyecektir.
Bir GoTo bloğu içerisinde herhangi bir kodun olması zorunluluğu da yok. Mesela sadece fonksiyonu bitirmek için GoTo deyimi kullanılabilir. Yani şöyle;
Sub fonksiyon_adı()
' Fonksiyon işlemleri
' Fonksiyon işlemleri
' Fonksiyon işlemleri
GoTo goto_label
' Fonksiyon işlemleri
' Fonksiyon işlemleri
goto_label:
End Sub
Görüldüğü üzere goto_label: satırı ile bir tane GoTo bloğu oluşturduk fakat içerisine herhangi bir şey yazmadan doğrudan fonksiyonu bitirdik. Bu durumda fonksiyon içerisinde herhangi bir yerde hata olması durumunda doğrudan goto_label: satırına atlanacak, kod bloğu içerisinde bir şey olmadığı için End Sub satırına geçilecek ve fonksiyon bitirilecektir. Bu kullanım, return; yani herhangi bir şey döndürmeden fonksiyonu bitirme ifadesinin bir türevi diyebiliriz. İkiside aynı mantıkta olmakta. return; diyerek geriye bir şey döndürmeden fonksiyonu bitirebildiğimiz gibi bahsettiğim GoTo kullanımı ile de fonksiyonu bitirebiliyoruz.
Evet bu yazımızda bu kadardı, tüm Visual Basic yazılarımıza buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.