Loops activities
Most programming languages have a range of different 'looping' contructs (Blocks).
If you view the 'Control' pallet in Scratch you will find there are several ('forever',
'repeat', 'repeat until' for example).
Here we will just quickly explore the 'repeat <n>' loop which repeats a set of one
or more other Blocks 'n' times.
Our first use of a loop is very simple. A variable is used to keep a count of
the number of times a loop has been executed so far. This is set to zero
before the loop block. The repeat loop is set to perform the enclosed blocks
'10' times and includes two blocks. The first block inside the loop
adds '1' to the 'times done' variable and the second waits for 1 second.
So the 'times done' variable's value will be the same as
the number of times the loop has been executed.
Figure 1 Simple loop Stack
The program is shown in Figure 1 and is simple to construct or can be
downloaded. Before you run the Stack select the
'Edit' menu's 'Set single stepping...' option and then select 'Flash blocks (slow)'
so that Blocks are highlighted as they are executed. Then run the Stack and observe
the value of 'times done' as the loop is repeated. When the loop has completed 10
times the Stack will finish.
The loop employs a fixed value of '10' to specify how many times the loop
should be executed. We might want to vary the number of times the loop is
performed according to the value of some other data. To do this we can
replace '10' with another variable which gains a value from somewhere
else in the stack. We can, for example,
use the 'ask' and 'answer' Blocks from the 'sensing'
pallet, which we used earlier, to obtain a value for the number of times the
loop should be performed.
Alter the stack so that it is as shown in Figure 2 (or
download the program).
Figure 2 Simple loop using a variable.
We have added a 'think' block to the loop so that the value of the 'times done'
variable is displayed by the sprite each time the loop is executed. The loop
is also executed according to the value in the 'answer' variable which will
have whatever value you type in when the earlier 'ask' block is executed.
Be sure to type in a number, such as '3', when asked and not something else
such as a word 'hi' as a loop can't be executed 'hi' times; it makes no
sense.
At the bottom of the stack, after the loop, we have also added a 'think'
statement. This will only be executed when the loop has finished and so
the sprite will 'think' "the loop has finished" on the stage when this
happens.
When you run the Stack you might want to turn on 'stepping' again to see
how the blocks are executed
more clearly.
That's all on 'loops' (or 'repetition').
Please go back and continue onto the next activity.
Back