On Thu, Dec 27, 2012 at 4:42 PM, Tedd Sperling <tedd@xxxxxxxxxxxx> wrote: > On Dec 26, 2012, at 10:09 AM, Jim Giner <jim.giner@xxxxxxxxxxxxxxxxxx> > wrote: > > > While I fully understand the purpose of the do...while construct, I just > never get used to seeing it used. (in other langs I had to deal with a > 'repeat...until construct and dis-liked that also). I pretty much know if > I'm going to have to deal with a "run at least once" when I'm coding and > therefore code appropriately, altho I don't know in what ways I've handled > it at this very moment. > > -snip- > > To me - so much easier to comprehend at first glance. As soon as my eye > comes to a block of code starting with a conditional like 'while', I > readily see what makes it tick. Again I see the potential usefulness of > doing it the other way as you did in your example, but in your case there > wasn't a need for using 'do...while' since you structured it so that there > was never a case where you had to force the loop to happen regardless of > conditions. > > I too used while's instead of do's for the same reason. > > However, in my class I had a student show be the light (one can always > learn from beginners). > > Think of it this way, you travel into the code knowing that at some point > you're going to repeat the block of code IF a condition is going to be met > within the block of code. With that consideration, the 'do/while()' works. > > Using just a 'while()' for everything means you must determine the what > the truth of the 'while()' is going to be AND set that value before the > loop. Whereas, using a 'do/while()', you don't need to set the truth until > the block of code has been implemented AND at that point determine the > truth of the block of code. > > Cheers, > > tedd > > There are just cases where do/while makes more sense, for example: do { $c = fgetc($fp); } while ($c != 0); if you want to put while in front, you need to duplicate the fgetc call, like this: $c = fgetc($fp); while($c != 0) { $c = fgetc($fp); } Which is worse than the do/while construct. - Matijn