cp1020 - week 4 making decisions. cp1020 ©university of wolverhampton - ian coulson & steve...
Post on 20-Dec-2015
221 views
TRANSCRIPT
CP1020 - Week 4
Making Decisions
CP1020 ©University of Wolverhampton - Ian Coulson & Steve Garner
DecisionsExample:
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
No!
Yes
"If the queue at the petrol station is short then I will stop there to fill up"
If (the queue at the petrol station is short)Then stop there and fill up
Decisions ...decisions..
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 Actual
Result Result
25 You have failed You have failed
60 You have passed You have passed
40 You have passed You have passed
39 You have failed You have failed
CP1020 ©University of Wolverhampton - Ian Coulson & Steve Garner
The condition statement
Usually we check a value.
The symbols used are:
= equal <> not equal
< less than <= less than or equal
> greater than >= Greater than or equal
CP1020 ©University of Wolverhampton - Ian Coulson & Steve Garner
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:
Step1 Get age of candidate2 If ( age at least 16) AND (age less than
65 )2.1 Then candidate is eligible2.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”
ElsePrint “You are outside the age range!”
End If
CP1020 ©University of Wolverhampton - Ian Coulson & Steve Garner
The OR condition
Alternatively test for ineligible candidates:
Step1 Get age of candidate2 If ( age less than 16) OR (age greater than 65 )
2.1 Then reject candidate2.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 ConversionAlgorithm
Algorithm:Step1 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:
Step1 Get a student's mark
2 If (mark is less than 40%)2.1 Then Grade is Fail2.2 Else If (mark is less than 60%)
2.2.1 Then Grade is Pass2.2.2 Else If (mark is less than 80%)
2.2.2.1 Then Grade is Merit2.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