[Courses] Loops
Jenn Vesperman
jenn at anthill.echidna.id.au
Fri Feb 22 03:51:58 EST 2002
On Thu, 2002-02-21 at 04:34, Jenn Vesperman wrote:
I wrote this for newchix, and have decided it probably belongs on
courses as well. So here's a mini-lecture on 'loop tools':
> Ok. To start with, simplify your tool set. Yes, eventually you would be
> more efficient if you used the full range of syntactic tools. But for
> the moment.. don't worry about it.
>
> Trim your kit of loops to 'for' and 'while'.
> Trim your kit of conditionals to 'if - then - else - end'.
>
> With the full range available to you, you're standing at a banquet,
> starving and unable to decide what to eat first. So start small.
>
>
> The next step is to analyse the problem, to try to figure out first
> WHAT you are trying to do, then HOW you want to do it. This is the
> essence of programming - everything else is gravy. Seriously.
>
>
> Example analysis:
>
> Let's say we're trying to make a program to calculate and display the
> first 20 elements in the fibionacci sequence. The sequence goes:
> 1 1 2 3 5 8 13 21
>
> It starts with two 1s, then each item in the sequence is calculated by
> adding the previous two items.
>
>
> That last sentence tells me that I want something in the core of my code
> that looks like:
>
> next_element = element_a + element_b;
> print(next_element);
>
> (For tidiness, I should probably print a space, too.)
> Then I want something to set up for the next element:
>
> element_a = element_b;
> element_b = next_element;
>
>
> So the core code looks like:
>
> next_element = element_a + element_b;
> print(next_element);
> print(" ");
> element_a = element_b;
> element_b = next_element;
>
>
> So.. that's how I calculate any -one- fibionacci number (after the two
> starting 1s), and how I juggle my variables so I'm set up for
> calculating the number after it.
>
>
> Now.. how do I loop it? I know I need to do this again and again, but
> how?
>
> With our cut-down list of options, it's either a 'for' loop or a 'while'
> loop. It doesn't really matter which loop you use. It doesn't even
> REALLY matter if you just cut and paste this down the page the right
> number of times. Loops are just easier to read and change. :)
>
> Assuming we don't want the cut-and-paste option, let's try a while loop.
>
> I said we'd do this twenty times, so:
>
> counter = 1;
> while (counter <=20) {
>
> counter = counter + 1;
> }
>
>
> That (if we paste the other code in) would almost work.. except that we
> haven't initialised element_a or element_b. So..
>
>
> element_a = 1;
> element_b = 1;
> counter = 1;
> while (counter <=20) {
> next_element = element_a + element_b;
> print(next_element);
> print(" ");
> element_a = element_b;
> element_b = next_element;
> counter = counter + 1;
> }
>
>
> ... almost there. But we have to deal with the problem of the two
> initial ones. That loop would print the twenty elements of the
> fibionacci sequence starting from the 2.
>
> Try:
>
> element_a = 1;
> element_b = 1;
> print("1 1 ");
> counter = 3;
> while (counter <=20) {
> next_element = element_a + element_b;
> print(next_element);
> print(" ");
> element_a = element_b;
> element_b = next_element;
> counter = counter + 1;
> }
>
>
>
> It would be just as correct to replace the while loop with a for loop.
> They would mean the same thing.
>
> for (counter = 3; counter <= 20; counter = counter + 1) {
>
> }
>
>
>
> I hope this example of figuring out HOW helps...
>
Jenn V.
--
"Do you ever wonder if there's a whole section of geek culture
you miss out on by being a geek?" - Dancer.
jenn at anthill.echidna.id.au http://anthill.echidna.id.au/~jenn/
More information about the Courses
mailing list