How do I answer an OCR A Level Computer Science programming question?

  • Programming questions can appear in both papers
  • Paper 1 may include questions that test understanding and interpretation of algorithms and computational thinking principles
  • Paper 2 is the dedicated component for assessing the ability to actively design, write, test, and refine programs
    • Section A questions can be answered using either pseudocode, flowcharts, bullet points, OCR Exam Reference Language or a high-level programming language
    • Section B questions must be answered using either OCR Exam Reference Language or a high-level programming language
  • To attempt a programming question that requires the writing of a new program, you should always ask yourself the following five key questions:
    • What are the inputs?
    • What are the outputs?
    • What processes take place?
    • What constructs will I need to use?
    • Do I need to use subprograms?

Example

Question

Octal is a base 8 number system.

To convert a denary number to base 8:

  • the denary value is divided by 8 and the remainder is stored
  • the integer value after division is divided by 8 repeatedly until 0 is reached
  • the remainders are then displayed in reverse order.

Example 1:

Denary 38

38 / 8 = 4 remainder 6 6

4 / 8 = 0 remainder 4 4

Octal = 46

Example 2:

Denary 57

57 / 8 = 7 remainder 1 1

7 / 8 = 0 remainder 7 7

Octal = 71

Write an algorithm to:

  • take a denary value as input from the user
  • convert the number to octal
  • output the octal value.

You do not need to validate the input from the user.

Write your algorithm using pseudocode or program code.

[6 marks]

What are the inputs? What are the outputs? What processes take place?

  • take a denary value as input from the user
  • the denary value is divided by 8 and the remainder is stored
  • the integer value after division is divided by 8 repeatedly until 0 is reached
  • the remainders are then displayed in reverse order.
  • output the octal value.

What constructs will I need to use?

  • Sequence
    • Calculating the remainder after division by 8 (MOD)
    • Calculating integer after division by 8 (DIV)
    • Ensure remainders are displayed in reverse order
  • Iteration
    • the number of divisions needed depends on the size of the input
    • You don’t know how many remainders to generate in advance
    • You need a repeat-until-0 process, which is best represented by a WHILE loop

Do I need to use subprograms?

  • This program can be written without the need to use a subprogram (function or procedure)

Pseudocode

number = input(“Enter a number”)

endResult = ""

while number != 0

remainder = number MOD 8 

number = number DIV 8 

endResult = str(remainder) + str(endResult) 

endwhile

print endResult