+ All Categories
Home > Documents > Lecture 8 (Loops)

Lecture 8 (Loops)

Date post: 22-Dec-2015
Category:
Upload: waqar-ul-hassan
View: 217 times
Download: 1 times
Share this document with a friend
Description:
computer programming
78
Intro to Programming Week # 4 Control Structure Lecture # 8 By: Saqib Rasheed nt of Computer Science & Eng Air University
Transcript
Page 1: Lecture 8 (Loops)

Intro to ProgrammingWeek # 4

Control StructureLecture # 8

By: Saqib Rasheed

Department of Computer Science & EngineeringAir University

Page 2: Lecture 8 (Loops)

Increment operator

++counter ++ ;

same as counter = counter + 1;

Page 3: Lecture 8 (Loops)

Decrement operator

--

counter -- ;same as

counter = counter - 1

Page 4: Lecture 8 (Loops)

Post/Pre Increment

Int x = 10//Post Incrementx++;cout<<x;

//Pre Increment++xcout<<x;

int y = 10;

int y = 10;

cout<<y<<endl;cout<<y++<<endl;cout<<++y<<endl;cout<<y--<<endl;cout<<--y<<endl;cout<<y<<endl;

101012121010

Page 5: Lecture 8 (Loops)

Post/Pre Increment

int y = 10;

int y = 10;

y--;

cout<<y<<endl;cout<<y--<<endl;cout<<++y<<endl;cout<<y<<endl

9999

int y = 5, x = 6;y--;cout<<y<<endl;cout<<y-- + x++<<endl;cout<<++y + --x<<endl;cout<<y + x<<endl;cout<<"y = "<<y <<endl;cout<<"x = "<<x <<endl; 4

101010Y = 4X = 6

Page 6: Lecture 8 (Loops)

Compound Assignment Operators

Operator =

Page 7: Lecture 8 (Loops)

+=counter += 3 ;

same ascounter = counter + 3 ;

Page 8: Lecture 8 (Loops)

-=counter -= 5 ;

same ascounter = counter – 5 ;

Page 9: Lecture 8 (Loops)

*=x*=2

x = x * 2

Page 10: Lecture 8 (Loops)

/=x /= 2

x = x / 2

Page 11: Lecture 8 (Loops)

%=x %= 2 ;

same as x = x % 2 ;

Page 12: Lecture 8 (Loops)

C++ Iterative Constructs

Three constructs while statement for statement do-while statement

Page 13: Lecture 8 (Loops)

Why we use loops

Add these Numbers 1+2+3+4+5+6+7+8+9= 55

Add these 1+2+3+4………….+1000000000= ?

Page 14: Lecture 8 (Loops)

The For Statement

Syntaxfor (ForInit ; ForExpression; PostExpression) Action

Examplefor (int i = 0; i < 3; ++i) { cout << "i is " << i << endl;

}

Page 15: Lecture 8 (Loops)

ForExpr

Action

true false

ForInit

PostExpr

Evaluated onceat the beginning

of the forstatements's

executionThe ForExpr is

evaluated at thestart of each

iteration of theloop

If ForExpr istrue, Action is

executed

After the Actionhas completed,

thePostExpression

is evaluated

If ForExpr isfalse, program

executioncontinues withnext statement

After evaluating thePostExpression, the next

iteration of the loop starts

Page 16: Lecture 8 (Loops)

Execution Trace

for (int i = 0; i < 3; ++i) {cout << "i is " << i << endl;

}

cout << "all done" << endl;

i 0

Page 17: Lecture 8 (Loops)

Execution Trace

for (int i = 0; i < 3; ++i) {cout << "i is " << i << endl;

}

cout << "all done" << endl;

i 0

Page 18: Lecture 8 (Loops)

Execution Trace

for (int i = 0; i < 3; ++i) {cout << "i is " << i << endl;

}

cout << "all done" << endl;

i is 0

i 0

Page 19: Lecture 8 (Loops)

Execution Trace

for (int i = 0; i < 3; ++i) {cout << "i is " << i << endl;

}

cout << "all done" << endl;

i is 0

i 0

Page 20: Lecture 8 (Loops)

Execution Trace

for (int i = 0; i < 3; ++i) {cout << "i is " << i << endl;

}

cout << "all done" << endl;

i is 0

i 1

Page 21: Lecture 8 (Loops)

Execution Trace

for (int i = 0; i < 3; ++i) {cout << "i is " << i << endl;

}

cout << "all done" << endl;

i 1

Page 22: Lecture 8 (Loops)

Execution Trace

for (int i = 0; i < 3; ++i) {cout << "i is " << i << endl;

}

cout << "all done" << endl;

i is 0

i is 1

i 1

Page 23: Lecture 8 (Loops)

Execution Trace

for (int i = 0; i < 3; ++i) {cout << "i is " << i << endl;

}

cout << "all done" << endl;

i is 0

i is 1

i 1

Page 24: Lecture 8 (Loops)

Execution Trace

for (int i = 0; i < 3; ++i) {cout << "i is " << i << endl;

}

cout << "all done" << endl;

i is 0

i is 1

i 2

Page 25: Lecture 8 (Loops)

Execution Trace

for (int i = 0; i < 3; ++i) {cout << "i is " << i << endl;

}

cout << "all done" << endl;

i is 0

i is 1

i 2

Page 26: Lecture 8 (Loops)

Execution Trace

for (int i = 0; i < 3; ++i) {cout << "i is " << i << endl;

}

cout << "all done" << endl;

i is 0

i is 1

i is 2

i 2

Page 27: Lecture 8 (Loops)

Execution Trace

for (int i = 0; i < 3; ++i) {cout << "i is " << i << endl;

}

cout << "all done" << endl;

i is 0

i is 1

i is 2

i 2

Page 28: Lecture 8 (Loops)

Execution Trace

for (int i = 0; i < 3; ++i) {cout << "i is " << i << endl;

}

cout << "all done" << endl;

i is 0

i is 1

i is 2

i 3

Page 29: Lecture 8 (Loops)

Execution Trace

for (int i = 0; i < 3; ++i) {cout << "i is " << i << endl;

}

cout << "all done" << endl;

i is 0

i is 1

i is 2

i 3

Page 30: Lecture 8 (Loops)

Execution Trace

for (int i = 0; i < 3; ++i) {cout << "i is " << i << endl;

}

cout << "all done" << endl;

i is 0

i is 1

i is 2

all done

i 3

Page 31: Lecture 8 (Loops)

Sum of 10

int x=0;for (int i =0; i<=10; i++){

x = x+i;

}cout<<x<<endl;

Page 32: Lecture 8 (Loops)

While Syntax

Logical expression that determineswhether the action is to be executed

while ( Expression ) Action

Action to be iterativelyperformed until logical

expression is false

Page 33: Lecture 8 (Loops)

While Semantics

Expression

Action

true false

Expression is evaluated at the

start of each iteration of the

loop

If Expression is true, Action is

executed If Expression is false, program

execution continues with next statement

Page 34: Lecture 8 (Loops)

int sum , number ;sum = 0 ;number = 1 ;while ( number <= 1000 ){

sum = sum + number ; number = number + 1 ;}cout << “ The sum of the first 1000 integer starting from 1 is ”

<< sum ;

Example

Page 35: Lecture 8 (Loops)

(User Defined)while (number <=

UpperLimit)

Page 36: Lecture 8 (Loops)

int sum, number , UpperLimit ;sum = 0 ;number = 1 ;cout << “ Please enter the upper limit for which you want the

sum ” ;cin >> UpperLimi t;while (number <= UpperLimit){

sum = sum + number ;number = number +1 ;

}cout << “ The sum of the first ” << UpperLimit

<< “ integer is ” << sum ;

Example

Page 37: Lecture 8 (Loops)

if ( number % 2 == 0 ){

sum = sum + number ;

}number = number + 1

;

Sum Of Even Numbers

Page 38: Lecture 8 (Loops)

sum = 0;number = 1;cout << “ Please enter the upper limit for which you want the

sum ”;cin >> UpperLimit;while (number <= UpperLimit){

if (number % 2 == 0)sum = sum + number;

number = number + 1;}cout << “ The sum of all even integer between 1 and ”

<< UpperLimit << “ is” << sum;

Example

Page 39: Lecture 8 (Loops)

Computing an Average

int listSize = 4;

int numberProcessed = 0;

double sum = 0;

while (numberProcessed < listSize) {

double value;

cin >> value;

sum += value;

++numberProcessed;

}

double average = sum / numberProcessed ;

cout << "Average: " << average << endl;

Page 40: Lecture 8 (Loops)

Execution Trace

int listSize = 4;

int numberProcessed = 0;

double sum = 0;

while (numberProcessed < listSize) {

double value;

cin >> value;

sum += value;

++numberProcessed;

}

double average = sum / numberProcessed ;

cout << "Average: " << average << endl;

Suppose input contains: 1 5 3 1 6

listSize 4

Page 41: Lecture 8 (Loops)

Execution Trace

int listSize = 4;

int numberProcessed = 0;

double sum = 0;

while (numberProcessed < listSize) {

double value;

cin >> value;

sum += value;

++numberProcessed;

}

double average = sum / numberProcessed ;

cout << "Average: " << average << endl;

numberProcessed

Suppose input contains: 1 5 3 1 6

4listSize

0

Page 42: Lecture 8 (Loops)

Execution Trace

int listSize = 4;

int numberProcessed = 0;

double sum = 0;

while (numberProcessed < listSize) {

double value;

cin >> value;

sum += value;

++numberProcessed;

}

double average = sum / numberProcessed ;

cout << "Average: " << average << endl;

numberProcessed

sum

Suppose input contains: 1 5 3 1 6

4listSize

0

0

Page 43: Lecture 8 (Loops)

Execution Trace

int listSize = 4;

int numberProcessed = 0;

double sum = 0;

while (numberProcessed < listSize) {

double value;

cin >> value;

sum += value;

++numberProcessed;

}

double average = sum / numberProcessed ;

cout << "Average: " << average << endl;

numberProcessed

sum

Suppose input contains: 1 5 3 1 6

4listSize

0

0

Page 44: Lecture 8 (Loops)

Execution Trace

int listSize = 4;

int numberProcessed = 0;

double sum = 0;

while (numberProcessed < listSize) {

double value;

cin >> value;

sum += value;

++numberProcessed;

}

double average = sum / numberProcessed ;

cout << "Average: " << average << endl;

numberProcessed

sum

value

Suppose input contains: 1 5 3 1 6

4listSize

0

0

--

Page 45: Lecture 8 (Loops)

Execution Trace

int listSize = 4;

int numberProcessed = 0;

double sum = 0;

while (numberProcessed < listSize) {

double value;

cin >> value;

sum += value;

++numberProcessed;

}

double average = sum / numberProcessed ;

cout << "Average: " << average << endl;

numberProcessed

sum

value

Suppose input contains: 1 5 3 1 6

4listSize

0

0

1

Page 46: Lecture 8 (Loops)

Execution Trace

int listSize = 4;

int numberProcessed = 0;

double sum = 0;

while (numberProcessed < listSize) {

double value;

cin >> value;

sum += value;

++numberProcessed;

}

double average = sum / numberProcessed ;

cout << "Average: " << average << endl;

numberProcessed

sum

value

Suppose input contains: 1 5 3 1 6

4listSize

0

0

1

1

Page 47: Lecture 8 (Loops)

Execution Trace

int listSize = 4;

int numberProcessed = 0;

double sum = 0;

while (numberProcessed < listSize) {

double value;

cin >> value;

sum += value;

++numberProcessed;

}

double average = sum / numberProcessed ;

cout << "Average: " << average << endl;

numberProcessed

sum

value

Suppose input contains: 1 5 3 1 6

4listSize

0

1

1

1

Page 48: Lecture 8 (Loops)

Execution Trace

int listSize = 4;

int numberProcessed = 0;

double sum = 0;

while (numberProcessed < listSize) {

double value;

cin >> value;

sum += value;

++numberProcessed;

}

double average = sum / numberProcessed ;

cout << "Average: " << average << endl;

numberProcessed

sum

value

Suppose input contains: 1 5 3 1 6

4listSize

1

1

1

Page 49: Lecture 8 (Loops)

Execution Trace

int listSize = 4;

int numberProcessed = 0;

double sum = 0;

while (numberProcessed < listSize) {

double value;

cin >> value;

sum += value;

++numberProcessed;

}

double average = sum / numberProcessed ;

cout << "Average: " << average << endl;

numberProcessed

sum

value

Suppose input contains: 1 5 3 1 6

4listSize

1

1

--

Page 50: Lecture 8 (Loops)

Execution Trace

int listSize = 4;

int numberProcessed = 0;

double sum = 0;

while (numberProcessed < listSize) {

double value;

cin >> value;

sum += value;

++numberProcessed;

}

double average = sum / numberProcessed ;

cout << "Average: " << average << endl;

numberProcessed

sum

value

Suppose input contains: 1 5 3 1 6

4listSize

1

1

5

Page 51: Lecture 8 (Loops)

Execution Trace

int listSize = 4;

int numberProcessed = 0;

double sum = 0;

while (numberProcessed < listSize) {

double value;

cin >> value;

sum += value;

++numberProcessed;

}

double average = sum / numberProcessed ;

cout << "Average: " << average << endl;

numberProcessed

sum

value

Suppose input contains: 1 5 3 1 6

4listSize

1

1

5

6

Page 52: Lecture 8 (Loops)

Execution Trace

int listSize = 4;

int numberProcessed = 0;

double sum = 0;

while (numberProcessed < listSize) {

double value;

cin >> value;

sum += value;

++numberProcessed;

}

double average = sum / numberProcessed ;

cout << "Average: " << average << endl;

numberProcessed

sum

value

Suppose input contains: 1 5 3 1 6

4listSize

1

6

5

2

Page 53: Lecture 8 (Loops)

Execution Trace

int listSize = 4;

int numberProcessed = 0;

double sum = 0;

while (numberProcessed < listSize) {

double value;

cin >> value;

sum += value;

++numberProcessed;

}

double average = sum / numberProcessed ;

cout << "Average: " << average << endl;

numberProcessed

sum

value

Suppose input contains: 1 5 3 1 6

4listSize

2

6

5

6

Page 54: Lecture 8 (Loops)

Execution Trace

int listSize = 4;

int numberProcessed = 0;

double sum = 0;

while (numberProcessed < listSize) {

double value;

cin >> value;

sum += value;

++numberProcessed;

}

double average = sum / numberProcessed ;

cout << "Average: " << average << endl;

numberProcessed

sum

value

Suppose input contains: 1 5 3 1 6

4listSize

2

6

--

2

Page 55: Lecture 8 (Loops)

Execution Trace

int listSize = 4;

int numberProcessed = 0;

double sum = 0;

while (numberProcessed < listSize) {

double value;

cin >> value;

sum += value;

++numberProcessed;

}

double average = sum / numberProcessed ;

cout << "Average: " << average << endl;

numberProcessed

sum

value

Suppose input contains: 1 5 3 1 6

4listSize

2

6

3

2

Page 56: Lecture 8 (Loops)

Execution Trace

int listSize = 4;

int numberProcessed = 0;

double sum = 0;

while (numberProcessed < listSize) {

double value;

cin >> value;

sum += value;

++numberProcessed;

}

double average = sum / numberProcessed ;

cout << "Average: " << average << endl;

numberProcessed

sum

value

Suppose input contains: 1 5 3 1 6

4listSize

2

6

3

9

Page 57: Lecture 8 (Loops)

Execution Trace

int listSize = 4;

int numberProcessed = 0;

double sum = 0;

while (numberProcessed < listSize) {

double value;

cin >> value;

sum += value;

++numberProcessed;

}

double average = sum / numberProcessed ;

cout << "Average: " << average << endl;

numberProcessed

sum

value

Suppose input contains: 1 5 3 1 6

4listSize

2

9

3

3

Page 58: Lecture 8 (Loops)

Execution Trace

int listSize = 4;

int numberProcessed = 0;

double sum = 0;

while (numberProcessed < listSize) {

double value;

cin >> value;

sum += value;

++numberProcessed;

}

double average = sum / numberProcessed ;

cout << "Average: " << average << endl;

numberProcessed

sum

value

Suppose input contains: 1 5 3 1 6

4listSize

3

9

3

3

Page 59: Lecture 8 (Loops)

Execution Trace

int listSize = 4;

int numberProcessed = 0;

double sum = 0;

while (numberProcessed < listSize) {

double value;

cin >> value;

sum += value;

++numberProcessed;

}

double average = sum / numberProcessed ;

cout << "Average: " << average << endl;

numberProcessed

sum

value

Suppose input contains: 1 5 3 1 6

4listSize

3

9

--

3

Page 60: Lecture 8 (Loops)

Execution Trace

int listSize = 4;

int numberProcessed = 0;

double sum = 0;

while (numberProcessed < listSize) {

double value;

cin >> value;

sum += value;

++numberProcessed;

}

double average = sum / numberProcessed ;

cout << "Average: " << average << endl;

numberProcessed

sum

value

Suppose input contains: 1 5 3 1 6

4listSize

3

9

1

3

Page 61: Lecture 8 (Loops)

Execution Trace

int listSize = 4;

int numberProcessed = 0;

double sum = 0;

while (numberProcessed < listSize) {

double value;

cin >> value;

sum += value;

++numberProcessed;

}

double average = sum / numberProcessed ;

cout << "Average: " << average << endl;

numberProcessed

sum

value

Suppose input contains: 1 5 3 1 6

4listSize

3

9

1

10

Page 62: Lecture 8 (Loops)

Execution Trace

int listSize = 4;

int numberProcessed = 0;

double sum = 0;

while (numberProcessed < listSize) {

double value;

cin >> value;

sum += value;

++numberProcessed;

}

double average = sum / numberProcessed ;

cout << "Average: " << average << endl;

numberProcessed

sum

value

Suppose input contains: 1 5 3 1 6

4listSize

3

10

1

4

Page 63: Lecture 8 (Loops)

Execution Trace

int listSize = 4;

int numberProcessed = 0;

double sum = 0;

while (numberProcessed < listSize) {

double value;

cin >> value;

sum += value;

++numberProcessed;

}

double average = sum / numberProcessed ;

cout << "Average: " << average << endl;

numberProcessed

sum

value

Suppose input contains: 1 5 3 1 6

4listSize

3

10

1

4

Page 64: Lecture 8 (Loops)

Execution Trace

int listSize = 4;

int numberProcessed = 0;

double sum = 0;

while (numberProcessed < listSize) {

double value;

cin >> value;

sum += value;

++numberProcessed;

}

double average = sum / numberProcessed ;

cout << "Average: " << average << endl;

numberProcessed

sum

Suppose input contains: 1 5 3 1 6

4listSize

3

10

average 2.5

4

Page 65: Lecture 8 (Loops)

Execution Trace

int listSize = 4;

int numberProcessed = 0;

double sum = 0;

while (numberProcessed < listSize) {

double value;

cin >> value;

sum += value;

++numberProcessed;

}

double average = sum / numberProcessed ;

cout << "Average: " << average << endl;

numberProcessed

sum

average

Suppose input contains: 1 5 3 1 6

4listSize

3

10

2.5

4

Page 66: Lecture 8 (Loops)

Execution Trace

int listSize = 4;

int numberProcessed = 0;

double sum = 0;

while (numberProcessed < listSize) {

double value;

cin >> value;

sum += value;

++numberProcessed;

}

double average = sum / numberProcessed ;

cout << "Average: " << average << endl;

Suppose input contains: 1 5 3 1 6

Stays in stream until extracted

Page 67: Lecture 8 (Loops)

Power of Two Table

const int TableSize = 20;

int i = 0;long Entry = 1;

cout << "i" << "\t\t" << "2 ** i" << endl;

while (i < TableSize) {cout << i << "\t\t" << Entry << endl;Entry = 2 * Entry;++i;

}

Page 68: Lecture 8 (Loops)

Better Way of Averagingint numberProcessed = 0;

double sum = 0;

double value;

while ( cin >> value ) {

sum += value;

++numberProcessed;

}

double average = sum / numberProcessed ;

cout << "Average: " << average << endl;

What if list is empty?

The value of the input operation corresponds to true only if a successful

extraction was made

Page 69: Lecture 8 (Loops)

Even Better Way of Averagingint numberProcessed = 0;double sum = 0;double value;while ( cin >> value ) {

sum += value;++numberProcessed;

}if ( numberProcessed > 0 ) {

double average = sum / numberProcessed ;cout << "Average: " << average << endl;

}else {

cout << "No list to average" << endl;}

Page 70: Lecture 8 (Loops)

Table Revisiting

const int TableSize = 20;

long Entry = 1;

cout << "i" << "\t\t" << "2**i" << endl;

for (int i = 0; i <= TableSize; ++i) {cout << i << "\t\t" << Entry << endl;Entry *= 2;

}

Page 71: Lecture 8 (Loops)

Table Revisiting

const int TableSize = 20;

long Entry = 1;

cout << "i" << "\t\t" << "2**i" << endl;

for (int i = 0; i < TableSize; ++i) {cout << i << "\t\t" << Entry << endl;Entry = 2 * Entry;

}

cout << "i is" << i << endl; // illegal

The scope of i is limited to the loop!

Page 72: Lecture 8 (Loops)

int Counter1 = 0;int Counter2 = 0;int Counter3 = 0;int Counter4 = 0;int Counter5 = 0;

++Counter1;

for (int i = 1; i <= 10; ++i) {

++Counter2;

for (int j = 1; j <= 20; ++j) { ++Counter3; }

++Counter4;}

++Counter5;

cout << Counter1 << " " << Counter2 << " "

<< Counter3 << " " << Counter4 << " "

<< Counter5 << endl;

Page 73: Lecture 8 (Loops)

For Into While

Observation The for statement is equivalent to

{

ForInit;

while (ForExpression) {

Action;

PostExpression;

}

}

Page 74: Lecture 8 (Loops)

Counting Characters

int NumberOfNonBlanks = 0;int NumberOfUpperCase = 0;char c;while (cin >> c) {

++NumberOfNonBlanks;if ((c >= 'A') && (c <= 'Z')) {

++NumberOfUpperCase;}

}cout << "Nonblank characters: " << NumberOfNonBlanks << endl << "Uppercase characters: " << NumberOfUpperCase << endl;

Only extracts nonblank characters

Page 75: Lecture 8 (Loops)

Counting Charactersint NumberOfNonBlanks = 0;int NumberOfUpperCase = 0;char c;cout<<“To Terminate Press 0 ”;while (cin >> c && C !- ‘0’) {

++NumberOfNonBlanks;if ((c >= 'A') && (c <= 'Z')) {

++NumberOfUpperCase;}

}cout << "Nonblank characters: " << NumberOfNonBlanks << endl << "Uppercase characters: " << NumberOfUpperCase << endl;

Use to terminate

Page 76: Lecture 8 (Loops)

Counting All Characters

char c;

int NumberOfCharacters = 0;

int NumberOfLines = 0;

while ( cin.get(c) ) {++NumberOfCharacters;if (c == '\n') {

++NumberOfLines}

}

cout << "Characters: " << NumberOfCharacters

<< endl << "Lines: " << NumberOfLines

<< endl;

Extracts all characters

Page 77: Lecture 8 (Loops)

#include <iostream>#include <fstream>using namespace std;int main() {

ifstream fin("mydata.txt");int ValuesProcessed = 0;float ValueSum = 0;float Value;while ( fin >> Value ) {

ValueSum += Value;++ValuesProcessed;

}if (ValuesProcessed > 0) {

ofstream fout("average.txt");float Average = ValueSum / ValuesProcessed;fout << "Average: " << Average << endl;return 0;

}else {

cerr << "No list to average" << endl;return 1;

}}

File Processing

Page 78: Lecture 8 (Loops)

Iteration Do’s

Key Points Make sure there is a statement that will eventually

terminate the iteration criterion The loop must stop!

Make sure that initialization of loop counters or iterators is properly performed

Have a clear purpose for the loop Document the purpose of the loop Document how the body of the loop advances the

purpose of the loop


Recommended