Seamus

To review, our solution to the classic "Native American" problem was:

    <cfset amount=18.00>

    <cfloop index=theYear from=1624 to=2001 step=1>

      <cfset amount = amount * 1.04>

    <cfloop>

The heading lifting is being done in the <cfloop> tag:

     setting the starting and ending values for year

     setting the increment for year

     testing for the end value of year.

We used this style of loop because we have a predetermined number of 
steps, 377 (2001 - 1624).  Even if we change the problem to specify 
biannual interest, we still have a fixed number of steps... we just 
change the step value to 2.

Then I redefined the problem to:

   The Dutch purchased Manhattan Island from the "Native Americans" 
for $18.00 in
   er, ah... lets say 1624.  If the money were invested at 4%, compounded
   annually, when would the value exceed $200,000?

Now, we can't determine in advance how many steps are necessary, 
because that depends on the calculation within the loop.

if we write this out abstractly, we have:

   Start with an amount of $18,00

   Start at a year of 1624

     Repeat

       Multiply the amount by 1.04

       Add 1 to the year

     until the Amount is Greater Than 2000

To translate this into CF we have:

    <cfset amount=18.00>

    <cfset year=1624>

    <cfloop condition="#amount# LTE 200000">

      <cfset amount = amount * 1.04>

      <cfset year = year + 1>

    <cfloop>

In the above, the <cfloop> tag does a lot less work than our prior 
example... it only tests if the loop should continue (while the 
condition is still true).

As before, the body of the loop computes a new amount... this is used 
in the condition that controlls the loop

In addition, we increment the year within the body of the loop, 
because it is the answer we seek (and it is no longer being computed 
in the <cfloop> tag

If we want to compute biannual interest, we merely change the year 
increment within the loop body:

   <cfset year = year + 2>

So, we have covered the two basic types of loops:

   a FOR loop (predetermined number of steps)

   A WHILE loop (while a condition is true - unknown number of steps)

CF, in its benevolence, provides us with some specialized loops so we 
can easily iterate over complex structures: lists, queries and 
collections.

These are, in fact, just a more-convenient format of a FOR loop.


.... Next time.

HTH

Dick












~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Structure your ColdFusion code with Fusebox. Get the official book at 
http://www.fusionauthority.com/bkinfo.cfm

Archives: http://www.mail-archive.com/cf-talk@houseoffusion.com/
Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists

Reply via email to