Loops
Control Structures II (Repetition)
Introduction to Programming
Dr. Sajid Khan
Objectives
In this chapter you will:
• Learn about repetition (looping) control structures
• Explore how to construct and use count-controlled, sentinel-
controlled and flag-controlled
• Examine break and continue statements
• Discover how to form and use nested control structures
2
Why Is Repetition Needed?
• Repetition allows you to efficiently use variables
• Can input, add, and average multiple numbers using a limited
number of variables
• For example, to add five numbers:
• Declare a variable for each number, input the numbers and add the variables
together
• Create a loop that reads a number into a variable and adds it to a variable
that contains the sum of the numbers
3
The while Loop
• The general form of the while statement is:
while(expression)
statement
• while is a reserved word
• Statement can be simple or compound
• Expression acts as a decision maker and is usually a logical expression
• Statement is called the body of the loop
• The parentheses are part of the syntax
4
The while Loop (continued)
• Expression provides an entry condition
• Statement executes if the expression initially evaluates to true
• Loop condition is then reevaluated
• Statement continues to execute until the expression is no longer true
5
The while Loop (continued)
• Infinite loop: continues to execute endlessly
• Can be avoided by including statements in the loop body that assure
exit condition will eventually be false
6
7
Counter-Controlled while Loops
• If you know exactly how many pieces of data need to be read, the
while loop becomes a counter-controlled loop
• The syntax is:
counter = 0;
while(counter < N)
{
.
counter++;
.
}
8
Example 1
• Design a program that display “Hello World” 10 times
• int counter = 1;
• while(counter<=10)
•{
• cout<<"Hello World"<<endl;
• counter++;
•}
9
Example 2
• Design a program that display “Hello world, this is line N”
• int counter = 1;
• while(counter<=10)
•{
• cout<<"Hello World. This is Line "<<counter<<endl;
• counter++;
•}
10
Example 3
• Design a program that prompt user to enter 5 numbers and display
sum of all these numbers
11
• int counter = 1, num, sum = 0;
• while(counter<=5)
•{
• cout<<"Please enter "<<counter<<"th number"<<endl;
• cin>>num;
• sum = sum + num;
• counter++;
•}
• cout<<"Sum of entered numbers is "<<sum<<endl;
12
Sentinel-Controlled while Loops
• Sentinel variable is tested in the condition and loop ends when
sentinel is encountered
• The syntax is:
cin>>variable;
while(variable != sentinel)
{
.
cin>> variable;
.
}
13
Example
• Design a program that stays alive when user enter number other
than 100, if user enter 100, the program should terminate
• int num;
• cout<<"Please enter any number other than 100"<<endl;
• cin>>num;
• while(num!=100)
•{
• cout<<"Its good that you want to be with us"<<endl;
• cout<<"Please enter any number other than 100 to continue"<<endl;
• cin>>num;
•}
14
Flag-Controlled while Loops
• A flag-controlled while loop uses a Boolean variable to control the
loop
• The flag-controlled while loop takes the form:
found = false;
while(!found)
{
.
if(expression)
found = true;
.
}
15
Example
• Design a program that asks user to enter positive numbers. It should
add all the entered positive numbers. If user enters a negative
number, it should stop asking user to enter numbers and display sum
of all provided positive numbers.
16
• int num, sum = 0;
• bool flag = true;
• while(flag)
• {
• cout<<"Please enter a positive number"<<endl;
• cin>>num;
• if(num>=0)
• {
• sum = sum + num;
• }
• else
• {
• cout<<"You entered a negative number. \nThis program is about to
terminate"<<endl;
• flag = false;
•}
•}
• cout<<"Sum of positive numbers is "<<sum<<endl;
17
The for Loop
• The general form of the for statement is:
for(initial statement; loop condition;
update statement)
statement
• The initial statement, loop condition, and update statement are
called for loop control statements
18
19
The for Loop (continued)
• The for loop executes as follows:
• initial statement executes
• loop condition is evaluated
• If loop condition evaluates to true
• Execute for loop statement
• Execute update statement
• Repeat previous step until the loop condition
evaluates to false
• initial statement initializes a variable
20
The for Loop (continued)
• initial statement in the for loop is the first to be executed and is
executed only once
• If the loop condition is initially false, the loop body does not execute
• The update expression changes the value of the loop control variable
which eventually sets the value of the loop condition to false
• The for loop executes indefinitely if the loop condition is always true
21
The for Loop (continued)
• Fractional values can be used for loop control variables
• A semicolon at the end of the for statement is a semantic error
• In this case, the action of the for loop is empty
• If the loop condition is omitted
• It is assumed to be true
22
The for Loop (continued)
• In a for statement, all three statements (initial statement, loop
condition, and update statement) can be omitted
• The following is a legal for loop:
for(;;)
cout<<"Hello"<<endl;
23
Examples
• Lets repeat the examples of while loop
24
Example 1
• Design a program that display “Hello World” 10 times
• for(int i = 1;i<=10;i++)
•{
• cout<<"Hello"<<endl;
•}
25
• Where i++ is post increment of i.
26
• There are two ways to initialize the counter i.
• For example, the above example can be implemented using
• int i;
• for(i = 1;i<=10;i++)
•{
• cout<<"Hello"<<endl;
•}
27
Difference between two approaches?
• Try to run source codes given in next two slides
28
First case
• for(int i = 1;i<=10;i++)
•{
• cout<<"Hello"<<endl;
•}
• cout<<"Final value of counter is "<<i<<endl;
29
Second case
• int i;
• for(i = 1;i<=10;i++)
•{
• cout<<"Hello"<<endl;
•}
• cout<<"Final value of counter is "<<i<<endl;
30
Difference?
• In first case, the counter i is local variable of for loop that can be
accessed inside the loop body.
• Immediately after loop is executed completely, the counter i is
destroyed. That’s why we can’t access it outside the loop body.
• In second case, counter i is local variable of main body, since main
contain for loop as well, that’s why it is accessible inside the loop
body as well.
31
Example 2
• Design a program that display “Hello world, this is line N”
• int i;
• for(i = 1;i<=10;i++)
•{
• cout<<"Hello world, this is line “<<i<<endl;
•}
32
Example 3
• Design a program that prompt user to enter 5 numbers and display
sum of all these numbers
• int num, sum = 0;
• for(int i = 1;i<=5;i++)
•{
• cout<<"Enter any number"<<endl;
• cin>>num;
• sum = sum + num;
•}
• cout<<"Final sum is "<<sum<<endl;
33
Example 4
• Design a program that stays alive when user enter number other than 100, if
user enter 100, the program should terminate
• int num, sum = 0;
• for(int i = 1;i<2;)
• {
• cout<<"Enter any positive number"<<endl;
• cin>>num;
• if(num!=100)
• sum = sum + num;
• else
• i = 2;
• }
• cout<<"Final sum is "<<sum<<endl;
34
Example 5
• Design a program that asks user to enter positive numbers. It should
add all the entered positive numbers. If user enters a negative
number, it should stop asking user to enter numbers and display sum
of all provided positive numbers.
35
• int num, sum = 0;
• for(int i = 1;i<2;)
•{
• cout<<"Enter any positive number"<<endl;
• cin>>num;
• if(num>0)
• sum = sum + num;
• else
• i = 2;
•}
• cout<<"Final sum is "<<sum<<endl;
36
The do…while Loop
• The general form of a do...while statement is:
do
statement
while(expression);
• The statement executes first, and then the expression is evaluated
• If the expression evaluates to true, the statement executes again
• As long as the expression in a do...while statement is true, the
statement executes
37
The do…while Loop (continued)
• To avoid an infinite loop, the loop body must contain a statement
that makes the expression false
• The statement can be simple or compound
• If compound, it must be in braces
• do...while loop has an exit condition and always iterates at least once
(unlike for and while)
38
39
Example
• Design a program that prompt user to enter numbers until user type
‘N’
40
Break & Continue Statements
• break and continue alter the flow of control
• When the break statement executes in a repetition structure, it
immediately exits
• The break statement, in a switch structure, provides an immediate
exit
• The break statement can be used in while, for, and do...while loops
41
Break & Continue Statements (continued)
• The break statement is used for two purposes:
1. To exit early from a loop
2. To skip the remainder of the switch structure
• After the break statement executes, the program continues with
the first statement after the structure
• The use of a break statement in a loop can eliminate the use of
certain (flag) variables
42
Break & Continue Statements (continued)
• continue is used in while, for, and do-while structures
• When executed in a loop
• It skips remaining statements and proceeds with the next iteration of the
loop
43
Break & Continue Statements (continued)
• In a while and do-while structure
• Expression (loop-continue test) is evaluated immediately after the continue
statement
• In a for structure, the update statement is executed after the
continue statement
• Then the loop condition executes
44
Example of continue
• int num, sum = 0;
• for(int i = 1;i<=30;i++)
•{
• if(i == 10)
• continue;
• cout<<"Hello world. This is "<<i<<"th line"<<endl;
•}
45
Example of break
• Design a program that stays alive when user enter number other than 100, if
user enter 100, the program should terminate
• int num;
• cout<<"Please enter any number other than 100"<<endl;
• cin>>num;
• while(true)
•{
• if(num == 100)
• break;
• cout<<"Its good that you want to be with us"<<endl;
• cout<<"Please enter any number other than 100 to continue"<<endl;
• cin>>num;
•}
• cout<<"You came out of the loop"<<endl;
46
Nested Control Structures
• Suppose we want to create the following pattern
*
**
***
****
*****
• In the first line, we want to print one star, in the second line two
stars and so on
47
Nested Control Structures (continued)
• Since five lines are to be printed, we start with the following for
statement
for(i = 1; i <= 5 ; i++)
• The value of i in the first iteration is 1, in the second iteration it is 2,
and so on
• Can use the value of i as limit condition in another for loop nested
within this loop to control the number of starts in a line
48
Nested Control Structures (continued)
• The syntax is:
for(i = 1; i <= 5 ; i++)
{
for(j = 1; j <= i; j++)
cout<<"*";
cout<<endl;
}
49
Nested Control Structures (continued)
• What pattern does the code produce if we replace the first for
statement with the following?
for (i = 5; i >= 1; i--)
• Answer:
*****
****
***
**
*
50
Summary
• C++ has three looping (repetition) structures: while, for, and do…
while
• while, for, and do are reserved words
• while and for loops are called pre-test loops
• do...while loop is called a post-test loop
• while and for may not execute at all, but do...while always executes
at least once
51
Summary
• while: expression is the decision maker, and the statement is the
body of the loop
• In a counter-controlled while loop,
• Initialize counter before loop
• Body must contain a statement that changes the value of the
counter variable
• A sentinel-controlled while loop uses a sentinel to control the while
loop
• An EOF-controlled while loop executes until the program detects
the end-of-file marker
52
Summary
• for loop: simplifies the writing of a count-controlled while loop
• Executing a break statement in the body of a loop immediately
terminates the loop
• Executing a continue statement in the body of a loop skips to the
next iteration
• After a continue statement executes in a for loop, the update
statement is the next statement executed
53