Procedural Programming (OCR A Level Computer Science)
Revision Note
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
statementOnly 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!
Did this page help you?