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

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!

Manning'den Yılbaşına Gerisayım

tongucyumruk

Yazılım dünyasının sevilen yayıncısı Manning, Aralık ayı boyunca bir gerisayıma girdi. Normalde her gün bir Günün İndirimi yayınlayan Manning yılbaşına kadar her gün çeşitli indirimlerle bizleri daha çok kitap almaya teşvik edecek gibi duruyor. Bugüne kadar çıkan kampanyaları görüntülemek ve bundan sonrakileri takip etmek için buradan buyurun.

Bilim ve Gelecek: 2. Sayı Çıktı

FZ

Bilim felsefesinde büyük bir dönüşümü başlatan Thomas Kuhn´un gözünden Kopernik Devrimini okumak ister misiniz? Anadolu´da binlerce yıl önce yaşamış insanlara dair araştırmaların yapıldığı Hacettepe Üniversitesi Biyolojik Antropoloji Laboratuvarı´nda bir gezintiye çıkmaya ne dersiniz? Doğurgan sihirli kareler ilginizi çeker mi? Klingsor´un İzinde isimli bir kuantum roman başucu kitabınız olabilir mi? Psikiyatristlere başvuran hasta sayısına baktığınızda gördükleriniz size psikiyatrinin ilerlediğini mi yoksa insanların delirdiğini mi düşündürtüyor?

Yukarıdaki cümlelerin işaret ettikleri ilginizi çekiyorsa bir gazete bayisine uğrayıp Bilim ve Gelecek dergisinin ikinci sayısını alabilir, bu konuda kendini ispatlamış bir kadronun çıkardığı dolu dolu bir dergiyle vakit geçirmenin hazzını yaşayabilirsiniz.

Türkçe Lego Mindstorms Dökümanları

vst

Lego Mindstorms, isminden de anlaşılacağı gibi, zamanında belki de istisnasız hepimizin oynadığı LEGO firmasının oyuncak setinin Java programlama dili ile programlanabilir ve hareket kazandırılabilir bir versiyonudur.

O´Reilly´den 2003´ün En İyi Makaleleri, İpuçları ve Kitapları

FZ

Bilgi işlem dünyasının efsanevi yayıncısı O´Reilly ziyaretçi istatistikleri ve okur görüşlerine dayanarak Top 10 makalelerini, ipuçlarını, kitaplarını, vs. seçti. Python, Mac OS X, RegExp, PHP, Mozilla, Python, RSS, Flash MX, Extreme Programming, Java, mplayer, vs. gibi konularda sene boyunca en çok ilgi görmüş, bilgilendirici, vizyon açıcı makalelerin listesini ONLamp Best of 2003 ve O´Reilly Best of 2003 adreslerinde bulabilirsiniz.

Bu arada FM editörlerinden sundance arkadaşımızın mplayer ile ilgili makalesinin ONLamp Top 10 listesinde ikinci sırayı işgal ettiğine dikkat çekmek isterim. Gönül isterdi ki, dünya çapında network adminleri arasında infial yaratan Netcat and Reverse Telnet makalesi de listeye girsin ;-) Ama olsun, o bizim gönüllerimizde alması gereken yeri çoktan aldı :)