Procedural Programming (OCR A Level Computer Science)

Revision Note

Callum Davies

Written by: Callum Davies

Reviewed by: James Woodhouse

Procedural Programming

  • Procedural programming follows a step-by-step approach to breaking down tasks into routines and subroutines

  • It emphasises modular design, where code is grouped into functions and procedures for reuse and clarity

  • Variables hold state and control structures that determine the flow of execution in the program

Variables

  • Storing data values that can change

x = 10
print(x) # Output: 10

Constants

  • Storing values that remain unchanged

PI = 3.1415
print(PI) # Output: 3.1415

Selection

  • Decision-making constructs

x = 7
if x > 5:
print("Greater") # Output: Greater
else:
print("Smaller")

Iteration

  • Using loops to repeat actions

for i in range(3):
print(i) # Output: 0, 1, 2

Sequence

  • Executing statements sequentially

x = 5
y = x + 10
print(y) # Output: 15

Subroutines

  • Organising code into reusable parts

def greet(name):
return "Hello, " + name

greeting = greet("Alice")
print(greeting) # Output: Hello, Alice

String Handling

  • Operations on character strings

name = "Alice"
upper_name = name.upper()
print(upper_name) # Output: ALICE

File Handling

  • Reading from and writing to files

with open('file.txt', 'w') as file:
file.write("Hello, World!")

with open('file.txt', 'r') as file:
content = file.read()
print(content) # Output: Hello, World!

Boolean Operators

  • Logical operations

x = 7
y = 5
is_valid = x > 5 and y < 10
print(is_valid) # Output: True

Arithmetic Operators

  • Basic mathematical operations

x = 5
y = 3
sum_value = x + y
product = x * y
print(sum_value, product) # Output: 8, 15

Full example

  • This script greets the user, asks for two numbers, and multiplies them if they are both greater than 10

  • It gives the user three attempts to provide suitable numbers and asks if they want to continue after each attempt. Finally, it writes the greeting and the last multiplication result to a file

# Constants
MAX_ATTEMPTS = 3
FILENAME = 'output.txt'

# Subroutine to greet a user
def greet(name):
    return "Hello, " + name

# Subroutine to multiply two numbers
def multiply(x, y):
    return x * y

# Main program
def main():
    name = input("Please enter your name: ")
    print(greet(name))

    # Iteration to allow multiple attempts
    for attempt in range(MAX_ATTEMPTS):
        x = int(input("Enter the first number: "))
        y = int(input("Enter the second number: "))

        # Selection
        if x > 10 and y > 10:
            result = multiply(x, y)
            print(f"The product of {x} and {y} is {result}")
        else:
            print("Both numbers should be greater than 10.")
            
        # Asking user if they want to continue
        continue_choice = input("Do you want to continue? (y/n): ")
        if continue_choice.lower() != 'y':
            break

    # File Handling
    with open(FILENAME, 'w') as file:
        file.write(greet(name) + "\n")
        file.write(f"Last multiplication result: {result}")

    print(f"Results have been saved to {FILENAME}")

# Sequence: Calling the main program
if __name__ == "__main__":
    main()

Worked Example

You are working for a library and need to develop a program that calculates the total late fees for overdue books. Provide pseudocode that includes a function to calculate the fee for each book.

How to answer this question:

  • Notice that the same operation needs to take place against multiple items. This suggests iteration could be used

  • A function is required to calculate the fee for each book. Simple names for functions make them clear to understand

  • Think of some data structures to hold the bits of data for this scenario

    • Many numbers representing each book's days overdue could be stored in an array

    • The total late fee could be stored in a variable

  • Use indentation to show which code is inside a code block e.g. function, if statement, for statement

  • Only include code comments where you think it's necessary to explain

  • The example below contains comments for your understanding

Answer:

 Answer that gets full marks:

const DAILY_CHARGE = 1 // Many functions can use this const if they need it

function calculateFee(days_overdue)
  IF days_overdue > 0 THEN
    RETURN days_overdue * DAILY_CHARGE // £1 per day
  ELSE
    RETURN 0
  ENDIF
END function

function calculateTotalFee(books)
  var total_fee = 0
  FOR each days_overdue IN books // days_overdue is an identifier that represents each item in books
    total_fee = total_fee + calculateFee(days_overdue) // adding the result of the function to the total_fee variable
  ENDFOR
  RETURN total_fee // returning the variable back to caller
END function

var books = [7, 3, 0, 10] // Array of numbers representing each book's overdue days
var total_fee = calculateTotalFee(books) 

PRINT "Total Late Fee:", total_fee
  • This solution contains a function that accepts an array of books and a function that will calculate the fee for a single book

  • This is well-designed because two smaller functions are better than 1 larger function

Last updated:

You've read 0 of your 5 free revision notes this week

Sign up now. It’s free!

Join the 100,000+ Students that ❤️ Save My Exams

the (exam) results speak for themselves:

Did this page help you?

Callum Davies

Author: Callum Davies

Expertise: Computer Science

Callum is an experienced teacher of GCSE and A-Level Computer Science. He has 4 years of teaching experience and has detailed knowledge of how to achieve exam success, having marked for OCR A-Level. Callum is now a software engineer and regularly mentors new engineers.

James Woodhouse

Author: James Woodhouse

Expertise: Computer Science

James graduated from the University of Sunderland with a degree in ICT and Computing education. He has over 14 years of experience both teaching and leading in Computer Science, specialising in teaching GCSE and A-level. James has held various leadership roles, including Head of Computer Science and coordinator positions for Key Stage 3 and Key Stage 4. James has a keen interest in networking security and technologies aimed at preventing security breaches.