forloopsinalice1 stephen cooper wanda dann randy pausch barb ericson oct 2009 counted (for) loops in...
TRANSCRIPT
ForLoopsInAlice 1
Stephen Cooper
Wanda Dann
Randy Pausch
Barb Ericson
Oct 2009
Counted (For) Loops in Alice
ForLoopsInAlice 2
Learning Goals
• Introduce the concept of a counted loop– A loop that keeps a counter or index– Show how a loop leads to easier to read and
shorter code– Show an infinite for loop– Show a nested loop– Show a function call inside a loop
ForLoopsInAlice 3
Repetition
• In many kinds of animations, especially simulations and games, some actions happen again and again.– Example: Gallery games where targets appear
randomly on screen and then disappear only to appear elsewhere in the scene.
• Of course, actions are made to happen again and again by running an animation instruction (or a method) more than once
ForLoopsInAlice 4
Example
• A bunny sneaks into a garden and wants to eat the broccoli. The bunny will need to hop several times to get to the broccoli.
ForLoopsInAlice 5
bunny.hop
ForLoopsInAlice 6
One solution
• Creating the same instruction again and again is somewhat tedious and the code gets longer and longer.
ForLoopsInAlice 7
Counted Loop
• A counted loop is an alternate to repeated code– Repeats instructions a counted number of times
ForLoopsInAlice 8
Demo 07BunnyHop• Concepts illustrated in this example
– The loop instruction executes a definite number of times, specified by a count or index
– Using a loop instruction • saves time• is convenient • Easy to modify
ForLoopsInAlice 9
Demo 07Carousel
• Concept illustrated in this example– If “Infinity times” is selected for a loop, this means the loop
will run until the program is shut down– This is an infinite loop
ForLoopsInAlice 10
More complicated loops
• It is also possible to place a loop statement within another loop statement
• This is called a nested loop
ForLoopsInAlice 11
An example of nested loops
The whole Ferris wheel will rotate clockwise, while the two inner wheels will rotate counterclockwise. The inner wheels should perform 2 revolutions for each outer loop revolution.
ForLoopsInAlice 12
Demo 07FerrisWheel
• Concept illustrated in this example– The inner loop runs completely each time the
outer loop runs once.– An outer loop that executes 2 times and an
inner loop that executes 5 times will actually execute the inner loop 10 times.
ForLoopsInAlice 13
Using a function
• A loop count can be computed by calling a function that returns a number value.
• The loop instruction automatically rounds the returned value to the nearest whole number.
• Demo: 07LoopWithFunctionCall
ForLoopsInAlice 14
Challenges
• Copy 07BunnyHop to 07BunnyOut– So that as the bunny nears the broccoli Papa rabbit (use Hare
from the Animals folder) appears at the garden gateway and taps his foot
– Have the bunny turn and hop out of the garden • Using a loop
• Copy 07BunnyHop to 07BunnySquare– And have the bunny hop in a square using a
nested loop• Loop 4 times
– Loop 3 times» Bunny hop
– Bunny turn ¼ revolution
ForLoopsInAlice 15
Summary
• A for loop is similar to a while loop – But is useful when you need a counter or
index in the loop
• An infinite loop never stops
• Loops can be nested inside of other loops
• You can call a function inside the test for a loop