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

LDP 10 Yaşında

yalcink01

01/11/2003 tarihi itibari ile Linux Docementation Project 10. yılını devirdi. Matt Welsh tarafından ilk How-To /* Installation How-To*/nun yazılması ile başlayan ve bugün 14 ayrı dilde 450 den fazla yazara sahip olan LDP bugün için Linux ve Açık Kaynak yazılımlarına kılavuz sağlama konusunda ev sahipliği yapmaya devam ediyor. Eh ne dileyim Nice Mutlu Yıllara!

Duyurunun tam metnine TLDP ana sayfadan ulaşabilirsiniz.

Visual Studio Zihninizi Çürütür Mü?

FZ

Yaklaşık 30 yıldır program yazan ve Microsoft Windows programlama kitapları ile saygı duyulan isimler arasında yer alan Charles Petzold'un son makalelerinden Does Visual Studio Rot the Mind? Ruminations on the Psychology and Aesthetics of Coding son zamanlarda okuduğum en güzel yazılardan biri.

Petzold, kullanılan araçların insan düşüncesini inceden inceye nasıl şekillendirdiğine dair mükemmel örnekler vermekle kalmıyor, aynı zamanda konuyu tarihsel bir bakışla da değerlendirip çarpıcı tespitlerde bulunuyor. Sadece Microsoft kullananların, sadece C++ ya da C# kodlayanların değil, GNU/Linux, Java ve VS.NET haricinde IDEler kullananların da okumasında fayda olan bir yazı.

CSound Journal Bahar 2006 Sayısı Çıktı

FZ

Bilgisayarlı ses sentezleme ve besteleme sistemi Csound kullanılarak yapılan ses programlama çalışmalarına ve makalelerine yer veren Csound Journal'ın Bahar 2006 sayısı çıktı.

Emacs ile Oracle Sql*Plus ve sql-mode

zekzekus

İş yerinde yoğun olarak Oracle veritabanı ile çalışıyorum. Sorun tespit etmek için sorgular yazıyorum, PL/SQL ifadeleri çalıştırıyorum. Bu işlemleri en rahat yaptığım araç Oracle tarafından sağlanan Sql*Plus. Rahat dediğime bakmayın sade ve son derece hafif olan bu istemcinin insanı deli eden “özellikleri” var. En basitinden yazdığınız uzun bir SQL cümlesinin başında küçük bir hata yaptıysanız, imleci geri götüremiyorsunuz (henüz enter tuşuna basmamış olsanız da). Daha önce yazdığınız komutları listeleyen ve çabuk bir şekilde kullanmanıza olanak veren bir tarihçe (history) özelliği de yok. Emacs editörü (editör demek bir nevi haksızlık oluyor artık) her zaman olduğu gibi bu konuda da devreye giriyor.

Emacs ve sql-mode ile ilgili bilgi veren yazının devamı burada...

Lessig, ''Code and Other Laws of Cyberspace'' kitabını okurlarıyla güncelleyecek

butch

Lawrence Lessig, ilk basımı 1999'da yapılan "Code and Other Laws of Cyberspace" kitabının yeni basımı için içeriğini güncellemek amacıyla ilginç ama kendisine yakışır bir yöntem seçti. Wiki tabanlı bir sistem aracılığıyla kitabın güncellenmesi sürecine herkes dahil olabilecek.
/.