Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 karel_part5_loops Iteration (Loops) Loops repeat a set of instructions Two types of loops: –Definite loops ( for ) perform instructions explicit (known)

Similar presentations


Presentation on theme: "1 karel_part5_loops Iteration (Loops) Loops repeat a set of instructions Two types of loops: –Definite loops ( for ) perform instructions explicit (known)"— Presentation transcript:

1 1 karel_part5_loops Iteration (Loops) Loops repeat a set of instructions Two types of loops: –Definite loops ( for ) perform instructions explicit (known) number of times. –Indefinite loops ( while ) perform instructions an indefinite (unknown) number of times (until boolean test fails).

2 2 karel_part5_loops for Loops General form: for ( ; ; ) { }

3 3 karel_part5_loops for Loops (cont.) sets a variable/identifier to a certain value (variable is usually count, i, j) is a test that is evaluated each time the body is about to be executed (when false, loop is exited) changes the loop control variable (usually i++ or i-- )

4 4 karel_part5_loops i++? What does i++ mean –i++ is the same as i = i + 1; That is not true you say. –This does not imply i = i + 1, it increases the value of i by 1 –E.g., if i has the value 10, then i++ changes the value of i to 11

5 5 karel_part5_loops i--? What does i-- mean –i-- is the same as i = i - 1; That is not true you say. –This does not imply i equals i - 1, it decreases the value of i by 1 –E.g., if i has the value 10, then i-- changes the value of i to 9

6 6 karel_part5_loops for Loops (cont.) Example: for (int x=1; x <= 5; x++) { karel.move(); } This causes k arel to move 5 times

7 7 karel_part5_loops for Loops (cont.) Flow of for loops: 1.Initialization statement executes 2.If test is true, proceed to step 3; if test is false, go to step 6 3.Instructions in body of loop are executed 4.Increment statement executes 5.Return to step 2 6.Program proceeds to statements after loop

8 8 karel_part5_loops while Loops General form: while ( ) { } What do you know here? – Test = false Loop continues until test is false

9 9 karel_part5_loops while Loops (cont.) Example: while (karel.frontIsClear()) { karel.move (); } What do you know? – karel is facing a wall Causes k arel to move continuously until there is a wall in front of it

10 10 karel_part5_loops while Loops (cont.) Flow of while loops 1.If test is true, proceed to step 2; if test is false, go to step 4 2.Instructions in body of loop are executed 3.Go to step 1 4.Statements after loop are executed

11 11 karel_part5_loops Infinite Loops In a for or while loop, it is possible for the test to never be false When this happens, the loop continues infinitely Depending on the compiler, application, and other circumstances, an error may occur or the app may crash

12 12 karel_part5_loops while Loops (cont.) Write a method that turns the Robot Left until the Robot is facing North. public void faceNorth() { while (! facingNorth() ) turnLeft(); } * note: the number of left turns needed is unknown

13 13 karel_part5_loops Examples Pick up seven beepers. public void pick7Beepers() { // what type of loop? }

14 14 karel_part5_loops Examples Pick up seven beepers. public void pick7Beepers() { for(int j = 1; j <= 7; j++) pickBeeper(); }

15 15 karel_part5_loops Another Examples Move forward until next to another Robot. public void moveToRobot() { // what type of loop }

16 16 karel_part5_loops Another Examples Move forward until next to another Robot. public void moveToRobot() { while (! nextToARobot() ) move(); }

17 17 karel_part5_loops One Last Example Create a method that moves the Robot forward a specific number of times. public void moveForward(int numMoves) { for(int j = 1; j <= numMoves; j++) move(); }

18 18 karel_part5_loops Comments on Previous Example public void moveForward(int numMoves) { for(int j = 0; j < numMoves; j++) move(); } numMoves is a parameter provided by the client. Sample calls: moveForward(11); // moves the robot forward 11 times moveForward(7); // moves the robot forward 7 times moveForward(15+7); // moves the robot forward 22 times moveForward(15/4+7); // moves the robot forward 10 times moveForward(num); // moves the robot forward num times

19 19 karel_part5_loops One More Time Create a method that has the Robot put a specific number of Beepers. public void put_N_Beepers(int numBeeps) { for(int j = 1; j <= numBeeps; j++) putBeepers(); }

20 20 karel_part5_loops Nested Loops Like nested if’s, it is possible to have a loop inside a loop for(int j = 0; j < 3; j++) { for(int k = 0; k < 2; k++) System.out.println(j + “,“ + k); } Generates the following output: Note: Each pair of numbers are on separate lines 0,0 0,1 1,0 1,1 2,0 2,1

21 21 karel_part5_loops Nested Loops - Again for(int j = 0; j < 2; j++) { int k = 0; while(k < 4) { System.out.println(j + “,“ + k); k++; } Generates the following output: Note: Each pair of numbers are on separate lines 0,0 0,1 0,2 0,3 1,0 1,1 1,2 1,3

22 22 karel_part5_loops Nested Loops – Again 2 for(int j = 0; j < 5; j++) { int k = 0; while(k < 3) { k++; System.out.println(j + “,“ + k); } Generates the following output: Note: Each pair of numbers are on separate lines 0,1 0,2 0,3 1,1 1,2 1,3 2,1 2,2 2,3 3,1 3,2 3,3 4,1 4,2 4,3

23 23 karel_part5_loops Nested Loops – With Functions Suppose public int calculate(int a, int b) { return 2 * a - b + 7; } then for(int j = 0; j < 3; j++) { int k = 0; while(k <= 3) { k++; System.out.println( calculate(j, k) ); } Generates the following output: Note: Each number is on a separate line. 6, 5, 4, 3, 8, 7, 6, 5, 10, 9, 8, 7, 6

24 24 karel_part5_loops Your First Assignment Implement methods declared in TreasureSeekerBot class. Invoke MainDriver1 to test your implementation. If you correctly implement each method, each Robot will perform a specific task. You will then implement one additional method required by MainDriver2 allowing a Robot to following a specific series of commands to find the Hidden treasure! See handout ( Karel_part5_loops.doc ) for details.

25 25 karel_part5_loops Your Second Assignment Your assignment is to implement the NewAndImprovedBeeperSweeperRobot Robot that picks ALL beepers on every corner in a room. Invoke MainDriver1 to test your implementation. If you correctly implement the class, the Robot will collect ALL beepers from every corner in the Room. The are also different in this assignment. The Rooms will no longer be a constant size. All rooms will 6 wide, but the length will be unknown. –Did you hear me say while loop? In MainDriver2, you will construct Robots to collect All beepers from ALL corner in ALL rooms! See handout ( Karel_part5-1_loops.doc ) for details.

26 26 karel_part5_loops Your Third Assignment Your assignment is to do lab 16. All three (oops that is four) parts! See handout ( Karel_part6.doc ) for details.


Download ppt "1 karel_part5_loops Iteration (Loops) Loops repeat a set of instructions Two types of loops: –Definite loops ( for ) perform instructions explicit (known)"

Similar presentations


Ads by Google