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

Variables

Explanation: Storing data values that can change.

x = 10
print(x)

Output

10

Constants

Explanation: Storing values that remain unchanged.

Pi = 3.1415
print(Pi)

Output

3.1415

Selection

Explanation: Decision-making constructs.

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

Output

Greater

Iteration

Explanation: Using loops to repeat actions.

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

Output

0
1
2

Sequence

Explanation: Executing statements sequentially.

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

Output

15

Subroutines

Explanation: Organising code into reusable parts.

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

Output

Hello, Alice

String Handling

Explanation: Operations on character strings.

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

Output

ALICE

File Handling

Explanation: 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

Explanation: Logical operations.

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

Output

True

Arithmetic Operators

Explanation: Basic mathematical operations.

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

Output

8 15

If you want, I can also add collapsible sections, keywords summaries, or exam-style notes.

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