C++ için goto kullanımı

0
anonim
Eskiden beri goto terimi ile programcıların arasında ne olduğunu merak ederim. Hemen her kitapta goto teriminden neredeyse bir küfürmüş gibi bahsedilir ama yinede kullanımı anlatılır. Sonunda merakımı gideren cevabı Bruce Eckel'in Thinking in C++ kitabında buldum. Bu kitabın goto kullanımı ile ilgili kısmını aşağıda bulabilirsiniz.
"Goto kullanımı çoğu zaman kötü programcılıkla karıştırılır ki; çoğu zaman da öyledir aslında. Her goto kullandığınızda koda bir daha bakın, başka bir yol olmadığından emin olmak için. Ancak bazı ender durumlarda bir sorunun ancak goto ile çözüldüğünü görebilirsiniz, ama yine de dikkatli olun. İşte bir örnek:
//: C03:gotoKeyword.cpp
// The infamous goto is supported in C++
#include <iostream>
using namespace std;

int main() {
  long val = 0;
  for(int i = 1; i < 1000; i++) {
    for(int j = 1; j < 100; j += 10) {
      val = i * j;
      if(val > 47000)
        goto bottom; 
        // Break would only go to the outer 'for'
    }
  }
  bottom: // A label
  cout << val < endl;
} ///:~


Bir alternatif olarak dışardaki döngüyü test etmek için bir boolean yerleştirilebilir, ve iç döngüyede bir break konulabilir. Ama, eğer daha fazla for ve while döngülerimiz olsaydı içiçe bu iyi bir çözüm olmaktan çıkardı."

Görüşler

0
malkocoglu_2
||Bir alternatif olarak dışardaki döngüyü test
||etmek için bir boolean yerleştirilebilir

.. ya da, goto yerine, dongunun gereken kismini bir islev icine koyup, return kullanarak icice donguden cikabilirsiniz.

Goto'nun zararlari, eski ustalardan Djikstra tarafindan cok ünlü bir makalesinde beyan edilmisti.

Go To Statement Considered Harmful
http://www.acm.org/classics/oct95/

Iyi calismalar,

0
mentat

int main() {
long val = 0;
try{
for(int i = 1; i 47000)
throw benimciciexception();
}
}
catch(benimcicexception ex)
{
cout
exception mekanizmasini kullanmaya hic alisik degilim ama goto'dan hala bin kat daha iyidir. ya da degildir.. goto'yu sevmeyenlerdenim, derleyiciler de sevmezler ayrica. bulasmamakta fayda var..
0
mentat
forumda bi bozukluk var, bu benim yazdigim kod diil! bes alti kere post etmeye cabaladim, sistem php falan kasildi hata verdi, ustune blockquote icine koydum ama yarisini yedi mesajin..

kisaca forlarin basina bir try, goto yerine throw, label yerine de catch ekledim, exception handling iste..
0
mentat
off amaaan, kucuktur buyuktur isareti nanesi.
0
FZ
lt kullanin, gt kullanin ve de PRE html tag´ini kullanin ;-) dünya daha güzel bir yer olsun, sac bas yolmayin
Görüş belirtmek için giriş yapın...

İlgili Yazılar

Vpopmail Kullanım Kılavuzu

anonim

Vpopmail bir sanal domain ve sanal kullanıcı yonetim aracı olarak yazılmıştır, yazılmasında temel MTA (Mail Transfer Agent)olarak qmail ele alındığı için bu sadece bu MTA ile çalışır. Son zamanlarda postfix ile birlikte de çalışabilmesi için gerekli düzenlemeler yapılmıştır. Postfix ile çalıştırabilmeniz için yine aynı sitede bulunan vpopmail-postfix dökümanına göz atabilirsiniz.

Greg Wilder ile müzik, yaratıcılık ve GNU/Linux üstüne

FZ

Bilgisayarla müzik besteleme ve düzenleme konusunda önemli çalışmaları olan Greg Wilder ile müzik, bilgisayarlar, işletim sistemleri, yaratıcılık, yapay zekâ ve doğaçlama üstüne bir röportaj gerçekleştirdik.

Wilder onca iş güç arasında bizi kırmayarak sorulara epey detaylı cevaplar verdi ve Türkçe konuşan bilgisayar ve müzik dünyası ile iletişim kurabilmiş olmaktan ötürü memnuniyetini belirtti. Bu röportaj şerefine daha önce yayınlamamış olduğu iki parçayı MP3 olarak röportajın sonundaki bağlantılardan edinip dinleyebilirsiniz.

3... 2... 1... Yayındayız!

Internet Solucanlarının Çalışma ve Yayılma Yöntemleri

FZ

Şanslı bir azınlık GNU/Linux ile Internete bağlanmanın, e-posta okuyup dosya transferi yapmanın güvenli huzurunu yaşarken maalesef günümüdeki bilgisayar kullanıcılarının önemli bir kısmı sürekli irili ufaklı kurtçuklarla, solucanlarla boğuşmak durumunda.

Tacettin Karadeniz, Internet Solucanları başlıklı son makalesinde bu meşhur, küçük ve tüm dünyayı kaplayan zararlı yazılımların çalışma ve yayılma yöntemlerine değiniyor.

50 Sene Sonra Üniversite Olacak Mı? E-öğrenme Üstüne Serbest Bir Diyalog

FZ

Acaba sizce gelecek 50 sene içinde üniversiteler başta olmak üzere eğitim kurumları ve e-öğrenme nasıl şekillenecek? Bilgiye bakış açımız nasıl dönüşecek?

Bilgi biriktirme ve bunu sunmanın ötesine geçeceğimiz kesin. Günümüzde okul soru sormayı öğretmekten ziyade cevapları öğrenmeyi sağlayıcı bir rejime dönüşmüş durumda. Orta vadeli gelecek tahminlerimize göre, bilgi artık edinilmeye değer bir meta olarak görülmeyecek. Kolay elde edilen her şey toplumun gözünde değer yitirir ve aynı durum bilginin de başına gelecektir. Değer verilen şey güzel sorular olacak.

Unutmayın ki cevapların değeri düştükçe soruların değeri artar. Dolayısı ile insanları soru sormaya yöneltmek ve bunu sağlayacak türden soru sorabilme tekniklerini geliştirmek önemli olacaktır.

Yazının devamı buradan okunabilir.

Otostopçunun Galaksi Rehberi : Yeniden Raflarda

butch

"Galaksinin haritası bile çıkarılmamış ücra bir köşesinde, gözlerden uzak bir güneşin yörüngesinde, tamamıyla önemsiz küçük bir gezegen döner. Gezegenin maymundan gelen halkı genellikle mutsuzdu. Ağaçlardan inmekle büyük hata yaptıklarını düşünenlerin sayısı gün geçtikçe artıyordu. Bazıları ağaçlara çıkmanın bile yanlış bir hamle olduğunu ve okyanuslardan asla ayrılmamış olmaları gerektiğini söylüyordu. Sonra adamın birinin, sırf değişiklik olsun diye bundan böyle nazik davranmanın ne kadar iyi olacağını dile getirdiği için ağaca çivilenmesinden yaklaşık iki bin yıl sonra, bir perşembe günü, o önemsiz gezegen bir kestirme yol uğruna yok olup gidecekti. Ama bilinmeyen gerçek şuydu ki gezegenin yaratılış amacı yalnızca Nihai Soruya cevap bulmak için yapılan bir deneydi..."

Douglas Adams'ın efsane dizisi Otostopçunun Galaksi Rehberi yeniden raflarda. (Kabalcı Yayınevi)