lecture4 - University of Wolverhampton

CP1020 - Week 4
Making Decisions
Decisions
Example:
Driving to a lecture you notice that you do not have
much petrol left. You will need to fill up soon, and
approaching you can see a petrol station. The
price is reasonable, but you do not have a lot of
time to spare, so don't want to have to queue to
fill-up.
What would you do?
?
CP1020 ©University of Wolverhampton - Ian Coulson & Steve Garner
Decisions in Problem
Solving
"If the queue at the petrol station is short then I will
stop there to fill up"
Yes
Decisions
...decisions..
No!
If (the queue at the petrol station is short)
Then stop there and fill up
CP1020 ©University of Wolverhampton - Ian Coulson & Steve Garner
You may decide:
"if the queue at the petrol station is short then I will
stop there to fill up".
We could write the algorithm for this decision as:
If queue at petrol station is short then
stop there and fill up
CP1020 ©University of Wolverhampton - Ian Coulson & Steve Garner
Further Examples
if kettle has boiled then
make tea
if temperature less than 18 C. then
turn on central heating
CP1020 ©University of Wolverhampton - Ian Coulson & Steve Garner
General form of IF
statements
IF condition THEN
<action>
ENDIF
IF, THEN and ENDIF are RESERVED words
condition is the “test”, if the answer is YES then
we carry out the <action>
CP1020 ©University of Wolverhampton - Ian Coulson & Steve Garner
An example program
REM program : to demonstrate the IF statement
REM written by : S. Garner
REM date written 8/3/00
DIM iAge AS INTEGER
CLS
' clear the screen
INPUT "Please enter your age "; iAge
REM test the condition
IF iAge > 17 THEN
PRINT "You may vote at the next election"
END IF
END
CP1020 ©University of Wolverhampton - Ian Coulson & Steve Garner
Two way decisions
We frequently need to do either one thing or
another, depending on some condition
If age is greater than 65 then
retire gracefully
else
keep working
CP1020 ©University of Wolverhampton - Ian Coulson & Steve Garner
Basic IF..THEN..ELSE
IF condition THEN
<action1>
ELSE
<action2>
ENDIF
CP1020 ©University of Wolverhampton - Ian Coulson & Steve Garner
Example program
REM program : to demonstrate the IF statement
DIM iMark AS INTEGER
CLS
' clear the screen
INPUT "Please enter your mark(0-100) "; iMark
REM check mark for pass or fail
IF iMark < 40 THEN
PRINT "You have failed"
ELSE
PRINT "You have passed"
PRINT "Well Done!"
END IF
END
CP1020 ©University of Wolverhampton - Ian Coulson & Steve Garner
Testing
We now have more than one possible “route” through our
code
We must TEST each of these!
We should also test the “boundary”
CP1020 ©University of Wolverhampton - Ian Coulson & Steve Garner
Test Data
Mark
Expected
Result
Actual
Result
25
60
40
39
You have failed
You have passed
You have passed
You have failed
You have failed
You have passed
You have passed
You have failed
CP1020 ©University of Wolverhampton - Ian Coulson & Steve Garner
The condition statement
Usually we check a value.
The symbols used are:
=
<
>
equal
less than
greater than
<>
<=
>=
CP1020 ©University of Wolverhampton - Ian Coulson & Steve Garner
not equal
less than or equal
Greater than or equal
Example Conditions
NOTE: Brackets help to clarify!
(iMark < 0)
(iAge >=18)
(iValueA = iValueB)
(iAge >= 16 AND iAge < 65)
CP1020 ©University of Wolverhampton - Ian Coulson & Steve Garner
More Complex Decisions 1
 Problem:
You are looking for new employees for your company.
One of the criteria is that the employee must be no
younger than 16 and no older than 65.
 Note: We have two conditions to satisfy:
 condition 1
is the candidate at least 16 years old?
 condition 2
is the candidate no older than 65?
Both condition 1 AND condition 2 must be satisfied
"TRUE" in order to accept the candidate
CP1020 ©University of Wolverhampton - Ian Coulson & Steve Garner
More Complex Decisions 2
Algorithm:
Step
1
Get age of candidate
2
If ( age at least 16) AND (age less than 65 )
2.1
Then candidate is eligible
2.2
Else reject candidate
AND implies that both conditions must be true
CP1020 ©University of Wolverhampton - Ian Coulson & Steve Garner
The code
INPUT “How old is the candidate > ”; iCandidatesAge
If (iCandidatesAge >= 16) And (iCandidatesAge <= 65) Then
Print “You are eligible to apply”
Else
Print “You are outside the age range!”
End If
CP1020 ©University of Wolverhampton - Ian Coulson & Steve Garner
The OR condition
Alternatively test for ineligible candidates:
Step
1
Get age of candidate
2
If ( age less than 16) OR (age greater than 65 )
2.1
Then reject candidate
2.2
Else candidate is eligible
OR implies that either one (or both) of the conditions
needs to be satisfied
CP1020 ©University of Wolverhampton - Ian Coulson & Steve Garner
Another Example
REM program : to demonstrate the IF statement
REM written by : I Coulson
REM date written: 8/3/00
DIM iCandAge AS INTEGER
CLS
' clear the screen
INPUT "Please enter your age "; iCandAge
IF ( iCandAge < 16) OR ( iCandAge > 65) THEN
PRINT ”Sorry you are outside the age range"
ELSE
PRINT “You are eligible to apply”
END IF
END
CP1020 ©University of Wolverhampton - Ian Coulson & Steve Garner
Problem - Student Grades
 When a piece of work is marked, it is given a
percentage mark which needs converting to a FAIL,
PASS, MERIT or DISTINCTION.
 A Fail
Upto 40
 A Pass
40 - 59
 A Merit
60 - 79
 A Distinction
80 +
CP1020 ©University of Wolverhampton - Ian Coulson & Steve Garner
Mark to Grade Conversion
Algorithm
 Algorithm:
Step
1
Get a student's mark
2
If (mark is greater than 0) AND (mark less than 40)
2.1
Then Grade is Fail
3
If (mark greater than or equal to 40) AND (mark is less than 60)
3.1
Then Grade is Pass
4
If (mark is greater or equal to 60) AND (mark less than 80)
4.1
Then Grade is Merit
5
If (mark is greater or equal to 80) AND (mark is no more than 100)
5.1
Then Grade is Distinction
6
Display Grade
CP1020 ©University of Wolverhampton - Ian Coulson & Steve Garner
Mark to Grade Conversion
Improved Algorithm
 Further improved algorithm:
Step
1
Get a student's mark
2
If (mark is less than 40%)
2.1
Then Grade is Fail
2.2
Else
If (mark is less than 60%)
2.2.1 Then Grade is Pass
2.2.2 Else
If (mark is less than 80%)
2.2.2.1 Then Grade is Merit
2.2.2.2 Else Grade is Distinction
3
Display Grade
 This is known as nesting decisions
CP1020 ©University of Wolverhampton - Ian Coulson & Steve Garner
The Program
Rem Author I Coulson
DIM iPercentage AS INTEGER
INPUT ”What percentage did you get "; iPercentage
IF iPercentage < 40 THEN
Print “Fail”
ELSEIF iPercentage < 60 THEN
Print “Pass”
ELSEIF iPercentage < 80 THEN
Print “Merit”
ELSEIF iPercentage >= 80 THEN
Print “Distinction”
END IF
CP1020 ©University of Wolverhampton - Ian Coulson & Steve Garner
Questions
1 Write an algorithm to decide if a salesman should get a bonus he needs to have sold at least £3000 worth of goods in the
month.
2 Alter the algorithm such that that the salesman earns 15%
commission on all sales if sells more than £3000 worth of
goods in a month, but only 5% if he sells less than that.
3 Write the code to print the appropriate comment to a runner
finishing a race:
1st place
- “well done you are the winner”
2nd place - “congratulations you are runner up”
3rd place - “good, you have finished third”
unplaced - “You’ve finished, well done”
CP1020 ©University of Wolverhampton - Ian Coulson & Steve Garner
End of lecture
CP1020 ©University of Wolverhampton - Ian Coulson & Steve Garner