6.2 Writing a Decision Structure with the if statement

Chapter 6
Control Structures
Starting Out with
Games & Graphics in C++
Tony Gaddis
Addison Wesley
is an imprint of
© 2010 Pearson Addison-Wesley. All rights reserved.
6.1 Introduction
Concept:
Control structures affect the order in
which statements execute. There are
three main types of control
structures: sequence, decision, and
repetition.
Copyright © 2010 Pearson Addison-Wesley
1-2
6.1 Introduction
• A control structure determines the order in which
a set of statements execute
• In the 1960’s a group of mathematicians proved
that only three control structures are needed to
write any type of program, they are:
– The sequence structure
– The decision structure
– The repetition structure
• The simplest of these structures is the sequence
structure, which is a set of statements that execute
in the order they appear
Copyright © 2010 Pearson Addison-Wesley
1-3
6.1 Introduction
• For an example of a sequence structure,
look at the following DarkGDK function:
• The statements inside the function are a sequence
structure
– They execute in the order they are written from top to
bottom
Copyright © 2010 Pearson Addison-Wesley
1-4
6.1 Introduction
• Flowcharts, planning tools that
Figure 6-1 Flowchart for a sequence structure
programmers use to design a program’s
logic
• Terminals, elliptical symbols at the top
and bottom of the flowchart that mark the
algorithm’s start and end points
• The symbols that appear between the
terminals are the steps taken in the
algorithm
• The steps are connected by arrows that
represent the flow of execution
• The flowchart in Figure 6-1 depicts a
sequence structure because the steps are
taken one after another, from the
beginning to the end
Copyright © 2010 Pearson Addison-Wesley
1-5
6.1 Introduction
• Some problems simply cannot be solved by performing a
set of ordered steps, one after another
• In some programs, a set of statements must be executed
only under certain circumstances
• If those circumstances do not exist, the statements should
be skipped
• Consider a company payroll program that determines whether
an employee has worked overtime
– If the employee has worked more than 40 hours, he or she gets paid
a higher wage for the hours over 40
– Otherwise, the overtime calculation should be skipped
• Solving this kind of problem requires a decision structure
Copyright © 2010 Pearson Addison-Wesley
1-6
6.1 Introduction
• Suppose the same payroll program
calculates pay for all employees
– This means that it has to perform the same
steps for each employee
• Solving this kind of problem requires a
repetition structure, which is also known
as a loop, which is a structure that repeats
a set of statements as many times as
necessary
Copyright © 2010 Pearson Addison-Wesley
1-7
6.2 Writing a Decision Structure with
the if statement
Concept:
The if statement is used to
create a decision structure, which
allows a program to have more
than one path of execution. The
if statement causes one or more
statements to execute only when a
Boolean expression is true.
Copyright © 2010 Pearson Addison-Wesley
1-8
6.2 Writing a Decision Structure with
the if statement
• In a decision structure’s
simplest form
Figure 6-2 A simple decision, structure,
also known as a single alternative
decision structure
– A specific action is performed
only if a certain condition exists
– If the condition does not exist,
the action is not performed
• A single alternative, as shown
in Figure 6-2, provides only one
alternative path of execution
– If the condition in the diamond
symbol is true
– We take the alternate path
– Otherwise, we exit the
structure
Copyright © 2010 Pearson Addison-Wesley
1-9
6.2 Writing a Decision Structure with
the if statement
• The diamond symbol indicates some condition
that must be tested
• We are determining whether the condition
Cold outside is true or false
– If this condition is true, the action is
performed
– If the condition is false, the action is
skipped
• The action is conditionally executed
because it is performed only when a certain
condition is true
Copyright © 2010 Pearson Addison-Wesley
1-10
6.2 Writing a Decision Structure with
the if statement
• Here is the general format of the if
statement:
The statement begins with the
word if
Followed by an expression
that is enclosed in a set of
parentheses
Beginning on the next line is a
set of statements enclosed in
curly braces
Copyright © 2010 Pearson Addison-Wesley
1-11
6.2 Writing a Decision Structure with
the if statement
• The expression that appears inside the
parentheses is a Boolean expression ,
which is an expression that can be
evaluated as either true or false
– When the if statement executes, the Boolean
expression is tested
• If it is true, the statements that appear inside
the curly braces are executed
• If it is false the statements inside the curly
braces are skipped
Copyright © 2010 Pearson Addison-Wesley
1-12
6.2 Writing a Decision Structure with
the if statement
• Although the curly braces are not required
when there is only one conditionally executed
statement, it is still a good idea to use them,
as shown in the following general format:
• This is a good style of writing if
statements because it minimizes errors
Copyright © 2010 Pearson Addison-Wesley
1-13
6.2 Writing a Decision Structure with
the if statement
Boolean Expressions and Relational Operators
• The value of a Boolean expression can be either true or false
• Typically, the Boolean expression that is tested by an if statement is
formed with a relational operator
• A relational operator determines whether a specific relationship
exists between two values
• Table 6-1 lists the relational operators that are available in C++
Copyright © 2010 Pearson Addison-Wesley
1-14
6.2 Writing a Decision Structure with
the if statement
Boolean Expressions and Relational Operators
• Table 6-2 shows examples of several Boolean
expressions that compare the variables x and y
• These expressions determine whether the value is true
or false
Copyright © 2010 Pearson Addison-Wesley
1-15
6.2 Writing a Decision Structure with
the if statement
Boolean Expressions and Relational Operators
The >= and <= Operators
• Two of the operators, >= and <=, test for
more than one relationship
– The >= operator
• Determines whether the operand on its left is
greater than or equal to the operand on its
right
– The <= operator
• Determines whether the on its left is less
than or equal to the operand on its right
• For example, assume the variable a is
assigned the value 4
– All of the following expressions are true:
Copyright © 2010 Pearson Addison-Wesley
1-16
6.2 Writing a Decision Structure with
the if statement
Boolean Expressions and Relational Operators
The == Operator
• The == operator determines whether the operand on its
left is equal to the operand on its right
• If the values of both operands are the same, the
expression is true
• Assuming that a is 4
– The expression a == 4 is true
– The expression a == 2 is false
Copyright © 2010 Pearson Addison-Wesley
1-17
6.2 Writing a Decision Structure with
the if statement
Boolean Expressions and Relational Operators
The != Operator
• The != operator is the not-equal-to operator
• It determines whether the operand on the left is not
equal to the operand on the right, which is the
opposite of the == operator
• Assuming a is 4, b is 6, and c is 4
– Both a != b and b != c are true
• This is because a is not equal to b and b is not equal to c
– However, a != c is false
• This is because a is equal to c
Copyright © 2010 Pearson Addison-Wesley
1-18
6.2 Writing a Decision Structure with
the if statement
Putting It All Together
• Let’s look at the following example of the if statement:
• This statement uses the > operator to
determine whether sales is greater
than 50,000
• If the expression sales > 50000 is
true
– The variable bonus is assigned 500
• If the expression is false
– The assignment is skipped
Copyright © 2010 Pearson Addison-Wesley
Figure 6-4 Example decision structure
1-19
6.2 Writing a Decision Structure with
the if statement
Putting It All Together
• The following example conditionally
executes three statements
Copyright © 2010 Pearson Addison-Wesley
Figure 6-5 Example decision structure
1-20
6.2 Writing a Decision Structure with
the if statement
Putting It All Together
• Notice that in both the previous if
statement examples, the conditionally
executed statements were indented
• This indentation is not required, but it
makes code easier to read and debug
• Most programmers use this style of
indentation when writing if statements
Copyright © 2010 Pearson Addison-Wesley
1-21
6.2 Writing a Decision Structure with
the if statement
Putting It All Together
• Let’s look at a complete program that
uses an if statement
• The program calculates the average of
three test scores
• If the average is greater than 95, it
should display the image stored in a file
named Congrats.bmp
Copyright © 2010 Pearson Addison-Wesley
1-22
6.2 Writing a Decision Structure with
the if statement
Testing Colors
• You can use the relational operators to compare RGB values
• For example, suppose you have two DWORD variables named
color1 and color2
• The following if statement determines whether they hold the
same value
Copyright © 2010 Pearson Addison-Wesley
1-23
6.2 Writing a Decision Structure with
the if statement
Testing Colors
•
•
•
•
If you need to test the color of a specific point on the screen, you can use
the dbPoint function to get that point’s color value
You pass two arguments to the dbPoint function
– An X coordinate
– A Y coordinate
The dbPoint function returns a DWORD value containing the color of
that point
The following code shows an example:
• The first statement declares a DWORD variable named pixelColor
• The second statement calls the dbPoint function to get the color of
the pixel located at (100, 150)
• The color of that pixel is returned and assigned to the pixelColor
variable
Copyright © 2010 Pearson Addison-Wesley
1-24
6.2 Writing a Decision Structure with
the if statement
Testing Colors
• The following code shows another example
• The code gets the color of the pixel located at (10, 10)
• If that pixel’s color is blue, it is changed to red
Copyright © 2010 Pearson Addison-Wesley
1-25
6.3 The if-else Statement
Concept:
An if-else statement will execute
one block of statements if its
Boolean expression is true, or
another block if its Boolean
expression is false.
Copyright © 2010 Pearson Addison-Wesley
1-26
6.3 The if-else Statement
• The dual alternative decision structure
has two possible paths of execution
– One path is taken if the Boolean expression is
true
– The other path is taken if the Boolean
expression is false
Copyright © 2010 Pearson Addison-Wesley
1-27
6.3 The if-else Statement
•
•
Figure 6-7 shows an example flowchart for a dual alternative decision structure
The decision structure in the flowchart tests the expression temperature < 40
– If the expression is true
• The message “A little cold, isn’t it?” is displayed
– If the expression is false
• The message “Nice weather we’re having.” is displayed
Figure 6-7 A dual alternative decision structure
Copyright © 2010 Pearson Addison-Wesley
1-28
6.3 The if-else Statement
•
•
In code we write a dual alternative decision structure as an if-else
statement
Here is the general format of the if-else statement:
Copyright © 2010 Pearson Addison-Wesley
1-29
6.3 The if-else Statement
• An if-else statement has two parts:
– An if clause
– An else clause
• Just like a regular if statement, the if-else
statement tests a Boolean expression
• If the expression is true
– The block of statements following the if clause is executed
– control of the program jumps to the statement that follows
the if-else statement
• If the expression is false
– The block of statements following the else clause is
executed
– Control of the program jumps to the statement that follows
the if-else statement
Copyright © 2010 Pearson Addison-Wesley
1-30
6.3 The if-else Statement
• The action of an if-else statement is described in Figure 6-8
Figure 6-8 Conditional execution in an if-else statement
Copyright © 2010 Pearson Addison-Wesley
1-31
6.3 The if-else Statement
• The if-else statement has two sets of
conditionally executed statements
– One set is executed Only
• under the condition that the Boolean expression is true
– The other set is executed Only
• under the condition that the Boolean expression is false
• Under no circumstances will both sets of
conditionally executed statements be
executed
Copyright © 2010 Pearson Addison-Wesley
1-32
6.3 The if-else Statement
• Remember that always enclosing conditionally
executed statements in a set of curly braces is
a good style of programming because it cuts
down on errors
• If there is more than one conditionally
executed statement following either
– The if clause
– Or the else clause
• Those statements must be enclosed in curly
braces
Copyright © 2010 Pearson Addison-Wesley
1-33
6.4 Nested Decision Structures and
the if-else-if Statement
Concept:
To test more than one condition,
a decision structure can be
nested inside another decision
structure.
Copyright © 2010 Pearson Addison-Wesley
1-34
6.4 Nested Decision Structures and
the if-else-if Statement
• Figure 6-10 shows a flowchart that combines a decision
structure with two sequence structures
• The flowchart starts with a sequence
structure
– The first step is Go to the window
– The next step is Read thermometer
• A decision structure appears next,
testing the condition Cold outside
– If this is true
• The action Wear a coat is
performed
– If this is false
• The action is skipped
• Another sequence structure appears
next
– The step Open the door is performed
– Followed by Go outside
Copyright © 2010 Pearson Addison-Wesley
Figure 6-10 Combining sequence
structures with a decision structure
1-35
6.4 Nested Decision Structures and
the if-else-if Statement
• Quite often, structures must be
nested inside other structures
• Figure 6-11, it shows a
decision structure with a
sequence structure nested
inside
• The decision structure tests the
condition Cold outside
Figure 6-11 A sequence structure nested inside a
decision structure
– If the condition is true
• The steps in the sequence
structure are executed
– If the condition is false
• The steps in the sequence
structure are skipped
Copyright © 2010 Pearson Addison-Wesley
1-36
6.4 Nested Decision Structures and
the if-else-if Statement
• You can also nest decision structures
inside of other decision structures
• This is commonly done in programs that
need to test more than one condition
Copyright © 2010 Pearson Addison-Wesley
1-37
6.4 Nested Decision Structures and
the if-else-if Statement
• For example, suppose you want to determine whether the pixel
located at a specific location has a reddish tint
– The following conditions must be determined:
• The pixel’s red component is at least 200
• The pixel’s green component is less than 100
• The pixel’s blue component is less than 100
• You can get the value of each color component by passing the
pixel’s DWORD color value as an argument to the following
functions:
– The dbRGBR function
• Returns the integer value of the pixel’s red color component
– The dbRGBG function
• Returns the integer value of the pixel’s green color component
– The dbRGBB function
• Returns the integer value of the pixel’s blue color component
Copyright © 2010 Pearson Addison-Wesley
1-38
6.4 Nested Decision Structures and
the if-else-if Statement
•
Assume the variables x and y hold a set of XY coordinates
•
The following code shows how you can:
– Get the color of the pixel located at (x, y)
– Determine whether the color is of the reddish tint described earlier
(continued on next slide)
Copyright © 2010 Pearson Addison-Wesley
1-39
6.4 Nested Decision Structures and
the if-else-if Statement
Programming Style and Nested Decision Structures
• Proper indentation and alignment make it easier to see
which if and else clauses belong together, as shown
in Figure 6-15
Figure 6-15 Alignment of if and else clauses
Copyright © 2010 Pearson Addison-Wesley
1-40
6.4 Nested Decision Structures and
the if-else-if Statement
The if-else-if Statement
•
•
•
The logic of nested decision
structures can easily become
complex
C++ provides a special version of
the decision structure known as
the if-else-if statement, which
makes this type of logic simpler to
write
Here is the general format of the
if-else-if statement:
Copyright © 2010 Pearson Addison-Wesley
1-41
6.4 Nested Decision Structures and
the if-else-if Statement
•
When the else-if-else statement executes
– If (guess==number) is tested
– If it is true
• The block of statements that immediately
follows is executed, and the rest of the structure
is skipped
– If it is false
• The program jumps to the very next else if
clause and tests else if (guess<
myNumber)
–
•
If it is true
• The block of statements that immediately
follows is executed, and the rest of the structure
is skipped
– This process continues until a condition is found to be
true, or no more else if clauses are left
If none of the conditions is true
– The block of statements following the else clause is
executed
Copyright © 2010 Pearson Addison-Wesley
1-42
6.5 Repetition Structures: The while
Loop and the do-while Loop
Concept:
A repetition structure causes a
statement or set of statements to
execute repeatedly.
Copyright © 2010 Pearson Addison-Wesley
1-43
6.5 Repetition Structures: The while
Loop and the do-while Loop
•
•
•
•
Programmers commonly have to write code that performs the same task over
and over
For example, suppose you want to write a program that fills the screen with
randomly placed dots to create the background for a space-themed game
Although it would not be a good design, one approach would be to write the
code to draw a single dot, and then repeat that code for the remaining dots
For example, look at the following:
• There are several disadvantages
to this approach, including the
following:
– The duplicated code makes
the program large
– Writing a long sequence of
statements can be time
consuming
– Any correction or change has
to be done many times
Copyright © 2010 Pearson Addison-Wesley
1-44
6.5 Repetition Structures: The while
Loop and the do-while Loop
• A better way to perform an operation repeatedly
is to write code for the operation once, and then
place that code in a structure that makes the
computer repeat it as many times as necessary
• This can be done with a repetition structure,
which is more commonly known as a loop
Copyright © 2010 Pearson Addison-Wesley
1-45
6.5 Repetition Structures: The while
Loop and the do-while Loop
Condition-Controlled and Count-Controlled Loops
•
•
•
We will look at two broad categories of loops:
Condition-Controlled
– Uses a true/false condition to control the number of times it repeats
– In C++, you use the
• while
• do-while
– statements to write condition controlled loops
Count-Controlled
– Repeats a specific number of times
– In C++, you use the
• for
– statement to write count-controlled loops
Copyright © 2010 Pearson Addison-Wesley
1-46
6.5 Repetition Structures: The while
Loop and the do-while Loop
The while Loop
• The while loop gets its name from the way it works:
– While a Boolean expression is true, do some
task
• The loop has two parts:
– A Boolean expression that is tested for a true or
false value
– A statement or set of statements that is repeated
as long as the Boolean expression is true
Copyright © 2010 Pearson Addison-Wesley
1-47
6.5 Repetition Structures: The while
Loop and the do-while Loop
The while Loop
• Here is the general format of the while loop:
• We will refer to the first line as the while clause
• The while clause begins with the word while, followed by a
Boolean expression that is enclosed in parentheses
• Beginning on the next line is a block of statements that are
enclosed in curly braces
• This block of statements is known as the body of the loop
Copyright © 2010 Pearson Addison-Wesley
1-48
6.5 Repetition Structures: The while
Loop and the do-while Loop
The while Loop
• When the while loop executes:
– The Boolean expression is tested
• If the Boolean expression is true
– The statements that appear in the body of the loop are
executed, and then the loop starts over
• If the Boolean expression is false
– The loop ends and the program resumes execution at the
statement immediately following the loop
• We say that the statements in the body of the loop are
conditionally executed because they are executed only
under the condition that the Boolean expression is true
Copyright © 2010 Pearson Addison-Wesley
1-49
6.5 Repetition Structures: The while
Loop and the do-while Loop
The while Loop
• Remember that always enclosing conditionally executed
statements in a set of curly braces is a good style of
programming because it cuts down on errors
• If there is more than one statement in the body of a loop,
those statements must be enclosed in curly braces
• You should also notice that the statements in the body of the
loop are indented
• This indentation makes the code easier to read and debug,
and visually sets them apart from the surrounding code
• Most programmers use this style of indentation when writing
loops
Copyright © 2010 Pearson Addison-Wesley
1-50
6.5 Repetition Structures: The while
Loop and the do-while Loop
The while Loop Is a Pretest Loop
• The while loop is a pretest loop, which
means it tests its Boolean expression
before performing an iteration
• This is an important characteristic of the
while loop:
– It will never execute if its condition is false to
start with
Copyright © 2010 Pearson Addison-Wesley
1-51
6.5 Repetition Structures: The while
Loop and the do-while Loop
Infinite Loops
• In all but rare cases, loops must contain
within themselves a way to terminate
• Something inside the loop must eventually
make the loop’s Boolean expression false
• If a loop does not have a way of stopping
it is called an infinite loop
• An infinite loop continues to repeat until
the program is interrupted
Copyright © 2010 Pearson Addison-Wesley
1-52
6.5 Repetition Structures: The while
Loop and the do-while Loop
Infinite Loops
•
•
Infinite loops usually occur when the programmer forgets to write code
inside the loop that makes the test condition false
For example, suppose we forgot to write the statement that subtracts 1 from
numBricks, as shown here:
• numBricks will always
contain the same value
• The loop has no way of
stopping
• The numBricks variable is an example of a loop control variable
• Its value is tested by the loop, and controls whether the loop will
iterate
Copyright © 2010 Pearson Addison-Wesley
1-53
6.5 Repetition Structures: The while
Loop and the do-while Loop
The do-while Loop: A Posttest Loop
• The do-while loop is a posttest loop.
• It performs an iteration before testing its
Boolean expression
• The do-while loop performs at least one
iteration, even if its Boolean expression is
false to begin with
Copyright © 2010 Pearson Addison-Wesley
1-54
6.5 Repetition Structures: The while
Loop and the do-while Loop
The do-while Loop: A Posttest Loop
• The logic of a do-while loop is shown in Figure 6-21
•
In the flowchart, one or more statements
are executed
– And then a Boolean expression is
tested
– If the Boolean expression is true
• The programs execution flows to
just above the first statement in
the body of the loop
• The process repeats
– If the Boolean expression is false
• The program exits the loop
Copyright © 2010 Pearson Addison-Wesley
Figure 6-21 The logic of a do-while loop
1-55
6.5 Repetition Structures: The while
Loop and the do-while Loop
The do-while Loop: A Posttest Loop
•
•
In code, the do-while loop looks something like an inverted while loop
Here is the general format of the do-while loop:
Copyright © 2010 Pearson Addison-Wesley
1-56
6.5 Repetition Structures: The while
Loop and the do-while Loop
The do-while Loop: A Posttest Loop
• The do-while loop always performs at least one
iteration, even if the expression is false to begin with
• This differs from the behavior of a while loop
• For example, in the following while loop the statement
that calls dbPrint will not execute at all:
Copyright © 2010 Pearson Addison-Wesley
1-57
6.5 Repetition Structures: The while
Loop and the do-while Loop
The do-while Loop: A Posttest Loop
• The statement that calls dbPrint in the following do-while loop
will execute one time
• The do-while loop does not test the expression number < 0 until
the end of the iteration
Copyright © 2010 Pearson Addison-Wesley
1-58
6.6 The Increment and Decrement
Operators
Concept:
To increment a variable means to
increase its value, and to decrement a
variable means to decrease its value.
C++ provides special operators to
increment and decrement variables.
Copyright © 2010 Pearson Addison-Wesley
1-59
6.6 The Increment and Decrement
Operators
• To increment a variable means to increase its value
• Both the following statements increment the variable num by one:
• To decrement a variable means to decrease its value
• Both the following statements decrement the variable num by one:
Copyright © 2010 Pearson Addison-Wesley
1-60
6.6 The Increment and Decrement
Operators
• Incrementing and decrementing is so commonly done in programs
that C++ provides a set of simple unary operators designed just for
incrementing and decrementing variables
– The increment operator is ++
– The following statement uses the ++ operator to add 1 to num:
– The decrement operator is -– The following statement uses the -- operator to subtract 1 from
num:
Copyright © 2010 Pearson Addison-Wesley
1-61
6.6 The Increment and Decrement
Operators
•
•
Writing the ++ and -- operators after their operands is called postfix mode
The ++ and -- operators can also be written before their operands, which is
called prefix mode
– Here are examples of prefix mode:
• When you write a simple statement to increment or decrement
a variable
– It does not matter if you use prefix or postfix mode
• If you write statements that mix these operators with other
operators or operations
– There is a difference in the way the two modes work
– Such complex code can be difficult to understand and debug
• We will use the increment and decrement operators only in
ways that are easy to understand
Copyright © 2010 Pearson Addison-Wesley
1-62
6.7 Repetition Structures: The for
Loop
Concept:
A count-controlled loop iterates
a specific number of times. In
C++, you use the for statement
to write a count-controlled loop.
Copyright © 2010 Pearson Addison-Wesley
1-63
6.7 Repetition Structures: The for
Loop
• The way that a count-controlled loop works
is simple:
– The loop keeps a count of the number of times
it iterates
– When the count reaches a specified amount,
the loop stops
• A count-controlled loop uses a variable
known as a counter variable, or simply
counter, to store the number of iterations
that it has performed
Copyright © 2010 Pearson Addison-Wesley
1-64
6.7 Repetition Structures: The for
Loop
•
•
•
•
Using the counter variable, a count-controlled
loop performs the following three actions:
(1) Initialization:
– Before the loop begins, the counter
variable is initialized to a starting value
(2) Test:
– The loop tests the counter variable by
comparing it to a maximum value
• If it has not reached the maximum
value
– The loop iterates
• If it has reached the maximum value
– The program exits the loop
(3) Increment:
– During each iteration, the loop increments
the counter variable
Copyright © 2010 Pearson Addison-Wesley
Figure 6-22 Logic of a count-controlled loop
1-65
6.7 Repetition Structures: The for
Loop
•
Count-controlled loops are so common that C++ provides a type of loop just
for them
– It is known as the for loop
•
The for loop is specifically designed to
– Initialize
– Test
– And increment the counter variable
Here is the general format of the for loop:
•
•
•
The statements that appear inside the curly braces are the body of the loop
These are the statements that are executed each time the loop iterates
Copyright © 2010 Pearson Addison-Wesley
1-66
6.7 Repetition Structures: The for
Loop
• The first line of the for loop is the loop header
– After the key word for
– There are three expressions inside the parentheses,
separated by semicolons
– Notice that there is not a semicolon after the third
expression
Copyright © 2010 Pearson Addison-Wesley
1-67
6.7 Repetition Structures: The for
Loop
• The first expression:
– is the initialization expression
– is normally used to initialize the counter variable to its
starting value
– is the first action done by the loop
– is only done once
Copyright © 2010 Pearson Addison-Wesley
1-68
6.7 Repetition Structures: The for
Loop
• The second expression:
– is the test expression
– is the Boolean expression that controls the execution
of the loop
– Will repeat the body of the for loop as long as this
expression is true
– is evaluated before each iteration
Copyright © 2010 Pearson Addison-Wesley
1-69
6.7 Repetition Structures: The for
Loop
• The third expression:
– Is the increment expression
– Executes at the end of each iteration
– Typically, is the statement that increments the loop’s
counter variable
Copyright © 2010 Pearson Addison-Wesley
1-70
6.7 Repetition Structures: The for
Loop
• Here is an example of a simple for loop that prints “Hello” five times:
Copyright © 2010 Pearson Addison-Wesley
1-71
6.7 Repetition Structures: The for
Loop
Declaring the Counter Variable in the Initialization Expression
• Not only may the counter variable be initialized in the
initialization expression, but it also may be declared there
• The following code shows an example:
• If the variable is used only in the loop, it makes sense to
declare it in the loop header
• This makes the variable’s purpose clearer
Copyright © 2010 Pearson Addison-Wesley
1-72
6.7 Repetition Structures: The for
Loop
Declaring the Counter Variable in the Initialization Expression
• When a variable is declared in the initialization expression of a
for loop
– The variable is limited in scope
– You cannot access the variable in statements outside the loop
• For example, the following code would cause a compile error
because the last statement cannot access the count variable
•
Copyright © 2010 Pearson Addison-Wesley
Error! count cannot be
accessed outside the loop
1-73
6.7 Repetition Structures: The for
Loop
Using the Counter Variable in the Body of the Loop
•
•
The counter variable is named count
count is initialized with the value 1
•
•
The loop iterates five times
count is incremented after each
iteration
count is used in the calculation of the
circle’s radius
• The first circle’s radius will be 50
• The second circle’s radius will be
100
• The third circle’s radius will be 150
• and so forth
•
Copyright © 2010 Pearson Addison-Wesley
1-74
6.7 Repetition Structures: The for
Loop
Incrementing by Values Other than 1
•
•
•
•
The amount by which the counter variable is incremented in a for loop is
typically 1
You can write virtually any expression you wish as the increment expression
For example, the following loop increments count by 10
Notice the increment expression is count += 10
– At the end of each iteration 10 will added to count
– During the first iteration
• count will be set to 1
– During the second iteration
• count will be set to 11
– During the third iteration
• count will be set to 21
– And so forth
Copyright © 2010 Pearson Addison-Wesley
1-75
6.8 Using the for Loop to Process
Pixels in an Image
Concept:
You can use the for loop to get
the color of each pixel in an
image and perform some
operation using that color value.
Copyright © 2010 Pearson Addison-Wesley
1-76
6.8 Using the for Loop to Process
Pixels in an Image
• Pixels are arranged in rows and columns
– Rows correspond to the Y coordinates
– Columns correspond to the X coordinates
Figure 6-25 Think of pixels
as arranged in rows and
columns
Copyright © 2010 Pearson Addison-Wesley
1-77
6.8 Using the for Loop to Process
Pixels in an Image
• To step through each of the pixels, we need two loops, one
nested inside the other
• The outer loop will step through the rows
• The inner loop will step through the columns
Copyright © 2010 Pearson Addison-Wesley
1-78
6.9 Logical Operators
Concept:
The logical AND operator (&&) and
the logical OR operator (||) allow
you to connect multiple Boolean
expressions to create a compound
expression. The logical NOT
operator (!) reverses the truth of a
Boolean expression.
Copyright © 2010 Pearson Addison-Wesley
1-79
6.9 Logical Operators
•
•
The C++ language provides a set of operators known as logical operators,
which you can use to create complex Boolean expressions
Table 6-3 describes these operators
Copyright © 2010 Pearson Addison-Wesley
1-80
6.9 Logical Operators
The && Operator
• The && operator takes two Boolean expressions as operands and
creates a compound Boolean expression that is true only when both
subexpressions are true
Copyright © 2010 Pearson Addison-Wesley
1-81
6.9 Logical Operators
The || Operator
• The || operator takes two Boolean expressions as operands and
creates a compound Boolean expression that is true when either of
the subexpressions is true
Copyright © 2010 Pearson Addison-Wesley
1-82
6.9 Logical Operators
Short-Circuit Evaluation
• Both the && and || operators perform
short-circuit evaluation
• The && will short-circuit if the expression on
the left is false, and the right side will not
be tested
• The || operator will short-circuit if the
expression on the left is true, and the right
side will not be tested
Copyright © 2010 Pearson Addison-Wesley
1-83
6.9 Logical Operators
The ! Operator
• The ! operator is a unary operator that takes a Boolean
expression as its operand and reverses its logical
value
Copyright © 2010 Pearson Addison-Wesley
1-84
6.9 Logical Operators
Precedence of the Logical Operators
• The ! operator has a higher precedence that the relational
operators
• The && and || operators have a lower precedence that the
relational operators
• Many programmers use parentheses to enclose
expressions that are to the left and right of a logical
operator
Copyright © 2010 Pearson Addison-Wesley
1-85
6.10 The switch Statement
Concept:
The switch statement lets the
value of a variable or an
expression determine which
path of execution the program
will take.
Copyright © 2010 Pearson Addison-Wesley
1-86
6.10 The switch Statement
• The switch statement is a multiple alternative decision structure
• It tests the value of an integer variable or an expression and then
uses that value to determine which statement or set of statements to
execute
Figure 6-28 A switch statement
Copyright © 2010 Pearson Addison-Wesley
1-87
6.10 The switch Statement
•
Here is the general format of the switch statement:
Copyright © 2010 Pearson Addison-Wesley
1-88
6.10 The switch Statement
• For example, the following code performs the same operation as the
flowchart in Figure 6-28:
Copyright © 2010 Pearson Addison-Wesley
1-89
6.11 Numeric Truth, Flags, and bool
Variables
Concept:
In addition to the values of
relational expressions, you can
use numeric values to represent
true or false conditions. You can
store the values true and false
in bool variables, which are
commonly used as flags.
Copyright © 2010 Pearson Addison-Wesley
1-90
6.11 Numeric Truth, Flags, and bool
Variables
•
•
•
•
•
C++ considers the numeric value 0 as false
Any numeric value other than 0 as true
Functions that return a value of 0 are considered false
Functions that return a value of 1 are considered true
For example:
Copyright © 2010 Pearson Addison-Wesley
1-91
6.11 Numeric Truth, Flags, and bool
Variables
bool Variables
• The C++ language provides a special data type named bool that you
can use to create variables that hold true or false values
• Here is an example of the declaration of a bool variable:
• We can assign the special values true or false to the variable, as
shown here:
Copyright © 2010 Pearson Addison-Wesley
1-92
6.11 Numeric Truth, Flags, and bool
Variables
bool Variables
• Variables of the bool data type are commonly used as flags
• A flag is a variable that signals when some condition exists in the
program
– When a flag is set to false it indicates the condition does not exist
– When a flag is set to true it indicates the condition does exist
• For example:
Copyright © 2010 Pearson Addison-Wesley
1-93
Chapter 6
Control Structures
QUESTIONS
Addison Wesley
is an imprint of
?
© 2010 Pearson Addison-Wesley. All rights reserved.