chapter 4
chapter 4
Making Decisions
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
4.1
Relational Operators
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Relational Operators
• Used to compare numbers to determine
relative order
• Operators:
> Greater than
< Less than
>= Greater than or equal to
<= Less than or equal to
== Equal to
!= Not equal to
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Relational Expressions
• Boolean expressions – true or false
• Examples:
12 > 5 is true
7 <= 5 is false
if x is 10, then
x == 10 is true,
x != 8 is true, and
x == 8 is false
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Relational Expressions
• Can be assigned to a variable:
result = x <= y;
• Assigns 0 for false, 1 for true
• Do not confuse = and ==
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
4.2
The if Statement
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
The if Statement
• Allows statements to be conditionally
executed or skipped over
• Models the way we mentally evaluate
situations:
• "If it is raining, take an umbrella."
• "If it is cold outside, wear a coat."
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Flowchart for Evaluating a Decision
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Flowchart for Evaluating a Decision
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
The if Statement
• General Format:
if (expression)
statement;
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
The if Statement-What Happens
To evaluate:
if (expression)
statement;
• If the expression is true, then
statement is executed.
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
if Statement
Continued…
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
if Statement
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Flowchart for Program 4-2 Lines 22
and 23
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
if Statement Notes
• Do not place ; after (expression)
• Place statement; on a separate line after
(expression), indented:
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
4.3
Expanding the if Statement
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Expanding the if Statement
• To execute more than one statement as part of
an if statement, enclose them in { }:
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
The if/else statement
• Provides two possible paths of execution
• Performs one statement or block if the
expression is true, otherwise performs
another statement or block.
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
The if/else statement
• General Format:
if (expression)
statement1; // or block
else
statement2; // or block
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
if/else-What Happens
To evaluate:
if (expression)
statement1;
else
statement2;
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
The if/else statement and
Modulus Operator
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Flowchart for Program 4-8 Lines 14
through 18
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Testing the Divisor in Program 4-9
Continued…
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Testing the Divisor in Program 4-9
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
4.5
Nested if Statements
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Nested if Statements
• An if statement that is nested inside
another if statement
• Nested if statements can be used to test
more than one condition
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Flowchart for a Nested if
Statement
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Nested if Statements
• From Program 4-10
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Nested if Statements
• Another example, from Program 4-11
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Use Proper Indentation!
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
4.6
The if/else if Statement
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
The if/else if Statement
• Tests a series of conditions until one is
found to be true
• Often simpler than using nested if/else
statements
• Can be used to model thought processes
such as:
"If it is raining, take an umbrella,
else, if it is windy, take a hat,
else, take sunglasses”
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
if/else if Format
if (expression)
statement1; // or block
else if (expression)
statement2; // or block
.
. // other else ifs
.
else if (expression)
statementn; // or block
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
The if/else if Statement in
Program 4-13
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Using a Trailing else to Catch
Errors in Program 4-14
• The trailing else clause is optional, but it
is best used to catch errors.
This trailing
else
catches
invalid test
scores
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
4.7
The if Statement with
Initialization
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
if Statement Initialization
• A feature introduced in C++17
• if statements can have an optional initialization
clause that is executed before the conditional
expression is evaluated
• General format:
if
if (initialization;
(initialization; expression)
expression)
{{
statement;
statement;
statement;
statement;
//
// Place
Place as
as many
many statements
statements here
here as
as necessary.
necessary.
}}
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
if Statement Initialization
• General format of if-else with initialization:
if
if (initialization;
(initialization; expression)
expression)
{{
statement;
statement;
statement;
statement;
//
// Place
Place as
as many
many statements
statements here
here as
as necessary.
necessary.
}}
else
else
{{
statement;
statement;
statement;
statement;
//
// Place
Place as
as many
many statements
statements here
here as
as necessary.
necessary.
}}
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
if Statement Initialization
• Example:
if
if (int
(int len
len == password.length();
password.length(); len
len <<
MIN_LENGTH)
MIN_LENGTH)
{{
cout
cout <<
<< "Your
"Your password
password is
is too
too short."
short." <<
<< endl;
endl;
}}
else
else
{{
cout
cout <<
<< "Your
"Your password
password has
has "" <<
<< len
len
<<
<< "" characters."
characters." <<
<< endl;
endl;
}}
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
4.8
Flags
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Flags
• Variable that signals a condition
• Usually implemented as a bool variable
• Can also be an integer
• The value 0 is considered false
• Any nonzero value is considered true
• As with other variables in functions, must
be assigned an initial value before it is
used
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
4.9
Logical Operators
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Logical Operators
• Used to create relational expressions from
other relational expressions
• Operators, meaning, and explanation:
&& AND New relational expression is true if both
expressions are true
|| OR New relational expression is true if either
expression is true
! NOT Reverses the value of an expression – true
expression becomes false, and false becomes
true
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Logical Operators-Examples
int x = 12, y = 5, z = -4;
(x > y) && (y > z) true
(x <= z) || (y == z) false
(x <= z) || (y != z) true
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
The logical && operator in Program
4-15
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
The logical || Operator in Program
4-16
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
The logical ! Operator in Program
4-17
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Logical Operator-Notes
• ! has highest precedence, followed by &&,
then ||
• If the value of an expression can be
determined by evaluating just the sub-
expression on left side of a logical
operator, then the sub-expression on the
right side will not be evaluated (short
circuit evaluation)
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
4.10
Checking Numeric Ranges with
Logical Operators
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Checking Numeric Ranges with
Logical Operators
• Used to test to see if a value falls inside a range:
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
4.11
Menus
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Menus
• Menu-driven program: program execution
controlled by user selecting from a list of
actions
• Menu: list of choices on the screen
• Menus can be implemented using
if/else if statements
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Menu-Driven Program Organization
• Display list of numbered or lettered
choices for actions
• Prompt user to make selection
• Test user selection in expression
• if a match, then execute code for action
• if not, then go on to next expression
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
4.12
Validating User Input
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Validating User Input
• Input validation: inspecting input data to
determine whether it is acceptable
• Bad output will be produced from bad
input
• Can perform various tests:
• Range
• Reasonableness
• Valid menu choice
• Divide by zero
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Input Validation in Program 4-19
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
4.13
Comparing Characters and
Strings
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Comparing Characters
• Characters are compared using their ASCII values
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Relational Operators Compare
Characters in Program 4-20
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Comparing string Objects
• Like characters, strings are compared
using their ASCII values
string name1 = "Mary"; The characters in each
string name2 = "Mark"; string must match before
they are equal
name1 > name2 // true
name1 <= name2 // false
name1 != name2 // true
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Relational Operators Compare
Strings in Program 4-21
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
4.14
The Conditional Operator
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
The Conditional Operator
• Can use to create short if/else
statements
• Format: expr ? expr : expr;
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
The Conditional Operator
• The value of a conditional expression is
• The value of the second expression if the first
expression is true
• The value of the third expression if the first
expression is false
• Parentheses () may be needed in an
expression due to precedence of
conditional operator
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
The Conditional Operator in
Program 4-22
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
4.15
The switch Statement
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
The switch Statement
• Used to select among statements from
several alternatives
• In some cases, can be used instead of
if/else if statements
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
switch Statement Format
switch (expression) //integer
{
case exp1: statement1;
case exp2: statement2;
...
case expn: statementn;
default: statementn+1;
}
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
The switch Statement
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
switch Statement Requirements
1) expression must be an integer variable
or an expression that evaluates to an
integer value
2) exp1 through expn must be constant
integer expressions or literals, and must
be unique in the switch statement
3) default is optional but recommended
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
switch Statement-How it Works
1) expression is evaluated
2) The value of expression is compared
against exp1 through expn.
3) If expression matches value expi, the
program branches to the statement
following expi and continues to the end
of the switch
4) If no matching value is found, the
program branches to the statement after
default:
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
break Statement
• Used to exit a switch statement
• If it is left out, the program "falls through"
the remaining statements in the switch
statement
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
break and default statements
Continued…
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
break and default statements
Continued…
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
break and default statements
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Using switch in Menu Systems
• switch statement is a natural choice for
menu-driven program:
• display the menu
• then, get the user's menu selection
• use user input as expression in switch
statement
• use menu choices as expr in case
statements
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
4.16
The switch Statement with
Initialization
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
switch Statement Initialization
• A feature introduced in C++17
• switch statements can have an optional
initialization clause that is executed before the
conditional integer expression is evaluated
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
switch Statement Initialization
• General format:
switch
switch (Initialization;
(Initialization; IntegerExpression)
IntegerExpression)
{{
case
case ConstantExpression:
ConstantExpression:
//
// place
place one
one or
or more
more statements
statements here
here
case
case ConstantExpression:
ConstantExpression:
//
// place
place one
one or
or more
more statements
statements here
here
//
// case
case statements
statements may
may be
be repeated
repeated as
as many
many
//
// times
times as
as necessary
necessary
default:
default:
//
// place
place one
one or
or more
more statements
statements here
here
}}
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
switch Statement Initialization
• Example:
switch
switch (int
(int value
value == abs(number);
abs(number); value)
value)
{{
case
case 1:
1:
cout
cout <<
<< "one"
"one" <<
<< endl;
endl;
break;
break;
case
case 2:
2:
cout
cout <<
<< "two"
"two" <<
<< endl;
endl;
break;
break;
default:
default:
cout
cout <<
<< "Invalid
"Invalid value"
value" <<
<< endl;
endl;
break;
break;
}}
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
4.17
More About Blocks and Scope
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
More About Blocks and Scope
• Scope of a variable is the block in which it
is defined, from the point of definition to
the end of the block
• Usually defined at beginning of function
• May be defined close to first use
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Inner Block Variable Definition in
Program 4-29
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Variables with the Same Name
• Variables defined inside { } have local or
block scope
• When inside a block within another block,
can define variables with the same name
as in the outer block.
• When in inner block, outer definition is not
available
• Not a good idea
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Two Variables with the Same Name
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.