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

Chapter 4

Uploaded by

mtalhamalik890
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)
4 views

Chapter 4

Uploaded by

mtalhamalik890
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/ 51

Chapter 4: Making Decisions

Starting Out with C++


Early Objects
Ninth Edition

by Tony Gaddis, Judy Walters,


and Godfrey Muganda

Copyright © 2017, 2014 Pearson Education, Inc.


Topics
4.1 Relational Operators
4.2 The if Statement
4.3 The if/else Statement
4.4 The if/else if Statement
4.5 Menu-Driven Programs
4.6 Nested if Statements
4.7 Logical Operators

Copyright © 2017, 2014 Pearson Education, Inc. 4-2


Topics (continued)
4.8 Validating User Input
4.9 More About Block and Scope
4.10 More About Characters and Strings
4.11 The Conditional Operator
4.12 The switch Statement
4.13 Enumerated Data Types

Copyright © 2017, 2014 Pearson Education, Inc. 4-3


4.1 Relational Operators

• Are used to compare numeric and char


values 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 © 2017, 2014 Pearson Education, Inc. 4-4
Relational Expressions

• Relational expressions are Boolean (i.e.,


evaluate to true or false)
• Examples:
12 > 5 is true
7 <= 5 is false
if x is 10, then
x == 10 is true,
x <= 8 is false,
x != 8 is true, and
x == 8 is false
Copyright © 2017, 2014 Pearson Education, Inc. 4-5
Relational Expressions

• The value can be assigned to a variable


bool result = (x <= y);
• Assigns 0 for false, 1 for true
• Do not confuse = (assignment) and ==
(equal to)

Copyright © 2017, 2014 Pearson Education, Inc. 4-6


Hierarchy of Relational Operators

Operator Precedence
> >= < <= Highest
== != Lowest

Use this when evaluating an expression that


contains multiple relational operators

Copyright © 2017, 2014 Pearson Education, Inc. 4-7


4.2 The if Statement
• Supports the use of a decision structure,
giving a program more than one path of
execution
• Allows statements to be conditionally
executed or skipped over
• It models the way we evaluate real-life
situations
“If it is cold outside,
wear a coat and wear a hat.”

Copyright © 2017, 2014 Pearson Education, Inc. 4-8


Format of the if Statement
No
if (condition) ; goes here
{
statement1;
statement2; they go here

statementn;
}
The block of statements inside the braces is called
the body of the if statement. If there is only 1
statement in the body, the { } may be omitted.
Copyright © 2017, 2014 Pearson Education, Inc. 4-9
How the if Statement Works

• If (condition) is true, then the


statement(s) in the body are executed.

• If (condition) is false, then the


statement(s) are skipped.

Copyright © 2017, 2014 Pearson Education, Inc. 4-10


if Statement Flow of Control

Copyright © 2017, 2014 Pearson Education, Inc. 4-11


Example if Statements

if (score >= 60)


cout << "You passed." << endl;

if (score >= 90)


{
grade = 'A';
cout << "Wonderful job!" << endl;
}

Copyright © 2017, 2014 Pearson Education, Inc. 4-12


if Statement Notes
• if is a keyword. It must be lowercase
• (condition)must be in ( )

• Do not place ; after (condition)


• Don't forget the { } around a multi-statement
body
• Don’t confuse = (assignment) with ==
(comparison)

Copyright © 2017, 2014 Pearson Education, Inc. 4-13


if Statement Style Recommendations

• Place each statement; on a separate


line after (condition)
• Indent each statement in the body
• When using { and } around the body, put
{ and } on lines by themselves

Copyright © 2017, 2014 Pearson Education, Inc. 4-14


What is true and what is false?

• An expression whose value is 0 is


considered false.
• An expression whose value is non-zero is
considered true.
• An expression need not be a comparison –
it can be a single variable or a
mathematical expression.

Copyright © 2017, 2014 Pearson Education, Inc. 4-15


Flag
• A flag is a variable that signals a condition
• It is usually implemented as a bool
• Meaning:
– true: the condition exists
– false: the condition does not exist
• The flag value can be both set and tested
with if statements

Copyright © 2017, 2014 Pearson Education, Inc. 4-16


Flag Example
Example:
bool validMonths = true;

if (months < 0)
validMonths = false;

if (validMonths)
monthlyPayment = total /
months;

Copyright © 2017, 2014 Pearson Education, Inc. 4-17


Integer Flags
• Integer variables can be used as flags
• Remember that 0 means false, any other
value means true
int allDone = 0; // set to false

if (count > MAX_STUDENTS)
allDone = 1; // set to true

if (allDone)
cout << "Task finished";
Copyright © 2017, 2014 Pearson Education, Inc. 4-18
4.3 The if/else Statement

• Allows a choice between statements


depending on whether (condition) is true
or false
• Format: if (condition)
{
statement set 1;
}
else
{
statement set 2;
}
Copyright © 2017, 2014 Pearson Education, Inc. 4-19
How the if/else Works

• If (condition) is true, statement


set 1 is executed and statement set 2
is skipped.

• If (condition) is false, statement


set 1 is skipped and statement set 2 is
executed.

Copyright © 2017, 2014 Pearson Education, Inc. 4-20


if/else Flow of Control

Copyright © 2017, 2014 Pearson Education, Inc. 4-21


Example if/else Statements
if (score >= 60)
cout << "You passed.\n";
else
cout << "You did not pass.\n";

if (intRate > 0)
{ interest = loanAmt * intRate;
cout << interest;
}
else
cout << "You owe no interest.\n";
Copyright © 2017, 2014 Pearson Education, Inc. 4-22
if vs. if/else
If there are two conditions and both of them can be
true or both can be false, then use two if
statements:
if (num > 0)
cout << num << " is positive\n";
if (num %2 == 0)
cout << num << " is even\n";
If the two conditions cannot both be true, then a
single if/else statement can work:
if (num %2 == 0)
cout << num << " is even\n";
else
cout << num << " is odd\n";

Copyright © 2017, 2014 Pearson Education, Inc. 4-23


Comparisons with floating-point numbers

• It is difficult to test for equality when


working with floating point numbers.

• It is better to use
– greater-than or less-than tests, or
– test to see if value is very close to a given
value

Copyright © 2017, 2014 Pearson Education, Inc. 4-24


4.4 The if/else if Statement

• This is a chain of if statements that test


in order until one is found to be true
• This also models thought processes
“If it is raining, take an umbrella,
else, if it is windy, take a hat,
else, if it is sunny, take sunglasses.”

Copyright © 2017, 2014 Pearson Education, Inc. 4-25


if/else if Format

if (condition 1)
{ statement set 1;
}
else if (condition 2)
{ statement set 2;
}
. . .
else if (condition n)
{ statement set n;
}

Copyright © 2017, 2014 Pearson Education, Inc. 4-26


Using a Trailing else

• Is used with a set of if/else if


statements

• It provides a default statement or action


that is performed when none of the
conditions is true
• It can be used to catch invalid values or
handle other exceptional situations

Copyright © 2017, 2014 Pearson Education, Inc. 4-27


Example if/else if with Trailing else
if (age >= 21)
cout << "Adult";
else if (age >= 13)
cout << "Teen";
else if (age >= 2)
cout << "Child";
else
cout << "Baby";

Copyright © 2017, 2014 Pearson Education, Inc. 4-28


4.5 Menu-Driven Program

• Menu: list of choices presented to the user


on the computer screen
• Menu-driven program: program execution
is controlled by user selecting from a list of
actions
• A menu-driven program can be written
using if/else if statements

Copyright © 2017, 2014 Pearson Education, Inc. 4-29


Menu-driven Program Organization

• Display a list of numbered or lettered


choices for actions.
• Input user’s selection of number or letter
• Test the user selection in (condition)
– if a match, then execute code to carry out
desired action
– if not, then test with next (condition)

Copyright © 2017, 2014 Pearson Education, Inc. 4-30


4.6 Nested if Statements
• An if statement that is part of the if or
else part of another if statement
• This can be used to evaluate > 1 data item
or to test > 1 condition
if (score < 100)
{
if (score > 90)
grade = 'A';
}

Copyright © 2017, 2014 Pearson Education, Inc. 4-31


Notes on Coding Nested ifs

• An else matches the nearest previous if


that does not have an else
if (score < 100)
if (score > 90)
grade = 'A';
else ... // goes with second if,
// not first one
• Proper indentation aids understanding
Copyright © 2017, 2014 Pearson Education, Inc. 4-32
4.7 Logical Operators

Are used to create relational expressions


from other relational expressions
Operator Meaning Explanation
New relational expression is true if both
&& AND expressions are true
New relational expression is true if either
|| OR expression is true

Reverses the value of an expression; true


! NOT expression becomes false, false
expression becomes true

Copyright © 2017, 2014 Pearson Education, Inc. 4-33


Logical Operator Examples

int x = 12, y = 5, z = -4;


(x > y) && (y > z) true or 1


(x > y) && (z > y) false or
0
(x <= z) || (y == z) false
(x <= z) || (y != z) true
!(x >= z) false

Copyright © 2017, 2014 Pearson Education, Inc. 4-34


Short-Circuit Evaluation
• If an expression using the && operator is
being evaluated and the subexpression on
the left side is false, then there is no
reason to evaluate the subexpression on
the right side. It is skipped.
• If an expression using the || operator is
being evaluated and the subexpression on
the left side is true, then there is no
reason to evaluate the subexpression on
the right side. It is skipped.
Copyright © 2017, 2014 Pearson Education, Inc. 4-35
Logical Precedence

Highest !
&&
Lowest ||
Example:
(2 < 3) || (5 > 6) && (7 > 8)

is true because AND is evaluated before OR

Copyright © 2017, 2014 Pearson Education, Inc. 4-36


More on Precedence

Highest arithmetic operators


relational operators
Lowest logical operators
Example:
8 < 2 + 7 || 5 == 6 is true

Copyright © 2017, 2014 Pearson Education, Inc. 4-37


Checking Numeric Ranges with
Logical Operators
• Used to test if a value is within a range
if (grade >= 0 && grade <= 100)
cout << "Valid grade";
• You can also test if a value lies outside a range
if (grade <= 0 || grade >= 100)
cout << "Invalid grade";
• Note that you cannot use mathematical notation
if (0 <= grade <= 100) //Doesn’t
//work!
Copyright © 2017, 2014 Pearson Education, Inc. 4-38
4.8 Validating User Input
• Input validation: inspecting input data to
determine if it is acceptable
• You want to avoid accepting bad input
• You can perform various tests
– Range
– Reasonableness
– Valid menu choice
– Zero as a divisor

Copyright © 2017, 2014 Pearson Education, Inc. 4-39


4.9 More About Blocks and Scope

• The Scope of a variable is the block in


which it is defined, from the point of
definition to the end of the block
• Variables are usually defined at the
beginning of a function
• They may instead be defined close to the
place where they are first used

Copyright © 2017, 2014 Pearson Education, Inc. 4-40


More About Blocks and Scope
• Variables defined inside { } have local or block
scope

• When in a block that is nested inside another


block, you can define variables with the same
name as in the outer block.

– When the program is executing in the inner block,


the outer definition is not available
– This generally not a good idea. The program may
be hard to read or understand.

Copyright © 2017, 2014 Pearson Education, Inc. 4-41


4.11 The Conditional Operator
• This can be used to create short if/else
statements
• Format: expr ? expr : expr;

Copyright © 2017, 2014 Pearson Education, Inc. 4-42


The Value of a Conditional Expression
• A conditional expression is an expression
that uses a conditional operator
• The value of a conditional expression is
determined by whichever of the
subexpressions is executed
int num = 13;
string result= (num%2 ==0) ? "even" : "odd";
cout << num << " is " << result;

Copyright © 2017, 2014 Pearson Education, Inc. 4-43


4.12 The switch Statement

• Is uses the value of an integer expressiion


to determine the statements to execute

• It may sometimes be used instead of


if/else if statements

Copyright © 2017, 2014 Pearson Education, Inc. 4-44


switch Statement Format
switch (IntExpression)
{
case exp1: statement set 1;
case exp2: statement set 2;
...
case expn: statement set n;
default: statement set n+1;
}

Copyright © 2017, 2014 Pearson Education, Inc. 4-45


switch Statement Requirements

1) IntExpression must be an integer


variable or a char,or an expression that
evaluates to an integer value
2) exp1 through expn must be constant
integer type expressions and must be
unique in the switch statement
3) default is optional but recommended

Copyright © 2017, 2014 Pearson Education, Inc. 4-46


How the switch Statement Works
1) IntExpression is evaluated

2) The value of intExpression is compared


against exp1 through expn.

3) If IntExpression matches value expi, the


program branches to the statement(s) 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 © 2017, 2014 Pearson Education, Inc. 4-47
The break Statement

• Is used to stop execution in the current


block

• It is also used to exit a switch statement

• It is used to execute a single case


statement without executing statements
following it

Copyright © 2017, 2014 Pearson Education, Inc. 4-48


Example switch Statement

switch (gender)
{
case 'f': cout << "female";
break;
case 'm': cout << "male";
break;
default : cout << "invalid gender";
}

Copyright © 2017, 2014 Pearson Education, Inc. 4-49


Using switch with a Menu
A switch statement is a natural choice for
a menu-driven program
– display menu
– get user input
– use user input as IntExpression in switch
statement
– use menu choices as exp values to test
against in the case statements

Copyright © 2017, 2014 Pearson Education, Inc. 4-50


Chapter 4: Making Decisions

Starting Out with C++


Early Objects
Ninth Edition

by Tony Gaddis, Judy Walters,


and Godfrey Muganda

Copyright © 2017, 2014 Pearson Education, Inc.

You might also like