0% found this document useful (0 votes)
68 views41 pages

Chapter 4: Looping Structures: Lecturer: Mrs Rohani Hassan

This document discusses looping structures in C++, including while, do-while, and for loops. It covers using Boolean expressions to control loops, writing nested loops, and the similarities and differences between the three loop types. Optional topics like break, continue, and reading/writing files are also mentioned. The objectives are to use loops to repeatedly execute statements, understand loop flow control, and implement program control with additional loop concepts. Sample code demonstrates tracing a while loop and controlling a loop with user confirmation or a sentinel value.

Uploaded by

SK Kepong
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
68 views41 pages

Chapter 4: Looping Structures: Lecturer: Mrs Rohani Hassan

This document discusses looping structures in C++, including while, do-while, and for loops. It covers using Boolean expressions to control loops, writing nested loops, and the similarities and differences between the three loop types. Optional topics like break, continue, and reading/writing files are also mentioned. The objectives are to use loops to repeatedly execute statements, understand loop flow control, and implement program control with additional loop concepts. Sample code demonstrates tracing a while loop and controlling a loop with user confirmation or a sentinel value.

Uploaded by

SK Kepong
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 41

Chapter 4: Looping Structures

LECTURER : MRS ROHANI HASSAN

Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved. 013225445X
1
Objectives
 To use while, do-while, and for loops to execute statements
repeatedly (§§4.2-4.4).
 To understand the flow of control in loops (§§4.2-4.4).
 To use Boolean expressions to control loops (§§4.2-4.4).
 To write nested loops (§4.5).
 To know the similarities and differences of three types of
loops (§4.6).
 (Optional) To implement program control with break and
continue (§4.7).
 (Optional) To read and write data from/to a file (§4.11).

Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved. 013225445X
2
while Loop Flow Chart
while (loop-continuation-condition) int count = 0;
{ while (count < 100)
{
// loop-body; cout << "Welcome to C++!\n";
Statement(s); count++;
}
}
count = 0;

Loop
false false
Continuation (count < 100)?
Condition?

true true
Statement(s) cout << "Welcome to C++!\n";
(loop body) count++;

(a) (b)

Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
3
animation

Trace while Loop


Initialize count
int count = 0;
while (count < 2)
{
cout << "Welcome to C++!";
count++;
}

Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
4
animation

Trace while Loop, cont.


(count < 2) is true
int count = 0;
while (count < 2)
{
cout << "Welcome to C++!";
count++;
}

Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
5
animation

Trace while Loop, cont.


Print Welcome to C++
int count = 0;
while (count < 2)
{
cout << "Welcome to C++!";
count++;
}

Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
6
animation

Trace while Loop, cont.


Increase count by 1
int count = 0; count is 1 now

while (count < 2)


{
cout << "Welcome to C++!";
count++;
}

Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
7
animation

Trace while Loop, cont.


(count < 2) is still true since
int count = 0; count is 1

while (count < 2)


{
cout << "Welcome to C++!";
count++;
}

Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
8
animation

Trace while Loop, cont.


Print Welcome to C++
int count = 0;
while (count < 2)
{
cout << "Welcome to C++!";
count++;
}

Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
9
animation

Trace while Loop, cont.


Increase count by 1
int count = 0; count is 2 now

while (count < 2)


{
cout << "Welcome to C++!";
count++;
}

Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
10
animation

Trace while Loop, cont.


(count < 2) is false since count is
int count = 0; 2 now

while (count < 2)


{
cout << "Welcome to C++!";
count++;
}

Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
11
animation

Trace while Loop


The loop exits. Execute the next
int count = 0; statement after the loop.

while (count < 2)


{
cout << "Welcome to C++!";
count++;
}

Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
12
Example: An Advanced Math Learning Tool
The Math subtraction tutor program in Listing 3.6,
SubtractionTutor.cpp, generates just one question for each run. You
can use a loop to generate questions repeatedly. Listing 4.1 gives a
program that generates ten questions and reports the number of the
correct answers after a student answers all ten questions. The
program also displays the time spent on the test and lists all the
questions, as shown in sample output.

SubtractionTutorLoop Run

Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
13
Controlling a Loop with User Confirmation
char continueLoop = 'Y';
while (continueLoop == 'Y')
{
// Execute body once
// Prompt the user for confirmation
cout << "Enter Y to continue and N to quit: ";
cin >> continueLoop;
}

Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
14
Ending a Loop with a Sentinel Value
Often the number of times a loop is executed is not
predetermined. You may use an input value to signify the
end of the loop. Such a value is known as a sentinel value.

Write a program that reads and calculates the sum of an


unspecified number of integers. The input 0 signifies the
end of the input.

SentinelValue Run

Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
15
Caution
Don’t use floating-point values for equality checking in
a loop control. Since floating-point values are
approximations, using them could result in imprecise
counter values and inaccurate results. This example uses
int value for data. If a floating-point type value is used
for data, (data != 0) may be true even though data is 0.

double data = pow(sqrt(2.0), 2) - 2;


if (data == 0)
cout << "data is zero";
else
cout << "data is not zero";
Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
16
do-while Loop
Sentinel Value
Statement(s)
Run (loop body)

true Loop
Continuation
do Condition?

{ false
// Loop body;
Statement(s);
} while (loop-continuation-condition);
Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
17
for Loops
for (initial-action; loop-continuation- int i;
condition; action-after-each-
for (i = 0; i < 100; i++)
iteration)
{ {
// loop body; cout << "Welcome to C++!\n";
Statement(s);
} }

Initial-Action i=0

Loop
false false
Continuation (i < 100)?
Condition?
true true
Statement(s) System.out.println(
(loop body) "Welcome to Java");

Action-After-Each-Iteration i++

(A) (B)
Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
18
animation

Trace for Loop


Declare i
int i;
for (i = 0; i < 2; i++)
{
cout << "Welcome to C++!";
}

Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
19
animation

Trace for Loop, cont.


Execute initializer
int i; i is now 0
for (i = 0; i < 2; i++)
{
cout << "Welcome to C++!";
}

Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
20
animation

Trace for Loop, cont.


(i < 2) is true
int i; since i is 0
for (i = 0; i < 2; i++)
{
cout << "Welcome to C++!";
}

Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
21
animation

Trace for Loop, cont.


Print Welcome to C++!
int i;
for (i = 0; i < 2; i++)
{
cout << "Welcome to C++!";
}

Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
22
animation

Trace for Loop, cont.


Execute adjustment statement
int i; i now is 1
for (i = 0; i < 2; i++)
{
cout << "Welcome to C++!";
}

Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
23
animation

Trace for Loop, cont.


(i < 2) is still true
int i; since i is 1
for (i = 0; i < 2; i++)
{
cout << "Welcome to C++!";
}

Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
24
animation

Trace for Loop, cont.


Print Welcome to C++
int i;
for (i = 0; i < 2; i++)
{
cout << "Welcome to C++!";
}

Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
25
animation

Trace for Loop, cont.


Execute adjustment statement
int i; i now is 2
for (i = 0; i < 2; i++)
{
cout << "Welcome to C++!";
}

Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
26
animation

Trace for Loop, cont.


(i < 2) is false
int i; since i is 2
for (i = 0; i < 2; i++)
{
cout << "Welcome to C++!";
}

Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
27
animation

Trace for Loop, cont.


Exit the loop. Execute the next
int i; statement after the loop
for (i = 0; i < 2; i++)
{
cout << "Welcome to C++!";
}

Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
28
Note
The initial-action in a for loop can be a list of zero or more
comma-separated expressions. The action-after-each-
iteration in a for loop can be a list of zero or more comma-
separated statements. Therefore, the following two for
loops are correct. They are rarely used in practice,
however.
for (int i = 1; i < 100; cout << (i++));
 
for (int i = 0, j = 0; (i + j < 10); i++, j++) {
// Do something

}
Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
29
Note
If the loop-continuation-condition in a for loop is omitted,
it is implicitly true. Thus the statement given below in (a),
which is an infinite loop, is correct. Nevertheless, it is
better to use the equivalent loop in (b) to avoid confusion:

for ( ; ; ) Equivalent while (true)


{ {
// Do something // Do something
} This is better }
(a) (b)

Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
30
Example: Using for Loops
Problem: Write a program that sums a series that starts with
0.01 and ends with 1.0. The numbers in the series will
increment by 0.01, as follows: 0.01 + 0.02 + 0.03 and so on.

TestSum Run

Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
31
Which Loop to Use?
The three forms of loop statements, while, do-while, and for, are
expressively equivalent; that is, you can write a loop in any of these
three forms. For example, a while loop in (a) in the following figure
can always be converted into the following for loop in (b):
while (loop-continuation-condition) { Equivalent for ( ; loop-continuation-condition; )
// Loop body // Loop body
} }
(a) (b)

A for loop in (a) in the following figure can generally be converted into the
following while loop in (b) except in certain special cases (see Review Question
3.19 for one of them):
for (initial-action; initial-action;
loop-continuation-condition; Equivalent while (loop-continuation-condition) {
action-after-each-iteration) { // Loop body;
// Loop body; action-after-each-iteration;
} }
(a) (b)
Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
32
Recommendations
Use the one that is most intuitive and comfortable for
you. In general, a for loop may be used if the number of
repetitions is known, as, for example, when you need to
print a message 100 times. A while loop may be used if
the number of repetitions is not known, as in the case of
reading the numbers until the input is 0. A do-while loop
can be used to replace a while loop if the loop body has to
be executed before testing the continuation condition.

Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
33
Nested Loops
Problem: Write a program that uses nested for loops to print a
multiplication table.

TestMultiplicationTable

Run

Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
34
Example:
Finding the Greatest Common Divisor
Problem: Write a program that prompts the user to enter two positive
integers and finds their greatest common divisor.
Solution: Suppose you enter two integers 4 and 2, their greatest
common divisor is 2. Suppose you enter two integers 16 and 24, their
greatest common divisor is 8. So, how do you find the greatest
common divisor? Let the two input integers be n1 and n2. You know
number 1 is a common divisor, but it may not be the greatest commons
divisor. So you can check whether k (for k = 2, 3, 4, and so on) is a
common divisor for n1 and n2, until k is greater than n1 or n2.

GreatestCommonDivisor Run
Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
35
Example: Finding the Sales Amount
Problem: You have just started a sales job in a department store. Your
pay consists of a base salary and a commission. The base salary is
$5,000. The scheme shown below is used to determine the
commission rate.
Sales Amount Commission Rate
$0.01–$5,000 8 percent
$5,000.01–$10,000 10 percent
$10,000.01 and above 12 percent
Your goal is to earn $30,000 in a year. Write a program that will find
out the minimum amount of sales you have to generate in order to
make $30,000.
FindSalesAmount Run
Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
36
Example:
Displaying a Pyramid of Numbers
Problem: Write a program that prompts the user to enter an integer
from 1 to 15 and displays a pyramid. For example, if the input integer
is 12, the output is shown below.

PrintPyramid Run
Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
37
Using break and continue
Examples for using the break and continue
keywords:

 TestBreak.cpp

TestBreak Run

 TestContinue.cpp

TestContinue Run

Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
38
Example: Displaying Prime Numbers
Problem: Write a program that displays the first 50 prime numbers in
five lines, each of which contains 10 numbers. An integer greater than
1 is prime if its only positive divisor is 1 or itself. For example, 2, 3, 5,
and 7 are prime numbers, but 4, 6, 8, and 9 are not.
Solution: The problem can be broken into the following tasks:
•For number = 2, 3, 4, 5, 6, ..., test whether the number is prime.
•Determine whether a given number is prime.
•Count the prime numbers.
•Print each prime number, and print 10 numbers per line.

PrimeNumber Run
Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
39
File Input and Output
You used the cin to read input from the keyboard and the cout to write
output to the console. You can also read and write data from/to a file.
This section introduces simple file input and output. Detailed coverage
of file input and output will be presented in Chapter 12.

SimpleFileOutput Run

SimpleFileInput Run

Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
40
Testing End of a File
Listing 4.13 reads three numbers from the data file. If you don’t know
how many numbers are in the file and want to read them all, how do
you know the end of file? You can invoke the eof() function on the
input object to detect it. Listing 4.14 revises Listing 4.13 to read all
lines from the file numbers.txt.

TestEndOfFile Run

Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved.
013225445X
41

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy