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

CVS ve Dallar (Branches) İle Karmaşık Yazılım Yönetimi

malkocoglu_2

Yazılım sektöründe anahtar teslim projeler için bir derece, ürün ile uğraşmakta olan takımlar için kesinlikle lazım olacak bir kaynak kod deposu özelliği vardır. Dallar, yâni branch kavramı. Branch kullanımı her kaynak kod idare programında farklıdır, ve tabii ki açık yazılımın favori programı CVS'te de branch desteği mevcuttur fakat bazı konularda dikkatli olmak gerekmektedir. Yazılım sektöründe birçok konuda olduğu gibi elde bir "yapılması uygun olan/olmayan" gibi bir liste, önceki tecrübelere dayanarak mevcuttur, bu yazıda bu tür tavsiyeleri toparlayarak, kendi tecrübelerimiz ışığında sunmaya uğraştık.

Not: Makale, GNU Emacs ve LaTeX ile yazılmıştır.

Açık Akademi'den Ajax kitabı: Sağlamlığı Kanıtlanmış Tekniklerle Web 2.0 AJAX

yenigul

New Riders yayınlarından çıkan Bulletprof AJAX kitabı, Açık Akademi yayınlarından Sağlamlığı Kanıtlanmış Tekniklerle Web 2.0 AJAX adıyla yayınlanmıştır.

Yeni nesil versiyonlama sistemleri - Subversion

anonim

Büyük olsun küçük olsun tüm şirketlerde, şirket içerisindeki dökümanların akışının ve arşivlenmesinin kontrolü için kullanılan bir sistem vardır. Subversion bu sistemlerden biridir.

Bu amaçla kullanılan bilgisayar programlarına en çok yazılım şirketlerinde rastalanmaktadır. Çünkü yazılımcılar gün içinde sürekli kodlarda ufak değişiklikler yapmaktadırlar. Gerektiğinde dosyaları eski tarihteki versiyonlarına geri döndürmektedirler. Bunları yaparken diğer yazılımcıların etkilenmemesi gerekmektedir. İşte bu anda devreye giren bu programlar bir dosya üzerinde farklı kullanıcılar tarafından aynı anda yapılan değişikliklerin birbirini yok etmesini engeller.

Makalenin tamanını http://www.riskturk.com/obje7/yayin_subversion_1.php adresinden okuyabilirsiniz.

Bilgisayar Uzmanlığı kitabı çıktı...

anonim

Hepimizin bildiği gibi, üniversitelerin Bilgisayar muhendisliği bölümlerinden mezun olanlar, ihtiyacı karşılayamadığı için, branş dışı pek çok insan bilgisayar mühendislerine ait görevleri üstlenmeye başladılar. Bu arkadaşların bilgileri genellikle belli bir teknoloji uzerine kurulu ve bilgisayar mühendisliği bolumlerinde okutulan temel bilgilerden yoksun durumdalar.

Bilgisayar mühendisliği bölümlerinde okuyan arkadaşlar ise, öğrendikleri teorik bilgilerin çalışma hayatında nasıl kullanılacağı hatta kullanılıp kullanılmayacağı konusunuda yeterli bilgiye sahip değiller.

OpenBSD'de Basit Ağ Ayarları ve PF (Packet Filter) Kullanımı

honal

OpenBSD üzerinde PF(PacketFilter) kullanarak kendi "firewall" sistemlerini oluşturmak isteyenler için yol gösterici olabilecek bir dökümanı http://cc.kou.edu.tr/huzeyfe/openbsd/pf.pdf adresinden elde edebilirsiniz.