'While' ve 'do' loop'ları arasındaki fark nedir? Geliştiriciler için en iyi uygulama nedir?


cevap 1:

while ve do bir farkla neredeyse aynıdır.

while (koşul) {} da ilk kez değerlendirilir.

while do {} while (koşul); en azından bir kez olur.

bu yüzden tamamen ihtiyaçlarınıza bağlıdır.

her zaman birini diğerine dönüştürebilirsiniz (ancak yapılmamalıdır çünkü bu yüzden var olurlar).

yapmak için {} while (koşul) yapmak istiyorsanız bir while kullanabilirsiniz

int isFirst = true;

while (koşul || isFirst) {isFirst = yanlış; }

ama bunu yaparken ne yapmalıyım? bu yüzden her biri kodu daha küçük ve yazmayı kolaylaştırmaktır, bu yüzden herhangi birini kullanmak kötü değil, sadece gereksinimlere daha uygun olanı kullanın.


cevap 2:

Hangi dilden bahsettiğinizi fark eder. Lisp'teki bir do döngüsü, bir C do döngüsüne göre bir döngü için C'ye benzer. Ancak, en azından C dil ailesinde bu sorunun açıklanması son derece kolaydır. İki döngü, durumun ne zaman test edildiği dışında aynıdır. While döngüsü gövdeyi çalıştırmadan önce durumu test eder. Bir do-while döngüsü, gövdeyi çalıştırdıktan sonra durumu test eder. Bu sadece döngüde ilk kez bir fark yaratır. Bir do-while döngüsü, durum test edilmeden önce her zaman gövdeyi bir kez yürütür. Bir while döngüsü, vücudun ilk yürütülmesinden önce durumu test eder, bu nedenle durum başladığında durum yanlışsa vücudu hiç yürütmez.

En iyi uygulama, kodun ne yaptığını açıkça ifade eden birini kullanmaktır. Her iki döngüde de uygulanan iki eşdeğer versiyon örneği ile açıklayayım.

İlk olarak, bir while döngüsü olarak doğal olarak ifade edilen bir şeyiniz olduğunu hayal edin:

while (work_to_do) {do_work (); }

Bir do-while döngüsü ile eşdeğer kod yazabilirsiniz, eğer work_to_do yanlışsa, ilk yinelemede do_work () yürütülmesini önlemeniz gerekir:

do {if (work_to_do) {do_work (); }} while (work_to_do);

İkisi aynı şeyi yapacak ve iyi bir optimize edicinin, work_to_do yedek testi yerine aynı kodu üretebileceğini varsayarak, optimize edileceğini varsaymazdım. Bu durumda, bir süre kullanmalısınız.

Şimdi, doğal olarak bir do-while döngüsü olarak ifade edilen bir şeyiniz olduğunu hayal edin:

do {do_work (); } while (still_have_work_left);

Bunu bir while döngüsü olarak ifade etmek için, ilk uygulamayı garanti etmeniz gerekir. Bunu iki belirgin yoldan biriyle yapabilirsiniz:

first_iteration = doğru; while (still_have_work_left || first_iteration) {do_work (); first_iteration = yanlış; }

veya

işi yapmak(); while (still_have_work_left) {do_work (); }

En iyi uygulamalar için temel kural, dilin farklı bir döngü yapısını simüle etmek için kod ekliyorsanız, kullandığınızdan ziyade bu döngü yapısını kullanmanızdır.


cevap 3:

C, C ++ ve Java'da “do-while” döngüsü her zaman en az bir kez yürütülür ve durumu sonunda test edilir ve “while” döngüsü sıfır veya daha fazla kez yürütülür ve durumu başlangıçta test edilir.

“Do-while” döngüleri için çok az kullanım vardır ve bu kullanımlar bile bir süre true ve döngü sonunda koşullu bir ara ile değiştirilebilir.