Re: Nested loopa

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux