1 / 26

Iteration (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). for Loops.

Download Presentation

Iteration (Loops)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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). karel_part5_loops

  2. for Loops • General form:for ( <initialize variable>; <Boolean test>; <increment> ){ <instruction set>} karel_part5_loops

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

  4. 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 karel_part5_loops

  5. 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 karel_part5_loops

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

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

  8. while Loops • General form:while ( <boolean test> ){ <instruction list>} What do you know here? • Test = false • Loop continues until test is false karel_part5_loops

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

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

  11. 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 karel_part5_loops

  12. 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 karel_part5_loops

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

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

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

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

  17. One Last Examples • 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(); } karel_part5_loops

  18. 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 karel_part5_loops

  19. 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(); } karel_part5_loops

  20. 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 karel_part5_loops

  21. 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 karel_part5_loops

  22. Nested Loops – Again2 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 karel_part5_loops

  23. 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 karel_part5_loops

  24. 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. karel_part5_loops

  25. Your Second Assignment • Your assignment is to implement the NewAndImprovedBeeperSweeperRobotRobot 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. karel_part5_loops

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

More Related