chapter 4 repetition structures

42
CHAPTER 4 REPETITION STRUCTURES 2 nd Semester 1432 -1433 1 King Saud University College of Applied studies and Community Service CSC1101 By: Asma Alosaimi Edited By: Fatimah Alakeel

Upload: kevyn

Post on 23-Feb-2016

62 views

Category:

Documents


1 download

DESCRIPTION

King Saud University College of Applied studies and Community Service CSC1101 By: Asma Alosaimi Edited By: Fatimah Alakeel. Chapter 4 Repetition Structures. 2 nd Semester 1432 -1433. Overview. Repetition in Programs Counting Loops Using while statement Using for statement - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Chapter 4  Repetition Structures

1

CHAPTER 4 REPETITION STRUCTURES

2nd Semester 1432 -1433

King Saud University College of Applied studies and Community ServiceCSC1101By: Asma AlosaimiEdited By: Fatimah Alakeel

Page 2: Chapter 4  Repetition Structures

Overview2

Repetition in Programs Counting Loops

Using while statement Using for statement

Increment and Decrement Operators Conditional Loops

Sentinel-Controlled loops Flag-Controlled loop

Nested loop Do-While loop break and continue statement

A.AlOsaimi

Page 3: Chapter 4  Repetition Structures

A.AlOsaimi

Types of Control Structures3

Page 4: Chapter 4  Repetition Structures

A.AlOsaimi

4

What is Meant by Loops? Why Do We Need Them?

LoopGroup of instructions that a computer

executes repeatedly while some condition remains true

Why do we need them?To repeat statements until a certain

condition becomes false.

Page 5: Chapter 4  Repetition Structures

A.AlOsaimi

Loop Statementes5

Loop statements are: For loop While loop Do While loop Loop

Counting loop

For loopCounter-

controlled while loop

Conditional Loop

Flag-Controlled while loop

Sentinel-Controlled

while loops

Page 6: Chapter 4  Repetition Structures

Loop Statements

A.AlOsaimi

6

T

F

do…while statement

T

F

while statement

T

F

for statement

while (condition){

…}

for (initialize; condition; update){..

}

do {

..} while ( condition);

Page 7: Chapter 4  Repetition Structures

A.AlOsaimi

Counting Loop7

Definite repetition: know how many times the loop will execute

Control variable used to count repetitionsTwo types of Counting loop:

Counter-Controlled while loop For loop

Page 8: Chapter 4  Repetition Structures

A.AlOsaimi

Counter–controlled while loop8

The loop shown below in pseudo code is called a counter-controlled while loop because its repetition is managed by a loop control variable whose value represents a count.

Set loop control variable to an initial value of 0While loop control variable < final value

... //Do something multiple timesIncrease loop control variable by 1.

Page 9: Chapter 4  Repetition Structures

A.AlOsaimi

Counter–controlled while loopExample 1

9

This slide shows a program fragment that computes and displays the gross pay for seven employees. The loop body is the compound statements (those between { and }).

The loop repetition condition controls the while loop.count_emp = 0;while (count_emp < 7){

cout<<"Hours:";cin>>hours;cout<<"Rate:";cin>>rate;pay = hours * rate;cout<<"Pay is:”<< pay;count_emp = count_emp + 1;

}Cout<<"\nAll employees processed\n";

loop repetition condition

Page 10: Chapter 4  Repetition Structures

A.AlOsaimi

Counter–controlled while loopwhile Statement

10

Syntax of the while Statement: Initialization. i.e. count_emp = 0; Testing(condition). i.e. count_emp < 7 Updating i.e. count_emp = count_emp + 1;

The above steps must be followed for every while loop.

If any of these are skipped it may produce an infinite loop

Page 11: Chapter 4  Repetition Structures

Counter–controlled while loopExample 2: Computing Sum

If we want to compute , we need to do 1+2+3+...+100

We can use a while loop./* computes the sum: 1 + 2 + 3 + ....+ 100 */#include <iostream>Using namespace std;int main(void) { int sum =0, i = 1; while (i <= 100) { sum = sum + i; i = i + 1; } cout<<"Sum is :"<<sum; return 0;}

100

1i

i11

A.AlOsaimi

Page 12: Chapter 4  Repetition Structures

A.AlOsaimi

The for loop12

A better way to construct a counting loop is to use the for statement.

C++ provides the for statement as another form for implementing loops.

As before we need to Initialize the loop control variable Test the loop repetition condition Update the loop control variable.

An important feature of the for statement in C++is that it supplies a designated place for each of these three components.

Page 13: Chapter 4  Repetition Structures

A.AlOsaimi

The for Repetition Statement

13

No semicolon (;) after last expression

Page 14: Chapter 4  Repetition Structures

A.AlOsaimi

14

For SyntaxYou can write:int i;for (i = 1; i <= 100; i++)

OR

for (int i = 1; i <= 100; i++)

Page 15: Chapter 4  Repetition Structures

A.AlOsaimi

General Form of for statement15

for (initialize; test; update){

//Steps to perform each iteration} First, the initialization expression is executed. Then, the loop repetition condition is tested. If the condition is true, the statement enclosed in

{ } are executed. After that the update expression is evaluated. Then the loop repetition condition is retested. The statement is repeated as long as the

condition is true. For loop can be used to count up or down by any

interval.

Page 16: Chapter 4  Repetition Structures

A.AlOsaimi

for Example 116

To compute the sum of 1 to 100:int sum = 0;int i;for (i = 1; i <= 100; i++){ sum = sum + i;}

Note: i++ is the same as i = i + 1 and as i += 1.

Page 17: Chapter 4  Repetition Structures

A.AlOsaimi

Example 2 – using while loop

17

Example: Print the number from 1 to 10 1 2 Counter-controlled repetition */ 3 #include <iostream> 4 using namespace std; 5 /* function main begins program execution */ 6 int main() 7 { 8 int counter = 1; /* initialization */ 9 10 while ( counter <= 10 ) { /* repetition condition */ 11 cout<< counter <<endl; /* display counter */ 12 ++counter; /* increment */ 13 } /* end while */ 14 15 return 0; /* indicate program ended successfully */ 16 17 } /* end function main */

12345678910

Page 18: Chapter 4  Repetition Structures

A.AlOsaimi

Example 3– using for

18

Example: Print the number from 1 to 10

12345678910

1 2 Counter-controlled repetition with the for statement */ 3 #include <iostream> 4 using namespace std; 5 /* function main begins program execution */ 6 int main() 7 { 8 int counter; /* define counter */ 9 10 /* initialization, repetition condition, and increment 11 are all included in the for statement header. */ 12 for ( counter = 1; counter <= 10; counter++ ) { 13 cout<< counter <<endl; 14 } /* end for */ 15 16 return 0; /* indicate program ended successfully */ 17 18 } /* end function main */

Page 19: Chapter 4  Repetition Structures

A.AlOsaimi

Increment and Decrement Operators19

The counting loops that we have seen have all included assignment expressions of the form

counter = counter + 1 or counter++ or counter += 1 This will add 1 to the variable counter. If

we use a - instead of a +, it will subtract 1 from the variable counter.

Be careful about using the ++ or -- options.

Page 20: Chapter 4  Repetition Structures

A.AlOsaimi

Prefix and Postfix Increment/Decrement20

The values of the expression in which the ++ operator is used depends on the position of the operator.

When the ++ operator is placed immediately in front of its operand (prefix increment, Ex: ++x), the value of the expression is the variable’s value after incrementing.

When the ++ operator is placed immediately after the operand (postfix increment , Ex: x++), the value of the expression is the value of the variable before it is incremented.

Page 21: Chapter 4  Repetition Structures

A.AlOsaimi

Comparison of Prefix and Postfix Increments21

Page 22: Chapter 4  Repetition Structures

A.AlOsaimi

More on Prefix and Postfix Operator

Cout<< --n;Cout<< n;

Cout<< n--;Cout<< n;

22

• If n = 4, what will be the output of the following?

3 3 4 3

Page 23: Chapter 4  Repetition Structures

Conditional Loops23

In many programming situations, we will not be able to determine the exact number of loop repetitions before loop execution begins. Sentinel-Controlled loops Flag-Controlled loop

Page 24: Chapter 4  Repetition Structures

Sentinel-Controlled while Loop24

Used when exact number of entry pieces is unknown, but last entry (special/sentinel value) is known.

General form:Input the first data item into variable;

while (variable != sentinel){

. . . input a data item into variable; . . .}

Page 25: Chapter 4  Repetition Structures

Sentinel-Controlled while Loopexample1

25

temp = 1;Cout << "Enter a value, 0 will stop the program:";Cin >> value;

while(value != 0) { temp = temp * value;

cout << "Enter a value, 0 will stop the program:"); cin >> value;}Cout << "The product is:” << temp; It is very common for loops to have identical initialization and

update steps while performing input operations where the number of input values is not known in advance.

Initialization

Testing

Update

Page 26: Chapter 4  Repetition Structures

Sentinel-Controlled while Loopexample2

26/* Compute the sum of a list of exam scores. */#include <iostream>Using namespace std;#define SENTINEL -99

int main() { int sum = 0, /* sum of scores input so far */ score; /* current score */ cout<<"Enter first score or “<< SENTINEL<< “to quit: "; cin>>score; while (score != SENTINEL) { sum += score; cout << "Enter next score “<< SENTINEL<< “to quit: "; cin>>score; } cout<< “\nSum of exam scores is:”<< sum; return (0);}

Page 27: Chapter 4  Repetition Structures

Convert Sentinel Controlled while loop for loop

27

Because the for statement combines the initialization, test, and update in once place, some programmers prefer to use it to implement sentinel-controlled loops.

Cout<<"Enter first score or ”<< SENTINEL << “to quit:”;for( cin >> score); score != SENTINEL; cin >> score){ sum += score; cout << "Enter next score or ” << SENTINEL << “to quit:”;

}

Page 28: Chapter 4  Repetition Structures

28

Flag-Controlled while Loop int value used to control loop ( true 1 or false 0) . General form:

bool found = false; while (!found){ .

. . if (expression) found = true; . . .}

Page 29: Chapter 4  Repetition Structures

29

Example#include<iostream> using namespace std;   int main(){ bool found = false; int num =0;   while(!found) {         num++;        

if (num == 3){ found = true;         cout<< "3 is found“ << endl;        

cout<< "value of flag is:" << found << endl;     }    cout << "inside loop"<<endl;        } }

OUTPUT:inside loop inside loop 3 is found value of flag is:1 inside loop

Page 30: Chapter 4  Repetition Structures

30

Flag-Controlled while Loop-Example 1

//Flag-controlled while loop.//Guessing the number game.

#include <cstdlib>#include <iostream>Using namespace std;

int main() { //declare the variables int num; //variable to store the random number int guess; //variable to store the number guessed by the user

bool done; //boolean variable to control the loop

num = (int) (rand() % 10) +1; // this gives a random number from 1 to 10 done = false; -------------- next page

C Standard General Utilities Library It defines several general purpose functions such as rand()

Page 31: Chapter 4  Repetition Structures

31

Flag-Controlled while Loop-Example 1 (continued)

while (!done) {

cout << "Enter an integer greater than or equal to 0 and less than 10: "; cin >> guess; cout << endl; if (guess == num) { cout << "You guessed the correct number."; done = true; } else if (guess < num) cout << "Your guess is lower than the number.\n Guess again!"; else cout << "Your guess is higher than the number.\nGuess again!";

} //end while return(0);

}

Page 32: Chapter 4  Repetition Structures

Nested Loops32

Usually used to work with two dimensional arrays (later).

Nested loops consist of an outer loop with one or more inner loops.

Each time the outer loop is repeated, the inner loops are reentered Their loop control expressions are

reevaluated All required iterations are performed again.

Page 33: Chapter 4  Repetition Structures

Example: Sum of Scores of 12 sections

33

/*calculate the total scores in each section for 12 sections. Each section's * scores are terminated by the sentinel -99. */#include <iostream>Using namespace std;#define SENTINEL -99#define NUM_SECTIONS 12int main(){ int sec, /* number of section being processed */ score, /* one score for this sec */ sum; /* total scores so far for this section */ cout << “sum of scores for each section\n"; for (sec= 1 ; sec <= NUM_SECTIONS ; ++sec) { sum = 0; for (cin>> score; score != SENTINEL; cin>>score) { sum += score; } cout << " Section %2d: %2d\n", sec, sum; } return (0);}

Page 34: Chapter 4  Repetition Structures

What is the Output?34

/* * Illustrates a pair of nested counting loops */#include <iostream>Using namespace std;int main(){ int i, j; /* loop control variables */ cout << " I J\n"; for (i = 1; i < 4; ++i) { cout << "Outer",<< i; for (j = 0; j < i; ++j) { cout << " Inner” << j; } /* end of inner loop */ } /* end of outer loop */

return (0);}

//output: I JOuter 1 Inner 0Outer 2 Inner 0 Inner 1Outer 3 Inner 0 Inner 1 Inner 2

Page 35: Chapter 4  Repetition Structures

do while statement35

Both the for statement and the while statement evaluate the loop condition before the first execution of the loop body.

In most cases, this pretest is desirable and prevents the loop from executing when there may be no data items to process.

There are some situations, generally involving interactive input, when we know that a loop must execute at least one time.

Page 36: Chapter 4  Repetition Structures

do while Example136

#include <iostream>Using namespace std;#define KMS_PER_MILE 1.609/* converts miles to kilometers - repeatedly */int main() { double kms, miles; char res; //for user response [y/n] do { cout << "Enter the distance in miles> "); cin>> miles; kms = KMS_PER_MILE * miles; cout << "That equals”<< kms << “kilometers.”<<endl; cout << “Do you wish to try again [y/n]? “<<endl; cin>> res; } while (res == 'Y' || res == 'y'); return (0);}

Page 37: Chapter 4  Repetition Structures

do while Example237

#include <iostream>Using namespace std;int main () { // Another use of do-while is to check valid input int n_min, n_max, /* minimum and maximum values*/ inval; /* data value which user enters*/ // check validity of input. n_min must be < n_max do { cout << "Enter minimum and maximum valid values> "); cin>> n_min >> n_max;

if (n_min >= n_max) cout << "Wrong input\n");

} while ( n_min >= n_max); // condition of while is true as long as the input is wrong

Page 38: Chapter 4  Repetition Structures

do while Example338

/* next do-while checks that the entered value is between n_min and n_max */

do { cout << "Enter an integer between %d and %d inclusive> ", n_min, n_max); cin>> inval ; if (inval < n_min || inval > n_max) cout << "Sorry wrong input, try agin\n"); } while (inval < n_min || inval > n_max) ; cout << "input checked successfully"); return 0; }

Page 39: Chapter 4  Repetition Structures

break Statements39

Used to exit early from a loop. (while, for, and do...while)

skip remainder of switch structure. Can be placed within if statement of a

loop. If condition is met, loop is exited

immediately. After the break statement executes, the

program continues to execute with the first statement after the structure

Page 40: Chapter 4  Repetition Structures

break Statements40

Example :int count ;for ( count = 1 ; count <= 10 ; count ++ )

{ if ( count == 5) break ;

cout << count }Output1 2 3 4

Page 41: Chapter 4  Repetition Structures

continue Statements41

Used in while, for, and do...while structures. When executed in a loop, the remaining

statements in the loop are skipped; proceeds with the next iteration of the loop.

When executed in a while/do…while structure, expression is evaluated immediately after continue statement.

In a for structure, the update statement is executed after the continue statement; the loop condition then executes.

Page 42: Chapter 4  Repetition Structures

continue Statements42

Example :int count ;for ( count = 1; count <= 10 ; count ++ )

{ if ( count == 5) continue;

cout << count ; }

Output1 2 3 4 6 7 8 9 10