Nested loops (or as the College Board likes to call them nested iterations) are simply loops placed in the body of another loop. If we understand how loops work, thereβs nothing magic about nested loops: the outer loop runs its body in the normal way for a loop and if that body contains a loop, that loop also runs in the normal way. The whole inner loop, like any other statement in the body of the outer loop, will run as many times as the outer loopβs body runs. And each time it runs, the inner loop must complete all of its iterations before it ends and outer loop can continue to its next iteration.
What does the following code print out? Click the CodeLens button to trace the code step by step. Notice how the inner loop is started over for each row. Can you predict how many rows and columns of stars there will be?
Can you change the code to print a rectangle with ten rows and eight columns of stars? You can also try replacing the inner print statement with this to see the rows and columns: System.out.println(row + "-" + col + " ");
The main method in the following class should print 10 rows with 5 *s in each row. But, the blocks have been mixed up and include one extra block that isnβt needed in the solution. Drag the needed blocks from the left and put them in the correct order on the right. Click the Check button to check your solution.
public class Test1 {
public static void main(String[] args) {
---
for (int x = 0; x < 10; x++) {
---
for (int y = 0; y < 5; y++) {
---
for (int y = 0; y <= 5; y++) { #paired
---
System.out.print("*");
---
}
---
System.out.println();
---
}
---
}
}
Try nested loops with turtles to create a snowflake design! If the code below does not work in your browser, you can copy the code into this replit link (refresh page after forking and if it gets stuck) or download the files here to use in your own IDE.
The turtle below is trying to draw a square many times to create a snowflake pattern. Can you change the outer loop so that the pattern completes all the way around? Try different ending values for the counter i to find the smallest number that works between 5 and 15.
In the last exercise, you used nested for-loops to have the turtle draw a square repeatedly to make a snowflake. Use the Active Code window below to have yertle draw the following shapes using nested loops. We encourage you to work in pairs on this.
Complete the code in the active code window below to draw a snowflake of triangles. Remember that triangles have 3 sides and you will need to turn 120 degrees (external angle) 3 times to draw the triangle. Use the turnAmount variable for the single turn after drawing a triangle. How many times did you need to run the outer loop to go all the way around? Try changing the turnAmount variable to 40 to see how many times you need to loop with a wider distance between the triangles.
In the exercise above, you figured out how many times to run the outer loop to finish the snowflake. You may have noticed that the number of times the loop needs to run is related to the angle you turn before drawing the next triangle. These turns have to add up to 360 degrees to go all the way around. Change the outer loop so that it runs the number of times needed by using a formula with the turnAmount variable and 360. Can you draw a snowflake using more or less triangles than before by just changing the turnAmount value?
Create another variable called n for the number of sides in the polygon the inner loop draws. Change the angle in the inner loop to also use a formula with 360 and this new variable. Can you change your snowflake to draw squares or pentagons instead? (Note if this overwhelms the Active Code server and times out, try a larger turnAmount. (Or you can switch to using this replit link or your own IDE).
Letβs add some more color! Add an if/else statement that changes the Color of the pen before the inner loop depending on whether the outer loop variable is odd or even. Remember that even numbers have no remainder when divided by 2.
Use nested for-loops to have the turtle draw a snowflake of polygons. Use the variable turnAmount to turn after each shape and the variable n for the sides of the polygon.