while döngüsüne döngü için gelen dönüştürmek için doğru yolu nedir?

oy
1

Ben formun döngü için vardır:

for (int i = from; i < to; i++) {
  // do some code (I don't know exactly what, it is subject to change)
}

Ve ben bir süre döngü (I değeriyle oynamak istiyorum çünkü çoğunlukla dönüştürmek istediğiniz idöngü ileri geri ve benim meslektaş döngü için bunu sorunlarına yatkın olduğunu düşünür. Ben eğilimindedir gitmek için içeri ) ona katılıyorum. Yani böyle bir şey yazmış:

int i = from;
while (i < to) {
  try {
    // do some code (I don't know exactly what, it is subject to change)
  } finally {
    i++;
  }
}

Hangi bazı bazı yüksek sesle bir yorum istenir. Olabileceğini (ve) birden sahip - My muhakeme sen Döngü içinde kod ne yaptığını biliyor kalmamasıdır continuekomutları.

Yanıt olarak o bu yazdı:

int i = from - 1;
while (++i < to) {
  // do some code (I don't know exactly what, it is subject to change)
}

onun daha az hatları Verilen, ama yine de benim kod daha şık olduğunu düşünüyorum - ne düşünüyorsun?

Oluştur 03/11/2009 saat 18:26
kaynak kullanıcı
Diğer dillerde...                            


6 cevaplar

oy
3

Ve ben (ben ileri geri ve benim meslektaş döngü için bunu sorunlarına yatkın olduğunu düşünür gitmek döngünün içine i değeriyle oynamak istiyorum çünkü çoğunlukla bir süre döngü dönüştürmek istiyorum. Ben eğilimindedir ) ona katılmak.

Bu çoğu dilde mükemmel kabul edilebilir. bir döngü için önlemek için hiçbir sebep yoktur.

Cevap 03/11/2009 saat 18:30
kaynak kullanıcı

oy
5

Bir döngü yapısında ederken endeks değeri ile oynamak sorunların eğilimli olursa olsun döngü yapısının ne .

O döngü veya while döngüsüne yönelik bir olmadığını fark etmeyecek, nokta dizin sonunda döngü fesih bir karar vermek için götürecektir nedir?

Eğer dizin sonunda sizin çıkış koşulu elde edilmesine neden olacaktır konum eminseniz, o zaman hepsi sizin veya bir süre için bir kullanımı da olmasın, ile ilgili olmalıdır olduğunu.

Cevap 03/11/2009 saat 18:31
kaynak kullanıcı

oy
0

Bunu yapmanın en kolay yolu, örneğin aşağıdaki gibi bir süre döngü dönüşmemesi için olacaktır.

for (int i = from; i < to; ) {
  // do some code (I don't know exactly what, it is subject to change)
  i += rand()*10;
}
Cevap 03/11/2009 saat 18:33
kaynak kullanıcı

oy
2

Daha kolay ve olabilir geliyor bana daha okunabilir dönüştürmek:

while (condition == true) {
   // do stuff
   // set the condition flag appropriately
}

ve dolayısıyla değişken incrementation döngünün sonlandırma ayırın.

Bir sınır kontrolü (örneğin bir döngü görürseniz i < limit) Ben (makul) tutarlı bir şekilde değiştirilmekte olduğu bir değişken var olduğunu varsaymak eğiliminde olacaktır. Orada istediğini yapamaz hiçbir neden, ama daha okunabilir ve daha beklenen davranış doğru eğilmek istiyorum.

Cevap 03/11/2009 saat 18:34
kaynak kullanıcı

oy
0

Ben seçmek hangi kod ile ilgili soruyu cevaplamak için; Ben senin uzun kod seçin. Onun ilk (uzun) döngü okumak için KADAR kolaylaştırır. Ve evet ben ikinci okuyabilir ancak deneyim çok sayıda bile bu döngü ne yaptığını bilmek iki kez bakmak gerekiyor. Artı derleyici yeterince kod optimize eder.

Cevap 03/11/2009 saat 18:35
kaynak kullanıcı

oy
1

Eğer uber-güçlü ile aynı (ve çok daha fazlası!) Yapmak varken neden saçma döngüler ile rahatsız goto?

i = fro;
my_loop:
//all your stuff here
i++;
if (i < to) goto my_loop;

Eğer azaltan ya değmesini programcılar biriyseniz gotoo zaman bu ile deneyebilirsiniz:

i = fro;
while(1) {
    //your stuff here
    if (++i < to) break;
}
Cevap 03/11/2009 saat 18:38
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more