INFORMATION TECHNOLOGY PAPER 1 GRADE 12 NSC EXAMS PAST PAPERS AND MEMOS NOVEMBER 2018
GENERAL INFORMATION:
These marking guidelines must 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 question paper were not followed or the requirements of the question were not met.
Annexures A, B, C and D (pages 3–9) include the marking grid for each question and a table for a summary of the learner's marks.
Annexures E, F, G and H (pages 10–23) contain examples of a programming solution for QUESTION 1 to QUESTION 4 in programming code.
Copies of Annexures A, B, C, D and the summary of learner's marks (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
Panel [1.1 – Display heading] Set the panel colour to lime ✔ Set the font colour to red ✔ Set the font size to 20 pt ✔ Set the panel caption to 'Information Technology Paper 1' ✔
4
1.2
Button [1.2 – Volume] Declaration of radius and height variables ✔ Extract the height and radius from the edit ✔ Convert both to real values ✔ Calculate volume pi *✔ sqr(rRadius) ✔ * (rHeight -1) ✔ Display message ✔and value ✔ formatted to one decimal ✔ NOTE: sqr(rRadius); rRadius*rRadius; Power(rRadius,2)
9
1.3
Button [1.3 – Display factors] Declaration of suitable variables for this solution ✔ Clear the rich edit output area ✔ Initialise factor counter Randomly generate number ✔ between 5 and 50 ✔ Loop ✔ from 1 to random number ✔(Accept variations) Test if number modulus loop variable ✔ is 0 ✔ Display the value of the loop variable ✔ Increment factor counter ✔ Test if number of factors = 2 ✔ Display the random number ✔and a message to indicate value is prime number ✔
13
1.4
Button [1.4 – Enter line and display commands] Display line of instructions ✔ and a blank line Initialise steps counter to 0 ✔ While/For loop from 1✔ to length of line ✔ Extract character from line at loop-index position ✔ Use CASE or multiple IF's to test 3 characters IF 'S' ✔ Test if number of steps = 10 ✔ set message to "Number of forward steps more than 10" ✔ break ✔ (alternative with a while loop: AND Number of steps <= 10) else✔ Increment number of steps forward by 1✔ Set/display message "Step forward" ✔ IF 'R' set/display message to "Turn right" ✔ IF 'L' set/display message to "Turn left" ✔
14
TOTAL SECTION A
40
ANNEXURE B SECTION B QUESTION 2: MARKING GRID - DATABASE PROGRAMMING
CENTRE NUMBER:
EXAMINATION NUMBER:
QUESTION
DESCRIPTION
MAX.
MARKS
LEARNER'S MARKS
2.1.1
Button [2.1.1 – Alphabetical list]
3
SQL: SELECT * FROM tblEmployees ORDER BY Surname ASC
Concepts: SELECT all fields ✔ FROM Correct table ✔ ORDER BY correct field ✔ (ASC not required)
2.1.2
Button [2.1.2 – Number of children of permanent employees]
5
SQL: SELECT Surname, FirstName, Children FROM tblEmployees WHERE Children > 3 AND Permanent = TRUE
Concepts: SELECT all the correct fields ✔ FROM correct table ✔ WHERE Conditions: Children > 3 ✔ AND ✔ Permanent = TRUE ✔
2.1.3
Button [2.1.3 – Employees paid on selected date]
6
SELECT PaymentNumber,IDNumber FROM tblEmployees, tblPayments WHERE tblEmployees.EmployeeNumber = tblPayments.EmployeeNumber AND PaymentDate = #2017/01/17#
Concepts: SELECT correct fields ✔ FROM tblEmployees ✔, tblPayments ✔ WHERE clause to link tables ✔ AND ✔ correct condition ✔ NOTE: PaymentDate between # # PaymentDate Like “2017/01/17” Also accept: INNERJOIN, LEFTJOIN, aliases
2.1.4
Button [2.1.4 – Delete payment]
3
DELETE FROM tblPayments WHERE PaymentNumber = 110
Concepts: DELETE ✔ FROM correct table ✔ WHERE correct condition ✔ NOTE: Accept: *, all fields names, one field name
SQL: SELECT Month(PaymentDate) AS MonthNum, FORMAT(SUM(GrossSalary-Deductions), "Currency") AS TotalAmountPaid FROM tblPayments GROUP BY Month(PaymentDate)
Concepts: SELECT correct field, MONTH-function ✔ AS specified fieldname ✔ (for any one of the 2 calculated fields) SUM ✔ calculation ✔ currency format ✔ FROM correct table ✔ GROUP BY✔ Month(PaymentDate) ✔
Subtotal: SQL
[25]
2.2.1
Button [2.2.1 – Temporary employees] Move to first record of tblEmployees table ✔ Loop while not end of table ✔ IF Permanent = false ✔ Display the surname, first name, children ✔ with tabs ✔ in richedit Move to next record ✔ NOTE: Also accept: IF Permanent = ‘false’
6
2.2.2
Button [2.2.2 – Add an employee] Place table in INSERT mode ✔ Assign correct String values to the various data fields ✔ Assign correct boolean value to the correct data field ✔ Assign correct integer value to the correct data field ✔ POST the updated field values ✔ NOTE: Also accept: APPEND in place of INSERT Also accept: .UPDATERECORD or any other navigation
5
2.2.3
Button [2.2.3 – Update deductions] Place table in EDIT mode ✔ Update the deductions field ✔with 1% of gross salary ✔ POST the updated field value ✔ NOTE: Also accept: .UPDATERECORD or any other navigation
4
Subtotal: Code constructs
[15]
TOTAL SECTION B
40
ANNEXURE C SECTION C QUESTION 3: MARKING GRID – OBJECT-ORIENTATED PROGRAMMING
CENTRE NUMBER:
EXAMINATION NUMBER:
QUESTION
DESCRIPTION
MAX.
MARKS
LEARNER' S MARKS
3.1.1
Constructor: Declaration/Heading ✔with three parameters ✔ two String parameters, ✔one integer ✔ Assign parameter values to attributes ✔
5
3.1.2
getNumEmployees METHOD: Function heading with correct data type ✔ Result statement ✔ (result := fNumEmployees)
2
3.1.3
increaseNumEmployees METHOD: Procedure name and parameter ✔ fNumEmployees:= ✔ fNumEmployees+ parameter value ✔
3
3.1.4
compileCode METHOD: Function heading with String data type ✔ Correct data type for parameter ✔ Code 🡨 first letter of name of restaurant ✔+ last two letters ✔ of owner name ✔ + year opened ✔ Result statement ✔ NOTE: Also accept: Procedure heading with correct parameters ✔ Return variable ✔with correct data type ✔ Code 🡨 first letter of name of restaurant ✔+ last two letters ✔ of owner name ✔ + year opened ✔
7
Subtotal: Object class
[17]
QUESTION 3: MARKING GRID – CONTINUE
QUESTION
DESCRIPTION
MAX.
MARKS
LEARNER' S MARKS
3.2.1
Button [3.2.1 – Instantiate and display object] Instantiate object Object name = ✔classname.create ✔ with arguments name of restaurant, ✔ year opened, ✔ and number of employees ✔ Display the object RichEdit component for display✔ Object name ✔toString ✔ NOTE: Check order and type of arguments Check constructor name
8
3.2.2
Button [3.2.2 – Identification code] Call compile code method with correct object name ✔ Owner name as parameter ✔ Display the code ✔ in the edit box
3
3.2.3
Button [3.2.3 – Add employees] Extract the number of employees to add ✔ Test if the current number of employees ✔ (value from getMethod) + employees to add ✔<= max number of employees ✔ Call the increaseNumEmployees method ✔ with correct parameter value ✔ Display the updated value ✔ for the number of employees in the edit box ✔ Else ✔ Display a suitable message ✔ in the edit box
10
Subtotal: Form class
[21]
TOTAL SECTION C
38
ANNEXURE D SECTION D QUESTION 4: MARKING GRID – PROBLEM-SOLVING
CENTRE NUMBER:
EXAMINATION NUMBER:
Question
DESCRIPTION
MAX
MARKS
LEARNER'S MARKS
4.1
Button [4.1 – Populate Customer array] Read the month from combo box ✔ Initialise counter for days in month ✔ Assign ✔ and reset file ✔ Loop through file ✔ Read line ✔ Test if the line has the selected month ✔ Increment counter ✔ Find the position of # ✔ Copy number of customers ✔ (retrieving number of customers (2 marks)) Convert to integer ✔and store number of customes in arrCustomers ✔ using the days in month variable(counter) as index ✔ Display message to indicate array were successfully populated✔ NOTE: The counter (initialising,incrementing) can be replaced by using character manipulation to extract the index from the line of text
14
4.2
Button [4.2 – Display] Concepts: Extract day of week/column (1)
Read index from combo box (add 1) ✔
Filling up spaces/incomplete first week (5)
Initialize output string ✔
Loop from 1 ✔ to dayOfWeek index -1 ✔
Add to output string ✔ tab (#9) ✔
Looping through array (2)
Loop from 1 ✔ to number of days of selected month ✔
Counting the days (1)
Increase the number of days in the week ✔ using a nested loop or a separate counter
Constructing line to be displayed (4)
Add to output string ✔
The day of the month and ✔
The number of customers in brackets ✔ and
A tab (#9) ✔
Test if line is full and display/end of week (4)
Test if last day of week reached ✔/or after nested loop