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

ID3 - Öğrenen Karar Ağacı

malkocoglu

Öğrenen algoritmalara giriş olarak ID3 tekniğini sitemizde işliyoruz. Yapay zekâ ile ilgilenen yazılımcı arkadaşların örnek LISP kodları ve resimler ile destekli bu yazıyı beğeneceğini umuyorum.

Temel C kültürü

gencbeyin

Steve Maguire'in Hatasız Kodlama isimli kitabını elime aldığımdan itibaren ön kapağında Microsoft Press yazıyor olması hiç rahatımı bozmadı. Bana harika bir kitap gibi gözüküyordu ve gerçekten öyle çıktı. C programlamayı çat pat biliyor, bilgilerimi derinleştirmek için bir kaynak arıyordum, ve tam istediğimi bulmuşum. Burda yazılanların çoğunun open source projelerde uygulandığı da gözümden kaçmadı. Kısacası ANSI C hakkında temel kültür kazandıran bir kitap arıyorsanız, Arkadaş Yayınları'ndan Hatasız Kodlama'yı şiddetle tavsiye ederim.

KNOPPIX ile disk kurtarma

yalcink01

Evdeki sistem yine çöktü. Garibimi bu sefer tekrar kurmak yerine, kurtaralım bari dedik. Knoppix'in bu konudaki maharetinden bahsedilip duruluyor. Ben de evdeki emektar Knoppix Cd si ile sistemi kurtarmaya karar verdim. İyi bir kılavuz bulup önce dersimizi çalıştık. Çalışırken yazmak gibi bir huyum olduğu için arada çevirmişte olduk. Benim işime yaramadı /* çünkü Knoppix CDim çalışmıyor. Garibim perişan olmuş yüzü gözü çizik içinde*/ belki birinin işine yarar. KNOPPIX İLE SİSTEM KURTARMA

Saygılarımla,
Yalçın KOLUKISA
NOT: Çeviride oldukça fazla imla hatası olma ihtimali mevcut. Henüz kontrol yapmaya fırsatım olmadı. Yazım ve imla hatalarını bildirirseniz sevinirim. Hafta sonu gerekli düzenlemeleri yapmak niyetindeyim.

Matrix ve Felsefe

FZ

Sizin de kafanız Keanu Revees gibi Matrix'ten sonra karıştıysa bu kitap kesinlikle sizin için yazılmış. Eğer film kafanızı karıştırmadıysa, hemen bir doktora görünün. Matrix'i henüz seyretmediyseniz, o zaman bu kitabı mutlaka okumalısınız. Böylece bu filmin insanlar için neden o kadar önemli olduğunu bulursunuz.

GNU/Linux Dağıtımları Belgesi

Evreniz

Linux Dağıtımları Belgesi, GNU/Linux ile tanışmaya hazırlanan kullanıcıların cevap vermekte -ve hatta insanlardan cevap almakta da- zorlandıkları "Hangi Linux dağıtımı?" sorusuna anlamlı bir yanıt verebilmeleri için hazırlanmaya başlanmış, belli başlı dağıtımların özelliklerini anlatmayı ve bu yolla Linux ve dağıtımlar hakkında kullanıcıların kafasında anlamlı bir fikir oluşturmayı hedefleyen bir belge.