70
Chapter 5: Control Structures I (Selection)

Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

Embed Size (px)

Citation preview

Page 1: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

Chapter 5: Control Structures I (Selection)

Page 2: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

ObjectivesIn this chapter you will:Learn about control structuresExamine relational and logical operatorsExplore how to form and evaluate logical

(Boolean) expressionsDiscover how to use the selection control

structures if, if...else, and switch in a program

2

Page 3: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

bool DatatypeThe bool Data Type

The data type bool has logical (Boolean) values true and false

bool, true, and false are reserved words

The identifier true has the value 1

The identifier false has the value 0

Declaration: bool hasFever;

bool isSenior;

3

Page 4: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

Control StructuresA computer can proceed:

In sequenceSelectively (branch) - making a choiceRepetitively (iteratively) - looping

Some statements are executed only if certain conditions are met

A condition is represented by a logical (Boolean) expression that can be true or false

A condition is met if it evaluates to true

4

Page 5: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

5

Page 6: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

Relational OperatorsRelational operators:

Allow comparisons

Require two operands (binary)

Return 1 if expression is true, 0 otherwise

Comparing values of different data types may produce unpredictable resultsFor example, 8 < '5' should not be done

Any nonzero value is treated as true

6

Page 7: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

7

Page 8: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

8

Page 9: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

are used in expressions of form:

ExpressionA Operator ExpressionB

temperature > humidityrain >= averageB * B - 4.0 * A * C < 0.0hours <= 40abs (number) == 35initial != ‘Q’

Relational Operators

Page 10: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

Givenint x, y;x = 4;y = 6;

Expression Value

x < y true

x + 2 < y false

x != y true

x + 3 >= y true

y == x false

y == x+2 true

y = x + 3 7 (true)

Page 11: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

Comparing string TypesRelational operators can be applied to strings

Strings are compared character by character, starting with the first character

Comparison continues until either a mismatch is found or all characters are found equal

If two strings of different lengths are compared and the comparison is equal to the last character of the shorter stringThe shorter string is less than the larger string

11

Page 12: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

string Comparison ExampleSuppose we have the following

declarations:string str1 = "Hello";

string str2 = "Hi";

string str3 = "Air";

string str4 = "Bill";

12

Page 13: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

13

Page 14: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

14

Page 15: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

15

Page 16: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

Logical (Boolean) OperatorsLogical (Boolean) operators enable you to

combine logical expressionsThree logical (Boolean) operators:

! - not&& – and|| - or

Logical operators take logical values as operands and yield logical values as results

! is unary; && and || are binary operatorsPutting ! in front of a logical expression

reverses its value

16

Page 17: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

17

Page 18: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

Logical Expression Meaning Description

! p NOT p ! p is false if p is true

! p is true if p is false

p && q p AND q p && q is true ifboth p and q are true. It is false otherwise.

p || q p OR q p || q is true if either

p or q or both are true. It is false otherwise.

Page 19: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

19

Page 20: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

20

Page 21: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

21

Page 22: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

int age; bool isSenior, hasFever;float temperature;

age = 20;temperature = 102.0;isSenior = (age >= 55); // isSenior is falsehasFever = (temperature > 98.6); // hasFever is true

Expression Value

isSenior && hasFever false

isSenior || hasFever true

! isSenior true

! hasFever false

Page 23: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

Precedence of OperatorsRelational and logical operators are

evaluated from left to right

The associativity is left to right

Parentheses can override precedence

23

Page 24: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

24

Page 25: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

Short-Circuit EvaluationShort-circuit evaluation: evaluation of a

logical expression stops as soon as the value of the expression is known

Example:

(age >= 21) || ( x == 5) //Line 1

(grade == ‘A’) && (x >= 7) //Line 2

25

Page 26: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

Logical (Boolean) ExpressionsThe bool Data Type and Logical (Boolean)

Expressions

The data type bool has logical (Boolean) values true and false

bool, true, and false are reserved words

The identifier true has the value 1

The identifier false has the value 0

26

Page 27: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

27

Page 28: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

28

Page 29: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

29

Page 30: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

Logical (Boolean) Expressions (continued)Logical expressions can be unpredictableThe following expression appears to

represent a comparison of 0, num, and 10:0 <= num <= 10

It always evaluates true because 0 <= num evaluates to either 0 or 1, and 0 <= 10 is true and 1 <= 10 is true

A correct way to write this expression is:0 <= num && num <= 10

30

Page 31: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

One-Way (if) SelectionThe syntax of one-way selection is:

if (expression)

statement

Statement is executed if the value of the expression is true

Statement is bypassed if the value is false; program goes to the next statement

31

Page 32: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

One-Way (if) Selection (continued)The expression is sometimes called a decision

maker because it decides whether to execute the statement that follows it

The statement following the expression is sometimes called the action statement

The expression is usually a logical expression

The statement is any C++ statement

if is a reserved word

32

Page 33: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

33

Page 34: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

34

Page 35: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

35

Page 36: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

36

Page 37: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

Two-Way (if…else) SelectionTwo-way selection takes the form:if (expression)

statement1else

statement2If expression is true, statement1 is executed

otherwise statement2 is executedstatement1 and statement2 are any C++

statementselse is a reserved word

37

Page 38: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

38

Page 39: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

39

Page 40: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

40

Page 41: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

Compound (Block of) Statement

Compound statement (block of statements):{

statement1;statement2;...statementn;

}A compound statement is a single statement

41

Page 42: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

Compound Statement Exampleif (age > 18){cout << "Eligible to vote." < <endl;cout << "No longer a minor." << endl;

} else{cout << "Not eligible to vote.“

<< endl;cout << "Still a minor." << endl;

}

42

Page 43: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

Nested ifNesting: one control statement in

anotherAn else is associated with the

most recent if that has not been paired with an else

43

Page 44: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

44

Page 45: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

45

Page 46: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

46

Page 47: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

47

Page 48: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

Input Failure and the if StatementIf input stream enters a fail state

All subsequent input statements associated with that stream are ignored

Program continues to executeMay produce erroneous results

Can use if statements to check status of input stream

If stream enters the fail state, include instructions that stop program execution

48

Page 49: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

switch Structuresswitch structure: alternate to if-else

switch expression is evaluated first

Value of the expression determines which corresponding action is taken

Expression is sometimes called the selector

49

Page 50: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

switch Structures (continued)Expression value can be only integral

Its value determines which statement is selected for execution

A particular case value should appear only once

50

Page 51: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

51

Page 52: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

switch Structures (continued)One or more statements may follow a case

label

Braces are not needed to turn multiple statements into a single compound statement

The break statement may or may not appear after each statement

switch, case, break, and default are reserved words

52

Page 53: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

switch Statement RulesWhen value of the expression is matched

against a case value, Statements execute until break statement is

found or the end of switch structure is reached

If value of the expression does not match any of the case valuesStatements following the default label

execute If no default label, and if no match, the entire switch statement is skipped

A break statement causes an immediate exit from the switch structure

53

Page 54: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

Programming ExampleThis programming example calculates a

customer’s bill for a local cable company There are two types of customers:

ResidentialBusiness

Two rates for calculating a cable bill: One for residential customersOne for business customers

54

Page 55: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

RatesFor residential customer:

Bill processing fee: $4.50Basic service fee: $20.50Premium channel: $7.50 per channel

For business customer:Bill processing fee: $15.00Basic service fee: $75.00 for first 10

connections and $5.00 for each additional connection

Premium channel cost: $50.00 per channel for any number of connections

55

Page 56: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

RequirementsAsk user for account number and customer

code

Assume R or r stands for residential customer and B or b stands for business customer

56

Page 57: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

Input and OutputInput:

Customer account numberCustomer codeNumber of premium channelsFor business customers, number of basic

service connectionsOutput:

Customer’s account numberBilling amount

57

Page 58: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

Program AnalysisThe purpose of the program is to calculate

and print billing amountCalculating the billing amount requires:

Customer for whom the billing amount is calculated (residential or business)

Number of premium channels to which the customer subscribes

For a business customer, you need: Number of basic service connectionsNumber of premium channels

58

Page 59: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

Program Analysis (continued)Data needed to calculate the bill, such as bill

processing fees and the cost of a premium channel, are known quantities

The program should print the billing amount to two decimal places

59

Page 60: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

Algorithm DesignSet precision to two decimal placesPrompt user for account number and

customer typeIf customer type is R or r

Prompt user for number of premium channelsCompute and print the bill

If customer type is B or bPrompt user for number of basic service

connections and number of premium channelsCompute and print the bill

60

Page 61: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

Variables

61

Page 62: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

Named Constants

62

Page 63: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

FormulasBilling for residential customers:

amountDue = RES_BILL_PROC_FEES +

RES_BASIC_SERV_COST

+ numOfPremChannels *

RES_COST_PREM_CHANNEL;

63

Page 64: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

Formulas (continued)Billing for business customers:

if (numOfBasicServConn <= 10) amountDue = BUS_BILL_PROC_FEES + BUS_BASIC_SERV_COST + numOfPremChannels * BUS_COST_PREM_CHANNEL;else amountDue = BUS_BILL_PROC_FEES + BUS_BASIC_SERV_COST + (numOfBasicServConn - 10) * BUS_BASIC_CONN_COST + numOfPremChannels * BUS_COST_PREM_CHANNEL;

64

Page 65: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

Main Algorithm1. Output floating-point numbers in fixed

decimal with decimal point and trailing zeros• Output floating-point numbers with two

decimal places, set the precision to two decimal places

2. Prompt user to enter account number3. Get customer account number4. Prompt user to enter customer code5. Get customer code

65

Page 66: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

Main Algorithm (continued)6. If the customer code is r or R,

Prompt user to enter number of premium channels

Get the number of premium channels

Calculate the billing amount

Print account number and billing amount

66

Page 67: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

Main Algorithm (continued)7. If customer code is b or B,

Prompt user to enter number of basic service connections

Get number of basic service connections Prompt user to enter number of premium

channels Get number of premium channels Calculate billing amount Print account number and billing amount

8. If customer code is other than r, R, b, or B, output an error message

67

Page 68: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

SummaryControl structures alter normal control flow

Most common control structures are selection and repetition

Relational operators: ==, <, <=, >, >=, !=

Logical expressions evaluate to 1 (true) or 0 (false)

Logical operators: ! (not), && (and), || (or)

68

Page 69: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

Summary (continued)Two selection structures: one-way selection

and two-way selectionThe expression in an if or if...else structure

is usually a logical expressionNo else statement in C++. Every else has a

related ifA sequence of statements enclosed between

braces, { and }, is called a compound statement or block of statements

69

Page 70: Chapter 5: Control Structures I (Selection). Objectives In this chapter you will: Learn about control structures Examine relational and logical operators

Summary (continued)Using assignment in place of the equality

operator creates a semantic error

switch structure handles multiway selection

break statement ends switch statement

Use assert to terminate a program if certain conditions are not met

70