73
Programming Logic and Design Fourth Edition, Introductory Chapter 5 Making Decisions

Programming Logic and Design Fourth Edition, Introductory Chapter 5 Making Decisions

Embed Size (px)

Citation preview

Programming Logic and Design

Fourth Edition, Introductory

Chapter 5Making Decisions

Programming Logic and Design, Introductory, Fourth Edition 2

Objectives

• Evaluate Boolean expressions to make comparisons

• Use the relational comparison operators

• Understand AND logic

• Understand OR logic

• Use selections within ranges

Programming Logic and Design, Introductory, Fourth Edition 3

Objectives (continued)

• Understand precedence when combining AND and OR selections

• Understand the case structure

• Use decision tables

Programming Logic and Design, Introductory, Fourth Edition 4

Evaluating Boolean Expressions to Make Comparisons

• Dual-alternative (or binary) selection structure:– Provides an action for each of two possible outcomes

Programming Logic and Design, Introductory, Fourth Edition 5

Evaluating Boolean Expressions to Make Comparisons (continued)

• Single-alternative (or unary) selection structure– Action is provided for only one outcome

Programming Logic and Design, Introductory, Fourth Edition 6

Evaluating Boolean Expressions to Make Comparisons (continued)

• Dual-alternative (or binary) selection structure:– Also called an if-then-else structure

Programming Logic and Design, Introductory, Fourth Edition 7

Evaluating Boolean Expressions to Make Comparisons (continued)

• Single-alternative (or unary) selection structure– Also called an if-then structure

Programming Logic and Design, Introductory, Fourth Edition 8

Evaluating Boolean Expressions to Make Comparisons (continued)

• Boolean expression– Represents only one of two states– Expression evaluates to either true or false

• Expressions with relational operators produce Boolean results:

hours worked > 40

Programming Logic and Design, Introductory, Fourth Edition 9

Using the Relational Comparison Operators

• Six possible ways to compare two values:– Both are equal– The first is greater than the second– The first is less than the second– The first is greater than or equal to the second– The first is less than or equal to the second– The two values are not equal

Programming Logic and Design, Introductory, Fourth Edition 10

Using the Relational Comparison Operators (continued)

• Relational comparison operators:– To express Boolean tests when comparing values

• Different languages use different symbols – Equals: =– Less than: <– Greater than: <– Less than or equal: <=– Greater than or equal: >=

Programming Logic and Design, Introductory, Fourth Edition 11

Using the Relational Comparison Operators (continued)

• Any logical situation can be expressed with only three types of comparisons: =, >, and <

• >= and <= are not necessary, but make code more readable

• Adjust the logic based on the comparison type

Programming Logic and Design, Introductory, Fourth Edition 12

Using the Relational Comparison Operators (continued)

• Rule of thumb: ask the question most likely to have a positive outcome

• Avoid “not equal” when it results in a double negative

Programming Logic and Design, Introductory, Fourth Edition 13

Using the Relational Comparison Operators (continued)

• Rephrase in the positive

• Some comparisons are clearer when negative is used

Programming Logic and Design, Introductory, Fourth Edition 14

Using the Relational Comparison Operators (continued)

Programming Logic and Design, Introductory, Fourth Edition 15

Understanding AND Logic

• AND decision – Requires that both of two tests evaluate to True– Requires a nested decision (nested if)

Programming Logic and Design, Introductory, Fourth Edition 16

Understanding AND Logic (continued)

• Developing the application– The input data

Programming Logic and Design, Introductory, Fourth Edition 17

Understanding AND Logic (continued)

• Developing the application– The intended output:

Programming Logic and Design, Introductory, Fourth Edition 18

Understanding AND Logic (continued)• Developing the application

– The mainline logic:

Programming Logic and Design, Introductory, Fourth Edition 19

Understanding AND Logic (continued)• housekeeping() module:

Programming Logic and Design, Introductory, Fourth Edition 20

Understanding AND Logic (continued)• createReport() module:

Programming Logic and Design, Introductory, Fourth Edition 21

Understanding AND Logic (continued)

Programming Logic and Design, Introductory, Fourth Edition 22

Writing Nested AND Decisions for Efficiency

• For nested decisions, decide which to make first

• An appropriate choice may improve performance

• Consider expected outcomes to determine the most efficient way to nest the decisions

Programming Logic and Design, Introductory, Fourth Edition 23

Writing Nested AND Decisions for Efficiency (continued)

• With 1000 employees, of which 90% (900) are in the medical plan, and 50% (500) are in the dental plan:– First question is asked 1000 times– Second question is asked 900 times

Programming Logic and Design, Introductory, Fourth Edition 24

Writing Nested AND Decisions for Efficiency (continued)

• With 1000 employees, of which 90% (900) are in the medical plan, and 50% (500) are in the dental plan:– First question is asked 1000 times– Second question is asked 500 times

Programming Logic and Design, Introductory, Fourth Edition 25

Writing Nested AND Decisions for Efficiency (continued)

• This analysis may not be possible:– You may not know decision outcome likelihoods– The decisions may not be mutually exclusive

• Rule of Thumb: First ask the question that is less likely to be true– Reduces the number of times the second question will

need to be asked

Programming Logic and Design, Introductory, Fourth Edition 26

Combining Decisions in an AND Selection

• Logical AND operator: – Allows you to ask two or more questions (Boolean

expressions) in a single comparison– Each Boolean expression in an AND selection must be

true to produce a result of true– Question placed first will be asked first, so consider

efficiency

Programming Logic and Design, Introductory, Fourth Edition 27

Combining Decisions in an AND Selection (continued)

Programming Logic and Design, Introductory, Fourth Edition 28

Combining Decisions in an AND Selection (continued)

Programming Logic and Design, Introductory, Fourth Edition 29

Avoiding Common Errors in an AND Selection

• Failure to nest 2nd decision entirely within 1st decision

Programming Logic and Design, Introductory, Fourth Edition 30

Avoiding Common Errors in an AND Selection (continued)

• Incorrect questions to determine inclusion in a range

• Correct way:

Programming Logic and Design, Introductory, Fourth Edition 31

Avoiding Common Errors in an AND Selection (continued)

• Failure to use two complete Boolean expressions:

• Correct way:

Programming Logic and Design, Introductory, Fourth Edition 32

Understanding OR Logic• OR decision

– At least one of two conditions must be true to produced a result of True

– If first condition is true, no need to test the second condition

Programming Logic and Design, Introductory, Fourth Edition 33

Understanding OR Logic (continued)• createReport() module:

Programming Logic and Design, Introductory, Fourth Edition 34

Avoiding Common Errors in an OR Selection

• Unstructured OR selection:

Programming Logic and Design, Introductory, Fourth Edition 35

Avoiding Common Errors in an OR Selection (continued)

• Incorrect interpretation of English:– Casual use of AND when logic requires OR

Programming Logic and Design, Introductory, Fourth Edition 36

Avoiding Common Errors in an OR Selection (continued)

• Correct logic:

Programming Logic and Design, Introductory, Fourth Edition 37

Avoiding Common Errors in an OR Selection (continued)

• Incorrect interpretation of English– Use of OR when AND logic is required

Programming Logic and Design, Introductory, Fourth Edition 38

Avoiding Common Errors in an OR Selection (continued)

• Correct logic:

Programming Logic and Design, Introductory, Fourth Edition 39

Writing OR Decisions for Efficiency• How many decisions?

Programming Logic and Design, Introductory, Fourth Edition 40

Writing OR Decisions for Efficiency (continued)

Programming Logic and Design, Introductory, Fourth Edition 41

Writing OR Decisions for Efficiency (continued)

• Both produce the same output, but vary widely in number of questions asked

• If first question is true, no need to ask second

• Rule of thumb:– First ask the question that is more likely to be true

Programming Logic and Design, Introductory, Fourth Edition 42

Combining Decisions in an OR Selection

• Logical OR operator: – Allows you to ask two or more questions (Boolean

expressions) in a single comparison– Only one Boolean expression in an OR selection

must be true to produce a result of true– Question placed first will be asked first, so consider

efficiency

Programming Logic and Design, Introductory, Fourth Edition 43

Combining Decisions in an OR Selection (continued)

• Using an OR operator:

Programming Logic and Design, Introductory, Fourth Edition 44

Combining Decisions in an OR Selection (continued)

• What the computer actually does:

Programming Logic and Design, Introductory, Fourth Edition 45

Using Selections Within Ranges

• Range check: compare a variable to a series of values between limits

• Use the lowest or highest value in each range

• Adjust the question logic when using highest versus lowest values

• Should end points of the range be included?– Yes: use >= or <=– No: use < or >

Programming Logic and Design, Introductory, Fourth Edition 46

Using Selections Within Ranges (continued)

• Using high-end values in the range check:

Programming Logic and Design, Introductory, Fourth Edition 47

Using Selections Within Ranges (continued)

• Using low-end values in the range check:

Programming Logic and Design, Introductory, Fourth Edition 48

Common Errors Using Range Checks

• Avoid dead or unreachable paths– Don’t check for values that can never occur– Requires some prior knowledge of the data

Programming Logic and Design, Introductory, Fourth Edition 49

Common Errors Using Range Checks (continued)

Programming Logic and Design, Introductory, Fourth Edition 50

Common Errors Using Range Checks (continued)

• Avoid asking an unneeded question– If there is only one possible outcome– If previous logic has already determined the answer

Programming Logic and Design, Introductory, Fourth Edition 51

Common Errors Using Range Checks (continued)

Programming Logic and Design, Introductory, Fourth Edition 52

Understanding Precedence When Combining AND and OR Selections

• Can combine multiple AND and OR operators in an expression

• When multiple conditions must all be true, use multiple ANDs

Programming Logic and Design, Introductory, Fourth Edition 53

Understanding Precedence When Combining AND and OR Selections

(continued)• When only one of multiple conditions must be true,

use multiple ORs

Programming Logic and Design, Introductory, Fourth Edition 54

Understanding Precedence When Combining AND and OR Selections

(continued)• When AND and OR operators are combined in the

same statement, AND operators are evaluated first

• Use parentheses to correct logic and force evaluations to occur in the order desired

Programming Logic and Design, Introductory, Fourth Edition 55

Understanding Precedence When Combining AND and OR Selections

(continued)• Mixing AND and OR operators makes logic more

complicated

• Can avoid mixing AND and OR decisions by nesting if statements

Programming Logic and Design, Introductory, Fourth Edition 56

Understanding Precedence When Combining AND and OR Selections

(continued)

Programming Logic and Design, Introductory, Fourth Edition 57

Understanding the Case Structure

• Used to provide a series of alternatives based on the value of a single variable

• Replaces a series of chained if-else statements

• May make the code easier to read

Programming Logic and Design, Introductory, Fourth Edition 58

Understanding the Case Structure (continued)

Programming Logic and Design, Introductory, Fourth Edition 59

Understanding the Case Structure (continued)

Programming Logic and Design, Introductory, Fourth Edition 60

Using Decision Tables

• Managing multiple possible outcomes of multiple decisions can be difficult

• Decision table: Four-part problem-analysis tool– Conditions– Possible combinations of Boolean values for each

condition– Possible actions based on the conditions– Specific actions that correspond to each Boolean

value of each condition

Programming Logic and Design, Introductory, Fourth Edition 61

Using Decision Tables (continued)

• Developing the application:– The data

Programming Logic and Design, Introductory, Fourth Edition 62

Using Decision Tables (continued)

• Rules for assigning residence halls:– Students under age 21 who request a hall with quiet

study hours: Addams Hall– Students under age 21 who do not request a hall

with quiet study hours: Grant Hall– Students age 21 and over who request a hall with

quiet study hours: Lincoln Hall– Students age 21 and over who do not request a hall

with quiet study hours: Lincoln Hall

Programming Logic and Design, Introductory, Fourth Edition 63

Using Decision Tables (continued)

• Developing the application:– The desired output

Programming Logic and Design, Introductory, Fourth Edition 64

Using Decision Tables (continued)

Programming Logic and Design, Introductory, Fourth Edition 65

Using Decision Tables (continued)

Programming Logic and Design, Introductory, Fourth Edition 66

Using Decision Tables (continued)

• To create a decision table:– List all possible conditions– Determine the possible Boolean value combinations

for each condition– # combinations = 2 (number of conditions)

Programming Logic and Design, Introductory, Fourth Edition 67

Using Decision Tables (continued)

• To create a decision table (continued):– Add rows to list possible outcome actions

Programming Logic and Design, Introductory, Fourth Edition 68

Using Decision Tables (continued)

• To create a decision table (continued):– Choose one required outcome for each combination

Programming Logic and Design, Introductory, Fourth Edition 69

Using Decision Tables (continued)• Create a flowchart from the decision table

– Draw a path for each column’s outcome

Programming Logic and Design, Introductory, Fourth Edition 70

Using Decision Tables (continued)• Resulting flowchart created directly from table has

two identical outcomes: an unneeded question

Programming Logic and Design, Introductory, Fourth Edition 71

Using Decision Tables (continued)

Programming Logic and Design, Introductory, Fourth Edition 72

Summary

• Decisions involve evaluating Boolean expressions

• Use relational operators to compare values

• AND decision requires that both conditions be true to produce a true result

• In an AND decision, first ask the question that is less likely to be true

• OR decision requires that either of the conditions be true to produce a true result

Programming Logic and Design, Introductory, Fourth Edition 73

Summary (continued)

• In an OR decision, first ask the question that is more likely to be true

• For a range check, make comparisons with the highest or lowest values in each range

• Eliminate unnecessary or previously answered questions

• Case structure allows a series of alternative actions based on the value in a single variable

• Decision table aids in program design analysis to manage multiple conditions and decisions