Exam Extras Out-of-CAPS
These topics are not explicitly required by CAPS but have appeared in NSC past papers (2015β2024). Knowing them can mean the difference between a pass and a distinction.
Items marked P1 appear in Paper 1 (practical/Delphi), P2 in Paper 2 (theory), and Both in either paper. These are supplementary β master your CAPS content first.
Practical Extras β Paper 1 (Delphi)
These Delphi functions, components and techniques are not listed in CAPS but appear regularly in exam questions or are needed to solve exam problems efficiently.
StringReplace()
Replaces all or first occurrence of a substring within a string.
s := StringReplace(s, 'old', 'new', [rfReplaceAll]);
TStringList
A powerful list of strings β very useful for loading file lines into memory.
sl := TStringList.Create; sl.LoadFromFile('data.txt'); sl.Free;
Format() function
Formats numbers/strings with precise control β Format('%.2f', [rVal]) gives 2 decimal places. More powerful than FloatToStrF.
Random() & Randomize()
Generate random integers. Always call Randomize; first to seed the generator. Random(100) returns 0β99.
TOpenDialog / TSaveDialog
Let users browse for files at runtime.
if OpenDialog1.Execute then sFile := OpenDialog1.FileName;
DateToStr() & StrToDate()
Convert between TDate values and string representation. Used with TDateTimePicker.
sDate := DateToStr(dtpDate.Date);
Tryβ¦Exceptβ¦End (Exception Handling)
Catch runtime errors gracefully β e.g. invalid StrToInt input.
try iNum := StrToInt(edtNum.Text); except ShowMessage('Invalid'); end;
Memo.Lines.Count
Returns the number of lines in a Memo. Often used in loops to process all memo lines.
for i := 0 to Memo1.Lines.Count - 1 do
SameText() / CompareText()
Case-insensitive string comparison β avoids problems when user types 'yes', 'YES' or 'Yes'.
if SameText(sInput, 'yes') then
IntToHex() & HexToInt()
Convert integers to hexadecimal strings and back. Sometimes tested in conjunction with number systems theory.
sHex := IntToHex(255, 4); // = '00FF'
Odd() & Even() functions
Built-in boolean checks β cleaner than MOD 2.
if Odd(iNum) then // true if iNum is odd
Break & Continue in loops
Break exits the loop immediately. Continue skips to the next iteration. Both appear in exam solutions β know the difference.
Theory Extras β Paper 2
These theory topics have appeared in NSC Theory papers but sit at the edge of or outside the formal CAPS scope. They typically appear in social implications or "current technology" questions.
Artificial Intelligence (AI) & Machine Learning
AI appears regularly in social implications questions β automation of jobs, AI decision-making, bias in AI, chatbots. Not deeply technical β understand the concept and its social effects.
Blockchain Technology
A distributed digital ledger of linked blocks. Used in cryptocurrency, supply chain, and secure records. Appeared in Gr12 theory papers. Know: what it is, how it works, and 2 uses.
Deep Fakes
AI-generated fake videos or audio that appear authentic. Social implications question topic β impacts on trust, truth, and politics. Know the definition and two risks.
Dark Web
A part of the internet not indexed by search engines, accessed via special software (Tor). Used for anonymity β legal and illegal uses. Appeared in theory cybercrime questions.
Net Neutrality
The principle that all internet traffic should be treated equally β ISPs cannot throttle or prioritise certain content. A social/political IT topic.
IPv6
The successor to IPv4 β uses 128-bit addresses (vs 32-bit) to solve address exhaustion. Format: 2001:0db8:85a3::8a2e:0370:7334. Know why it was introduced.
RAID Levels (0, 1, 5)
RAID 0: speed (striping, no redundancy). RAID 1: mirroring (exact copy). RAID 5: striping with parity (balance of speed + fault tolerance). CAPS only mentions RAID in general β exams go deeper.
Steganography
Hiding secret information within ordinary files (images, audio) without detection. Different from encryption β encryption scrambles data; steganography hides its existence. Appeared in theory questions.
Smart Contracts
Self-executing contracts where terms are written in code on a blockchain. No middlemen needed. Related to blockchain technology β appeared in Gr12 social implications.
Edge Computing
Processing data close to where it is generated (the "edge" of the network) rather than sending it all to a central cloud server. Reduces latency β important for IoT and 5G.
Bus Network Topology
All devices share a single communication line (the bus). Not in the current CAPS but appeared in older papers. Advantage: cheap. Disadvantage: single point of failure; performance drops with more devices.
Social Engineering
Manipulating people (rather than systems) to reveal confidential information. Includes pretexting, baiting, tailgating. Appears in cybercrime theory questions.
Number System Conversions
Exams frequently ask you to convert values β not just explain systems. Practise: decimalβbinary, decimalβhex, binaryβhex. Know the place values (powers of 2 and 16).
POPIA (Protection of Personal Information Act)
South African law governing how personal data must be collected, stored, and protected. Appears in privacy and legal implications questions. Know: what it is, who it protects, and 2 requirements.
Cybercrimes Act (2020)
SA legislation that criminalises hacking, ransomware, online fraud, and malicious communications. Often referenced in cybercrime theory questions for Gr12.
Digital Twins
A virtual replica of a physical object or system, updated in real time from sensor data. Used in engineering, manufacturing, and smart cities. Appeared in 4IR/IoT questions.
Complete Delphi Functions Quick Reference
A comprehensive reference of all Delphi functions you need to know β both CAPS-required and commonly appearing in exams.
String Functions
| Function/Procedure | What it does | Example |
|---|---|---|
Length(s) | Returns number of characters | Length('Hello') = 5 |
Pos(find, source) | Position of substring (0 if not found) | Pos('lo','Hello') = 4 |
Copy(source, start, len) | Extract substring | Copy('Hello',2,3) = 'ell' |
Insert(text, var s, pos) | Insert text into string at position | Insert('!','Hello',6) β 'Hello!' |
Delete(var s, pos, len) | Remove characters from string | Delete(s,1,3) |
UpperCase(s) | All uppercase | UpperCase('hi') = 'HI' |
LowerCase(s) | All lowercase | LowerCase('HI') = 'hi' |
Trim(s) | Remove leading/trailing spaces | Trim(' Hi ') = 'Hi' |
StringReplace(s,old,new,flags) | Replace substring(s) | StringReplace(s,'a','e',[rfReplaceAll]) |
SameText(s1,s2) | Case-insensitive comparison (boolean) | SameText('Yes','yes') = True |
Concat(s1,s2) | Join two strings (same as +) | Concat('Hel','lo') |
s[i] | Character at index i (1-based) | s[1] = first character |
Math Functions
| Function | What it does | Example |
|---|---|---|
Sqr(x) | x squared (xΒ²) | Sqr(4) = 16 |
Sqrt(x) | Square root | Sqrt(16) = 4 |
Power(base, exp) | base to the power of exp | Power(2,8) = 256 |
Round(x) | Round to nearest integer | Round(4.6) = 5 |
Trunc(x) | Remove decimal (truncate toward zero) | Trunc(4.9) = 4 |
Ceil(x) | Round UP to integer | Ceil(4.1) = 5 |
Floor(x) | Round DOWN to integer | Floor(4.9) = 4 |
Abs(x) | Absolute value | Abs(-5) = 5 |
Random(n) | Random integer 0 to n-1 | Random(6)+1 simulates a die |
Randomize | Seed the random generator (call once) | Call before Random() |
Inc(x) / Inc(x,n) | Increment by 1 or n | Inc(i) β‘ i := i+1 |
Dec(x) / Dec(x,n) | Decrement by 1 or n | Dec(i,3) β‘ i := i-3 |
Odd(n) | True if n is odd | Odd(3) = True |
Pi | Returns Ο (3.14159β¦) | rArea := Pi * Sqr(r) |
Type Conversion Functions
| Function | Converts | Example |
|---|---|---|
StrToInt(s) | String β Integer | StrToInt('42') = 42 |
StrToFloat(s) | String β Real | StrToFloat('3.14') |
StrToIntDef(s, default) | String β Integer (safe β returns default if invalid) | StrToIntDef(edtNum.Text, 0) |
IntToStr(n) | Integer β String | IntToStr(42) = '42' |
FloatToStr(r) | Real β String | FloatToStr(3.14) |
FloatToStrF(r, fmt, digits, dec) | Formatted real β String | FloatToStrF(r, ffFixed, 6, 2) |
Ord(c) | Char β Integer (ASCII value) | Ord('A') = 65 |
Chr(n) | Integer β Char | Chr(65) = 'A' |
UpCase(c) | Single char to uppercase | UpCase('a') = 'A' |
IntToHex(n, digits) | Integer β Hex string | IntToHex(255,2) = 'FF' |
DateToStr(d) | TDate β String | DateToStr(Now) |
FormatFloat(fmt, r) | Real β formatted string | FormatFloat('#,##0.00', 1234.5) |
Past Paper Patterns & Tips
Paper 1 (Practical) β What Always Appears
| Section | What to expect | Common traps |
|---|---|---|
| Q1: General programming | Strings, loops, decisions, calculations (~30β40 marks) | Off-by-one errors in loops; forgetting to initialise variables |
| Q2: Arrays & files | 1D/2D arrays, text file reading/writing (~20β25 marks) | Using wrong index (0 vs 1-based); not closing file |
| Q3: OOP | Class with constructor, accessors, mutators, toString (~25β30 marks) | Calling Create on the object var (not class name); forgetting Result in functions |
| Q4: Database/SQL | TADOQuery, SQL statements including JOIN (~20β25 marks) | Not calling qry.Close before changing SQL; wrong JOIN ON condition |
| Recursion (Gr12) | Write a recursive function; trace it (~10β15 marks) | Missing base case; not returning Result |
Paper 2 (Theory) β What Always Appears
| Topic | Typical mark allocation | What examiners look for |
|---|---|---|
| Hardware & software | 15β20 marks | Specific advantages/disadvantages; real-world examples |
| Networks & internet | 20β25 marks | Correct terminology; topology advantages/disadvantages |
| Databases & normalisation | 20β30 marks | Correct normal form identification; proper primary/foreign key use |
| Social implications | 20β25 marks | Balance of positive AND negative effects; specific examples |
| Cybercrime | 10β15 marks (Gr12) | Correct crime type names; effects on both victim and business |
| Current technology (IoT, AI, VR) | 10β15 marks (Gr12) | Practical application examples; social implications |
General Exam Advice
- Read the question twice β "list" means bullet points, "explain" means a sentence or two
- Never leave a practical question blank β partial marks are awarded for correct structure
- In SQL: always check your WHERE condition matches the question's criteria exactly
- In OOP: write the constructor first β it sets up all the attributes you'll use elsewhere
- In theory: "advantage AND disadvantage" means you need both for full marks