Lecture 4a
Sponsored Links
This presentation is the property of its rightful owner.
1 / 112

Lecture 4A PowerPoint PPT Presentation


  • 41 Views
  • Uploaded on
  • Presentation posted in: General

Lecture 4A. Repetition. Richard Gesick. Overview. Iteration 3 kinds of loops for while do while Infinite Loops. Example: Computing Velocity over a Range of Time. Sequential structures are not well suited for computing the same quantities repeatedly.

Download Presentation

Lecture 4A

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


Lecture 4A

Repetition

Richard Gesick


Overview

Iteration

3 kinds of loops

for

while

dowhile

Infinite Loops


Example: Computing Velocity over a Range of Time.

  • Sequential structures are not well suited for computing the same quantities repeatedly.

  • Flow charts and pseudocode are useful to describe repetition.


Looping

In computing, we often need to perform the same operations on multiple items.

Typically, these tasks follow this pattern:

initialize values (set total to 0)

process items one at a time (add price to total)

report results (report total)

The flow of control that programmers use to complete jobs with this pattern is called looping, or repetition.


Iteration

One thing that computers do well is repeat commands

Programmers use loops to accomplish this

3 kinds of loops in C++

for loop

while loop

do while loop


Criteria for loops

Usually have some initial condition

Starting a counter

Beginning in a certain state

Must have a test to continue

Must make progress towards finishing


Loops in Everyday Life

Bad children are told to write sentences on the board

“I will not pour Clorox in the fish tank”

Have to write this sentence either

A certain number of times

Until the teacher is happy

As many as you can during break


The for Loop

Ideal when you know the number of iterations to perform before the loop begins

Examples:

Find the sum of 5 numbers

Find the maximum of 20 numbers

Print the odd numbers from 1 to 10


The for loop

Good when you know exactly how many times you need to execute something

Has format:

for (<initialization>; <test to continue>; <increment>) {

// everything in here is what is repeated

// over and over again

}

Initialization is where the counter is given a starting value

The test determines whether or not to continue

The increment can be any amount, including negative, and occurs after the loop statements execute


More for Loop Syntax

for ( initialization; loop condition; loop update )

{

// loop body

}

Notes:

semicolons separate terms in the loop header

no semicolon follows the loop header

curly braces are required only if more than one statement is in the loop body


for Loop Flow of Control


for Loop Flow of Control

The initialization statement is executed (once only).

The loop condition is evaluated. If the condition is true, the loop body is executed.

The loop update statement is executed, and the loop condition is reevaluated (#2).

And so on, until the condition is false.


Satisfying the Teacher

Example: 1000 sentences? No problem…

intcounter;

for (counter = 1; counter <= 1000; counter++) {

cout<<“I will not pour Clorox…”<<endl;

}

// Remember, counter++ is the same as

// counter = counter + 1


“But I want them numbered!”

No problem…

intcounter;

for (counter = 1; counter <= 1000; counter++) {

cout<<counter<<“ I will not pour…”<<endl;

}


Why this works

intcounter;

for (counter = 1; counter <= 1000; counter++) {

cout<<counter<<“ I will not pour…”<<endl;

}

counter

1


Why this works

intcounter;

for (counter = 1; counter <= 1000; counter++) {

cout<<counter<<“ I will not pour…”<<endl;

}

counter

true

1


Why this works

intcounter;

for (counter = 1; counter <= 1000; counter++) {

cout<<counter<<“ I will not pour…”<<endl;

}

Output: 1 I will not pour Clorox in the Fish Tank

counter

1


Why this works

intcounter;

for (counter = 1; counter <= 1000; counter++) {

cout<<counter<<“ I will not pour…”<<endl;

}

counter

2


Why this works

intcounter;

for (counter = 1; counter <= 1000; counter++) {

cout<<counter<<“ I will not pour…”<<endl;

}

counter

true

2


Why this works

intcounter;

for (counter = 1; counter <= 1000; counter++) {

cout<<counter<<“ I will not pour…”<<endl;

}

Output: 2 I will not pour Clorox in the Fish Tank

counter

2


Why this works

intcounter;

for (counter = 1; counter <= 1000; counter++) {

cout<<counter<<“ I will not pour…”<<endl;

}

counter

3


Why this works

intcounter;

for (counter = 1; counter <= 1000; counter++) {

cout<<counter<<“ I will not pour…”<<endl;

}

counter

true

3


Why this works

intcounter;

for (counter = 1; counter <= 1000; counter++) {

cout<<counter<<“ I will not pour…”<<endl;

}

Output: 3 I will not pour Clorox in the Fish Tank

counter

3


Why this works

intcounter;

for (counter = 1; counter <= 1000; counter++) {

cout<<counter<<“ I will not pour…”<<endl;

}

counter

4


When will it end?

We see that this will go on for a while

It’s a little more interesting later around 1000


Why this works

intcounter;

for (counter = 1; counter <= 1000; counter++) {

cout<<counter<<“ I will not pour…”<<endl;

}

counter

true

999


Why this works

intcounter;

for (counter = 1; counter <= 1000; counter++) {

cout<<counter<<“ I will not pour…”<<endl;

}

Output: 999 I will not pour Clorox in the Fish Tank

counter

999


Why this works

intcounter;

for (counter = 1; counter <= 1000; counter++) {

cout<<counter<<“ I will not pour…”<<endl;

}

counter

1000


Why this works

intcounter;

for (counter = 1; counter <= 1000; counter++) {

cout<<counter<<“ I will not pour…”<<endl;

}

counter

true for last time

1000


Why this works(are we finished?)

intcounter;

for(counter = 1; counter <= 1000; counter++) {

cout<<counter<<“ I will not pour…”<<endl;

}

Output: 1000 I will not pour Clorox in the Fish Tank

counter

1000


Why this works

intcounter;

for (counter = 1; counter <= 1000; counter++) {

cout<<counter<<“ I will not pour…”<<endl;

}

counter

1001


Why this works

intcounter;

for (counter = 1; counter <= 1000; counter++) {

cout<<counter<<“ I will not pour…”<<endl;

} // Jump down here and continue

counter

false

1001


Final Output

1 I will not pour Clorox in the fish tank.

2 I will not pour Clorox in the fish tank.

3 I will not pour Clorox in the fish tank.

4 I will not pour Clorox in the fish tank.

.

.

.

999 I will not pour Clorox in the fish tank.

1000 I will not pour Clorox in the fish tank.


Another Example of Repetition

int num;

for ( num = 1 ; num <= 3; num++)

{

cout<<num << “ Potato”<<endl;

}


int num;

for ( num = 1 ; num <= 3; num++)

cout<<num << “ Potato”<<endl;

num

?

OUTPUT


int num;

for ( num = 1 ; num <= 3; num++)

cout<<num << “ Potato”<<endl;

num

1

OUTPUT


int num;

for ( num = 1 ; num <= 3; num++)

cout<<num << “ Potato”<<endl;

1

num

true

OUTPUT


int num;

for ( num = 1 ; num <= 3; num++)

cout<<num << “ Potato”<<endl;

num

1

OUTPUT

1Potato


int num;

for ( num = 1 ; num <= 3; num++)

cout<<num << “ Potato”<<endl;

num

2

OUTPUT

1Potato


int num;

for ( num = 1 ; num <= 3; num++)

cout<<num << “ Potato”<<endl;

2

num

true

OUTPUT

1Potato


int num;

for ( num = 1 ; num <= 3; num++)

cout<<num << “ Potato”<<endl;

num

2

OUTPUT

1Potato

2Potato


int num;

for ( num = 1 ; num <= 3; num++)

cout<<num << “ Potato”<<endl;

num

3

OUTPUT

1Potato

2Potato


int num;

for ( num = 1 ; num <= 3; num++)

cout<<num << “ Potato”<<endl;

3

num

true

OUTPUT

1Potato

2Potato


int num;

for ( num = 1 ; num <= 3; num++)

cout<<num << “ Potato”<<endl;

num

3

OUTPUT

1Potato

2Potato

3Potato


int num;

for ( num = 1 ; num <= 3; num++)

cout<<num << “ Potato”<<endl;

num

4

OUTPUT

1Potato

2Potato

3Potato


int num;

for ( num = 1 ; num <= 3; num++)

cout<<num << “ Potato”<<endl;

4

num

false

OUTPUT

1Potato

2Potato

3Potato


int num;

for ( num = 1 ; num <= 3; num++)

cout<<num << “ Potato”<<endl;

4

num

false

When the loop control condition is evaluated and has value false, the loop is said to be “satisfied” and control passes to the statement following the For statement.


The output was:

1Potato

2Potato

3Potato


int count ;

for ( count = 4 ; count > 0 ; count-- )

{

cout<<count<<endl;

}

cout<<“Done”<<endl;

OUTPUT: 4

3

2

1

Done


The while Loop

The while loop is designed for repeating a set of operations on data items when we don't know how many data items there will be.

We will get some signal when we have reached the end of the items to process.

The end of data items could be indicated by a special input value called a sentinel value or by reaching the end of a file

Receiving the signal is an event; we call this event-controlled looping


The while loop

Good for when you don’t know how many times to repeat

Teacher says “Write until I’m happy”

Has format:

while (<boolean value>) {

// stuff to repeat over and over

}


The while Statement


Operation of the while Loop

If the condition evaluates to true, the loop body is executed, then the condition is re-evaluated.

As long as the condition evaluates to true, we continue to repeat the loop body.

The loop body must "update the loop condition"; that is, it must perform some operation that eventually will cause the loop condition to evaluate to false

Typically, the loop update will be an attempt to read the next input value, in order to detect the sentinel value or the end of the file.


All loops have the following three characteristics:

initialization

test

update

Loop Characteristics


int count ;

count = 4; // initialize loop variable

while (count > 0) // test expression

{

cout<<count<<endl; // repeated action

count -- ;// update loop variable

}

cout<<“Done”<<endl;

Count-controlled Loop


Count-controlled Loop

int count ;

count = 4;

while (count > 0)

{

cout<<count<<endl;

count -- ;

}

cout<<“Done”<<endl;

count

OUTPUT


Count-controlled Loop

int count ;

count = 4;

while (count > 0)

{

cout<<count<<endl;

count -- ;

}

cout<<“Done”<<endl;

count

4

OUTPUT


Count-controlled Loop

int count ;

count = 4;

while (count > 0)

{

cout<<count<<endl;

count -- ;

}

cout<<“Done”<<endl;

count

4

TRUE

OUTPUT


Count-controlled Loop

int count ;

count = 4;

while (count > 0)

{

cout<<count<<endl;

count -- ;

}

cout<<“Done”<<endl;

count

4

OUTPUT

4


Count-controlled Loop

int count ;

count = 4;

while (count > 0)

{

cout<<count<<endl;

count -- ;

}

cout<<“Done”<<endl;

count

3

OUTPUT

4


Count-controlled Loop

int count ;

count = 4;

while (count > 0)

{

cout<<count<<endl;

count -- ;

}

cout<<“Done”<<endl;

count

3

TRUE

OUTPUT

4


Count-controlled Loop

int count ;

count = 4;

while (count > 0)

{

cout<<count<<endl;

count -- ;

}

cout<<“Done”<<endl;

count

3

OUTPUT

4

3


Count-controlled Loop

int count ;

count = 4;

while (count > 0)

{

cout<<count<<endl;

count -- ;

}

cout<<“Done”<<endl;

count

2

OUTPUT

4

3


Count-controlled Loop

int count ;

count = 4;

while (count > 0)

{

cout<<count<<endl;

count -- ;

}

cout<<“Done”<<endl;

count

2

TRUE

OUTPUT

4

3


Count-controlled Loop

int count ;

count = 4;

while (count > 0)

{

cout<<count<<endl;

count -- ;

}

cout<<“Done”<<endl;

count

2

OUTPUT

4

3

2


Count-controlled Loop

int count ;

count = 4;

while (count > 0)

{

cout<<count<<endl;

count -- ;

}

cout<<“Done”<<endl;

count

1

OUTPUT

4

3

2


Count-controlled Loop

int count ;

count = 4;

while (count > 0)

{

cout<<count<<endl;

count -- ;

}

cout<<“Done”<<endl;

count

1

TRUE

OUTPUT

4

3

2


Count-controlled Loop

int count ;

count = 4;

while (count > 0)

{

cout<<count<<endl;

count -- ;

}

cout<<“Done”<<endl;

count

1

OUTPUT

4

3

2

1


Count-controlled Loop

int count ;

count = 4;

while (count > 0)

{

cout<<count<<endl;

count -- ;

}

cout<<“Done”<<endl;

count

0

OUTPUT

4

3

2

1


Count-controlled Loop

int count ;

count = 4;

while (count > 0)

{

cout<<count<<endl;

count -- ;

}

cout<<“Done”<<endl;

count

0

FALSE

OUTPUT

4

3

2

1


Count-controlled Loop

int count ;

count = 4;

while (count > 0)

{

cout<<count<<endl;

count -- ;

}

cout<<“Done”<<endl;

count

0

OUTPUT

4

3

2

1

Done


Example: Re-Writing 1-1000(using a while loop)

int counter = 1;

while (counter < 1000) {

cout<<counter<< “ I will not…”<<endl;

}

counter

1


Example: Re-Writing 1-1000(using a while loop)

int counter = 1;

while (counter < 1000) {

cout<<counter<< “ I will not…”<<endl;

}

counter

1


Example: Re-Writing 1-1000(using a while loop)

int counter = 1;

while (counter < 1000) {

cout<<counter<< “ I will not…”<<endl;

}

Output: 1 I will not pour Clorox in the fish tank

counter

1


Example: Re-Writing 1-1000(using a while loop)

int counter = 1;

while (counter < 1000) {

cout<<counter<< “ I will not…”<<endl;

}

counter

1


Example: Re-Writing 1-1000(using a while loop)

int counter = 1;

while (counter < 1000) {

cout<<counter<< “ I will not…”<<endl;

}

counter

1


Example: Re-Writing 1-1000(using a while loop)

int counter = 1;

while (counter < 1000) {

cout<<counter<< “ I will not…”<<endl;

}

Output: 1 I will not pour Clorox in the fish tank

counter

1


Example: Re-Writing 1-1000(using a while loop)

int counter = 1;

while (counter < 1000) {

cout<<counter<< “ I will not…”<<endl;

}

counter

1


Example: Re-Writing 1-1000(using a while loop)

int counter = 1;

while (counter < 1000) {

cout<<counter<< “ I will not…”<<endl;

}

counter

1


Example: Re-Writing 1-1000(using a while loop)

int counter = 1;

while (counter < 1000) {

cout<<counter<< “ I will not…”<<endl;

}

Output: 1 I will not pour Clorox in the fish tank

counter

1


Infinite Loops

This loop isn’t making a lot of progress!

Loops that repeat forever are called infinite loops

Apparently “lock up”

Output:

1 I will not pour Clorox in the fish tank

1 I will not pour Clorox in the fish tank

1 I will not pour Clorox in the fish tank

1 I will not pour Clorox in the fish tank

.

.

.

}

Continue

forever


Problem Solved…

int counter = 1;

while (counter < 1000) {

cout<<counter<< “ I will not…”<<endl;

counter++;

}

counter

1


Problem Solved…

int counter = 1;

while (counter < 1000) {

cout<<counter<< “ I will not…”<<endl;

counter++;

}

counter

1


Problem Solved…

int counter = 1;

while (counter < 1000) {

cout<<counter<< “ I will not…”<<endl;

counter++;

}

Output: 1 I will not pour Clorox in the fish tank

counter

1


Problem Solved…

int counter = 1;

while (counter < 1000) {

cout<<counter<< “ I will not…”<<endl;

counter++;

}

counter

2

// Remember, counter++ is the same as// counter = counter + 1


Example: Re-Writing 1-1000(using a while loop)

int counter = 1;

while (counter < 1000) {

cout<<counter<< “ I will not…”<<endl;

counter++;

}

counter

2


Problem Solved…

int counter = 1;

while (counter < 1000) {

cout<<counter<< “ I will not…”<<endl;

counter++;

}

counter

2


Problem Solved…

int counter = 1;

while (counter < 1000) {

cout<<counter<< “ I will not…”<<endl;

counter++;

}

Output: 2 I will not pour Clorox in the fish tank

counter

2


Problem Solved…

int counter = 1;

while(counter < 1000) {

cout<<counter<< “ I will not…”<<endl;

counter++;

}

counter

3


How does it end?

int counter = 1;

while (counter < 1000) {

cout<<counter<< “ I will not…”<<endl;

counter++;

}

counter

999


How does it end?

int counter = 1;

while (counter < 1000) {

cout<<counter<< “ I will not…”<<endl;

counter++;

}

counter

999


How does it end?

int counter = 1;

while (counter < 1000) {

cout<<counter<< “ I will not…”<<endl;

counter++;

}

counter

999


Problem Solved…

int counter = 1;

while (counter < 1000) {

cout<<counter<< “ I will not…”<<endl;

counter++;

}

Output: 999 I will not pour Clorox in the fish tank

counter

999


How does it end?

int counter = 1;

while (counter < 1000) {

cout<<counter<< “ I will not…”<<endl;

counter++;

}

counter

1000


How does it end?

int counter = 1;

while (counter < 1000) {

cout<<counter<< “ I will not…”<<endl;

counter++;

}

counter

1000


How does it end?

int counter = 1;

while (counter < 1000) {

cout<<counter<< “ I will not…”<<endl;

counter++;

}

// So we never print out

// 1000 I will not pour Clorox in the fishtank

counter

now false

1000


Another Problem Solved

int counter = 1;

while (counter <= 1000) {

cout<<counter<< “ I will not…”<<endl;counter++;

}

counter

now true

1000


Example

bool teacherHappy = false;

int lineNumber = 1;

while (!teacherHappy) {

cout<<lineNumber << “ I will not…”<<endl;

lineNumber++;

teacherHappy = attitudeFunction ( );

}

// assume attitudeFunction can change

// teacherHappy


The do-while loop

Similar to while loop

Must execute at least one time (test is at bottom)

Has format:

do{

}while (<boolean value>);


Example(count from 1 to 3)

intcounter = 0;

do{

counter++;

cout<<counter<<endl;

} while (counter < 3);

counter

0


Example(count from 1 to 3)

int counter = 0;

do {

counter++;

cout<<counter<<endl;

} while (counter < 3);

counter

0


Example(count from 1 to 3)

int counter = 0;

do{

counter++;

cout<<counter<<endl;

} while (counter < 3);

counter

1


Example(count from 1 to 3)

int counter = 0;

do {

counter++;

cout<<counter<<endl;

} while (counter < 3);

counter

1

Output: 1


Example(count from 1 to 3)

int counter = 0;

do {

counter++;

cout<<counter<<endl;

} while (counter < 3);

counter

1


Example(count from 1 to 3)

int counter = 0;

do {

counter++;

cout<<counter<<endl;

} while (counter < 3);

counter

2


Example(count from 1 to 3)

int counter = 0;

do {

counter++;

cout<<counter<<endl;

} while (counter < 3);

counter

2

Output: 2


Example(count from 1 to 3)

int counter = 0;

do {

counter++;

cout<<counter<<endl;

} while (counter < 3);

counter

2


Example(count from 1 to 3)

int counter = 0;

do {

counter++;

cout<<counter<<endl;

} while (counter < 3);

// Note: counter is now 3, but we still have

// to finish out the loop – it doesn’t skip

counter

3


Example(count from 1 to 3)

int counter = 0;

do {

counter++;

cout<<counter<<endl;

} while (counter < 3);

counter

3

Output: 3


Example(count from 1 to 3)

int counter = 0;

do{

counter++;

cout<<counter<<endl;

} while (counter < 3);

counter

3

now false, so loop is finished


Summary

for loops good for when you know how many times you want to repeat

while and do-while good for when you don’t

All loops must finish, or they become infinite loops

All loops must have a test to continue, or they become infinite loops


  • Login