Yazan : Şadi Evren ŞEKER
Programlama dillerinde kullanılan ve dilin içerisindeki akışın bir başka noktaya yönlendirilmesini sağlayan komutlardır. Yapısal programlama dillerinde (Structured programming languages) bu tip atlama komutlarının kullanılması yasaktır. Ancak programlama dilleri, programcıya tanıdıkları esneklikten dolayı gitme komutlarını desteklerler.
Basit bir etiket ve gitme komutu kullanılmış kod aşağıdaki şekilde yazılabilir:
Yukarıdaki kodda, 6. Satıra bir etiket (label) yerleştirilmiştir. Bunun anlamı kodun herhangi bir yerinden bu satıra dönüşün sağlanabilmesi için bir isim verilmesidir. Nitekim kodun 10. Satırında bulunan “goto dongu;” satırı ile kastedilen 6. Satıra atlanmasıdır.
Koddan anlaşılacağı üzere 9. Satırda buluna if koşulu sağlandığı sürece 9 . satırda bulunan ve kodun 6. Satırına geri atlanmasını sağlayan işlem yapılmaktadır. Şayet koddaki bu if koşulu gerçeklenmezse bu durumda goto yapılmayacak ve 11. Satırdan çalışmaya devam edecektir.
Kodun çalışan hali aşağıda verilmiştir:
Görüldüğü üzere i değişkenin değeri 0’dan başlamış ve 10’dan küçük olduğu sürece kodun 6. Satırına geri dönülerek işlem devam etmektedir. Buna mukabil i değeri 10 veya daha yüksek olduğunda kodun 11. Satırından devam edilmiştir.
Yukarıdaki bu yaklaşımı döngüler ile sağlamak da mümkündür. Yukarıdaki etiket/gitme yapısını aşağıdaki şekilde döngü ile yazabiliriz:
Yukarıdaki bu yeni kodun çıktısı, bir önceki kod ile birebir aynıdır. Buradaki fark ise kodun 6. Satırında bulunan while döngüsü (loop) sayesinde işin tekrar edilmesidir.
İçiçe döngülerin (nested loops) etiket/gitme yapısı ile kodlanması
Örnek olarak ekrana 2 boyutlu bir tabloyu bastıran kodu düşünelim. Mesela ekrana bir çarpım tablosu bastırmak isteyelim ve bunu etiket/gitme yapısı ile çözmek isteyelim. Kodumuz öncelikle döngüler marifeti ile yazalım:
Görüldüğü üzere kodun 6. Satırındaki döngü, 5. Satırındaki döngünün içindedir (nested loop) ve sonuç ekrana bir çarpım tablosunu 1-5 arasındaki sayılar için basar. Kodun çıktısı aşağıdaki şekildedir:
Kodun aynısını etiket/gitme yapısı ile aşağıdaki şekilde kodlayabiliriz:
Yukarıdaki yeni kodun çıktısı da bir önceki kod ile aynıdır. Burada değişen tek şey, döngü yapılarını goto komutu ile sağlamamız ve koddaki koşullar ile döngü koşulunu bağdaştırmamızdır.