External Exam Download Resources Web Applications Games Recycle Bin

pseudocode



Algorithm: (tl;dr) A finite set of steps to solve a problem. Here are examples:
swap
guessNumber
guessNumberAlternate
paperRockScissors
doubleDiceRollGame


From the Digital Solutions syllabus:

Algorithmic design method
Pseudocode will be used as the formal method of representing algorithms in this syllabus. Pseudocode is a descriptive method used to represent an algorithm and is a mixture of everyday language and programming conventions.

Pseudocode implements the basic control structures of assignment, sequence, selection, condition, iteration and modularisation through the use of keywords associated with the constructs, and textual indentation. Used to show how a computing algorithm should and could work, it is often an intermediate step in programming between the planning stage and writing executable code. Pseudocode can also be useful for:

Pseudocode does not have a standard format and varies from programmer to programmer. However, a number of conventions are generally used.

Conventions for writing pseudocode

KEYWORDS are written in bold capitals and are often words taken directly from programming languages.

For example, IF, THEN and ELSE are all words that can be validly used in most languages. OUTPUT and COMPUTE are from the language COBOL and WRITE is from the language Pascal.

Keywords do not have to be valid programming language words as long as they clearly convey the intent of the line of pseudocode.

Statements that form part of a REPETITION LOOP are indented by the same amount to indicate that they form a logical grouping.

In a similar way, IF, THEN and ELSE statements are indented to clearly distinguish the alternative processing paths.

The end of REPETITION LOOPS and IF, THEN and ELSE statements are explicitly indicated by the use of ENDWHILE and ENDIF at the appropriate points. ATTENTION DIGITAL SOLUTIONS SYLLABUS WRITERS - THE USE OF THESE END KEYWORDS IS REDUNDANT, GIVEN THAT A BLOCK INDENT CONNOTATES IDENTICAL BEHAVIOUR!!!

Pseudocode should clearly indicate what is happening at each step, including formulas of calculations.

For example:
CALCULATE net
is not as clear as:
CALCULATE net = gross − tax.

Programmers prefer to use a more abbreviated version in which memory cells used to store the input are given program-like names.

For example:
INPUT num1
INPUT num2
is preferable to:
INPUT first number
INPUT second number



swap
INPUT height_A, height_B
SET tallest = height_A, smallest = height_B
IF height_B > height_A THEN
  SET temp = height_A
  SET height_A = height_B
  SET height_B = temp
ENDIF

guessNumber
SET randomNumber = RANDOM_INT(1 to 10)
FOR guessNumber = 1 to 3:
  INPUT userGuess
  IF userGuess > randomNumber THEN
    PRINT("lower")
  ELSE
    IF userGuess < randomNumber THEN
      PRINT("higher")
    ELSE
      PRINT(JOIN("winner on guess: "), guessNumber)
    ENDIF
  ENDIF
ENDFOR

guessNumberAlternate
SET guessesRemaining = 3
SET unknownNumber = RANDOM_INT(1 to 10)
WHILE guessesRemaining > 0
  INPUT userGuess
  IF userGuess == unknownNumber:
    PRINT(JOIN("winner with guesses remaining: "), guessesRemaining)
    SET guessesRemaining = 0
  ENDIF
  IF userGuess > randomNumber THEN
    PRINT("lower")
  ELSE
    PRINT("higher")
  ENDIF
  SET guessesRemaining = guessesRemaining - 1
ENDWHILE

paperRockScissors
SET userWinning = False, computerWinning = False
SWITCH RANDOM_INT(1 to 3):
  CASE 1: computerPick = "Paper"
  CASE 2: computerPick = "Scissors"
  CASE 3: computerPick = "Rock"
ENDSWITCH
INPUT userPick
SWITCH userPick:
  CASE "Paper":
    SWITCH computerPick:
      CASE "Scissors":  SET computerWinning = True
      CASE "Rock": SET userWinning = True
    ENDSWITCH
  CASE "Rock":
    SWITCH computerPick:
      CASE "Paper":  SET computerWinning = True
      CASE "Scissors": SET userWinning = True
    ENDSWITCH
  CASE "Scissors":
    SWITCH computerPick:
      CASE "Rock":  SET computerWinning = True
      CASE "Paper": SET userWinning = True
    ENDSWITCH
ENDSWITCH
IF userWinning == True THEN
  PRINT("Winner")
ELSE
  IF userWinning == True THEN
    PRINT("Loser")
  ELSE
    PRINT("Draw")
  ENDIF
ENDIF

doubleDiceRollGame
FUNCTION rollTwoDice()
  SET dice1 = RANDOM_INT(1,6)
  SET dice2 = RANDOM_INT(1,6)
  IF dice1 > dice2 THEN
    SET jointNumber = JOIN(dice1, dice2)
  ELSE
    SET jointNumber = JOIN(dice2, dice1)
  END IF
  RETURN jointNumber
END FUNCTION

SET points = 10

WHILE points > 0:
  SET mynumber = CALL rollTwoDice()
  SET points = points - 1
  INPUT challenge
  IF challenge == True THEN
    SET cpunumber = CALL rollTwoDice()
    IF mynumber > cpunumber THEN
      SET points = points + 5
    ELSE
      IF cpunumber < mynumber THEN
        SET points = points - 5
      END IF
    END IF
  END IF
END WHILE