Mock
hlayiso mock exams
Practice Series:
Grade 11 Exam Preparation
WWW.HLAYISO.COM
NATIONAL
SENIOR CERTIFICATE
GRADE 11
INFORMATION TECHNOLOGY P1
NOVEMBER EXAMINATION 2026 (MOCK)
MARKS: 150
TIME: 3 hours
This question paper consists of 24 pages.
Copyright reserved Please turn over
Skip to contentAll 2026 papers 





View all





Information Technology Grade 11 P1 November Mock 2026 QP
Grade 11 Information Technology Paper 1 question paper from the November Mock Exam 2026 (English), 24 pages. Read online or download the free PDF.
Information Technology · Grade 11 · November Mock Exam · 2026 · English. Question paper, 24 pages. Read online or download the PDF.
- Subject
- Information Technology
- Grade
- Grade 11
- Language
- English
- Document type
- Question paper
- Year
- 2026
- Exam period
- November Mock Exam
- Paper
- 1
- Publisher
- Hlayiso
- Curriculum
- CAPS
- Pages
- 24
- File size
- 202.5 KB
Free to read online, no sign-up needed
Loading document…
Loading document…
1 of 24
This exam
November Mock Exam 2026
- Paper 1Question paperMemo
- Paper 2Question paperMemo
Document textSearch extracted text and jump to a page.
Information Technology/P1 2 Hlayiso/Mock 2026
NSC Mock
INSTRUCTIONS AND INFORMATION
1. This question paper consists of FOUR questions. Candidates must answer ALL the
questions.
2. The duration of this examination is three hours. Because of the nature of this
examination, it is important to note that you will not be permitted to leave the
examination room before the end of the examination session.
3. This question paper is set with programming terms that are specific to the Delphi
programming language. The Delphi programming language must be used to answer
the questions.
4. Make sure that you answer the questions according to the specifications that are given
in each question. Marks will be awarded according to the set requirements.
5. Answer only what is asked in each question. For example, if the question does not ask
for data validation, then no marks will be awarded for data validation.
6. Your programs must be coded in such a way that they will work with any data and not
just the sample data supplied or any data extracts that appear in the question paper.
7. Routines, such as search, sort and selection, must be developed from first principles.
You may NOT use the built-in features of the Delphi programming language for any of
these routines, for example Locate, Filter, Sort, RecordCount or CharInSet.
8. All data structures must be defined by you, the programmer, unless the data structures
are supplied.
9. You must save your work regularly on the disk space allocated to you for this
examination session.
10. Make sure that your examination number appears as a comment in every program that
you code, as well as on every event indicated.
11. If required, print the programming code of all the programs that you completed. Your
examination number must appear on all printouts.
Copyright reserved Please turn over
Information Technology/P1 3 Hlayiso/Mock 2026
NSC Mock
12. The files that you need to complete this question paper have been provided to you on
the disk space allocated to you, in a folder called DataNov2026.
Once copied, the following list of files will be available in the folder DataNov2026:
Question 1: Question 3:
Question1_P.dpr dbConnection_U.pas
Question1_P.dproj Question3_P.dpr
Question1_U.dfm Question3_P.dproj
Question1_U.pas Question3_U.dfm
Question3_U.pas
TrailsDB.mdb
TrailsDB - Copy.mdb
Question 2: Question 4:
Question2_P.dpr Question4_P.dpr
Question2_P.dproj Question4_P.dproj
Question2_U.dfm Question4_U.dfm
Question2_U.pas Question4_U.pas
Recycling.txt
Copyright reserved Please turn over
Information Technology/P1 4 Hlayiso/Mock 2026
NSC Mock
QUESTION 1: GENERAL PROGRAMMING SKILLS
The organisers of the Run Jozi fun run need a program to help runners plan for the race and
to calculate entry fees.
Do the following:
• Open the incomplete program in the Question 1 folder.
• Enter your examination number as a comment in the first line of the Question1_U.pas file.
• Compile and execute the program. The program has no functionality currently.
Example of the graphical user interface (GUI):
Question 1 - General programming skills – □ ×
1.1 1.4
1.1 - Format panel Welcome Full name:
Date of birth:
1.2
1.4 - Race number
Distance (km): 1.2 - Pace
Time (min / s): 0 0
1.5
Distance (km): 1.5 - Water tables
1.3
Race
5 km - R80 Age: 18
10 km - R120
21.1 km - R220 Club member
1.3 - Entry fee
• Complete the code for each section of QUESTION 1, as described in QUESTION 1.1 to
QUESTION 1.5 below.
Copyright reserved Please turn over
Information Technology/P1 5 Hlayiso/Mock 2026
NSC Mock
1.1 Button [1.1 - Format panel]
Write code to change the properties of the panel pnlQ1_1 as follows:
• Display the text ’Run Jozi 2026’ on the panel.
• Change the colour of the panel to yellow (clYellow).
• Change the font size of the panel to 16.
• Change the font style of the panel to bold.
Example of output:
1.1 - Format panel Run Jozi 2026
(4)
1.2 Button [1.2 - Pace]
Runners want to know their pace, which is the average time that they take to
run one kilometre, and their average speed.
The user enters the distance of a run in kilometres in the edit box
edtQ1_2_Dist, and the time taken in minutes and seconds in the spin edits
spnQ1_2_Min and spnQ1_2_Sec.
Write code to do the following:
• Extract the distance and the time from the components and calculate the
total time in seconds.
• Calculate the pace in seconds per km, rounded to the nearest whole
number of seconds.
• Use the DIV and MOD operators to display the pace as minutes and
seconds in the label lblQ1_2_Pace in the following format:
Pace: <minutes> min <seconds> s per km
• Calculate the average speed in km/h using the formula: speed = distance
÷ (total seconds ÷ 3 600)
• Display the average speed, formatted to TWO decimal places, in the label
lblQ1_2_Speed in the following format:
Average speed: <speed> km/h
Copyright reserved Please turn over
Information Technology/P1 6 Hlayiso/Mock 2026
NSC Mock
Example of input and output if a distance of 10 km was run in 52 minutes and 30
seconds:
1.2
Distance (km): 10 1.2 - Pace
Time (min / s): 52 30
Pace: 5 min 15 s per km
Average speed: 11.43 km/h
Example of input and output if a distance of 21.1 km was run in 125 minutes and 0
seconds:
1.2
Distance (km): 21.1 1.2 - Pace
Time (min / s): 125 0
Pace: 5 min 55 s per km
Average speed: 10.13 km/h
(8)
Copyright reserved Please turn over
Information Technology/P1 7 Hlayiso/Mock 2026
NSC Mock
1.3 Button [1.3 - Entry fee]
The entry fee depends on the race that is selected in the radio group rgpQ1_3:
Race Entry fee
5 km R80.00
10 km R120.00
21.1 km R220.00
• Runners who are 65 years or older may enter ANY race for free.
• Members of a running club receive a 15% discount on the entry fee.
Write code to do the following:
• Use the item selected in the radio group rgpQ1_3 to determine the entry
fee. If no race has been selected, display a suitable message and exit the
procedure.
• Extract the age of the runner from the spin edit spnQ1_3_Age.
• If the runner is 65 years or older, display the text ’Entry fee: FREE’ in the
label lblQ1_3.
• Otherwise, apply the discount if the check box chkQ1_3 has been ticked,
and display the entry fee in the label lblQ1_3 with the text ’Entry fee: ’, in
currency format with a rand sign and TWO decimal places.
Example of input and output for a 34-year-old club member who enters the 10 km race:
1.3
Race
5 km - R80 Age: 34
10 km - R120
21.1 km - R220 ✓ Club member
1.3 - Entry fee
Entry fee: R 102.00
Example of input and output for a 67-year-old club member who enters the 5 km race:
1.3
Race
5 km - R80 Age: 67
10 km - R120
21.1 km - R220 ✓ Club member
1.3 - Entry fee
Entry fee: FREE
(8)
Copyright reserved Please turn over
Information Technology/P1 8 Hlayiso/Mock 2026
NSC Mock
1.4 Button [1.4 - Race number]
Each runner receives a unique race number. The user enters the full name
of the runner (first name and surname, separated by ONE space) in the
edit box edtQ1_4_Name and the date of birth of the runner in the format
YYYY/MM/DD in the edit box edtQ1_4_DOB.
Write code to do the following:
• Extract the full name and the date of birth from the edit boxes.
• If the full name does NOT contain a space, display the message ’Enter a
first name and a surname’ and exit the procedure.
• Separate the first name and the surname.
• Create a race number consisting of the following parts:
o The first letter of the first name
o The first THREE letters of the surname
o The last TWO digits of the year of birth
o A hyphen (’-’)
o A random number from 100 to 999 (both included)
All the letters in the race number must be in upper case.
• Display the race number in the label lblQ1_4 in the following format:
Race number: <race number>
Example of input and output if ’Thandiwe Mokoena’ and ’2009/05/14’ were
entered:
1.4
Full name: Thandiwe Mokoena
Date of birth: 2009/05/14
1.4 - Race number
Race number: TMOK09-262
NOTE: The last three digits may differ due to the nature of random numbers.
(11)
Copyright reserved Please turn over
Information Technology/P1 9 Hlayiso/Mock 2026
NSC Mock
1.5 Button [1.5 - Water tables]
Water tables are placed along a race route every 2.5 km, starting at the 2.5
km mark. No water table is placed at the finish line or after the finish line. A
constant GAP = 2.5 has been provided.
Code has been provided to clear the memo memQ1_5.
Write code to do the following:
• Extract the total distance of the route in kilometres from the edit box
edtQ1_5.
• Use a conditional loop to determine the position of each water table.
Display the number of the water table and its position, formatted to ONE
decimal place, in the memo memQ1_5 in the following format:
Water table <number>: <position> km
• After the loop, display the total number of water tables in the format:
Number of water tables: <number>
Example of input and output for a route of 21.1 km:
1.5
Distance (km): 21.1 1.5 - Water tables
Water table 1: 2.5 km
Water table 2: 5.0 km
Water table 3: 7.5 km
Water table 4: 10.0 km
Water table 5: 12.5 km
Water table 6: 15.0 km
Water table 7: 17.5 km
Water table 8: 20.0 km
Number of water tables: 8
(9)
• Enter your examination number as a comment in the first line of the program file.
• Save your program.
• A printout of the code may be required.
[40]
Copyright reserved Please turn over
Information Technology/P1 10 Hlayiso/Mock 2026
NSC Mock
QUESTION 2: ARRAYS AND TEXT FILES
Learners in Grade 11 at Kgotso Secondary School collected plastic for a recycling drive. The
mass of plastic that each learner collected, in kilograms, was recorded in a text file.
Do the following:
• Open the incomplete program in the Question 2 folder.
• Enter your examination number as a comment in the first line of the Question2_U.pas file.
• Compile and execute the program. The program has no functionality currently.
Example of the graphical user interface (GUI):
Question 2 - Arrays and text files – □ ×
Options
2.1 - Load data
2.2 - Display
Class: Select a class
2.3 - Class report
2.4 - Top five
2.5 - Certificates
Copyright reserved Please turn over
Information Technology/P1 11 Hlayiso/Mock 2026
NSC Mock
The text file called Recycling.txt contains the name of each learner, the class of the learner
and the mass of plastic that the learner collected in kilograms. The format of each line in the
text file is as follows:
<name of learner>;<class>;<kilograms>
Example of the first five lines in the text file:
Lerato Molefe;11B;14.5
Sipho Ndlovu;11A;9.0
Ayesha Khan;11C;21.5
Pieter van Wyk;11D;6.5
Nomvula Zulu;11A;17.0
The following global arrays and counter variable have been declared:
arrNames: array [1 .. 50] of String;
arrClasses: array [1 .. 50] of String;
arrKg: array [1 .. 50] of Real;
iCount: Integer;
Complete the code for each section of QUESTION 2, as described in QUESTION 2.1 to
QUESTION 2.5 below.
2.1 Button [2.1 - Load data]
A text file variable tFile has been declared.
Write code to do the following:
• Test whether the text file Recycling.txt exists. If the file does not exist,
display a suitable message and exit the procedure.
• Assign the text file to the variable tFile and prepare the file for reading.
• Read each line in the text file. Extract the name, the class and the
kilograms and store them in the parallel arrays arrNames, arrClasses
and arrKg. Use the variable iCount to keep track of the number of learners
stored in the arrays.
• Close the text file and display the number of learners in the label lblQ2_1
in the format:
Number of learners: <number>
Example of output:
2.1 - Load data
Number of learners: 24
(12)
Copyright reserved Please turn over
Information Technology/P1 12 Hlayiso/Mock 2026
NSC Mock
2.2 Button [2.2 - Display]
Code has been provided to clear the rich edit redQ2, to set tab stops and to
display the headings.
Write code to do the following:
• Display the name, the class and the kilograms of each learner in the rich
edit redQ2 in neat columns. The kilograms must be formatted to ONE
decimal place.
• Calculate the total number of kilograms collected by all the learners.
• Display the total number of kilograms and the average number of
kilograms per learner, both formatted to ONE decimal place, as shown
below.
NOTE: QUESTION 2.1 must be completed before QUESTION 2.2 can be
tested.
Example of output (the middle part of the output has been omitted):
Name Class Kg
Lerato Molefe 11B 14.5
Sipho Ndlovu 11A 9.0
Ayesha Khan 11C 21.5
...
Fatima Essop 11C 11.0
Andile Mthembu 11D 14.0
Total collected: 306.5 kg
Average per learner: 12.8 kg
(7)
Copyright reserved Please turn over
Information Technology/P1 13 Hlayiso/Mock 2026
NSC Mock
2.3 Button [2.3 - Class report]
The user selects a class from the combo box cmbQ2_3. Code has been
provided to clear the rich edit redQ2.
Write code to do the following:
• If no class has been selected, display a suitable message and exit the
procedure.
• Use the arrays to determine, for the selected class:
o the number of learners in the class;
o the total number of kilograms collected by the class;
o the name of the learner in the class who collected the most kilograms,
and the number of kilograms collected by that learner.
• Display the information in the rich edit redQ2 as shown in the example
below.
Example of output if class 11B was selected:
Class 11B
Number of learners: 6
Total collected: 84.5 kg
Top recycler: Johan Botha (19.5 kg)
(8)
Copyright reserved Please turn over
Information Technology/P1 14 Hlayiso/Mock 2026
NSC Mock
2.4 Button [2.4 - Top five]
Code has been provided to clear the rich edit redQ2 and to display a heading.
Write code to do the following:
• Sort the parallel arrays from the highest number of kilograms to the lowest
number of kilograms.
• Display the position, name, class and kilograms of the FIVE learners who
collected the most plastic in the rich edit redQ2, as shown in the example
below.
Example of output:
TOP FIVE RECYCLERS
1. Musa Khumalo (11D) - 23.0 kg
2. Ayesha Khan (11C) - 21.5 kg
3. Palesa Radebe (11A) - 20.0 kg
4. Johan Botha (11B) - 19.5 kg
5. Sibusiso Ngcobo (11B) - 18.0 kg
(8)
2.5 Button [2.5 - Certificates]
Learners who collected 15 kg or more of plastic will receive a certificate.
Write code to do the following:
• Create a new text file called Certificates.txt.
• Write the details of each learner who collected 15 kg or more to the text
file, one learner per line, in the following format:
<name> (<class>) - <kilograms> kg
The kilograms must be formatted to ONE decimal place.
• Close the text file and display a message that indicates how many
certificates were written to the file.
Example of the first three lines in the text file Certificates.txt if the arrays
were NOT sorted:
Ayesha Khan (11C) - 21.5 kg
Nomvula Zulu (11A) - 17.0 kg
Kayla Pillay (11D) - 15.0 kg
Example of the message:
9 certificates have been written to the file
NOTE: The order of the lines in the text file will differ if QUESTION 2.4 was
executed first. (5)
• Enter your examination number as a comment in the first line of the program file.
• Save your program.
• A printout of the code may be required.
[40]
Copyright reserved Please turn over
Information Technology/P1 15 Hlayiso/Mock 2026
NSC Mock
QUESTION 3: DATABASE PROGRAMMING
A hiking club keeps information about popular hiking trails in South Africa in a database
called TrailsDB.mdb. The database contains ONE table called tblTrails.
The design of the table tblTrails is as follows:
Field name Data type Description
TrailID (PK) AutoNumber A unique number that identifies a trail
TrailName Text (30) The name of the trail
Province Text (15) The province in which the trail is located
Distance Number The length of the trail in km
Difficulty Text (10) The difficulty level of the trail (Easy, Moderate or Hard)
DogFriendly Yes/No True if dogs are allowed on the trail, otherwise False
EntryFee Currency The entry fee per person to hike the trail
Rating Number The average rating of the trail by hikers, from 1.0 to 5.0
(0 if the trail has not been rated yet)
Example of the first ten records in the table tblTrails:
TrailID TrailName Province Distance Difficulty DogFriendly EntryFee Rating
1 Amphitheatre Trail KwaZulu-Natal 12.5 Hard False R110.00 4.8
2 Kloofendal Ridge Gauteng 4.2 Easy True R40.00 3.6
3 Lion's Head Path Western Cape 5.5 Moderate True R0.00 4.6
4 Otter Coastal Walk Eastern Cape 8.0 Moderate False R95.00 4.4
5 Magaliesberg Loop North West 14.0 Hard True R60.00 3.9
6 Suikerbosrand Day Hike Gauteng 10.0 Moderate False R70.00 4.1
7 Blyde River Rim Mpumalanga 6.8 Moderate True R85.00 4.7
8 Klipriviersberg Circuit Gauteng 7.5 Easy True R0.00 2.3
9 Platteklip Gorge Western Cape 3.0 Hard True R0.00 4.2
10 Mount Sheba Forest Mpumalanga 5.0 Easy False R50.00 3.5
NOTE:
• Connection code has been provided in the unit dbConnection_U.pas. Do NOT change
any of the code provided.
• The table is accessed through the TADOTable object called tblTrails, which has been
declared as a global variable.
• The ’Restore database’ button restores the data in the database to the original content.
• Do NOT open the database in Microsoft Access during the examination.
• Use ONLY Delphi programming code to answer QUESTION 3. NO marks will be awarded
for SQL statements.
• Do NOT use the Locate, Filter, Sort or RecordCount methods/properties.
Copyright reserved Please turn over
Information Technology/P1 16 Hlayiso/Mock 2026
NSC Mock
Do the following:
• Open the incomplete program in the Question 3 folder.
• Enter your examination number as a comment in the first line of the Question3_U.pas file.
• Compile and execute the program. The program has limited functionality currently. The
records of the table are displayed when the program is executed.
Example of the graphical user interface (GUI):
Question 3 - Database programming – □ ×
tblTrails
TrailID TrailName Province Distance Difficulty DogFriendly EntryFee Rating
1 Amphitheatre Trail KwaZulu-Natal 12.5 Hard False R110.00 4.8
2 Kloofendal Ridge Gauteng 4.2 Easy True R40.00 3.6
3 Lion's Head Path Western Cape 5.5 Moderate True R0.00 4.6
4 Otter Coastal Walk Eastern Cape 8.0 Moderate False R95.00 4.4
5 Magaliesberg Loop North West 14.0 Hard True R60.00 3.9
6 Suikerbosrand Day Hike Gauteng 10.0 Moderate False R70.00 4.1
7 Blyde River Rim Mpumalanga 6.8 Moderate True R85.00 4.7
8 Klipriviersberg Circuit Gauteng 7.5 Easy True R0.00 2.3
9 Platteklip Gorge Western Cape 3.0 Hard True R0.00 4.2
10 Mount Sheba Forest Mpumalanga 5.0 Easy False R50.00 3.5
11 Golden Gate Ribbok Free State 9.5 Hard False R120.00 4.5
12 Hogsback Waterfalls Eastern Cape 4.5 Easy True R30.00 3.8
3.1 3.4
Select a province Trail name:
3.1 - Province trails Province: Select a province
Distance (km):
3.2 / 3.3 / 3.5
Difficulty
Easy Dog friendly
3.2 - Statistics
Moderate
Hard
3.3 - Fee increase
Entry fee (R): 0
3.5 - Remove trail
3.4 - Add trail
Restore database Close
Complete the code for each section of QUESTION 3, as described in QUESTION 3.1 to
QUESTION 3.5 below.
Copyright reserved Please turn over
Information Technology/P1 17 Hlayiso/Mock 2026
NSC Mock
3.1 Button [3.1 - Province trails]
The user selects a province from the combo box cmbQ3_1. Code has been
provided to clear the rich edit redQ3, to store the selected province in the
variable sProvince and to display a heading.
Write code to do the following:
• Display the name and the distance of each trail in the selected province
in the rich edit redQ3. The distance must be formatted to ONE decimal
place.
• After all the records have been processed, display the number of trails
found. If no trails were found in the selected province, display the message
’No trails found’ instead.
Example of output if ’Gauteng’ was selected:
Trails in Gauteng:
Kloofendal Ridge - 4.2 km
Suikerbosrand Day Hike - 10.0 km
Klipriviersberg Circuit - 7.5 km
Melville Koppies Walk - 3.2 km
Cradle Hominid Walk - 6.0 km
Number of trails: 5
(7)
Copyright reserved Please turn over
Information Technology/P1 18 Hlayiso/Mock 2026
NSC Mock
3.2 Button [3.2 - Statistics]
Code has been provided to clear the rich edit redQ3.
Write code to determine and display the following information in the rich edit
redQ3:
• The name and the distance of the longest trail, with the distance formatted
to ONE decimal place
• The number of trails that are dog-friendly
• The average rating of all the trails, formatted to TWO decimal places
Example of output for the original data in the database:
Longest trail: Cederberg Wolfberg Arch (16.0 km)
Dog-friendly trails: 10
Average rating: 3.90
(9)
3.3 Button [3.3 - Fee increase]
The entry fees of all the trails with the difficulty level ’Hard’ must be increased
by 10%.
Code has been provided to clear the rich edit redQ3.
Write code to do the following:
• Increase the entry fee of each ’Hard’ trail by 10% and save the change in
the table.
• Display the name of each updated trail and its new entry fee, in currency
format, in the rich edit redQ3.
• Display the number of entry fees that were updated.
Example of output for the original data in the database:
Amphitheatre Trail: R 121.00
Magaliesberg Loop: R 66.00
Platteklip Gorge: R 0.00
Golden Gate Ribbok: R 132.00
Cederberg Wolfberg Arch: R 165.00
Tsitsikamma Waterfall: R 143.00
6 entry fees updated
(7)
Copyright reserved Please turn over
Information Technology/P1 19 Hlayiso/Mock 2026
NSC Mock
3.4 Button [3.4 - Add trail]
The details of a new trail must be added to the table. The user must enter
the information of the new trail in the components in group box grpQ3_4, as
shown below.
Write code to do the following:
• If the edit box edtQ3_4_Name is empty, OR no province has been selected
in the combo box cmbQ3_4, OR no difficulty level has been selected in the
radio group rgpQ3_4, display a suitable message and exit the procedure.
• Add a new record to the table tblTrails using the following:
o The name of the trail from the edit box edtQ3_4_Name
o The province selected in the combo box cmbQ3_4
o The distance from the edit box edtQ3_4_Dist
o The difficulty level selected in the radio group rgpQ3_4
o Whether the trail is dog-friendly from the check box chkQ3_4
o The entry fee from the spin edit spnQ3_4
o A rating of 0, because the trail has not been rated yet
• Display a message to confirm that the trail has been added.
NOTE: The TrailID field is an AutoNumber field and will be generated
automatically.
Example of input:
3.4
Trail name: Kosi Bay Lakes Walk
Province: KwaZulu-Natal
Distance (km): 7.2
Difficulty
Easy Dog friendly
Moderate
Hard
Entry fee (R): 65
3.4 - Add trail
Example of the new record at the end of the table:
TrailID TrailName Province Distance Difficulty DogFriendly EntryFee Rating
21 Kosi Bay Lakes Walk KwaZulu-Natal 7.2 Easy False R65.00 0.0
(9)
Copyright reserved Please turn over
Information Technology/P1 20 Hlayiso/Mock 2026
NSC Mock
3.5 Button [3.5 - Remove trail]
Write code to do the following:
• Use an input box to ask the user for the name of a trail that must be
removed.
• Search for the trail in the table tblTrails. The search must NOT be case
sensitive and must stop as soon as the trail is found.
• If the trail is found, ask the user to confirm the removal using a confirmation
dialog box (MessageDlg). If the user clicks ’Yes’, delete the record and
display a message that the trail has been removed.
• If the trail is not found, display the message ’Trail not found’.
Example of the confirmation dialog box if ’melville koppies walk’ was entered:
Confirm
? Are you sure you want to remove Melville Koppies Walk?
Yes No
(8)
• Enter your examination number as a comment in the first line of the program file.
• Save your program.
• A printout of the code may be required.
[40]
Copyright reserved Please turn over
Information Technology/P1 21 Hlayiso/Mock 2026
NSC Mock
QUESTION 4: PROBLEM SOLVING
A cellphone network provider registers new SIM cards using the 13-digit South African identity
(ID) number of the customer. Customers who register are entered into a lucky draw.
Do the following:
• Open the incomplete program in the Question 4 folder.
• Enter your examination number as a comment in the first line of the Question4_U.pas file.
• Compile and execute the program. The program has no functionality currently.
Example of the graphical user interface (GUI):
Question 4 - Problem solving – □ ×
Options
ID number:
4.1 - ID details
4.2 - Check digit
4.3 - Lucky draw
A South African ID number has the format YYMMDDSSSSCAZ, where:
Digits Meaning
1 to 6 (YYMMDD) The date of birth: year (YY), month (MM) and day (DD)
7 to 10 (SSSS) Gender: 0000 to 4999 for females and 5000 to 9999 for
males
11 (C) Citizenship: 0 for a South African citizen and 1 for a
permanent resident
12 (A) Usually 8
13 (Z) A check digit that is used to test whether the ID number is
valid
Copyright reserved Please turn over
Information Technology/P1 22 Hlayiso/Mock 2026
NSC Mock
4.1 Button [4.1 - ID details]
The ID number is entered in the edit box edtQ4_ID. Code has been provided
to clear the memo memQ4 and to store the ID number in the variable sID. A
constant array arrMonths that contains the names of the twelve months has
also been provided:
arrMonths: array [1 .. 12] of String = ('January',
'February', 'March', ... , 'December');
Write code to do the following:
• Validate the ID number. The ID number is valid if it consists of exactly 13
characters and ALL the characters are digits. If the ID number is not valid,
display a suitable message and exit the procedure.
• Determine the year of birth: if the first two digits (YY) form a number greater
than 26, the year of birth is 19YY, otherwise it is 20YY.
• Display the following information in the memo memQ4, as shown in the
examples below:
o The ID number
o The date of birth in the format <day> <name of month> <year>,
for example 15 March 2008
o The gender of the person (Male/Female)
o The citizenship of the person (South African citizen/Permanent
resident)
Example of output if the ID number 0803150247085 was entered:
ID number: 0803150247085
Date of birth: 15 March 2008
Gender: Female
Citizenship: South African citizen
Example of output if the ID number 9711235689182 was entered:
ID number: 9711235689182
Date of birth: 23 November 1997
Gender: Male
Citizenship: Permanent resident
(11)
Copyright reserved Please turn over
Information Technology/P1 23 Hlayiso/Mock 2026
NSC Mock
4.2 Button [4.2 - Check digit]
The last digit of an ID number is a check digit. It is calculated from the first 12
digits as follows:
• Each digit in an ODD position (1, 3, 5, 7, 9 and 11) is added to a total.
• Each digit in an EVEN position (2, 4, 6, 8, 10 and 12) is multiplied by 2.
If the result is greater than 9, subtract 9 from the result. The result is then
added to the total.
• The check digit = (10 − (total MOD 10)) MOD 10
Example for the ID number 0803150247085:
Position 1 2 3 4 5 6 7 8 9 10 11 12
Digit 0 8 0 3 1 5 0 2 4 7 0 8
Value added 0 7 0 6 1 1 0 4 4 5 0 7
Total = 35; check digit = (10 − 5) MOD 10 = 5, which is equal to the last digit
of the ID number.
Do the following:
• Write a user-defined function called calcCheckDigit that receives an ID
number as a string parameter and returns the check digit, calculated from
the first 12 digits, as an integer.
• Complete the code for the button Button [4.2 - Check digit]: Call the
function calcCheckDigit with the ID number entered in the edit box
edtQ4_ID as argument. Compare the value returned with the last digit
of the ID number and display one of the following messages in the memo
memQ4:
The check digit is correct
OR
The check digit is incorrect - it should be <digit>
NOTE: Assume that the ID number consists of 13 digits.
Example of output if the ID number 0803150247085 was entered:
The check digit is correct
Example of output if the ID number 0507097131087 was entered:
The check digit is incorrect - it should be 4
(10)
Copyright reserved Please turn over
Information Technology/P1 24 Hlayiso/Mock 2026
NSC Mock
4.3 Button [4.3 - Lucky draw]
Six lucky draw numbers must be generated. A global array arrDraw has been
declared to store the numbers:
arrDraw: array [1 .. 6] of Integer;
Code has been provided to clear the memo memQ4.
Write code to do the following:
• Generate SIX random numbers from 1 to 49 (both included) and store them
in the array arrDraw. The same number may NOT appear more than once
in the array.
• Sort the numbers in the array from the smallest to the largest.
• Display the sorted numbers in the memo memQ4 on ONE line, as shown
in the example below.
Example of output:
Lucky draw numbers:
3 11 18 41 43 46
NOTE: The numbers may differ due to the nature of random numbers.
(9)
• Enter your examination number as a comment in the first line of the program file.
• Save your program.
• A printout of the code may be required.
[30]
TOTAL: 150
Copyright reserved
Study this subject
Recommended for this subject

Question paper
Information Technology Grade 11 P1 2020 QP (Eng)

Question paper
Information Technology Grade 11 P1 2020 QP (Eng)

Question paper
Information Technology Grade 11 P1 2017 QP (Eng)

Memorandum
Information Technology Grade 11 P1 2020 Memo (Eng)

Memorandum
Information Technology Grade 11 P1 2020 Memo (Eng)

Memorandum
Information Technology Grade 11 P1 2020 Memo (Eng)
More from Grade 11 Information Technology

Annual teaching plan
Gr 11 Info Tech ATP 2023 24

Memorandum
Information Technology Grade 11 P1 2022 Memo (Eng)

Memorandum
Information Technology Grade 11 P1 2022 Memo (Afr)

Question paper and memo
Information Technology Grade 11 2021 QP & Memo

Memorandum
Information Technology Grade 11 P2 2020 Memo (Afr)

Memorandum