C++ Programming:
From Problem Analysis
to Program Design, Fourth Edition
Chapter 5: Control Structures II
(Repetition)
Objectives
In this chapter, you will:
• Learn about repetition (looping) control
structures
• Explore how to construct and use count-
controlled, sentinel-controlled, flag-controlled,
and EOF-controlled repetition structures
• Examine break and continue statements
• Discover how to form and use nested control
structures
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 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
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 3
while Looping (Repetition)
Structure
• The general form of the while statement is:
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
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 4
while Looping (Repetition)
Structure (continued)
• Infinite loop: continues to execute endlessly
− Avoided by including statements in loop body
that assure exit condition is eventually false
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 5
while Looping (Repetition)
Structure (continued)
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 6
Designing while Loops
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 7
Case 1: 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
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 8
Case 2: Sentinel-Controlled
while Loops
• Sentinel variable is tested in the condition
and loop ends when sentinel is encountered
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 9
Case 3: Flag-Controlled while
Loops
• A flag-controlled while loop uses a bool
variable to control the loop
• The flag-controlled while loop takes the
form:
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 10
More on Expressions in while
Statements
• The expression in a while statement can be
complex
− For example:
while ((noOfGuesses < 5) && (!isGuessed))
{
…
}
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 11
for Looping (Repetition)
Structure
• The general form of the for statement is:
• The initial statement, loop
condition, and update statement are
called for loop control statements
− initial statement usually initializes a
variable (called the for loop control, or for
indexed, variable)
• In C++, for is a reserved word
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 12
for Looping (Repetition)
Structure (continued)
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 13
for Looping (Repetition)
Structure (continued)
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 14
for Looping (Repetition)
Structure (continued)
• C++ allows you to use fractional values for
loop control variables of the double type
− Results may differ
• The following is a semantic error:
• The following is a legal for loop:
for (;;)
cout << "Hello" << endl;
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 15
for Looping (Repetition)
Structure (continued)
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 16
do…while Looping (Repetition)
Structure
• General form of a do...while:
• The statement executes first, and then the
expression is evaluated
• To avoid an infinite loop, body must contain a
statement that makes the expression false
• The statement can be simple or compound
• Loop always iterates at least once
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 17
do…while Looping (Repetition)
Structure (continued)
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 18
do…while Looping (Repetition)
Structure (continued)
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 19
Divisibility Test by 3 and 9
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 21
Choosing the Right Looping
Structure
• All three loops have their place in C++
− If you know or can determine in advance the
number of repetitions needed, the for loop is
the correct choice
− If you do not know and cannot determine in
advance the number of repetitions needed,
and it could be zero, use a while loop
− If you do not know and cannot determine in
advance the number of repetitions needed,
and it is at least one, use a do...while loop
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 22
break and continue Statements
• break and continue alter the flow of
control
• break statement is used for two purposes:
− To exit early from a loop
• Can eliminate the use of certain (flag) variables
− To skip the remainder of the switch structure
• After the break statement executes, the
program continues with the first statement
after the structure
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 23
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
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 24
Nested Control Structures
• To create the following pattern:
*
**
***
****
*****
• We can use the following code:
for (i = 1; i <= 5 ; i++)
{
for (j = 1; j <= i; j++)
cout << "*";
cout << endl;
}
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 25
Nested Control Structures
(continued)
• What is the result if we replace the first for
statement with the following?
for (i = 5; i >= 1; i--)
• Answer:
*****
****
***
**
*
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 26
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 pretest
loops
• do...while loop is called a posttest loop
• while and for may not execute at all, but
do...while always executes at least once
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 27
Summary (continued)
• while: expression is the decision maker, and
the statement is the body of the loop
• A while loop can be:
− Counter-controlled
− Sentinel-controlled
− EOF-controlled
• In the Windows console environment, the
end-of-file marker is entered using Ctrl+z
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 28
Summary (continued)
• for loop: simplifies the writing of a counter-
controlled while loop
− Putting a semicolon at the end of the for loop
is a semantic error
• 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
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 29