1 ch. 6 iteration (loops) loops repeat a set of instructions two types of loops: –definite loops (...

16
Ch. 6 1 Iteration (Loops) • Loops repeat a set of instructions • Two types of loops: – Definite loops ( for ) perform instructions explicit number of times – Indefinite loops ( while ) perform instructions an indefinite number of times (until a certain test fails)

Upload: cory-allison

Post on 04-Jan-2016

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 Ch. 6 Iteration (Loops) Loops repeat a set of instructions Two types of loops: –Definite loops ( for ) perform instructions explicit number of times

Ch. 6

1

Iteration (Loops)

• Loops repeat a set of instructions

• Two types of loops:– Definite loops ( for ) perform instructions

explicit number of times– Indefinite loops ( while ) perform instructions

an indefinite number of times (until a certain test fails)

Page 2: 1 Ch. 6 Iteration (Loops) Loops repeat a set of instructions Two types of loops: –Definite loops ( for ) perform instructions explicit number of times

Ch. 6

2

Questions for You

• a new class you’re writing has a method with the following signature:

move (int numMoves)– should it be implemented with a definite loop

or an indefinite loop? justify your answer– could it be implemented with the other type of

loop? if so, should we/could we/good idea/bad idea???

Page 3: 1 Ch. 6 Iteration (Loops) Loops repeat a set of instructions Two types of loops: –Definite loops ( for ) perform instructions explicit number of times

Ch. 6

3

Questions for You

• take 5 minutes and draw a situation on paper that would necessitate that you use a while loop to solve the problem

Page 4: 1 Ch. 6 Iteration (Loops) Loops repeat a set of instructions Two types of loops: –Definite loops ( for ) perform instructions explicit number of times

Ch. 6

4

for Loops

• General form:for ( <initialize variable>;

<test>;<increment> )

{<instruction set>

}

Page 5: 1 Ch. 6 Iteration (Loops) Loops repeat a set of instructions Two types of loops: –Definite loops ( for ) perform instructions explicit number of times

Ch. 6

5

for Loops (cont.)

• <initialize variable> sets a variable/identifier to a certain value (variable is usually count, i, j)

• <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 x++ or x--)

Page 6: 1 Ch. 6 Iteration (Loops) Loops repeat a set of instructions Two types of loops: –Definite loops ( for ) perform instructions explicit number of times

Ch. 6

6

for Loops (cont.)

• Example:for (int x=1; x<=5; x++){

karel.move();}

• This causes karel to move 5 times

Page 7: 1 Ch. 6 Iteration (Loops) Loops repeat a set of instructions Two types of loops: –Definite loops ( for ) perform instructions explicit number of times

Ch. 6

7

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

Page 8: 1 Ch. 6 Iteration (Loops) Loops repeat a set of instructions Two types of loops: –Definite loops ( for ) perform instructions explicit number of times

Ch. 6

8

while Loops

• General form:while ( <test> ){

<instruction list>}

• Loop continues until test is false

Page 9: 1 Ch. 6 Iteration (Loops) Loops repeat a set of instructions Two types of loops: –Definite loops ( for ) perform instructions explicit number of times

Ch. 6

9

Questions for You

• back on slide 3 you drew up a situation that would best be solved using a while loop - now write the code to solve your problem

Page 10: 1 Ch. 6 Iteration (Loops) Loops repeat a set of instructions Two types of loops: –Definite loops ( for ) perform instructions explicit number of times

Ch. 6

10

while Loops (cont.)

• Example:while (karel.frontIsClear ()){

karel.move ();}

• Causes karel to move continuously until there is a wall in front of it

Page 11: 1 Ch. 6 Iteration (Loops) Loops repeat a set of instructions Two types of loops: –Definite loops ( for ) perform instructions explicit number of times

Ch. 6

11

while Loops (cont.)

Flow of while loops1. 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

Page 12: 1 Ch. 6 Iteration (Loops) Loops repeat a set of instructions Two types of loops: –Definite loops ( for ) perform instructions explicit number of times

Ch. 6

12

Building a While Loop Formalizing (making easier) the ad-hoc way you’ve been writing while

loops to this point. This will be extremely helpful to you at various times in the course and on the AP exam.

• Step 1 – Identify what is true when the loop is finished (this is always easier than determining what is false while it is still executing)

• Step 2 – Use the opposite form of step 1’s result as the <test> for the loop. You just need to negate the entire thing. (note: Now and again you might find that “DeMorgan-izing” your result is helpful when answering AP-like questions.)

Page 13: 1 Ch. 6 Iteration (Loops) Loops repeat a set of instructions Two types of loops: –Definite loops ( for ) perform instructions explicit number of times

Ch. 6

13

Building a While Loop (cont’d)

• Step 3 – make progress toward the goal (completion of the loop) within the loop

• Step 4 – Do whatever is required before and/or after the loop to ensure that we solve the given problem

• Example: Pick all beepers from a corner without knowing how many there are.

Page 14: 1 Ch. 6 Iteration (Loops) Loops repeat a set of instructions Two types of loops: –Definite loops ( for ) perform instructions explicit number of times

Ch. 6

14

Let’s build a while loopMove a robot until it is not on a corner with any other robots and there is a wall on the left, then pick up the beeper that will be waiting there (the “hard” part is getting the condition correct without using a trial-and-error method – you don’t get to run any programs during our tests nor on the AP exam – also, you’ll code your labs faster if you have a way to ensure correct conditions EVERY time – without the crutch of running your code)

You may use && and || for this exercise. Use the 4-step process now…

while (???) {???

}

Page 15: 1 Ch. 6 Iteration (Loops) Loops repeat a set of instructions Two types of loops: –Definite loops ( for ) perform instructions explicit number of times

Ch. 6

15

Your try the while conditionYou may use && and || for this

Write a loop that moves a robot forward until it is either next to a robot, next to a beeper, or there is no wall on its right

while ( ??? ) {???

}

Page 16: 1 Ch. 6 Iteration (Loops) Loops repeat a set of instructions Two types of loops: –Definite loops ( for ) perform instructions explicit number of times

Ch. 6

16

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