Procedural Programming (OCR A Level Computer Science): Revision Note

Exam code: H446

Callum Davies

Written by: Callum Davies

Reviewed by: James Woodhouse

Updated on

Procedural Programming

What is procedural programming?

  • Procedural programming is a method of writing software where tasks are broken down into a sequence of step-by-step instructions

    • Modular design:

      • It focuses on grouping code into functions and procedures to promote reuse and improve clarity

    • State and control:

      • Variables are used to hold the program’s state, while control structures (like selection and iteration) determine the flow of execution throughout the program

Core programming concepts

Explanation

Example

Output

Variables

Storing data values that can change

x = 10print(x)

10

Constants

Storing values that remain unchanged

PI = 3.1415print(PI)

3.1415

Selection

Decision-making constructs

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

Greater

Iteration

Using loops to repeat actions

for i in range(3): print(i)

0, 1, 2

Sequence

Executing statements sequentially

x = 5y = x + 10print(y)

15

Subroutines

Organising code into reusable parts

def greet(name): return "Hello, " + namegreeting = greet("Alice")print(greeting)

Hello, Alice

String Handling

Operations on character strings

name = "Alice"upper_name = name.upper()print(upper_name)

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)

Hello, World!

Boolean Operators

Logical operations

x = 7y = 5is_valid = x > 5 and y < 10print(is_valid)

True

Arithmetic Operators

Basic mathematical operations

x = 5y = 3sum_value = x + yproduct = x * yprint(sum_value, product)

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

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

Unlock more, it's free!

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

the (exam) results speak for themselves:

Callum Davies

Author: Callum Davies

Expertise: Computer Science Content Creator

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

Reviewer: James Woodhouse

Expertise: Computer Science & English Subject Lead

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.