MARKING GUIDELINES

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 was not followed or the requirements of the question was not met

Annexures A, B, C and D (pages 3 to 10) include the marking grid for each question.

Annexures E, F, G and H (pages 11 to 22) contain examples of solutions for Questions 1 to 4 in programming code.

Copies of Annexures A, B, C, D and the summary for the marks of the learner (pages 3 to 10) should be made for each learner and completed during the marking session.

ANNEXURE A

QUESTION 1: MARKING GRID – GENERAL PROGRAMMING SKILLS

CENTRE NUMBER:

EXAMINATION NUMBER:

QUESTION

DESCRIPTION

MAX. MARKS

LEARNER'S MARKS

1.1

FormCreate event
Set caption of lblQ1_1 to 'Coding is '  
Set font colour of lblQ1_1 to green  
Set font size of lblQ1_1 to 16
Set font name to 'Arial'

4

 

1.2

Button - [1.2 – Number of rolls]
Create constant SWEETS_PER_ROLL = 8
Declare integer variables
Extract number of breaks from spin edit  
Calculate total number of sweets (breaks x 4)  
Calculate total number of rolls
(sweets/SWEETS _PER_ROLL) //OR (sweets/8)
Round up using the Ceil function
Display number of rolls of sweets on lblQ1_2
converted to String

8

 

1.3

Button – [1.3 – Calculate volume]
rRadius := 3;
rVolume := rTetraVolume  + 4/3 * PI  * power (rRadius,3) /2

Display
Using a ShowMessage with “Volume” label
Value of volume
Formatted to one decimal place

Note:
In the formula:
Accept the value of 133 instead of rTetraVolume
Accept the value of 3 instead of rRadius
Instead of PI, accept 22/7 or 3.14
Instead of 4/3, accept 1.33
Accept any correct alternative to power(rRadius,3) where the answer = 27
Accept * 0.5 instead of /2

7

 

1.4

Button - [1.4 – Display pattern]

Clear output area
Extract symbol from combo box
iSize = position of symbol in combo box  //(index+1)
Loop rows from 0  to iSize  // Loop from 1 to iSize
Initialise output String  (Or adding #13)
Nested Loop columns from 0 to iSize
Add symbol to output line
Display output line 

Note:
The start value of the loop will depend on whether 1 was added to iSize (either 0 or 1)
A correct solution that does not use a nested loop must be penalised by 1 mark
The mark allocated to the nested loop range must be the same at the outer loop

11

 

1.5

Button - [1.5 – Characters]

Randomly generate an acceptable value
Use the value to extract the corresponding character
Loop
Add random character  to output String
Set as previous character
Generate new current character
Until current character  = previous character
Display output String 

Note:

  • ASCII table in the range 65 to 91
  • String, array or case statement e.g. 1 to 26

10

 
 

TOTAL SECTION A:

40

 

ANNEXURE B
QUESTION 2: MARKING GRID – SQL AND DATABASE PROGRAMMING 

CENTRE NUMBER:

EXAMINATION NUMBER:

QUESTION

DESCRIPTION

MAX. MARKS

LEARNER'S MARKS

2.1

SQL statements

   

2.1.1

Button [2.1.1 – Clubs from Gauteng and SA affiliated]

3

 

SELECT ClubName, ClubTown FROM tblClubs
WHERE Province = "GP"
AND SA_Affiliated = True
Accept WHERE Province LIKE "%GP%" OR ANY correct use of LIKE

2.1.2

Button [2.1.2 – Birth year]

3

 

SELECT MemberName, MemberSurname, BirthDate
FROM tblMembers
WHERE YEAR (BirthDate) = 2002

Alternatives for year:
WHERE YEAR (BirthDate) = "2002" BETWEEN #2002/01/01/# and #2002/12/31#
LEFT(BirthDate,4) MID(BirthDate,1,4)
LIKE "%2002%" OR LIKE "2002%"

2.1.3

Button [2.1.3 – Display members]

4

 

SELECT MemberSurname, MemberName
FROM tblClubs,tblMembers
WHERE tblClubs.ClubId = tblMembers.ClubId
AND tblClubs.ClubName = "' + sClubName +'" 

Also accept join
SELECT MemberSurname, MemberName
FROM tblClubs INNER JOIN tblMembers
ON tblClubs.ClubId = tblMembers.ClubId
WHERE tblClubs.ClubName = "' + sClubName +'"
QuotedStr(sClubName) Accept the use of aliases

2.1.4

Button [2.1.4 - Average membership fee]

6

 

SELECT Province, FORMAT(AVG(MemFee) ,"CURRENCY")
AS AvgFee
FROM tblClubs
GROUP BY Province
HAVING  AVG(MemFee) > 400
Also accept:
FORMAT(AVG(MemFee), "R0.00")

2.1.5

Button [2.1.5 - Change member name]

3

 

UPDATE tblMembers
SET MemberName = "Ainsley"
WHERE MemberName = "Aiensley"

 

Subtotal:

19

 

QUESTION 2: MARKING GRID (CONT.)

2.2

Database Manipulation

   

2.2.1

Button [2.2.1 – Outstanding fees]

Go to the first record in the tblClubs
Use a loop to step through the tblClubs
Display the club name and annual membership fee for each club
Go to the first record of the tblMembers table
Use a nested loop to step through tblMembers
If the ClubID field in tblClubs  = ClubID field in tblMembers
Calculate the outstanding fee
//( MemFee - AmountPaid)
Display the surname, amount paid and the outstanding fee in the richedit
Move to the next record in the tblMembers
End loop (Members table)
Move to the next record in the tblClubs
End loop (tblClubs) 

Note:
Also accept the repeat..until loop instead of the While loop with the correct conditions

12

 

2.2.2

Button [2.2.2 – Update hikes completed]

Edit mode
Add 1  to HikesCompleted field
Post

4

 

2.2.3

Button [2.2.3 – Add member]

Retrieve the club Id from the radiogroup
Insert mode
Assign values to correct fields
Assign retrieved club id to the ClubID field
Post

Accept tblMembers.Append

5

 
 

Subtotal:

21

 
 

TOTAL SECTION B:

40

 

ANNEXURE C
QUESTION 3: MARKING GRID – OBJECT-ORIENTED PROGRAMMING 

CENTRE NUMBER:

EXAMINATION NUMBER:

QUESTION

DESCRIPTION

MAX. MARKS

LEARNER'S MARKS

3.1.1

getNumberOfDays function

Function heading with integer value as return data type
Result = fNumberOfDays

2

 

3.1.2

calcDistPerDay

Function heading with integer as the return type Result = round (fDistance/fNumberOfDays)

3

 

3.1.3

determineLevel function

distance per day = calcDistPerDay
If distance per day  > 15  AND
(terrain type = 'Rocky'  OR terrain type = 'Sandy')
Result = 'Advanced' Else
If distance per day is from 10  to 15  //inclusive Result = 'Moderate'

Else
Result = 'Easy' 

Also Accept:
If distance per day > 15 //1 mark
AND NOT(terrain type = 'Flat') // 2 marks

10

 

3.1.4

calcTotalCost function

Function heading with real value as return data type
and integer parameter
Result =  fCost * parameter
The answer in the Result is the same data type as the data type in the heading
Also accept currency, string or integer as the return type provided it is used correctly

4

 

3.1.5

toString method

Function heading with String return data type
Return trailName, terrainType, distance, number of days, cost
Converted to correct format 
Correct text and line breaks

4

 
 

Subtotal: Object class

23

 

QUESTION 3: MARKING GRID (CONT.)

QUESTION

DESCRIPTION

MAX. MARKS

LEARNER' S MARKS

3.2.1

Combobox - cmbHikingTrails

Assignfile with extracted file name + '.txt'
Reset file
Read 4 lines from file
Instantiate the objHikingTrail object: objHikingTrail:= THikingTrail.Create  Use five arguments
(sTrailName,sTerrainType,iNumDays,iDistance,rCost)
with correct data types and in correct order
Display message using a showMessage dialogue box

8

 

3.2.2

Button [3.2.2 – Display hiking trail details]

Use the objHikingTrail.toString method
to display hiking trail information in rich edit component

2

 

3.2.3

Button [3.2.3 – Display cost]

Input number of members in group using an input box Cost =
 objHikingTrail.calcTotalCost  (group size)
Accept calculateCost as the function name

4

 

3.2.4

Button [3.2.4 – Calculate distance per day]

Display number of km using IntToStr(objHikingTrail.calcDistPerDay)
Display difficulty level using objHikingTrail.determineLevel
Display number of days using IntToStr(objHikingTrail.getNumberOfDays)
Accept the difficulty level displayed in small or capital letters

3

 
 

Subtotal Form class:

17

 
 

TOTAL SECTION C:

40

 

ANNEXURE D
QUESTION 4: MARKING GRID – PROBLEM-SOLVING PROGRAMMING

CENTRE NUMBER:

EXAMINATION NUMBER:

SECTION

DESCRIPTION

MAX. MARKS

LEARNER'S MARKS

4.1

Button - [4.1 – Display distance chart]

Loop from 1 to 5
Add name to output String
Nested Loop from 1 to 5
Add distance to output String
Display output String  in rich edit

Note:
Two sets of brackets may be used instead of index values separated by a comma e.g. arrDistances[iR][iC]

5

 

4.2

Button - [4.2 – Validation]

Loop from 1 to 5
Loop from 1 to 5
Test if distance at [iRow,iCol] <> distance at [iCol,iRow]
Testif distanceat[iRow,iCol] <distanceat[iCol,iRow]
Distance at [iRow,iCol] =distance at [iCol,iRow]
Build String with row and col index and distance
Display output String

Accept the length of the array instead of 5 used in loops Alternative test:
// Test if distance at [iRow,iCol] < distance at [iCol,iRow] (2 marks)

8

 

4.3

Button - [4.3 – Route planner]

 

Extract route from combo box and initialise total distance

Loop 4 times  (extract all possible combinations) Extract the first check point (row index) Extract the second check point (column index)

Delete first 2 characters  (logic to start at next index) Read distance from 2D  using row and column Update total distance  (add distance from 2D) Calculate time (time X distance)

Test if hike between points at 2 and 4 OR 4 and 2

multiply time with 2

Update time per day

Display names of the two checkpoints  Display distance and time (in any format) Test if time per day > 480

Display name of checkpoint to book

Reset time per day to 0

Display total distance

17

 
 

TOTAL SECTION D:

GRAND TOTAL:

30

150

 

SUMMARY OF LEARNER'S MARKS:

CENTER NUMBER:

LEARNER'S EXAMINATION NUMBER:

 

SECTION A

SECTION B

SECTION C

SECTION D

 
 

QUESTION 1

QUESTION 2

QUESTION 3

QUESTION 4

GRAND TOTAL

MAX. MARKS

40

40

40

30

150

LEARNER'S MARKS

         

1 asasdadadzcvz

13 adaddad

14 aytfdada

15 oiaoijoiccs

16 poaoidhgacna

17 auygugadada

18 autdguytyad

19 augdjdaca

20 aiuuhdijaca

21 iuhsuihsda

22 aoijdoijadavaf

23 oiajoidhcgtygbcs

Last modified on Thursday, 01 December 2022 13:16