Comp Algorithm
-
Upload
raju-shrestha -
Category
Documents
-
view
17 -
download
0
description
Transcript of Comp Algorithm
-
Methods ofAlgorithm Description
Second Edition
to accompany the
2 Unit (General)
2/3 Unit (Common)
3 Unit (Additional)
Computing Studies Syllabuses
-
Republished as a second edition with permission of the Director-General,Department of School Education.
The original Methods of Algorithm Description document was developed at aComputer Education Unit, Department of School Education writing workshop.
Board of Studies NSW 1995
Published byBoard of Studies NSWPO Box 460North Sydney NSW 2059Australia
Tel: (02) 9927 8111ISBN 0 7310 3365 5
March 1995
95010
-
Table of Contents
Introduction 5
Structure of the Document 6
What is Programming? (OHT original) 7
What is an Algorithm? (OHT original) 8
Overview of Two Methods 10
Programming Structures 12Sequence 13Selection 15Repetition 20Subprograms 24
Solved Problems 29Lift 31Solution 1 31Solution 2 32Temperature Control 33Toll Gate 35Squash Scoring 38Record Separation 41Solution 1 42Solution 2 44Solution 3 46Guess the Number 48Income Tax 52Telephone Dialler 54Auto Teller 58
Algorithms for Searching and Sorting 71Linear Search 72Binary Search 75Bubble Sort 77Selection Sort 79Insertion Sort 82
A Collection of Problems with No Solutions Given 85
-
This revised document was written in conjunction withthe Board of Studies Information and CommunicationTechnologies Syllabus Committee. It contains suitablemethods of algorithm description for use in theimplementation of the following courses in ComputingStudies:
2 Unit (General) Computing Studies
2/3 Unit (Common) Computing Studies
3 Unit (Additional) Computing Studies.
This document presents two methods for describingalgorithms for use in Computing Studies courses in NSWschools. It shows, through the use of examples, how themethods of algorithm description of pseudocode andflowcharts can be used to describe solutions to problems.
There are many definitions of methods of algorithmdescription in existence, some with many special symbolsand keywords defined for special purposes. Thisdocument attempts to define a minimum set that will beuseful in terms of the syllabuses in Computing Studies.
In assessing the quality of algorithm descriptions, generalcriteria such as the correctness of the algorithm, the clarityof the description, the use of appropriate controlstructures and the embodiment of structured methods,rather than the specific features of any method, should betaken into consideration.
Clarity of description and consistency in the use of thecomponents of the method chosen are of far moreimportance than the actual shape of a flowchart elementor the specific wording of a pseudocode statement.
The document presents standards that students shouldaim for in publishing solutions to problems. The samestandards should be used by teachers when presentingalgorithms to students. In many cases there arealternatives that could be used and it should be noted thatstudents can expect to see methods of algorithmdescription with many differences in detail published inbooks and magazines. Teachers should ensure that theapproach presented in textbooks, worksheets andexaminations does not contradict the standards thatstudents use.
Introduction
5
-
The preliminary section consists of a description of theprogramming process and some definitions of an algorithmpresented in the form of overhead transparency originals.In the following section are descriptions of the mainfeatures of two methods of algorithm description:pseudocode and flowcharts. Descriptions and specificexamples of the programming structures of sequence,selection, repetition and subprograms (procedures orsubroutines) are given.
The most substantial section of the document containssample problems and worked solutions that show the useof each of the methods of algorithm description. Thesolutions do not purport to describe the ultimatesolution, but rather one (or more) possible solutions to theproblem.
It will become obvious from reading the document thatnot all solutions are directly suited to implementation on acomputer. The reason for this is that an aim of thedocument is to show how solutions to problems can beexpressed through the use of sample problems to whichmost people already know some solution.
There is a new section in this edition which providespossible descriptions of the searching and sortingalgorithms required by Core Topic 2: Algorithm Design inthe 2/3 Unit (Common) Computing Studies course.
It must be noted that alternative solutions are possible. Insome cases different solutions are provided expressed ineach of the two prescribed methods. These can be used asmodels for expressing the same solution in the othermethod and should extend the readers understanding ofthe topic.
The final section has a collection of problems for which nosolutions are given. These are provided to give you somepractice using the methods of algorithm description.
Structure of the Document
6
-
What is Programming?
Programming is the total creative process thatinvolves these stages:
clearly define the problem
analyse the problem
design a solution
implement the solution
test the solution
document the solution.
In the appropriate circumstances we should also:
compare alternative solutions.
@@@@@@@@e?
@@@@@@@@e?
@@h?
@@h?
@@h?
@@h?
@@h?
@@h?
@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e
@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e
@@@@@@@@
@@@@@@@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
?@@
?@@
?@@
?@@
?@@
?@@
?@@@@@@@@
?@@@@@@@@
?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@
?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@
@@g
@@g
@@g
@@g
@@g
@@g
@@@@@@@@
@@@@@@@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
Methods of Algorithm Description
7
-
What is an Algorithm?
An algorithm consists of a set of explicit andunambiguous finite steps which, when carried outfor a given set of initial conditions, produce thecorresponding output and terminate in finite time.
How to Solve it by Computer, RG Dromey, Prentice Hall UK, 1982
An algorithm is a finite, definite, effectiveprocedure, with some output.
Computer Science, D Woodhouse et al, Jacaranda Wiley, 1984
The series of steps that you develop to solve aproblem is known as a solution algorithm. Thereare many different algorithms for almost anyproblem.
Understanding Information Technology, K Behan and D Holmes, Prentice Hall Australia, 1986
Reprinted with the permission of Prentice Hall Australia Pty Ltd.
@@@@@@@@e?
@@@@@@@@e?
@@h?
@@h?
@@h?
@@h?
@@h?
@@h?
@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e
@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e
@@@@@@@@
@@@@@@@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
?@@
?@@
?@@
?@@
?@@
?@@
?@@@@@@@@
?@@@@@@@@
?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@
?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@
@@g
@@g
@@g
@@g
@@g
@@g
@@@@@@@@
@@@@@@@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
Methods of Algorithm Description
8
-
Algorithm: a step-by-step procedure for solving aproblem; programming languages are essentially away of expressing algorithms.
Understanding Computers: Computer Languages, by the editors of Time-Life Books, 1988
Time-Life Books Inc.
In order that a task be carried out on a computer,a method or technique for the task must bedescribed very precisely in terms of the differentsteps. An algorithm is a description of the steps ofa task, using a particular technique. Writing analgorithm is one of the first steps taken inpreparing a task to be done by a computer.
Computing Science, Peter Bishop, Thomas Nelson UK, 1982
Informally, an algorithm is a collection ofinstructions which, when performed in a specificsequence, produce the correct result. The study ofalgorithms is at the heart of computer science.
Problem Solving and Computer Programming, Peter Grogono & Sharon H Nelson,
1982 Addison-Wesley Publishing Company Inc. Reproduced by the permission of the publisher.
@@@@@@@@e?
@@@@@@@@e?
@@h?
@@h?
@@h?
@@h?
@@h?
@@h?
@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e
@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e
@@@@@@@@
@@@@@@@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
?@@
?@@
?@@
?@@
?@@
?@@
?@@@@@@@@
?@@@@@@@@
?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@
?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@
@@g
@@g
@@g
@@g
@@g
@@g
@@@@@@@@
@@@@@@@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
Methods of Algorithm Description
9
-
Pseudocode Pseudocode essentially is English with some definedrules of structure and some keywords that make it appeara bit like program code. Some guidelines for writingpseudocode are as follows.
Pseudocode Guidelines
The keywords used for pseudocode in this documentare:
for start and finishBEGIN MAINPROGRAM, END MAINPROGRAM
for initialisationINITIALISATION, END INITIALISATION
for subprogramBEGIN SUBPROGRAM, END SUBPROGRAM
for selectionIF, THEN, ELSE, ENDIF
for multi-way selectionCASEWHERE, OTHERWISE, ENDCASE
for pre-test repetitionWHILE, ENDWHILE
for post-test repetitionREPEAT, UNTIL
Keywords are written in capitals.
Structural elements come in pairs, eg for every BEGINthere is an END, for every IF there is an ENDIF, etc.
Indenting is used to show structure in the algorithm.
The names of subprograms are underlined. This meansthat when refining the solution to a problem, a word inan algorithm can be underlined and a subprogramdeveloped. This feature is to assist the use of the top-down development concept.
Overview of Two Methods
10
-
Flowcharts Flowcharts are a diagrammatic method of representingalgorithms. They use an intuitive scheme of showingoperations in boxes connected by lines and arrows thatgraphically show the flow of control in an algorithm. TheAustralian Standards for flowcharting indicate that themain direction of flow is accepted as being top to bottomand left to right.
Flowchart Elements
Flowcharts are made up of the following box typesconnected by lines with arrowheads indicating the flow. Itis common practice only to show arrowheads where theflow is counter to that stated above.
These should be thought of as the characters of flowcharts.Just as ordinary characters must be put together in certainways to produce well-formed words, and words must beput together in certain ways to produce well-structuredsentences, these flowchart elements must be connected incertain ways to form accepted structures and thestructures connected in certain ways to form well-structured algorithms. The flowcharting structures forsequence, selection and repetition are given in the nextsection of this document.
It is considered good practice for a single flowchart neverto exceed the bounds of one page. If a flowchart does notfit on one page, this is one instance in which the bettersolution is to use refinement which results in the creationof subprograms. Subprograms on separate pages are moredesirable than using a connector to join flowcharts overmore than one page. A flowchart expressing the solutionto an involved problem may have the main programflowchart on one page with subprograms continuing theproblem solution on subsequent pages. An example of thissituation is given in the last solved problem in thisdocument the Auto Teller problem on page 54.
terminator process
subprogram decision
Methods of Algorithm Description
11
-
The Computing Studies syllabuses mention theprogramming structures of sequence, selection, repetitionand subprograms. A description of each of these structures,together with examples of their use, follows.
The Structures Each of the five acceptable structures can be built from thebasic elements as shown below.
Sequence Binary Selection
Multi-way selection
Repetition (Pre-test) Repetition (Post-test)
Programming Structures
12
-
In all cases note there is only one entry point to thestructure and one exit point as indicated by the dashedboxes.
Since each structure can be thought of as a process (asshown by the dashed boxes containing the structure),more complex algorithms can be constructed by replacingany single process by one or other of the structures.
Sequence In a computer program or an algorithm, sequence involvessimple steps which are to be executed one after the other.The steps are executed in the same order in which they arewritten.
In pseudocode, sequence is expressed as:
process 1
process 2
process n
In a flowchart, sequence is expressed as:
(The arrowheads are optional if the flow is top-to-bottom.)
process 1
process 2
process n
Methods of Algorithm Description
13
-
An Example Using SequenceProblem: Write a set of instructions that describe how to
make a pot of tea.
Pseudocode
BEGINfill a kettle with waterboil the water in the kettleput the tea leaves in the potpour boiling water in the potEND
Flowchart
fill a kettlewith water
boil the waterin the kettle
put the tealeaves in the pot
pour boilingwater in the pot
end
begin
Methods of Algorithm Description
14
-
Selection Selection is used in a computer program or algorithm todetermine which particular step or set of steps is to beexecuted. A selection statement can be used to choose aspecific path dependent on a condition. There are twotypes of selection: binary (two-way branching) selectionand multi-way (many way branching) selection. Followingis a description of each.
Binary SelectionAs the name implies, binary selection allows the choicebetween two possible paths. If the condition is met thenone path is taken, otherwise the second possible path isfollowed. In each of the examples below, the first casedescribed requires a process to be completed only if thecondition is true. The process is ignored if the condition isfalse. In other words there is only one path that requiresprocessing to be done, so the processing free path is leftout rather than included saying do nothing.
In pseudocode, binary selection is expressed in thefollowing ways:
1. IF condition THENprocess 1
ENDIF
2. IF condition THENprocess 1
ELSEprocess 2
ENDIF
In flowcharts, binary selection is expressed in thefollowing ways:
condition
process 1
False True
Methods of Algorithm Description
15
1.
-
Note: In a flowchart it is most important to indicate whichpath is to be followed when the condition is true,and which path to follow when the condition isfalse. Without these indications the flowchart isopen to more than one interpretation.
Note: There are two acceptable ways to represent a decisionin all of the structures.
1. The condition is expressed as a statement and the twopossible outcomes are indicated by True, False.
2. The condition is expressed as a question and the twopossible outcomes are indicated by Yes, No.
Either method is acceptable. For consistency, the formermethod is used throughout the document.
IsA > 0 ?
No Yes
A > 0False True
condition
process 1
False True
process 2
Methods of Algorithm Description
16
2.
-
Multi-way SelectionMulti-way selection allows for any number of possiblechoices, or cases. The path taken is determined by theselection of the choice which is true. Multi-way selection isoften referred to as a case structure.
In pseudocode, multiple selection is expressed as:
CASEWHERE expression evaluates tochoice a : process achoice b : process b
. .
. .
. .
OTHERWISE : default processENDCASE
Note: As the flowchart version of the multi-way selectionindicates, only one process on each pass is executedas a result of the implementation of the multi-wayselection.
In a flowchart, multi-way selection is expressed as:
process a process b default process
choice a choice b otherwise
expression
Methods of Algorithm Description
17
-
Examples Using Binary SelectionProblem 1: Write a set of instructions to describe when to
answer the phone.
PseudocodeIF the telephone is ringing THEN
answer the telephoneENDIF
Flowchart
Problem 2: Write a set of instructions to follow whenapproaching a set of traffic control lights.
PseudocodeIF the signal is green THEN
proceed through the intersectionELSE
stop the vehicleENDIF
Flowchart
False Truethesignal isgreen
proceed throughthe intersectionstop the vehicle
thetelephoneis ringing
answer thetelephone
False True
Methods of Algorithm Description
18
-
An Example Using Multi-way SelectionProblem: Write a set of instructions that describes how to
respond to all possible signals at a set of trafficcontrol lights.
PseudocodeCASEWHERE signal is
red : stop the vehicleamber : stop the vehiclegreen : proceed through the intersectionOTHERWISE : proceed with caution
ENDCASE
Flowchart
signal is
amber green otherwisered
proceed throughthe intersectionstop the vehicle stop the vehicle
proceedwith caution
Methods of Algorithm Description
19
-
Repetition Repetition allows for a portion of an algorithm orcomputer program to be done any number of timesdependent on some condition being met. An occurrence ofrepetition is usually known as a loop.
An essential feature of repetition is that each loop has atermination condition to stop the repetition, or the obviousoutcome is that the loop never completes execution (aninfinite loop). The termination condition can be checked ortested at the beginning or end of the loop, and is known asa pre-test or post-test respectively. Following is adescription of each of these types of loop.
Repetition: Pre-TestA pre-tested loop is so named because the condition has tobe met at the very beginning of the loop or the body of theloop is not executed. This construct is often called aguarded loop. The body of the loop is executed repeatedlywhile the termination condition is true.
In pseudocode pre-test repetition is expressed as:
WHILE condition is trueprocess(es)
ENDWHILE
In flowcharting pre-test repetition is expressed as:
Although these two flowcharts are topologically the sameand represent the same programming structure, the left-hand example above is used throughout this document.
False
True
process
condition
False
process
condition True
Methods of Algorithm Description
20
-
Repetition: Post-TestA post-tested loop executes the body of the loop beforetesting the termination condition. This construct is oftenreferred to as an unguarded loop. The body of the loop isrepeatedly executed until the termination condition istrue.
An important difference between a pre-test and post-testloop is that the statements of a post-test loop are executedat least once even if the condition is originally true,whereas the body of the pre-test loop may never beexecuted if the termination condition is originally true. Aclose look at the representations of the two loop typesmakes this point apparent.
In pseudocode, post-test is expressed as:
REPEATprocess
UNTIL condition is true
In a flowchart, post-test is expressed as:
False
True
process
condition
Methods of Algorithm Description
21
-
An Example Using Pre-Test RepetitionProblem: Determine a safety procedure for travelling in a
carriage on a moving train.
PseudocodeWHILE the train is moving
keep wholly within the carriageENDWHILE
Flowchart
False
True
keep whollywithin the car
the trainis moving
Methods of Algorithm Description
22
-
An Example Using Post-Test RepetitionProblem: Determine a procedure to beat egg whites until
fluffy.
PseudocodeREPEAT
beat the egg whitesUNTIL fluffy
Flowchart
False
True
beat theegg whites
egg whitesfluffy
Methods of Algorithm Description
23
-
Subprograms Subprograms, as the name implies, are complete part-programs that are used from within the main programsection. They allow the process of refinement to be used todevelop solutions to problems that are easy to follow.Sections of the solution are developed and presented inunderstandable chunks, and because of this, subprogramsare particularly useful when using the top-down methodof solution development.
When using subprograms it is important that the solutionexpression indicates where the main program branches toa subprogram. It is equally important to indicate exactlywhere the subprogram begins. In pseudocode, thestatement in the main program that is expanded in asubprogram is underlined to indicate that furtherexplanation follows. The expanded subprogram sectionshould be identified by using the keywords BEGINSUBPROGRAM followed by the underlined title used in themain program. The end of the subprogram is marked bythe keywords END SUBPROGRAM and the underlined titleused in the main program.
When using flowcharts, a subprogram is shown by anadditional vertical line on each side of the process box.This indicates that the subprogram is expanded elsewhere.The start and end of the subprogram flowchart uses thename of the subprogram in the termination boxes.
Example of Using Subprograms in Pseudocode
BEGIN MAINPROGRAMprocess lprocess 2process 3process 4END MAINPROGRAM
BEGIN SUBPROGRAM process 2do thisdo thatEND SUBPROGRAM process 2
Methods of Algorithm Description
24
-
Example of Using Subprograms in Flowcharts
begin
process 2
process 1
process 3
process 4
end
begin process 2
do this
do that
end process 2
Methods of Algorithm Description
25
-
In many cases a subprogram can be written to do the sametask at two or more points in an algorithm. Each time thesubprogram is called, it may operate on different data. Toindicate the data to be used one or more parameters areused. The parameters allow the author to write a generalalgorithm using the formal parameters. When thesubprogram is executed, the algorithm carries out its taskon the actual parameters given at the call.
The parameters to be used by a subprogram are providedas a list in parentheses after the name of the subprogram.There is no need to include them at the end of the algorithm.
Example of Using Subprograms with oneParameter in Pseudocode
BEGIN MAINPROGRAMread (name)read (address)END MAINPROGRAM
BEGIN SUBPROGRAM read (array)set pointer to first positionget a characterWHILE character is not the end of data AND there is room in the array
store character in the array at the position given by the pointerincrement the pointerget a character
ENDWHILEEND SUBPROGRAM read
At the first call of this subprogram the characters are readinto the array called name, at the second call the charactersare read into the array called address.
Methods of Algorithm Description
26
-
Example of Using Subprograms with oneParameter in Flowcharts
get a character
store character inarray at position
given by the pointer
end read
Falsecharacter end of dataand room in
the array
True
get a character
set pointer tofirst position
end
begin read(array)
read(address)
read(name)
begin
increment pointer
Methods of Algorithm Description
27
-
Solved Problems
-
Table Indicating Programming StructuresUsed in the Sample Problems
Methods of Algorithm Description
30
Problem SequenceBinary
Selection( if-then)
MultipleSelection
(case)
Repetition:(while)
Repetition:(repeat-until)
Subprogram
LiftSolution 1 3 3
LiftSolution 2 3 3
TemperatureControl 3 3 3
Toll Gate 3 3 3 3 3
SquashScoring 3 3 3 3
RecordSeparationSolution 1
3 3 3
RecordSeparationSolution 2
3 3 3
RecordSeparationSolution 3
3 3
Guess theNumber 3 3 3 3
Income Tax 3 3
TelephoneDialler 3 3 3 3 3 3
Auto-Teller 3 3 3 3 3 3
-
Problem A lift remains positioned at the ground floor level of abuilding with the doors shut whenever it is not in use.When a call button is pressed on any floor, the lift movesto the required floor and the lift doors open. Write analgorithm to express the logic of controlling the lift.
Solution 1 This solution uses sequence and repeat-until structures.
Pseudocode
An algorithm to express the logic of controlling a lift
BEGIN MAINPROGRAMREPEAT
check all buttonsUNTIL a button is pressedmove to the required flooropen the doorsEND MAINPROGRAM
Flowchart
An algorithm to express the logic of controlling a lift
end
open the doors
move to therequired floor
True
False button ispressed
check all buttons
begin
31
Lift Problem
-
Solution 2 This solution uses sequence and while structures.
Pseudocode
An algorithm to express the logic of controlling a lift
BEGIN MAINPROGRAMcheck all buttonsWHILE no button has been pressed
check all buttonsENDWHILEmove to the required flooropen the doorsEND MAINPROGRAM
Flowchart
An algorithm to express the logic of controlling a lift
end
open the doors
move to therequired floor
check all buttons
no buttonis pressed
check all buttons
False
True
begin
Methods of Algorithm Description
32
-
Problem At a NSW coastal town the maximum annual temperaturerange is typically 1234 degrees Celsius. An airconditioning company is installing a heating/coolingsystem in a new shopping centre in that town. The systemchecks the temperature every five minutes and adjusts theair temperature by using a combination of two heatingand two cooling units. These units operate according tothese temperature ranges:
015 degrees C 2 heating units
1620 degrees C 1 heating unit
2128 degrees C 1 cooling unit
> 29 degrees C 2 cooling units
Write an algorithm that could be used to control the airconditioning system.
Solution This solution uses sequence, while and case structures.
Pseudocode
An algorithm to describe the control of an air conditioningsystem. The input comes from sensors in the shoppingcentre.
BEGIN MAINPROGRAMread the temperatureWHILE the system is turned on
CASEWHERE temperature< 16 : run two heating units16 to 20 : run one heating unit21 to 28 : run one cooling unitOTHERWISE : run two cooling units
ENDCASEwait five minutesread the temperature
ENDWHILEEND MAINPROGRAM
33
Temperature Control Problem
-
Flowchart
An algorithm to describe the control of an air conditioningsystem. The input comes from sensors in the shoppingcentre.
begin
read thetemperature
less than 16 1620 2128 otherwise
systemturned on
temperaturerange is
False
True
end
run twoheating units
run oneheating unit
run onecooling unit
run twocooling units
wait fiveminutes
read thetemperature
Methods of Algorithm Description
34
-
Problem When operational a toll gate operates by having a boomgate obstructing the road, and a sensor detecting when avehicle is present. After coins to the value of $1.00 havebeen deposited in the basket, the boom gate opens andstays open until a vehicle has gone through. Amountsgreater than $1.00 are accepted but no change is given.Individual coins less than 10 cents are ignored.
Write an algorithm to describe the control of the toll gate.
Solution This solution uses sequence, if-then, repeat-until, while, andsubprogram structures.
Pseudocode
An algorithm used to describe the operation of a toll gatethat has a boom gate, a vehicle sensor, and a coincollection basket.
BEGIN MAINPROGRAMREPEAT
REPEATwait
UNTIL car has arrivedget the moneyopen boom gateREPEAT
waitUNTIL car has passedclose boom gate
UNTIL toll gate is not operationalEND MAINPROGRAM
BEGIN SUBPROGRAM get the moneyINITIALISATIONmoney collected is set to 0END INITIALISATIONWHILE money collected is less than $1
receive coinIF coin is less than 10 cents THEN
ignore coinELSE
add the value of the coin to the money collectedENDIF
ENDWHILEEND SUBPROGRAM get the money
35
Toll Gate Problem
-
Flowchart
An algorithm used to describe the operation of a toll gatethat has a boom gate, a vehicle sensor, and a coin collectionbasket.
False car haspassed
True
begin
wait
False car hasarrived
False toll gate notoperational
True
True
get the money
open boom gate
wait
close boom gate
end
Methods of Algorithm Description
36
-
Subprogram
True
beginget the money
set moneycollected to zero
endget the money
moneycollected less
than $1
receive a coin
coinsmaller
than 10c
add value ofcoin to money
collectedignore coin
False
False
True
Methods of Algorithm Description
37
-
Problem Write an algorithm to describe how to score a ball game,which is similar to squash. This ball game is scored asfollows: the server gets one point for winning a rally. Ifthe server loses the rally they lose the right to serve thenext ball, but lose no points. The receiver gains the rightto serve (but no point) if they win a rally. To win the gamea player must win nine points.
Solution This solution uses sequence, repeat-until, if-then and subprogramstructures.
PseudocodeAn algorithm to describe the logic for scoring a ball gamesimilar to squash.
BEGIN MAINPROGRAMINITIALISATIONset RequiredPoints to 9set each players points to 0END INITIALISATIONtoss and decide the serverREPEAT
server serves the ballREPEAT
play the rallyUNTIL rally is wonIF the server wins the rally THEN
increment the servers points by 1ELSE
swap player statusENDIF
UNTIL a player has won RequiredPointsdeclare the winnerEND MAINPROGRAM
BEGIN SUBPROGRAM toss and decide the servertoss a coinIF heads THEN
player 1 is the serverplayer 2 is the receiver
ELSEplayer 2 is the serverplayer 1 is the receiver
ENDIFEND SUBPROGRAM toss and decide the server
38
Squash Scoring Problem
-
Flowchart
An algorithm to describe the logic for scoring a ball gamesimilar to squash.
Trueserver winsthe rally
False
begin
rally wonFalse
True
False
end
player hasRequiredPoints
True
set RequiredPointsto 9
set each playersscore to 0
toss anddecide server
server servesthe ball
play a rally
swap theplayer status
increase server'spoints by one
Methods of Algorithm Description
39
-
Subprogram
Trueresultis heads
player 2 isthe server
player 1 isthe server
False
begin toss anddecide server
toss a coin
player 1 isthe receiver
player 2 isthe receiver
end toss anddecide server
Methods of Algorithm Description
40
-
Problem Let us assume that a particular database programmanages a simple mailing list which consists of one recordfor each person on the list, and a number of fieldscontaining information about each person (their name,address, etc). The program can read in data produced by aword processor provided that data is structured in thefollowing way:
Each record to be read must be a single paragraphterminated by a return character, and each field within arecord is separated by a tab character. For example:
Colin Jamesontab33 Falcon StreettabWaverlytabNSWtab2113return
would be read as one record containing five fields. Theend of the data is marked with a # (hash) character whichimmediately follows the return ending the last paragraph.
Assuming that there is at least one line of valid data at thestart of the input file, describe an algorithm that theprogram might use to read such data one character at atime and place the information into separate fields andrecords. The algorithm reports the number of records readwhen all the records have been processed.
41
Record Separation Problem
-
Solution 1 This solution uses sequence, while and case structures.
Pseudocode
An algorithm to describe the separation of a string offormatted data into fields and records to be used as inputto a database.
BEGIN MAINPROGRAM
INITIALISATIONset record number to 0set field number to 0set field to emptyEND INITIALISATION
read a character from the input file
WHILE character is not a hash
CASEWHERE character is
tab: output the field to the databaseincrement the field numberset the field to empty
return: output the field to the databaseincrement the field numberincrement the record numberset field number to 0set the field to empty
OTHERWISE: append the character to the field
ENDCASE
read a character from the input file
ENDWHILE
report how many records were read
END MAINPROGRAM
Methods of Algorithm Description
42
-
Flowchart
An algorithm to describe the separation of a string offormatted data into fields and records to be used as inputto a database.
return otherwisetab
set field numberto 0 and field
to empty
begin
record number andfield number are set
to 0field is set to empty
read a characterfrom input file
end
character is
True
False
increment thefield number
set field to empty
output the field
increment thefield number
increment therecord number
read a characterfrom input file
append characterto the fieldoutput the field
report how manyrecords were read
characternot a hash
Methods of Algorithm Description
43
-
Solution 2 This solution uses sequence, repeat-until and if-then-elsestructures.
Pseudocode
An algorithm to describe the separation of a string offormatted data into fields and records to be used as inputto a database.
BEGIN MAINPROGRAM
INITIALISATIONrecord number is set to 0field number is set to 0field is set to emptyEND INITIALISATION
REPEATread a character from the fileIF the character is a hash THEN
dont do anythingELSE
IF the character is a return THENoutput the field to the databaseincrement the field numberincrement the record numberset the field number to 0set the field to empty
ELSEIF the character is a tab THEN
output the field to the databaseincrement the field numberset the field to empty
ELSEappend the character to the field
ENDIFENDIF
ENDIFUNTIL the character is a hash
report how many records were read
END MAINPROGRAM
Methods of Algorithm Description
44
-
Flowchart
An algorithm to describe the separation of a string offormatted data into fields and records to be used as inputto a database.
False
begin
record number andfield number are set
to 0field is set to empty
read a characterfrom input file
True False
end
increment the fieldnumber and
record number
True
characteris a hash
True Falsecharacteris a return
True Falsecharacteris a tab
output the fieldto the database
output the fieldto the database
add the characterto the field
set field numberto 0
set the fieldto empty
increment thefield number
set the fieldto empty
characteris a hash
report how manyrecords were read
Methods of Algorithm Description
45
-
Solution 3 This solution uses sequence and while structures.
Pseudocode
An algorithm to describe the separation of a string offormatted data into fields and records, which are to beused as input to a database. It assumes the data are correct.
MAINPROGRAM
INITIALISATIONset record number to 0set field number to 0set field to emptyEND INITIALISATIONread a character from the fileWHILE the character is not a hash
WHILE the character is not a returnWHILE the character is not a tab
append the character to the fieldread a character from the file
ENDWHILEoutput the field to the databaseincrement the field numberset field to emptyread a character from the file
ENDWHILEoutput the field to the databaseincrement the record numberset field number to 0set the field to emptyread a character from the file
ENDWHILEreport how many records were readEND MAINPROGRAM
Methods of Algorithm Description
46
-
Flowchart
An algorithm to describe the separation of a string offormatted data into fields and records, which are to beused as input to a database. It assumes the data are correct.
begin
record number andfield number are set
to 0 field is set to empty
characternot a hash
read a characterfrom the file
add the characterto the file
read a characterfrom the file
output the field
increment the field number
set field to empty
read a characterfrom the file
increment the record number
set field to empty andfield number to 0
read a characterfrom the file
report number ofrecords read
output the field
end
characternot a return
characternot a tab
True
False
False
True
False
True
Methods of Algorithm Description
47
-
Problem In a simple number game your opponent thinks of a secretnumber between l and 100. In no more than 10 guessesyou have to try to guess the number. After each guessyour opponent tells you if your guess was too high, toolow or correct. Your opponent also keeps track of howmany guesses you have had and tells you the game is overwhen you use all of your ten guesses or when you guessthe number correctly.
Describe an algorithm which takes the role of youropponent in this game. Include in your solution asubprogram which checks for illegal guesses (those lessthan l or greater than 100). Include also the subprogramwhich generates a secret number between 1 and 100. Donot expand this but assume it is available.
48
Guess the Number Problem
-
Solution This solution uses sequence, repeat-until, if-then-else andsubprogram structures.
Pseudocode
An algorithm to describe a game in which the user tries toguess a number between 1 and 100, using no more thanten guesses.
BEGIN MAINPROGRAMINITIALISATIONnumber of guesses is set to 0GotIt is set to falseEND INITIALISATIONgenerate a secret number using random number generatorREPEAT
get a guess from the userIF the guess is in range THEN
increment the number of guessescheck the guess
ELSEtell the user the guess is out of range
ENDIFUNTIL guess is correct (GotIt is true) or number of guesses is 10IF the guess is incorrect (GotIt is false) THEN
tell the user they have run out of guesses (=10)tell the user the secret number
ENDIFEND MAINPROGRAM
BEGIN SUBPROGRAM check the guessIF guess > secret number THEN
tell the user their guess is too bigELSE
IF guess < secret number THENtell the user their guess is too small
ELSEcongratulate the user on a correct guesstell them how many guesses they tookset GotIt to true
ENDIFENDIFEND SUBPROGRAM check the guess
Methods of Algorithm Description
49
-
Flowchart
An algorithm to describe a game in which the user tries toguess a number between 1 and 100, using no more thanten guesses.
begin
set the numberof guesses to 0
and GotIt to false
Trueguess inrange
False
FalseGotIt is
true or numberof guesses isequal to 10
True
generate a secretnumber using
random generator
get a guessfrom the user
increment thenumber of guesses
check the guess
tell user that guessis out of range
end
TrueFalse GotItis false
tell user they haverun out of guesses
tell the user thesecret number
Methods of Algorithm Description
50
-
Subprogram
endcheck the guess
begincheck the guess
Falseguess is
bigger thansecret
number
True
Falseguess isless than
secretnumber
True
tell the user theguess is too big
tell the user theguess is too small
congratulate theuser on guessingthe secret number
tell the user howmany guesses
were taken
set GotIt to true
Methods of Algorithm Description
51
-
Problem To calculate the income tax payable on any income basedon the income tax scales shown below. The taxable incomeis to be entered and the tax payable calculated.
Tax Scales
Solution This solution uses sequence and if-then structures.
Pseudocode
An algorithm used to calculate the tax payable on anyincome using taxation rates set in the given table.
BEGIN MAINPROGRAMinput incomeIF income greater than or equal to 50 001 THEN
tax is 15 314 + (income 50 000) * 0.47ELSE
IF income greater than or equal to 36 001 THENtax is 8874 + (income 36 000) * 0.46
ELSEIF income greater than or equal to 20 701 THEN
tax is 3060 + (income 20 700) * 0.38ELSE
IF income greater than or equal to 5401 THENtax is (income 5400) * 0.20
ELSEtax is nil
ENDIFENDIF
ENDIFENDIFdisplay income and tax payableEND MAINPROGRAM
Taxable Income ($) Tax payable$15400 Nil
$540120 700 Nil plus 20 cents for each $1 over $5400
$20 70136 000 $3060 plus 38 cents for each $1 over $20 700
$36 00150 000 $8874 plus 46 cents for each $1 over $36 000
$50 001 and over $15 314 plus 47 cents for each $1 over $50 000
52
Income Tax Problem
-
Flowchart
An algorithm used to calculate the tax payable on anyincome using taxation rates set in the given table.
Another valid method of solving this problem is to use themultiple selection or case structure.
begin
FalseTrue
end
income is
50 001
display incomeand tax
tax is 15 314 +(income 50 000)
* 0.47
read the income
FalseTrue
FalseTrue
FalseTrue
tax is nil
income is
5401
tax is (income 5400)
* 0.20
income is
20 701
tax is 3060 +(income 20 700)
* 0.38
tax is 8874 +(income 36 000)
* 0.46
income is
36 001
Methods of Algorithm Description
53
-
Problem A telephone dialler is connected between a computer anda telephone (see the diagram below). Its purpose is to diala telephone number entered via the computer keyboard,establish a connection if it can and report on its progressand degree of success. The whole telephone number isentered via the computer keyboard at one time and isstored in a buffer in the computer.
The dialler dials a digit by sending pulses along thetelephone line. To dial 2 it sends two pulses, to dial 5 itsends five pulses etc. In the special case of a zero it sendsten pulses. There is a gap of 2 seconds between the set ofpulses representing a digit of a telephone number.
The dialler will not operate unless the line is clear, inwhich case it will provide a message that it allows a dialtone then dials the number. Before sending the next digit itwill check for a response, this takes into account thedifferent lengths of phone numbers. The dialler willprovide a message that the phone is ringing, engaged oranswered.
Write an algorithm to describe the operation of thetelephone dialler.
Telephone
Dialler
number pulses
tonesmessage(engaged,
answered etc)
54
Telephone Dialler Problem
-
Methods of Algorithm Description
55
Solution This solution used sequence, repeat-until, if-then, while, caseand subprogram structures.
PseudocodeAn algorithm to describe the control of a telephone dialler.
BEGIN MAINPROGRAMREPEAT
try for phone lineUNTIL the response is a dial tonesend a message to the computer that a clear telephone line is availableREPEAT
REPEATget a character from the computer
UNTIL the character is a digitIF the character is a 0 THEN
set the digit value of the character to 10ENDIFassign the digit value of the character to a counterWHILE counter is greater than 0
send a pulsedecrement the counter
ENDWHILEsend no pulse for two seconds
UNTIL there is a responsedetermine outcome and send message (response)END MAINPROGRAM
BEGIN SUBPROGRAM determine outcome and sendmessage (response)INITIALISATION
set maxtime to 60END INITIALISATIONIF response is an engaged tone THEN
send a message that the phone is engagedELSE
IF response indicates the phone is ringing THENsend a message that the phone is ringingset a timer to 0REPEAT
check to see if the phone has been answeredincrement the timer
UNTIL the phone is answered OR timer is greater than maxtimeCASEWHERE the phone was
answered : send a message that a connection hasbeen established
unanswered : send a message that no connection hasbeen established
OTHERWISE : send an error messageENDCASE
ELSEsend an error message
ENDIFENDIFEND SUBPROGRAM determine outcome and send message
-
Flowchart
An algorithm to describe the control of a telephone dialler.
set a counter to thevalue of the character
send a pulse
decrease thecounter by 1
send no pulsefor two seconds
False
False
True
determine outcomeand send message
(response)
end
True
begin
try for atelephone line
send a message tothe computer that a
clear line is available
False
True
the response
is adialtone
get a characterfrom the computer
False
True
True
set the value ofcharacter to 10
False
characteris a digit
characteris a 0
counter isbiggerthan 0
there is a response on
the line
Methods of Algorithm Description
56
-
Subprogram
answered unanswered otherwise
send an errormessage
increment timer
False
True
phone isanswered or
timer > maxtime
FalseResponseis engaged
tone
True
send a messagethat the phone
is engaged Truephone isringing
False
send an errormessage
send a messagethat the phone
is ringing
set a timerto 0
check to seeif the phoneis answered
phonewas
send a messagethat connection
established
send a messagethat no connection
established
end determineoutcome and
send message
begin determineoutcome and send
message (response)
set maxtime to 60
Methods of Algorithm Description
57
-
Problem An automatic teller machine has a console as shown in thediagram below. The teller machine follows this sequenceto assist a customer:
1. The customer will insert their card and enter a PIN. Acustomer is allowed at most three tries at their PIN. Ifthey get it wrong three times the whole process endswithout ejecting the card.
2. If the PIN is correct they will then select an actionbutton (withdraw, deposit or balance).
3. Next they will select the account type (savings orcheque).
4. Finally, they will enter the amount in whole dollars (ifappropriate), and press OK to confirm it, and thetransaction will be processed.
The auto teller will eject the customers card and stop theprocess if the customer presses the Cancel button.
Describe an algorithm which the auto teller could use toaccept the details from the customer and act on them.
Auto Teller Console
Withdrawal
Deposit
Balance OK Cancel
Cheque
Savings1 2 3 4
5 6 7 8
9 0
58
Auto Teller Problem
-
Solution This solution uses sequence, if-then, repeat-until, while, caseand subprogram structures.
Pseudocode
An algorithm to describe the control of an automatic tellermachine. Input comes from the buttons on the console,output through a small video screen.
BEGIN MAINPROGRAMINITIALISATIONset Action to an empty stringset Account to an empty stringset Amount to 0END INITIALISATIONwait for the card to be insertedget the PIN and check it (Action)IF action is cancel THEN
eject cardELSE
IF action is not keep card THENget action required (Action)IF action is not cancel THEN
get account to be used (Action, Account)do the transaction
ENDIFeject card
ENDIFENDIFEND MAINPROGRAM
BEGIN SUBPROGRAM wait for the card to be insertedWHILE no card has been inserted
waitENDWHILEEND SUBPROGRAM wait for the card to be inserted
Methods of Algorithm Description
59
-
BEGIN SUBPROGRAM get the PIN and check it (Action)INITIALISATIONset OK to FALSEset NumberOfTries to 3END INITIALISATIONIF cancel button has been pressed THEN
set Action to cancelELSE
REPEATaccept a four digit numberdecrement NumberOfTriesIF correct PIN THEN
set OK to TRUEENDIF
UNTIL OK OR number of tries is 0IF NOT OK THEN
set Action to keep cardENDIF
ENDIFEND SUBPROGRAM get the PIN and check it
BEGIN SUBPROGRAM get action required (Action)IF cancel button has been pressed THEN
set Action to cancelELSE
REPEATprompt user for action keyget a key press
UNTIL key press is an action keyCASEWHERE keypress is
Withdrawal : set Action to withdrawDeposit : set Action to depositBalance : set Action to show balanceCancel : set Action to cancel
ENDCASEENDIFEND SUBPROGRAM get action required
Methods of Algorithm Description
60
-
BEGIN SUBPROGRAM get account to be used (Action, Account)IF cancel button is pressed THEN
set Action to cancelELSE
REPEATprompt for account type keyget a keypress
UNTIL keypress is acceptableCASEWHERE keypress is
savings account : set Account to savings accountcheque account : set Account to cheque accountcancel : set Action to cancel
ENDCASEENDIFEND SUBPROGRAM get account to be used
BEGIN SUBPROGRAM get the amount in dollars (Action, Amount)INITIALISATIONset OK to FALSEEND INITIALISATIONIF the cancel button has been pressed THEN
set Action to cancelELSE
REPEATREPEAT
prompt for a keypressget a keypress
UNTIL keypress is acceptableCASEWHERE keypress is
OK : set OK to TRUEcancel : set Action to cancel
set OK to TRUEnumber : set Amount to 10 times the amount
plus digit value of numberENDCASE
UNTIL OKENDIFEND SUBPROGRAM get the amount in dollars
Methods of Algorithm Description
61
-
BEGIN SUBPROGRAM do the transaction (Action, Account)IF the cancel button has been pressed THEN
set Action to cancelENDIF
CASEWHERE Action iscancel: set Amount to 0
set Account to empty stringdeposit: get the amount in dollars (Action, Amount)
IF Action is not cancel THENIF Account is cheque THEN
add Amount to cheque accountELSE
add Amount to savings accountENDIF
ENDIFwithdraw: get the amount in dollars (Action, Amount)
IF Action is not cancel THENIF Account is cheque THEN
subtract Amount from cheque accountELSE
subtract Amount from savings accountENDIF
ENDIFbalance: IF Account is cheque THEN
display balance of cheque accountELSE
display balance of savings accountENDIF
ENDCASEEND SUBPROGRAM do the transaction
Methods of Algorithm Description
62
-
Flowchart
An algorithm to describe the control of an automatic tellermachine. Input comes from the buttons on the console,output through a small video screen.
begin
set Action to an empty string
Action iscancel
Actionis not
keep card
get Actionrequired (Action)
get Account tobe used
(Action, Account)
do the transaction(Action, Account)
Action isnot
cancel
end
set Account toan empty string
set Amount to 0
wait for cardto be inserted
get the PINand check it
eject card
True
False
False
False
True
Trueeject card
Methods of Algorithm Description
63
-
Subprograms
begin wait for cardto be inserted
False
True
wait
card notinserted
end wait for cardto be inserted
Methods of Algorithm Description
64
-
end get the PINand check it
begin get the PIN& check it (Action)
set numberof tries to 3
cancelbutton ispressed
correct PIN
OK = trueor
number oftries = 0
OK
False True
False True
False True
False
True
set OK to false
accept a fourdigit number
set Actionto cancel
decrementnumber of tries
set Action tokeep card
set OK to true
Methods of Algorithm Description
65
-
keypress is
True
end get Actionrequired
cancelbutton ispressed
set Actionto cancel
prompt foraction key
get a keypress
keypress isaction key
False True
False
begin get actionrequired (Action)
set Action towithdrawal
Deposit Balance CancelWithdrawal
set Action todeposit
set Action toshow balance
set Action tocancel
Methods of Algorithm Description
66
-
keypress is
True
cancelbutton ispressed
set Actionto cancel
prompt foraccount type key
get a keypress
keypress isacceptable
False True
False
begin get accountto be used
(Action, Account)
cheque account savings account cancel
end get accountto be used
set Account tocheque account
set Account tosavings account
set Action tocancel
Methods of Algorithm Description
67
-
end get amount in dollars
begin get amountin dollars
(Action, Amount)
keypress is
True
cancelbutton ispressed
keypress isacceptable
False True
False
OK cancel number
OK is trueFalse
True
set Actionto cancel
set OK to false
get a keypress
set OK to true set Actionto cancelset Amount to 10times the amountplus digit value
of number
set OK to true
prompt fora keypress
Methods of Algorithm Description
68
-
withdrawaldeposit
begin dotransaction
(Action, Account)
cancelbutton
pressed
get Amount indollars (Action,
Amount)
True
add Amount tocheque account
Account ischeque
TrueFalse
add Amount tosavings account
Actionis not
cancelFalse
set Actionto cancel
cancel balance
True
TrueFalse
False
TrueFalse
display balanceof chequeaccount
Account ischeque
display balanceof savingsaccount
get Amount indollars (Action,
Amount)
Account ischeque
subtract Amountfrom savings
account
Actionis not
cancel
subtract Amountfrom cheque
account
Action is
set Amountto 0
set Accountto empty
string
enddo transaction
False True
Methods of Algorithm Description
69
-
Algorithms forSearching and Sorting
-
To give some assistance with understanding the standardalgorithms for searching and sorting, as required in the 2/3Unit (Common) Computing Studies Syllabus, the followingexamples are provided.
Linear Search
Problem In a theatre there is a row of seats. Each seat is numberedconsecutively starting at 1. A person occupies each of theseats. Describe an algorithm which an usher could followto find the seat number of the first person in the row whois wearing a red jumper (indicated by the dark circle).
1 2 3 4 5 6 7 8
72
Algorithms for Searching
-
Solution This solution implements a linear (sequential) searchwhich will work whether or not the persons are seated in agiven order or at random.
The solution uses sequence, while and if-then-else structures.
Pseudocode
An algorithm to describe a linear (sequential) search tofind the seat number of the first person wearing a redjumper from a set of persons sitting in a row of seats.
BEGIN MAINPROGRAMINITIALISATIONstand in front of the first seatset FoundIt to FALSEset MoreSeats to TRUEEND INITIALISATIONget the description of the wanted personWHILE FoundIt is FALSE AND MoreSeats
IF the person in front of you is not the wanted person THENstand in front of the next seat
ELSEset FoundIt to TRUE
ENDIFENDWHILEIF FoundIt THEN
report the seat number of the wanted personELSE
report that the wanted person is not presentENDIFEND MAINPROGRAM
Methods of Algorithm Description
73
-
Problem A user has stored a set of numbers in a one-dimensionalarray. Each element of the array contains a unique number.Describe an algorithm the person could follow to find theelement of the array which contains a particular number.
Solution This solution implements a linear (sequential) searchwhich will work whether or not the numbers are stored inorder or at random.
The solution uses sequence, while, if-then and if-then-elsestructures.
Flowchart
begin
set This to first positionset Last to last positionset FoundIt to FALSE
get Target
NOTFoundIt
ANDThis
-
Binary Search The task is to determine whether or not a particular datavalue (the target) is present in a set of data. If the target isfound the position of its first occurrence is reported andthe search ends.
Note: that binary search will only work on sorted data.
General Idea of the AlgorithmBinary search divides the data set into two parts anddetermines in which part the element is likely to be found.The other part of the data set is discarded and the retainedpart is divided into two parts. The process is continueduntil either the value is found or there are no moreelements in the data set to be checked. If a match is foundthen the position of the match is reported otherwise amessage is written telling the user that the target is notpresent in the data.
At each division there are three possibilities for the target(if it exists in the data set):
(1) the target lies at the division point;
(2) the target lies to the left of the division point
(3) the target lies to the right of the division point.
1 2 3 4 5 6 7 8
12 14 16 19 26 34 41 45
1 2 3 4 5 6 7 8
12 14 16 19 26 34 41 45
34 Target
Lower Middle Upper
Lower Middle Upper
Methods of Algorithm Description
75
-
Problem A user wants to find the telephone number of a person inthe Sydney Telephone Directory. The names are listedalphabetically. Each set of data for a person is stored as anelement of a one-dimensional array. One way would be tocarry out a linear search starting with the first name in thelisting and checking each one until either the target isfound or the end of the directory is reached. Describe amore efficient algorithm which the person could use tofind the telephone number of the particular person.
Solution This solution implements a binary search which will workonly if the names are in strict alphabetical order.
The solution uses sequence, repeat-until, if-then-else andsubprogram structures.
PseudocodeBEGIN MAINPROGRAMINITIALISATIONset Lower to first positionset Upper to last positionset FoundIt to FALSEget the Target nameEND INITIALISATIONREPEAT
calculate the Middle positionIF Target = data at Middle position THEN
set FoundIt to TRUEset PositionFound to Middle
ELSEIF Target < data at Middle position THEN
set Upper to Middle 1ELSE
set Lower to Middle + 2ENDIF
ENDIFUNTIL FoundIt OR Lower > UpperIF FoundIt THEN
report PositionFoundELSE
report Target not presentENDIFEND MAINPROGRAM
BEGIN SUBPROGRAM calculate the Middle positionset Middle to (Upper + Lower) divided by 2set Middle to integer part of Middle
END SUBPROGRAM calculate the Middle position
Methods of Algorithm Description
76
-
Bubble Sort The task is to sort a set of data into either ascending orderor descending order as determined when the algorithm iswritten. In this case the order chosen is ascending order.
General Idea of the AlgorithmThe data elements are compared in pairs and the larger ofthe pair bubbles towards the top of the structure. Oneach pass, one element (the largest in the unsorted part)will be moved to its correct position in the sorted part.
Problem A person wants to sort a set of marks into ascending order.Each mark is stored as an element of a one-dimensionalarray. Describe an algorithm which will sort the marks bybubbling the largest mark in the unsorted part to thetop of the unsorted part. This will result in the sortedpart getting larger each time through and the unsortedpart getting smaller. The algorithm need not stop even ifthe person realises that the marks become sorted beforethe algorithm has finished.
1 2 3 4 5 6
32 23 12 19 42 54 Data set at end of first pass
1 2 3 4 5 6
32 23 12 19 42 54 Compare fifth with sixthand leave
1 2 3 4 5 6
32 23 12 42 19 54 Compare fourth with fifthand Swap
1 2 3 4 5 6
32 23 42 12 19 54 Compare third with fourthand Swap
1 2 3 4 5 6
32 42 23 12 19 54 Compare second with thirdand Swap
1 2 3 4 5 6
42 32 23 12 19 54 Compare first with secondand Swap
77
Algorithms for Sorting
-
Solution This solution implements a bubble sort on an array ofmarks.
The solution uses sequence, while, if-then and subprogramstructures.
Pseudocode
BEGIN MAINPROGRAMINITIALISATIONset End to last positionEND INITIALISATIONWHILE End > first position
set Current to first positionWHILE Current is less than End
IF data at Current > data at (Current + 1) THENSwap (Current, Current + 1)
ENDIFincrement Current
ENDWHILEdecrement End
ENDWHILEEND MAINPROGRAM
Note: that the parameters to the subprogram when it iscalled by the MAINPROGRAM are Current and Current+ 1 but in the definition of the SUBPROGRAM generalnames are used for the parameters. When theSUBPROGRAM is called it substitutes the names of theactual parameters for those of the formal parametersused in the definition.
BEGIN SUBPROGRAM Swap (Position1, Position2)set Temp to data value at Position1set data at Position1 to data at Position2set data at Position2 to Temp
END SUBPROGRAM Swap
Methods of Algorithm Description
78
-
Selection Sort In this algorithm a set of data is sorted into eitherascending order or descending order as determined whenthe algorithm is written. In this case the order chosen isascending order.
General Idea of the AlgorithmThe general idea behind the algorithm is to divide thearray into two parts the unsorted part and the sortedpart. Each pass through the unsorted part finds the largestnumber and places it at the start of the sorted part. Thearray originally has an empty sorted part and a fullunsorted part. So the largest number in the unsorted partis found and swapped with the last element in theunsorted part. The length of the sorted part is thenincreased by one and the length of the unsorted part isdecreased by one.
1 2 3 4 5 6
12 16 22 24 32 41
1 2 3 4 5 6
16 12 22 24 32 41
1 2 3 4 5 6
22 12 16 24 32 41
1 2 3 4 5 6
24 12 16 22 32 41
1 2 3 4 5 6
24 12 16 32 22 41
1 2 3 4 5 6
24 12 16 32 41 22
Unsorted|Sorted
Unsorted|Sorted
Unsorted|Sorted
Unsorted|Sorted
Unsorted|Sorted
Unsorted|Sorted
Methods of Algorithm Description
79
-
Pseudocode
BEGIN MAINPROGRAMINITIALISATIONset EndUnsorted to last positionEND INITIALISATION
WHILE EndUnsorted > first positionset Current to first positionset Largest to data at Currentset PositionOfLargest to CurrentWHILE Current < EndUnsorted
increment CurrentIF data at Current > Largest THEN
set Largest to data at Currentset PositionOfLargest to Current
ENDIFENDWHILESwap (PositionOfLargest, EndUnsorted)decrement EndUnsorted
ENDWHILEEND MAINPROGRAM
BEGIN SUBPROGRAM Swap (Position1, Position2)set Temp to data value at Position1set data at Position1 to data at Position2set data at Position2 to TempEND SUBPROGRAM Swap
Methods of Algorithm Description
80
-
Flowchart
FalseEndUnsorted> first position
set Current tofirst position
set Largest todata at Current
increment Current
True
True
end
True
False
begin
set EndUnsortedto last position
set Position Of Largest to Current
set Largest todata at Current
set PosOfLargestto Current
swap (Position Of Largest,
EndUnsorted)decrement
EndUnsorted
FalseCurrent< End Unsorted
data atCurrent >Largest
Methods of Algorithm Description
81
begin Swap
setTemp to dataat Position1
setdata at Position1 todata at Position2
setdata at Position2
to Temp
end Swap
-
Insertion Sort In this algorithm a set of data is sorted into eitherascending order or descending order as determined whenthe algorithm is written. In this case the order chosen isascending order.
General Idea of the AlgorithmThis is the method used by many card players to put theircards in order. The general idea of the algorithm is todivide the array into two parts the unsorted part andthe sorted part. To begin with, the sorted part containsonly the right hand element. Each pass takes the lastelement from the unsorted part and then finds where itshould be inserted in the sorted part. To find the properplace to insert the element a sequential (linear) search isused. As each element in the sorted part is checked, it ismoved, if necessary, one place to the left to make room forthe new element. At each pass the length of the sorted partincreases by one and the length of the unsorted partdecreases by one until its length is 0.
1 2 3 4 5 6
12 16 22 24 32 41
1 2 3 4 5 6
24 12 16 22 32 41
1 2 3 4 5 6
24 12 16 22 32 41
1 2 3 4 5 6
24 12 16 22 32 41
1 2 3 4 5 6
24 12 16 32 22 41
1 2 3 4 5 6
24 12 16 32 41 22
Unsorted|Sorted
Unsorted|Sorted
Unsorted|Sorted
Unsorted|Sorted
Unsorted|Sorted
Unsorted|Sorted
Methods of Algorithm Description
82
-
Pseudocode
BEGIN MAINPROGRAMINITIALISATIONset First to first positionset Last to last positionset PositionOfNext to Last 1ENDINITIALISATION
WHILE PositionOfNext >= Firstset Next to data at PositionOfNextset Current to PositionOfNextWHILE (Current < Last ) AND (Next > data at (Current + 1))
increment Currentset data at (Current 1) to data at Current
ENDWHILEset data at Current to Nextdecrement PositionOfNext
ENDWHILEEND MAINPROGRAM
Note: Variations of the algorithm are possible. In someversions, the task of finding the correct place toinsert is separated from the task of moving theelements to make room. By doing this, the task offinding the correct place to insert can be speeded upby using a binary search rather than a linearsearch.
Methods of Algorithm Description
83
-
Flowchart
increment Current
True
end
set data at Current 1to data at Current
set data at Currentto Next
decrementPositionOfNext
set Lastto last position
FalsePositionOfNext>= First
set Next to dataat PositionOfNext
set Current toPositionOfNext
True
begin
set Firstto first position
False
set PositionOfNextto Last 1
Current< Last AND
Next > data atCurrent + 1
Methods of Algorithm Description
84
-
A COLLECTION OFPROBLEMS WITH NO
SOLUTIONS GIVEN
-
Use these problems to test your skills at using methods ofalgorithm description.
l. Refine the Lift Problem (on page 27) to establish amore realistic problem and solution. Consider theproblem of sending the lift to specific floors. Determinewhen the lift doors should be opened and closed.
2. Refine the Telephone Dialler Problem to cater for thesesuggested extensions.
(a) Modify the dialler so that it rejects numbersbeginning with 0 (for STD call bar).
(b) As for (a), but allow access to Austpac 01922, 01923,01924.
(c) Restrict as in (a), but allow 008 numbers.
3. A one-lane bridge only allows traffic to travel in onedirection at a time. A set of traffic lights controls theflow of traffic. It takes a slow vehicle 45 seconds at mostto cross the bridge. Write an algorithm to specify thecontrol of the traffic lights.
Extension:Consider a rush period in which traffic travellingnorth is three times as heavy as traffic travelling south.
4. Road work is being undertaken on a country road andtraffic is being controlled by a player of mechanicalstop/slow paddle turners. Write an algorithm todescribe the control of the paddle turners to safelydirect traffic around the road works.
5. A program accepts as input dates in the formdd/mm/yy (eg 13/11/85) and later uses them inexpanded form (eg 13 November 1985). Write analgorithm that could be used to do this conversion.Assume that there are no incorrect dates, and that alldates are in the 20th century.
6. Write an algorithm that will take todays date andsomeones birth date as input and use the data tocalculate the persons age in years and full months.
Methods of Algorithm Description
86
-
7. A community group has decided to install an automaticsprinkler system in the local park. The sprinkler shouldcome on when the ground moisture reduces to 20% ofsaturation level which is measured by a sensor. Itshould be turned off when the moisture reaches 55% ofsaturation level. Write an algorithm that could be usedto control the sprinkler system.
8. A tourist bus has 53 seats. When tickets are booked, thenext available seats are allocated according to number(ignoring where they are). Write an algorithm to decidewhat is the next seat available and to store the name ofthe person booking each seat.
Extension 1The seats are arranged so that numbers 1 and 2 aretogether, 3 and 4 are across the aisle and so on up to 48.Seats 49 to 53 are across the back of the bus. Write analgorithm that can choose the seat wanted from what isavailable, then store the name of the person bookedwith the seat number.
Extension 2Write an algorithm to print out the names of peoplebooked on the bus in the order of the seats.
9. A subprogram of a grammar checking program checksfor the use of apostrophes for the possessive case.Search a line of text for the symbol . If it follows an sand is also followed by an s, remove the second s.
Methods of Algorithm Description
87
MAIN MENU7-10 D&T Syllabus7-10 D&T Support Document7-10 D&T Computing Studies Syllabus2U General Syllabus2/3U Common Syllabus3U Additional SyllabusSubject Manual No.6Glossary of TermsSoftware SpecificationsMethods of Algorithm DescriptionContents
Urgent Official Notice BOS 65/951996 Prescribed Texts, Topics, Projects and Works1997 Prescribed Texts, Topics, Projects and WorksCEC Computing Applications