Community resourceWorksheet
OCR H446 2.1.4 Decisions, logical conditions and flow
Part 1 · H446 2.1.4 · Thinking logically
OCR H446 2.1.4 is about decisions that change the route through a solution, and about the boundary values where those decisions quietly go wrong. A community makerspace access policy gives students conditions to write, trace, repair and then extend.
Students will:
- identify a genuine decision point and the condition that controls it
- write a Boolean condition combining membership, training and an age threshold
- repair a comparison operator that fails only at the boundary value
- trace nested decisions and explain why one route is never reached
- implement the access routes in Python and extend the rule with an alternative condition
Inside: 7 explanation cells, 1 multiple-choice question, 1 fill-in-the-blanks cell, 3 written answers, 1 Python task and 1 trace table. 19 marks, about 25 to 35 minutes.
Series: H446 2.1.4 · Thinking logically, part 1 of 1.
Shared by Coding PathwayVerified teacher
- 14 cells
- About 30 minutes
- CC BY-SA 4.0
- Shared 31 Aug 2026
- Updated 15 Sept 2026
Preview
The whole resource, exactly as a class sees it. Answers and marking are held back.
Thinking logically: decisions, conditions and program flow
A makerspace must decide whether a member can use equipment independently, only with supervision, or not at all. Each decision tests a Boolean condition. The True or False result determines which instructions the program follows next.
By the end, you will be able to
- identify points where a program must make a decision;
- write accurate simple and combined Boolean conditions;
- trace True and False routes, including boundary values;
- explain how a decision changes the route and final outcome.
Remember: AND requires both conditions to be True. OR requires at least one. NOT reverses a Boolean value.
A decision is controlled by a condition
member? and trained AND age >= 16? each produce True or False and select a route. “Choose a random tool” is an action, not a logical decision unless a condition tests the result.
A condition can control selection, such as IF…ELSE or a multiway SELECT/CASE, or iteration, such as whether a WHILE loop repeats. In every case, identify the decision point, write the precise logical condition, then follow the route or outcome it selects.
Trace with a condition table before following arrows. Boundary age 16 satisfies age >= 16; age 15 does not.
Worked route table
| member | trained | age | route |
|---|---|---|---|
| False | True | 18 | denied at first decision |
| True | False | 18 | supervised |
| True | True | 15 | supervised |
| True | True | 16 | unsupervised |
When member is False, the program follows the denied branch immediately. It therefore never reaches the second decision about training and age.
Which option is a logical decision point?
- ADisplay the booking reference
- BTest whether the user is a member
- CGenerate a random identifier
- DStore the current time
Write a Boolean condition for unsupervised access: the person must be a member, trained, and at least 16.
Use recognisable OCR ERL, Python or clear Boolean notation.
Students type their answer here.
Guided practice: repair a boundary condition
The condition age > 16 is wrong when the policy says “aged 16 or over”. It incorrectly rejects the boundary value 16. The corrected condition is age >= 16. Test 15, 16 and 17 to confirm that the boundary now behaves as required.
When testing a combined condition, change one input at a time. This helps you identify which part of the condition changes the route.
Trace the routes and final access value.
Enter a value only when it changes. Follow the listing in order.
Use one row for each pass through the loop. Fill in a box only when that value changes on that row, and leave the rest blank.
member = Truetrained = Falseage = 17access = "denied"if member == True thenif trained == True AND age >= 16 thenaccess = "independent"elseaccess = "supervised"endifendifprint(access)
| Row | member | trained | age | access | member == True | trained == True AND age >= 16 | Output |
|---|---|---|---|---|---|---|---|
| 1 | |||||||
| 2 | |||||||
| 3 |
Explain why the independent assignment is not reached in the trace and state one change that would make it reachable.
State the value of trained, explain the result of the AND condition, and name the route followed. Then give one complete input change.
Students type their answer here.
Implement the decision routes
Return “denied” for a non-member, “independent” for a member who is trained and at least 16, and “supervised” for every other member.
def access_route(member, trained, age):
if not member:
return "denied"
# Complete the condition for independent access.
if False:
return "independent"
return "supervised"A laser cutter may be used only by a member aged 16 or over. The member must also have either advanced training OR a supervisor present. Write one Boolean condition for permission to use the laser cutter. Then use one example set of inputs to explain whether permission is granted.
Translate each requirement separately. Decide which requirements must all be true and which part offers a choice between two alternatives. Use brackets where they make the grouping clear.
Students type their answer here.
Checkpoint
Complete the decision-and-flow explanation from memory. Your teacher will review your answers.
Review your understanding
Before submitting, check that you can identify a genuine decision point, write its Boolean condition, follow both possible routes and test an inclusive boundary value.