# Chapter 3 - pseudorandom bits

```Neal Stublen
[email protected]
Human Decisions
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 decision

 Is 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
action
endif
if time is 6pm then
begin class
endif
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
action
else
another action
endif
if time is 6pm then
begin class
else
wait
endif
Boolean Expressions

An expression is just a statement the
computer will evaluate
4+3
x/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 Operators
if customerAge >= 65 then
discount = 0.10
else
discount= 0.0
endif
if customerAge <65 then
discount = 0.0
else
discount = 0.10
endif
Negation Operator

A negation operator reverses the logic of a
true or false expression (NOT or !)
if age >= 21 then
allow purchase
endif
if NOT age >= 21 then
refuse purchase
endif
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
endif
endif
Nested Decisions
if condition1 then
if condition2 then
take action
endif
endif
if condition1 AND condition2 then
take action
endif
AND Operator
if x AND y then
do something
endif
“x AND y” is a boolean expression that can be evaluated as true
or false
x
y
x AND y
True
True
True
True
False
False
False
True
False
False
False
False
Short-Circuit Evaluation
if x AND y then
do something
endif
If we know x is false, we know x AND y is
also false.
There’s no need to evaluate y.
Short-Circuit Example
if age > 12 AND age < 65 then
movieDiscount = 0.0
endif
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:
Purchase
Discount
\$0.00 to \$25.00
5%
\$25.01 to \$50.00
10%
\$50.01 to \$100.00
15%
Over \$100.00
20%
On Sundays, senior citizens receive an
OR Operator
if x OR y then
do something
endif
“x OR y” is a boolean expression that can be evaluated as true
or false
x
y
x OR y
True
True
True
True
False
True
False
True
True
False
False
False
Short-Circuit Evaluation?
if x OR y then
do something
endif
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 Efficiency
if age < 12 then
movieDiscount = 0.10
endif
if age > 65 then
movieDiscount = 0.10
endif
if age < 12 OR age > 65 then
movieDiscount = 0.10
endif
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 Example
if age <=12 OR age >= 65 AND not Friday then
discount = 0.10
endif
A twelve year old still gets the discount on Friday.
if (age <=12 OR age >= 65) AND not Friday then
discount = 0.10
endif
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.

```

17 cards

17 cards

79 cards

42 cards

36 cards