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

Dilbilim ve Linux Buluşması: Morphix-NLP İncelemesi

FZ

DDİ (Doğal Dil İşleme, NLP - Natural Language Processing) yaklaşık son 40 yıldır önemli bir araştırma disiplini olagelmiştir. Dilbilim ve bilgisayar bilimleri yöntemlerini bir araya getiren bu alanda pek çok değişik uygulama ve çözüm bekleyen önemli problemler mevcuttur. Farklı dillerdeki çok büyük metin dosyalarını incelemek, örüntüleri (pattern) keşfetmek, dönüşümleri gerçekleştirmek, metinleri otomatik olarak sınıflandırmak, konuşma sentezlemek ve konuşmayı anlayıp metne dönüştürebilmek, bilgisayarları bizim anadilimizi anlayabilir hale getirmek yani onlara semantik yetiler kazandırmak, vs. DDİ dalındaki önemli meselelerden sadece birkaçıdır.

Ruby Hacking Guide Artık İngilizce

anonim

Ne zamandır Ruby ile ilgilenemiyordum. Ama gelişmeleri takip ediyorum. Bu sabah ruby-doc.org da okuduğum güzel habere göre Ruby Hacking Guide artık İngilizce ( "Bunun neresi güzel Türkçe olsa neyse" diyenler için daha önce Japonca olduğunu belirteyim) WorldLingo yardımıyla çevirilen belgeye tar.gz ve zip formatında erişebilirsiniz.

Doğru Düzgün Soru Sormanın Yolları

yalcink01

FM Forumda açılmış bir konu altında oluşan doğal süreç, bizi forumlarda ve e-posta listelerinde nasıl soru sormak gerektiği konusuna götürdü. Dernek listelerinde zaman zaman dalgalanmalar yaşanmakla birlikte, genelde ortanın üstü diye tabir edebileceğimiz bir ileti yazım tarzı var. FM Forum'un durumu da pek farklı değil. Yeni katılan arkadaşlar haricinde, acayip ve garip tarzda soru soran pek çıkmıyor. Bununla birlikte, söz konusu forum konusunda görülebileceği üzere, bazen iyi bir kılavuza ihtiyaç duyuluyor. Diğer forumlarda ise durum içler acısı :( Türkçe, Türkçe olduğuna bu kadar pişman edilebilir. İmla ve yazım kurallarındaki boşvermişlik bir tarafa, kelimelerde bile acayiplikler "var way!", "ajaip şeler oljek amma bnm sormk isterim...", şeklinde devam eden ucubeler etrafta cirit atmakta. Elbette ki tek bir kılavuz ile bütün bunları sonlandırmak ve insanları doğru yola sokmak mümkün değil -zaten ahir zaman peygamberliği gibi bir derdimiz de yok :)- ama bir yerden de başlamak gerek, değil mi? Peygamber olamadık diye hayatı tamamen boşvermek de olmaz.

Osman Yüksel'e, bu kadar işinin gücünün ve dahi Debian .po çevirilerinin arasında bu işe vakit ayırdığı için teşekkür ederim.

Türkçe çeviri için ilk sürüme http://www.geocities.com/yalcink01/smart-questions.html adresinden ulaşabilirsiniz. Her türlü geri beslemeye kapımız açıktır. Eklemek istediğiniz bölümler var ise, lütfen çekinmeden bildirin.

Fedora Core 1.0 ile Internet Bağlantı Paylaşımı

anonim

"Linux ile internet bağlantımı nasıl paylaştırabilirim?" sorusu mail listeleri ve forumların en popüler soruları arasındadır. Bu makale En azından fedora için ortaya net bir çözüm koyuyor ve diğer dağıtımlar içinde referans oluşturuyor.

Ruby ile Zamanlı Süreç İşletmek

malkocoglu

İşyerinde şöyle bir probleme çözüm bulmamız gerekti: Her gece çalışan toptan işleyen (batch) programlar var. Bu programlar SQL kullanarak veri tabanından veriyi dışarı, metin dosyasına aktarıyorlar. Ya da veri tabanında yedekleme yapıyorlar.


Fakat bazen bu programlar ya takılıp kalıyor, ya hiç işlemiyor, ya da tam işlerken arıza çıkıyor. Çözüm olarak, Ruby dilinde yeni bir betik tasarladık. Bu betik, "işletici" ve "izleyici" türden bir program olacaktı.

Gerisi icin Süreç İzleyen Ruby Programcığı