making decisions. 4.1 relational operators used to compare numbers to determine relative order...

78
Making Decisions

Upload: kristin-holmes

Post on 03-Jan-2016

219 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

Making Decisions

Page 2: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

4.14.1Relational Operators

Page 3: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

Relational OperatorsRelational OperatorsUsed to compare numbers to

determine relative orderOperators:

> Greater than

< Less than

>= Greater than or equal to

<= Less than or equal to

== Equal to

!= Not equal to

Page 4: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

Relational ExpressionsRelational ExpressionsBoolean expressions – true or falseExamples:

12 > 5 is true7 <= 5 is false

if x is 10, then x == 10 is true, x != 8 is true, and x == 8 is false

Page 5: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

Relational ExpressionsRelational ExpressionsCan be assigned to a variable:

result = x <= y;Assigns 0 for false, 1 for trueDo not confuse = and ==

Page 6: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

4.24.2The if Statement

Page 7: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

The The ifif Statement StatementAllows 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."

Page 8: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

Flowchart for Evaluating a Flowchart for Evaluating a DecisionDecision

Page 9: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

Flowchart for Evaluating a Flowchart for Evaluating a DecisionDecision

Page 10: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

The The ifif Statement StatementGeneral Format:

if (expression)statement;

Page 11: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

The if Statement-What The if Statement-What HappensHappensTo evaluate:if (expression)

statement;If the expression is true, then statement is executed.

If the expression is false, then statement is skipped.

Page 12: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

ifif Statement in Program Statement in Program 4-24-2

Continued…

Page 13: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

ifif Statement in Program Statement in Program 4-24-2

Page 14: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

Flowchart for Program 4-2 Flowchart for Program 4-2 Lines 21 and 22Lines 21 and 22

Page 15: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

ifif Statement Notes Statement NotesDo 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

Page 16: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

4.34.3Expanding the if Statement

Page 17: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

Expanding the Expanding the ifif StatementStatementTo 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

Page 18: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

4.44.4The if/else Statement

Page 19: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

The The if/elseif/else statement statementProvides two possible paths of

executionPerforms one statement or block

if the expression is true, otherwise performs another statement or block.

Page 20: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

The The if/elseif/else statement statementGeneral Format:

if (expression)statement1; // or

blockelse

statement2; // or block

Page 21: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

if/elseif/else-What Happens-What HappensTo 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.

Page 22: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

The The if/elseif/else statement and statement and Modulus Operator in Program Modulus Operator in Program 4-84-8

Page 23: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

Flowchart for Program 4-8 Flowchart for Program 4-8 Lines 14 through 18Lines 14 through 18

Page 24: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

Testing the Divisor in Testing the Divisor in Program 4-9Program 4-9

Continued…

Page 25: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

Testing the Divisor in Testing the Divisor in Program 4-9Program 4-9

Page 26: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

4.54.5Nested if Statements

Page 27: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

Nested Nested ifif Statements StatementsAn if statement that is nested

inside another if statementNested if statements can be

used to test more than one condition

Page 28: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

Flowchart for a Nested Flowchart for a Nested ifif StatementStatement

Page 29: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

Nested Nested ifif Statements StatementsFrom Program 4-10

Page 30: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

Nested Nested ifif Statements StatementsAnother example, from Program

4-1

Page 31: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

Use Proper Indentation!Use Proper Indentation!

Page 32: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

4.64.6The if/else if Statement

Page 33: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

The The if/else if if/else if StatementStatementTests a series of conditions until

one is found to be trueOften 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”

Page 34: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

if/else if if/else if FormatFormatif (expression)

statement1; // or blockelse if (expression)

statement2; // or block . . // other else ifs .

else if (expression) statementn; // or block

Page 35: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

The The if/else if if/else if Statement Statement in Program 4-13in Program 4-13

Page 36: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

Using a Trailing Using a Trailing elseelse to to Catch Errors in Program 4-14Catch Errors in Program 4-14The trailing else clause is

optional, but it is best used to catch errors.

This trailing else catches invalid test scores

Page 37: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

4.74.7Flags

Page 38: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

FlagsFlagsVariable that signals a conditionUsually implemented as a bool

variableCan 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

Page 39: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

FlagFlagIts just a conceptual ideaIs a regular variableUsed in different ways but typically to

control the flow in the program---which “branch” to take.

Here is an example in psuedo code:if( Verbose_flag) { printout diagnostic information }

Page 40: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

4.84.8Logical Operators

Page 41: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

Logical OperatorsLogical OperatorsUsed 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

Page 42: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

Logical Operators-Logical Operators-ExamplesExamples

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

Page 43: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

The logical The logical &&&& operator in operator in Program 4-15Program 4-15

Page 44: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

The logical The logical |||| Operator in Operator in Program 4-16Program 4-16

Page 45: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

The logical The logical !! Operator in Operator in Program 4-17Program 4-17

Page 46: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

Logical Operator-NotesLogical 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)

Page 47: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

4.94.9Checking Numeric Ranges with Logical Operators

Page 48: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

Checking Numeric Ranges Checking Numeric Ranges with Logical Operatorswith Logical OperatorsUsed 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!

Page 49: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

4.104.10Menus

Page 50: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

MenusMenusMenu-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

Page 51: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

Menu-Driven Program Menu-Driven Program OrganizationOrganizationDisplay list of numbered or

lettered choices for actionsPrompt user to make selectionTest user selection in expression

◦if a match, then execute code for

action◦if not, then go on to next expression

Page 52: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

4.114.11Validating User Input

Page 53: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

Validating User InputValidating User InputInput 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

Page 54: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

Input Validation in Program Input Validation in Program 4-194-19

Page 55: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

4.124.12Comparing Characters and Strings

Page 56: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

Comparing CharactersComparing CharactersCharacters 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'

Page 57: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

Relational Operators Relational Operators Compare Characters in Compare Characters in Program 4-20Program 4-20

Page 58: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

Comparing Comparing stringstring ObjectsObjectsLike characters, strings are

compared using their ASCII values

string name1 = "Mary";string name2 = "Mark";

name1 > name2 // truename1 <= name2 // falsename1 != name2 // true

name1 < "Mary Jane" // true

The characters in each string must match before they are equal

Page 59: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

Relational Operators Relational Operators Compare Strings in Program Compare Strings in Program 4-214-21

Page 60: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

4.134.13The Conditional Operator

Page 61: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

The Conditional OperatorThe Conditional OperatorCan use to create short if/else

statementsFormat: expr ? expr : expr;

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

First Expression:Expression to betested

2nd Expression:Executes if firstexpression is true

3rd Expression:Executes if the firstexpression is false

Page 62: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

The Conditional OperatorThe Conditional OperatorThe 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 falseParentheses () may be needed

in an expression due to precedence of conditional operator

Page 63: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

The Conditional Operator in The Conditional Operator in Program 4-22Program 4-22

Page 64: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

4.144.14The switch Statement

Page 65: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

The The switchswitch Statement StatementUsed to select among statements

from several alternativesIn some cases, can be used

instead of if/else if statements

Page 66: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

switchswitch Statement Format Statement Format

switch (expression) //integer{ case exp1: statement1;case exp2: statement2;...case expn: statementn;default: statementn+1;

}

Page 67: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

The The switchswitch Statement in Statement in Program 4-23Program 4-23

Page 68: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

switchswitch Statement Statement RequirementsRequirements1) 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

Page 69: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

switchswitch Statement-How it Statement-How it WorksWorks1) expression is evaluated2) 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:

Page 70: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

breakbreak Statement StatementUsed to exit a switch statementIf it is left out, the program "falls

through" the remaining statements in the switch statement

Page 71: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

breakbreak and and defaultdefault statements in Program 4-25statements in Program 4-25

Continued…

Page 72: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

breakbreak and and defaultdefault statements in Program 4-25statements in Program 4-25

Page 73: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

Using Using switchswitch in Menu in Menu SystemsSystemsswitch 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

Page 74: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

4.154.15More About Blocks and Scope

Page 75: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

More About Blocks and More About Blocks and ScopeScopeScope 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

Page 76: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

Inner Block Variable Inner Block Variable Definition in Program 4-29Definition in Program 4-29

Page 77: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

Variables with the Same Variables with the Same NameNameVariables defined inside { } have

local or block scopeWhen 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

Page 78: Making Decisions. 4.1 Relational Operators Used to compare numbers to determine relative order Operators: > Greater than < Less than >= Greater than

Two Variables with the Same Two Variables with the Same Name in Program 4-30Name in Program 4-30