INFORMATION TECHNOLOGY
PAPER 1
GRADE 12 
NSC PAST PAPERS AND MEMOS
FEBRUARY/MARCH 2017

GENERAL INFORMATION: 

  • These marking guidelines are to be used as the basis for the marking session. 
  • They were prepared for use by markers.
  • All markers are required to attend a  rigorous standardisation meeting to ensure that the guidelines are consistently  interpreted and applied in the marking of candidates' work. 
  • Note that learners who provide an alternate correct solution to that given as  example of a solution in the marking guidelines will be given full credit for the  relevant solution, unless the specific instructions in the paper were not followed  or the requirements of the question were not met. 
  • Annexures A, B and C (pages 3–9) include the marking grid for each question  for using either one of the two programming languages.  
  • Annexures D, E and F (pages 10–17) contain examples of solutions for Java  for QUESTION 1 to QUESTION 3 in programming code. 
  • Annexures G, H and I (pages 18–29) contain examples of solutions for Delphi  for QUESTION 1 to QUESTION 3 in programming code. 
  • Copies of Annexures A, B and C (pages 3-9) should be made for each learner  and completed during the marking session.

MEMORANDUM 

ANNEXURE A:  
SECTION A: 
QUESTION 1: MARKING GRID- GENERAL PROGRAMMING SKILLS

CENTRE NUMBER: 

EXAMINATION NUMBER: 

QUESTION 

DESCRIPTION 

MAX.  

MARKS

LEARNER'S  MARKS

 

A learner must be penalised only once if the same error is  repeated.

   

1.1 

Button - [Question 1_1] 

Extract name and surname from textbox✔ 
Check if space is included in name surname string✔
If no space included✔ 
 Display message indicating no space included ✔ 

Extract ID number✔ 
If ID number textbox is empty✔ 
Display message indicating the textbox is empty✔
If ID number string does not consist of 13 digits✔ 
Display message indicating 13 digits was not entered✔ 

If nameSurname string includes a space✔ AND ID number is  not empty✔ AND ID number has 13 digits ✔ 
(Both conditions tested with AND)✔ 
Set Welcome message to visible✔

14

 

1.2 

Buttons with Icons showing type of Loyalty card 
Button Discount: 
Set global value to DI ✔ 
Change Discount heading to bold ✔ and Charity heading to  not bold ✔ 
Button Charity: 
Set global value to CH ✔ 
Change Charity heading to bold ✔ and Discount heading to  not bold ✔ 
NOTE: One mark for an attempt to bold the text on button 
One mark for an attempt to remove bold from the text  on button

6

 

1.3 

Button - [Question 1_3] 
Extract purchase amount from text box ✔and convert to real value ✔ 
Use type of card code to test (Case/Switch or If): 
If 'DI' ✔ 
Calculate discount at 1.5% ✔ of amount ✔ 
Compile message ✔ amount displayed as currency ✔ with 2 decimal places ✔ 
If 'CH' ✔ 
Calculate number of R100's✔ * 3 ✔ 
Making provision for part of R100 ✔ 
Compile message ✔including the amount✔ 
Display message in text box ✔

    15

LEARNER'S  MARKS 

1.4 

Button - [Question 1_4] 
Part 1: 

Assign a default character P to variable ✔ 
If Business card checked ✔ then assign B to variable ✔
Extract first 3 digits from ID number ✔and add to content of  variable ✔ 

Part 2: 
Extract the last digit of the ID number ✔✔ 
Convert to integer ✔ 
Find the character at the integer position in given string ✔ Join the character to digit ✔
Display compiles strings in text boxes: 

Part 1 ✔ 
Part 2 ✔ 
Part 3 (DI/CH) ✔

13

 
 

TOTAL: 

48

 

ANNEXURE B:  
SECTION B 
QUESTION 2: MARKING GRID - OBJECT-ORIENTED PROGRAMMING

CENTRE NUMBER: 

EXAMINATION NUMBER: 

QUESTION 

DESCRIPTION 

MAX.  MARKS

LEARNER'S  MARKS

2.1.1 

Constructor: 
Definition with three correct parameters ✔ and correct data  types✔ 
Assign parameter values to card number, cellphone number  and loyalty points ✔
Initialise number of visits to 0 ✔ 
Initialise healthLevel attribute to S ✔

5

 

2.1.2 

Mutator method: 
setNumVisits method with parameter✔ no return ✔

2

 

2.1.3 

increaseLoyaltyPoints method: 
Method definition receiving total amount as parameter as real  value✔ 
Determine loyalty points earned: 
Change total to integer (without rounding ✔ – full rands) ✔ Divide by 4✔ 
Add calculated points to loyalty points attribute✔

5

 

2.1.4 

updateHealthLevel method: 
Method definition receiving health amount and total amount as parameters✔ 
Calculate percentage ✔ 
If percentage is less than 10✔ 
Assign 'S' to healthLevel-attribute ✔ 
If percentage is 10 or more and less than 40✔ 
Assign 'G' to healthLevel-attribute ✔ 
If percentage is 40 or more 
Assign 'P'' to healthLevel-attribute ✔

7

 

2.1.5 

isCorrect method: (Method definition provided) 

Loop through the digits in the ID number ✔ 

remove the 0 digits ✔ from the string 

Initialise variable for sum✔ 

If even number of digits left in string ✔ 

Loop correct number of times ✔ 

Add values with 2 digits to sum variable from left hand  side of string ✔ 

If odd number of digits left in string ✔ 

Add first left hand side digit from string as a one digit  value to sum✔ 

Loop correct number of times ✔ 

Add two-digits values to sum variable ✔ 

If sum is equal to access code parameter ✔ 

return true✔ 

else  

return false✔

13

LEARNER'S  MARKS 

2.1.6 

identifyStarShopper method: 

Empty string variable - if not Star shopper ✔ 

If (loyalty points > 2000✔ AND number of visits > 10)✔ OR✔  (healthLevel is 'P') ✔ 

Set variable to string 'STAR shopper'✔ 

Return string variable

6

 

QUESTION 2: MARKING GRID – continued

2.2.1 

Button – [2.2.1 – Check access code] 

Extract the card number from the combo box✔ 

Extract cellphone number from label ✔ 

Extract access code from text box ✔ 

Extract loyalty points from label and convert to integer✔ Instantiate object ✔ 

sending correct arguments in correct order✔ (6) 

If access code is correct 

Test if access code is correct ✔ using isCorrect method ✔ Read text file and process data 

{Delphi: AssignFile, Reset and CloseFile  

Java: Create object to read from file} ✔ 

Initialise variables for counters and sum ✔ 

Loop through file ✔ 

Read card number ✔ 

Read total amount spent and convert to double data type ✔ 

Read health amount spent and convert to double ✔ Test if it is correct card number ✔ 

Add total amount to sumTotal ✔ 

Add health amount to sumHealth ✔ 

Increment counter ✔ 

Call setVisits method ✔ 

Call increaseLoyaltyPoints method – 

send sumTotal as argument ✔ 

Call updateHealthLevel method – 

send sumTotal and sumHealth as arguments ✔ 

end loop 

Enable button for Q2.2.2 ✔ 

If access code is NOT correct 

Display message indicating that access code was incorrect ✔ Clear the access code text box ✔ (18)

24

 LEARNER'S  MARKS

2.2.2 

Button – [2.2.2 - Display card holder details] 

Display object details using toString ✔ in the output area ✔ Display shopper status using identifyStarShopper method ✔

3

 
 

TOTAL: 

65

 

ANNEXURE C:  
SECTION C 
QUESTION 3: MARKING GRID – PROBLEM SOLVING

CENTRE NUMBER: 

EXAMINATION NUMBER: 

QUESTION 

DESCRIPTION 

MAX.  

MARKS

LEARNER'S  MARKS

3.1 

Button [3.1 – Display layout] 

Outer loop for rows ✔ 

Inner loop for columns ✔ 

Display symbol from two dimensional array ✔ 

In row ✔ and in column ✔

5

 

3.2 

Combo box – Select Restaurants 

Extract shop as character from combo box ✔ 

Initialise variables for position (row and column ✔) Loop through the rows ✔ 

If the shop is within characters A-E (to the left)✔ Set col for shop to 0 (first column) ✔ 

Set col for friend to 1 (second column) ✔ 

If the shop is within characters F-J (to the right) ✔ Set col for shop to last col of arrMall ✔ 

Set col for friend to one less than col for shop ✔ Test if character at current position in array ✔ equals  selected shop's character ✔ 

Replace X with # ✔ 

Update display ✔ 

End loop

13

 

3.3 

Button [3.3 - Locate nearest friend(s)] 

Initialise nearest distance to a large value✔ 

Outer loop for rows ✔ 

Inner loop for columns/if for right hand side ✔ 

If character at position is # ✔ 

Determine difference in row positions ✔ as  

positive value ✔ 

Determine difference in column positions✔ as  positive value ✔ 

Calculate newDistance ✔ 

If friend is in A-E or display shop name ✔ 

If friend is in F-J ✔ display shop name ✔ 

If newDistance < = nearest distance ✔ 

Add shop name to output message ✔ 

Replace nearest with newDistance ✔ 

Displayshop name ✔ and distance * 4.5 ✔ 

Display output message indicating nearest friends ✔

19

 
 

TOTAL: 

37

 

SUMMARY OF LEARNER'S MARKS:

CENTRE NUMBER: 

 

EXAMINATION NUMBER: 

 

SECTION A 

SECTION B 

SECTION C

 
 

QUESTION 1 

QUESTION 2 

QUESTION 3 

GRAND  

TOTAL

MAX. MARKS 

48 

65 

37 

150

LEARNER'S MARKS

       

1
2
3
4
5
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

Last modified on Wednesday, 07 July 2021 06:41