0% found this document useful (0 votes)
2 views

chapter 4

Chapter 4 discusses decision-making in programming, focusing on relational operators, if statements, and their variations such as if/else and nested if statements. It explains how to evaluate conditions, execute code based on those conditions, and implement logical operators for more complex decision-making. Additionally, it covers the use of flags, menus, and input validation in programming to enhance user interaction and control flow.

Uploaded by

David Cross
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

chapter 4

Chapter 4 discusses decision-making in programming, focusing on relational operators, if statements, and their variations such as if/else and nested if statements. It explains how to evaluate conditions, execute code based on those conditions, and implement logical operators for more complex decision-making. Additionally, it covers the use of flags, menus, and input validation in programming to enhance user interaction and control flow.

Uploaded by

David Cross
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 86

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.

• If the expression is false, then


statement is skipped.

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:

if (score > 90)


grade = 'A';

• Be careful testing floats and doubles for


equality
• 0 is false; any other value is true

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 { }:

if (score > 90)


{
grade = 'A';
cout << "Good Job!\n";
}

• { } creates a block of code


Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
4.4
The if/else Statement

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;

• If the expression is true, then statement1 is


executed and statement2 is skipped.
• If the expression is false, then statement1 is
skipped and statement2 is executed.

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 > y) && (z > y) false

(x <= z) || (y == z) false

(x <= z) || (y != z) true

!(x >= z) false

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:

if (grade >= 0 && grade <= 100)


cout << "Valid grade";

• Can also test to see if value falls outside of range:

if (grade <= 0 || grade >= 100)


cout << "Invalid grade";

• Cannot use mathematical notation:

if (0 <= grade <= 100) //doesn’t work!

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

'A' < 'B'


• The ASCII value of 'A' (65) is less than the ASCII value of
'B'(66)

'1' < '2'


• The ASCII value of '1' (49) is less than the ASCI value of
'2' (50)

• Lowercase letters have higher ASCII codes than


uppercase letters, so 'a' > 'Z'

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

name1 < "Mary Jane" // 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;

x<0 ? y=10 : z=20;

First Expression: 2nd Expression: 3rd Expression:


Expression to be Executes if first Executes if the first
tested expression is true expression is false

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.

You might also like