Session 3 Loops At the heart of their functionality, loops enable blocks of code to be executed more than once. Loops represent a simple concept that can be used to create extremely dynamic and flexible programs. Loops are very important for two reasons: efficiency and flexibility. In the second part of the project from the previous session, you were instructed to basically run the program twice. In order to accomplish this, you had to copy the existing blocks and append them to the end of the program effectively doubling the number of blocks present. It worked, but just imagine what would happen if you had to go through the program ten, one-hundred, or even a thousand times! Assuming you were able to create a program of that magnitude, what if a change had to be made? You would be required to make that change for each copy! Loops allow the program to contain only one copy of the code and go through it as many times as you need to. This is much more efficient. The Loop Block In Alice, the simplest type of loop is the loop block. It closely resembles the “for” loop found in other programming languages. The loop block expects the programmer to specify a number which will indicate exactly how many times it will repeat. In this example, the move block will be repeated ten times. To find the total distance the cat will move, all we have to do is some quick multiplication to realize it will move 100 meters. This block is used when the number of times to repeat is known before the block is encountered, but sometimes, there is no way of knowing exactly how many times a loop must execute. In cases of uncertainty, a slightly different loop must be used. The While Loop The while loop, as the name implies, keeps repeating while a given Boolean expression is true. It is identical to the while loop found in other programming languages. While loops are perfect when combined with user input. This allows the user to interact with the program indefinitely; loops such as these are found in almost every program in some form. Although the two loops mentioned thus far appear to behave differently, they are the same loop. With the use of variables (discussed in session 4), the while loop can be made to work exactly like a regular loop. Infinite Loops In some cases, a loop must continue repeating the entire time the program is running. When this is required an infinite loop is often used. Like the while loop, the infinite loop is commonly used in conjunction with user input. Nested Loops Like the conditional branch structures in the previous session, loops can, and sometimes must, be nested. The behavior of these loops is often trivial, but sometimes they can be very complex. This script moves the sprite 100 meters (2 * 10 * 5). What does this one do? For All There are two additional loops in Alice which will not be covered in this session: These loops are for use with lists and arrays which will be covered in session 7. Project 3 While the user chooses to continue the program, ask the user how many times to move an object 0.2 meters. Use the number provided by the user in the condition of a for loop which moves the object 0.2 meters that many times. Flow of program: Would you like to continue? Yes/No (if yes) How many times would you like to move the object 0.2 meters? Answered with a number Uses a number with a for loop to move the object that many times. Day 2 Questions 1. What part of an If/Else control structure determines which sequence of blocks is executed? 2. The expression in the predicate part of an If/Else structure evaluates to a or value? 3. What part of the structure would execute if the predicate value was true. 4. If a certain block or number of blocks needed to be executed several times, what control structure would you use? 5. If a loop executes 5 times and there was a block inside that moved the object 3 meters, how many meters would it move in total? 6. The expression in the predicate part of an If/Else structure evaluates to what type of value? 7. If the condition of a while loop was set to “true” how many times would this loop execute? Day 2 Answer Key What part of an If/Else control structure determines which sequence of blocks is executed? predicate or conditional, Boolean expression, anything similar. The expression in the predicate part of an If/Else structure evaluates to a true or false value? What part of the structure would execute if the predicate value was true. if part, consequent If a certain block or number of blocks needed to be executed several times, what control structure would you use? loop,while loop If a loop executes 5 times and there was a block inside that moved the object 3 meters, how many meters would it move in total? 15 meters The expression in the predicate part of an If/Else structure evaluates to what type of value? Boolean, true or false If the condition of a while loop was set to “true” how many times would this loop execute? Infinity times, until the user stops the program from running