Iteration loops
Download
1 / 26

Iteration (Loops) - PowerPoint PPT Presentation


  • 86 Views
  • Uploaded on

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.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Iteration (Loops)' - dustin-allen


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
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).

karel_part5_loops


For loops
for Loops

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

karel_part5_loops


For loops cont
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


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


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


For loops cont1
for Loops (cont.)

  • Example:for (int x=1; x <= 5; x++){ karel.move();}

  • This causes karel to move 5 times

karel_part5_loops


For loops cont2
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


While loops
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


While loops cont
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


While loops cont1
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


Infinite 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

karel_part5_loops


While loops cont2
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


Examples
Examples

  • Pick up seven beepers.

    public void pick7Beepers()

    {

    // what type of loop?

    }

karel_part5_loops


Examples1
Examples

  • Pick up seven beepers.

    public void pick7Beepers()

    {

    for(int j = 1; j <= 7; j++)

    pickBeeper();

    }

karel_part5_loops


Another examples
Another Examples

  • Move forward until next to another Robot.

    public void moveToRobot()

    {

    // what type of loop

    }

karel_part5_loops


Another examples1
Another Examples

  • Move forward until next to another Robot.

    public void moveToRobot()

    {

    while (! nextToARobot() )

    move();

    }

karel_part5_loops


One last examples
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


Comments on previous example
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


One more time
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


Nested 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

karel_part5_loops


Nested loops again
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


Nested loops again 2
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


Nested loops with functions
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


Your first assignment
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


Your second assignment
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


Your third assignment
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


ad