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

Biz

SHiBuMi

"Dünya bizi kurtarma ve bize iyilik yapma aşkıyla dolu insanlar tarafından kana bulandı. Tarihteki bütün savaşları içi iyilikle dolup taşan, kendini bir dava uğruna feda ettiğini düşünen kurtarıcılar çıkardı.

Hitler Almanları, Stalin işçileri, Mao köylüleri kurtarmak için dünyayı kana buladı. Milyonlarca insan kurtarıcıların şefkat dolu ellerinde can verdi. Hep Biz dediler, hiç Ben deyip kendilerini düşünmediler.

Zemberek Nasıl Çalışır? 1. Bölüm: Sözlük ve Kök Ağacı

FZ

Zemberek bir kelimenin Türkçe olup olmadığına nasıl karar veriyor? Bu basit sorunun cevabı "verilen bir kelimeyi Türkçe kök ve eklerine ayırabilirseniz Türkçedir, ayıramıyorsanız değildir". Kısacası bir kelimenin Türkçe olup olmamasını anlamak için morfolojik analiz yapabilmelisiniz. Türkçe yazım denetimi yapabilmek için önceleri en sık kullanılan kelimelerin bir dosyaya konulup gelen kelimelerin o dosyadan kontrol edilmesi gibi ilk bakışta mantıklı görünen ama biraz inceleyince pratik olmadığı anlaşılan yöntemler de düşünülmüştü. Bu tür yöntemlerin yetersiz olan %98-99 doğrulukla çalışması için bile milyonlarca kelimeyi içermesi gerekir.

Makalenin devamı: http://zembereknlp.blogspot.com/2007/02/zemberek-nasl-alr-1szlk-ve-kk-aac.html

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?

C Programlama Dilinin Evrimi

sametc

Aşağıdaki yazı benim çok ilgimi çekti paylaşmak isterim sanırım herkes benim gibi bu dilin nasıl ortaya çıktığını merak etmiştir.

C'nin tarihini tartışmaya UNIX'ten bahsedilmeden başlanamaz çünkü işletim sistemi ve sistem üzerinde çalışan programların bir çoğu C'de yazılmıştır.

İnsanlarda, hayvanlarda ve bilgisayarlarda zekâ

FZ

Bilim ve Gelecek dergisinin Mayıs sayısı bayilerde. Kapak konus: İnsanda, bilgisayarda ve hayvanda zeka.

Bilim ve Gelecek son sayısında, akıl, bilinç, zekâ, anlama, uslamlama, zeki davranış, beceri gibi kavramlara değiniliyor ve hayvanlarda, insanda ve bilgisayarda zeki davranışların olup olmadığını tartışılıyor. "İnsan, bilgisayar ve zeki davranış" başlıklı makalesinde Ulaş Başar Gezgin, bilişsel bilimlerin çerçevesini açıkladıktan sonra bilgisayar ve insan taraftarlarını tartıştırıyor. Bir testten yola çıkarak şu soruya yanıt arıyor: İnsan ussal bir varlık mı? Tuğrul Atasoy ise, soyut zekâmızın evrimsel köklerini en yakın türlerden başlayarak hayvanlarda aradığı makalesinde, hayvanlar dünyasında bilinç ve zekâya ilişkin çarpıcı örnekler veriyor.