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

SFTP chroot için mini nasıl belgesi

conan

Amaç:
Bilgilerin şifreli olarak transfer edileceği bir sftp sunucusu yaratmak.

İhtiyaçlar:
SFTP kullanıcılarını işletim sistemi dosyalarından uzak tutmak. Bağlantıları için kendilerine özel bir chroot yaratmak.
SFTP kullanıcılarının sunucuya ssh üzerinden ulaşımını engellemek.
Becerebilirsek aynı servisi normal sistem yönetimi işlerinde de kullanabilecek şekilde ayarlamak.

Çözüm:
OpenSSH kaynak kodu içerisindeki sftp-server.c dosyasını yamamak ve kullanıcıları sınırlandıran bir kabuk yaratmak.

Nasıl?

UNIX´ten Nefret Etmenin Kitabı

tongucyumruk

Ortalıkta M$, DOS, XP, UNIX, Linux vs... gibi kelimelerin olmadığı eski devirlede insanlar Lisp Machine'ler, ITS, TOPS gibi sistemler kullanırdı. O günlerde işletim sistemlerinin görselliği, ikonları vs... pek te önem arzetmezdi çünkü çoğu insan CRT monitörler yerine TeleType'lar (meşhur tty) yoluyla bilgisayarla iletişim kurarlardı. Zamanla sunucu tarafında UNIX ağırlığını koyarken bir yandan da masaüstü diye bir piyasa ortaya çıkmış ve IBM/PC ile Macintosh bu piyasada at koşturur oldular...

Kent Pitman Lisp ve ötesi ile ilgili soruları yanıtladı - Bölüm 1

FZ

Kent Pitman, 2001 yılının sonuna doğru Slashdot camiasının Lisp/Scheme, standartlar, yazılım geliştirme ve diğer konulardaki sorularını cevapladı, merakları nı giderdi. Bir hayli detaylı olan bu soru cevap seansı uzunluğundan ötürü iki bölümde yayınlandı. Birinci bölüm huzurlarınızda...

Erciyes Üniversitesi Linux Topluluğu GNU/Linux Dergisi Çıkardı

anonim

Bilişim Kulübü altında faaliyet gösteren Erciyes Üniversitesi Linux Topluluğu (EULT) 2007 yılında kuruldu. Açık kaynak kodlu yazılıma katkıda bulunmak, GNU/Linux'a yeni başlayanlara rehberlik etmek amacıyla yola çıkan topluluk 2008 Ocak ayı itibarı ile e-dergisinin ilk sayısını yayınladı.

Dergiye http://universitem.erciyes.edu.tr/eult_e_dergi_1.pdf adresinden ulaşabilirsiniz.

Mayıs 2009 Sayısı ile e-Bergi sizlerle

ilke444

Aylık bilgisayar bilimi ve özgür yazılım derginiz e-bergi, Mayıs 2009 sayısında sizlere yine dopdolu bir içerik sunuyor.