MAKING DECISIONS
Human Decisions Think about a decision you've made
today? How did you arrive at that decision? Was it a black-and-white decision for
you? Our decisions can be complex?
Computer "Decisions" Computer decisions always reduce
down to simple logic comparisons Something is true or something is false It has a boolean value of true or false The decision block in a flow diagram
requires a yes/no decisionIs the light red?Is the light yellow?Is the light green?
Boolean Decisions We use boolean expressions to
determine a true or false condition We implement a selection structure Dual-alternative selection (if-then-else) Single-alternative selection (if-then)
If-Then If the condition is true, then perform an action or
a sequence of actions
if condition then actionendif
if time is 6pm then begin classendif
If-Then-Else If the condition is true, then perform an action or a sequence of actions Else perform a different action or sequence of actions
if condition then actionelse another actionendif
if time is 6pm then begin classelse waitendif
Boolean Expressions An expression is just a statement the
computer will evaluate4 + 3x / 4
A boolean expression will be evaluated as either true or false
Relational operators are used in boolean expressions
Relational Operators Equivalence, = or == Greater than, > Less than, < Greater than or equal to, >= Less than or equal to, <= Not equal to, <> or !=
Also called comparison operators
Relational Operatorsif customerAge >= 65 then discount = 0.10else discount= 0.0endif
if customerAge <65 then discount = 0.0else discount = 0.10endif
Negation Operator A negation operator reverses the logic of a true
or false expression (NOT or !)
if age >= 21 then allow purchaseendif
if NOT age >= 21 then refuse purchaseendif
Example What logic can we use to implement the
following discount table:
Purchase Discount$0.00 to $25.00 5%
$25.01 to $50.00 10%
$50.01 to $100.00 15%
Over $100.00 20%
Implementing Minimal Conditions Selecting from a group of ranges, the
last check is never necessary If the table is complete, we rule out one
possibility with each check If total is not > 100 and total is not > 50
and total is not > 25, then total must be <= 25.
Compound Conditions Sometimes we need more complex logic
to make a decision
if I’m speeding then if I see a police car then slow down immediately endifendif
Nested Decisionsif condition1 then if condition2 then take action endifendif
if condition1 AND condition2 then take actionendif
AND Operatorif x AND y then do somethingendif
“x AND y” is a boolean expression that can be evaluated as true or false
x y x AND yTrue True True
True False False
False True False
False False False
Short-Circuit Evaluationif x AND y then do somethingendif
If we know x is false, we know x AND y is also false.There’s no need to evaluate y.
Short-Circuit Exampleif age > 12 AND age < 65 then movieDiscount = 0.0endif
If age is less than or equal to twelve, the computer will not need to determine if age is greater than 65.
Example How would we implement the following
discount table:
On Sundays, senior citizens receive an additional 5% discount.
Purchase Discount$0.00 to $25.00 5%
$25.01 to $50.00 10%
$50.01 to $100.00 15%
Over $100.00 20%
OR Operatorif x OR y then do somethingendif
“x OR y” is a boolean expression that can be evaluated as true or false
x y x OR yTrue True True
True False True
False True True
False False False
Short-Circuit Evaluation?if x OR y then do somethingendif
Is there a short-circuit evaluation for the OR operator?If we know x is true, we know x OR y is also true.There’s no need to evaluate y.
OR Efficiencyif age < 12 then movieDiscount = 0.10endifif age > 65 then movieDiscount = 0.10endif
if age < 12 OR age > 65 then movieDiscount = 0.10endif
AND/OR Precedence AND operator is always evaluated
before the OR operator
c1 OR c2 AND c3 OR c4 c1 OR (c2 AND c3) OR c4
Precedence Exampleif age <=12 OR age >= 65 AND not Friday then discount = 0.10endif
A twelve year old still gets the discount on Friday.
if (age <=12 OR age >= 65) AND not Friday then discount = 0.10endif
Parentheses always clarify intention.
Summary Boolean expressions Relational operators AND Logic OR Logic Selection within ranges AND/OR precedence
Date Validation What logic would we need to validate a
user’s date input? The user enters separate values for the
month, day, and year.