For döngüsünün yapıp while döngüsünün yapamayacağı bir şey var mı?

Lorem Ipsum

Kilopat
Katılım
21 Eylül 2015
Mesajlar
966
Çözümler
4
For x 1'den 5'e kadar kodunu while dongusuyle soyle yazabiliriz:
x=1 while x<5 x=x+1

İkisinin de onemli oldugunu biliyorum ama sunun icin while kullanamazsin, for kullanmak zorundasin dediginiz bir ornek var mi diye soruyorum.

(Yazdigim koda takilmayin, dil fark etmeyen bir soru sordugum icin yari turkce yazdim.)
 
Dile göre değişir. C dillerinde (ve mümkün olan dillerde) for(;;) yapmak zaten while ile aynı şey oluyor pratikte. Assembly olarak ne durumdadır bilmiyorum.

While(x) şeklindeki kodlar da for(;x;) şeklinde yazılabileceği için yine aynı kapıya çıkıyoruz. Tabii buna müsade eden diller için.

Mantıklı olan hangisiyse onu yapmalısın. Teorikte ve pratikte sonsuz döngüden kaçınmalısın. Gidip while(1) yazıp döngüye başlama yani. İçeride döngüden çıkma şartın neyse while içine yaz.
 
Evet var. While işimi daha çok yarıyor. Mesela durum şöyle olursa girme vs. diyorsun. Flag eklemen gerekiyor. For'da olmuyor o iş. Bir de duyduğuma göre For, While'dan daha hızlı.
 
Evet var. While işimi daha çok yarıyor. Mesela durum şöyle olursa girme vs. diyorsun. Flag eklemen gerekiyor. For'da olmuyor o iş. Bir de duyduğuma göre For, While'dan daha hızlı.
For döngüsünde de aynı şeyi yapabilirsin. Flag eklersin döngüden çıkmak için break yaparsın olur biter.
Hız konusuna gelince de fark çok az, göz ardı edilebilir.
 
While belirledigin bir condition boyunca tekrar sagladigi icin for ile yapabildigin her seyi yaparsin. Kodu uzatirsin.

Dogrusu kac defa iterate edecegini biliyorsan ya da neyi baz alarak iterate edecegini biliyorsan for kullanmak. Daha okunabilir kod yazmis olursun.

Eger neye gore iterate edecegin belli fakat kac defa iterate edecegin belli degilse, ornegin bir yerden bir sinyal bekliyor, ne kadar surecegini bilmedigin bir durumun olusmasini bekliyorsan while(condition) kullanirsin.

Sahsen ben her ikisindense mumkun oldugu yerde functional alternatiflerini kullanmayi seviyorum. Kotlin icin repeat, R icin apply ya da Java'daki flatmap ya da Python'daki filter cok daha makul direkt loop ile ayni sonucu elde etmektense.
 

Yeni konular

Geri
Yukarı