Comp Algorithm

87
Methods of Algorithm Description Second Edition to accompany the 2 Unit (General) 2/3 Unit (Common) 3 Unit (Additional) Computing Studies Syllabuses 

description

z

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