Cambridge A Level Computer Science 9608 — 2019 Oct/Nov Paper 2 · Variant 2
9608/22/O/N/19 · 75 marks · ≈84 min
The question paper and its mark scheme, free to read here and free to download. This is Cambridge’s own paper, exactly as it was sat.
Question paper20 pages




















Mark scheme13 pages
Answers below. Sit the paper first if you are practising.













Paper as text
Question paper, page 1
This document consists of 18 printed pages and 2 blank pages. DC (ST) 171121/3 © UCLES 2019 [Turn over * 1 2 0 9 8 6 7 3 0 8 * COMPUTER SCIENCE 9608/22 Paper 2 Fundamental Problem-solving and Programming Skills October/November 2019 2 hours Candidates answer on the Question Paper. No Additional Materials are required. No calculators allowed. READ THESE INSTRUCTIONS FIRST Write your centre number, candidate number and name in the spaces at the top of this page. Write in dark blue or black pen. You may use an HB pencil for any diagrams, graphs or rough working. Do not use staples, paper clips, glue or correction fluid. DO NOT WRITE IN ANY BARCODES. Answer all questions. No marks will be awarded for using brand names of software packages or hardware. At the end of the examination, fasten all your work securely together. The number of marks is given in brackets [ ] at the end of each question or part question. The maximum number of marks is 75. Cambridge Assessment International Education Cambridge International Advanced Subsidiary and Advanced Level
Question paper, page 2
2 9608/22/O/N/19 © UCLES 2019 1 Study the following pseudocode. PROCEDURE FillTank() DECLARE Tries : INTEGER DECLARE Full : BOOLEAN Tries 1 Full ReadSensor("F1") IF NOT Full THEN WHILE NOT Full AND Tries < 4 CALL TopUp() Full ReadSensor("F1") Tries Tries + 1 ENDWHILE IF Tries > 3 THEN OUTPUT "Too many attempts" ELSE OUTPUT "Tank now full" ENDIF ELSE OUTPUT "Already full" ENDIF ENDPROCEDURE (a) (i) The pseudocode includes features that make it easier to read and understand. State three such features. Feature 1 … Feature 2 … Feature 3 … [3]
Question paper, page 3
3 9608/22/O/N/19 © UCLES 2019 [Turn over (ii) Draw a program flowchart to represent the algorithm implemented in the pseudocode. Variable declarations are not required in program flowcharts. [5]
Question paper, page 4
4 9608/22/O/N/19 © UCLES 2019 (b) (i) Programming languages support different data types. Complete the table by giving a suitable data type for each example value. Example value Data type 43 TRUE − 273.16 "− 273.16" [4] (ii) Evaluate each expression in the following table. If an expression is invalid then write ‘ERROR’. Refer to the Appendix on page 18 for the list of built-in functions and operators. Expression Evaluates to RIGHT("Stop", 3) & LEFT("ich", 2) MID(NUM_TO_STRING(2019), 3, 1) INT(NUM_TO_STRING(-273.16)) INT(13/2) [4]
Question paper, page 5
5 9608/22/O/N/19 © UCLES 2019 [Turn over 2 (a) Describe the program development cycle with reference to the following: • source code • object code • corrective maintenance. … … … … … … … … … [3] (b) Give three features of an Integrated Development Environment (IDE) that can help with initial error detection while writing the program. 1 … … 2 … … 3 … … [3]
Question paper, page 6
6 9608/22/O/N/19 © UCLES 2019 3 A student is developing a program to search through a string of numeric digits to count how many times each digit occurs. The variable InString will store the string and the 1D array Result will store the count values. The program will: • check each character in the string to count how many times each digit occurs • record the count for each digit using the array • output the count for each element of the array together with the corresponding digit. (a) The array Result is a 1D array of type INTEGER. Write pseudocode to declare the array and to initialise all elements to zero. … … … … … … [3]
Question paper, page 7
7 9608/22/O/N/19 © UCLES 2019 [Turn over (b) Write the pseudocode for the program. Declare any variables you use. Do not implement the code as a subroutine. Refer to the Appendix on page 18 for the list of built-in functions and operators. … … … … … … … … … … … … … … … … … … [8]
Question paper, page 8
8 9608/22/O/N/19 © UCLES 2019 4 A program is being written to control the operation of a portable music player. One part of the program controls the output volume. The player has two buttons, one to increase the volume and one to decrease it. Whenever a button is pressed, a procedure Button() is called with a parameter value representing the button as follows: Button Parameter value Volume increase 10 Volume decrease 20 For example, pressing the volume increase button three times followed by pressing the volume decrease button once would result in the calls: CALL Button(10) // VolLevel increased by 1 CALL Button(10) // VolLevel increased by 1 CALL Button(10) // VolLevel increased by 1 CALL Button(20) // VolLevel decreased by 1 The program makes use of two global variables of type INTEGER as follows: Variable Description VolLevel The current volume setting. This must be in the range 0 to 49. MaxVol A value that can be set to limit the maximum value of VolLevel, in order to protect the user’s hearing. A value in the range 1 to 49 indicates the volume limit. A value of zero indicates that no volume limit has been set. The procedure Button() will modify the value of VolLevel depending on which button has been pressed and whether a maximum value has been set.
Question paper, page 9
9 9608/22/O/N/19 © UCLES 2019 [Turn over (a) Write pseudocode for the procedure Button(). Declare any additional variables you use. The value of MaxVol should not be changed within the procedure. Parameter validation is not necessary. … … … … … … … … … … … … … … … … … … … … … … … … … … [6]
Question paper, page 10
10 9608/22/O/N/19 © UCLES 2019 (b) The procedure Button() is to be tested using black-box testing. Fill in the gaps below to define three tests that could be carried out. TEST 1 – VolLevel is changed Parameter value: 10 MaxVol: … VolLevel value before call to Button(): 48 VolLevel expected value after call to Button(): … TEST 2 – VolLevel is not changed Parameter value: 10 MaxVol: 34 VolLevel value before call to Button(): … VolLevel expected value after call to Button(): … TEST 3 – VolLevel is not changed Parameter value: … MaxVol: 40 VolLevel value before call to Button(): 0 VolLevel expected value after call to Button(): … [6]
Question paper, page 11
11 9608/22/O/N/19 © UCLES 2019 [Turn over (c) The testing stage is part of the program development cycle. (i) The program for the music player has been completed. The program does not contain any syntax errors, but testing could reveal further errors. Identify and describe one different type of error that testing could reveal. Type … Description … … … [2] (ii) Stub testing is a technique often used in the development of modular programs. Describe the technique. … … … … … … [3]
Question paper, page 12
12 9608/22/O/N/19 © UCLES 2019 5 The module headers for three modules in a program are defined in pseudocode as follows: Pseudocode module header PROCEDURE Lookup(P4 : INTEGER, BYREF M4 : STRING) FUNCTION Update(T4 : INTEGER) RETURNS INTEGER FUNCTION Validate(S2 : INTEGER, P3 : STRING) RETURNS BOOLEAN A fourth module, Renew(), calls the three modules in the following sequence. Validate() Lookup() Update() Draw a structure chart to show the relationship between the four modules and the parameters passed between them. [7]
Question paper, page 13
13 9608/22/O/N/19 © UCLES 2019 [Turn over Question 6 begins on the next page.
Question paper, page 14
14 9608/22/O/N/19 © UCLES 2019 6 A text file, StudentList.txt, contains a list of information about students in a school. Each line of the file contains a reference, name and date of birth for one student. All the information is held as strings and separated by the asterisk character ('*') as follows: <Reference>'*'<Name>'*'<Date Of Birth> An example of one line from the file is: "G1234*Aleza Hilton*05062001" The reference string may be five or eight characters in length and is unique for each student. It is made up of alphabetic and numeric characters only. A global 1D array, Leavers, contains the references of all students who have recently left the school. The array consists of 500 elements of data type STRING. Unused elements contain the empty string "". A program is to be written to produce a new text file, UpdatedList.txt, containing information only for students who are still attending the school. The program is to be implemented as several modules. The outline description of three of these is as follows: Module Outline description ProcessStudentList() • Read each line from the file StudentList.txt • Check whether the Reference appears in the array using SearchLeavers() • If the Reference does not appear then write the line to the file UpdatedList.txt • Return the number of lines not copied. SearchLeavers() • Search for a given Reference in the array Leavers • If the Reference is found, return TRUE, otherwise return FALSE CountTimes() • Take two parameters: the name of an array and a string. • Count the number of elements that are the same as the string. Return the count value.
Question paper, page 15
15 9608/22/O/N/19 © UCLES 2019 [Turn over (a) Write program code for the module SearchLeavers(). Declare any additional variables you use. Visual Basic and Pascal: You should include the declaration statements for variables. Python: You should show a comment statement for each variable used with its data type. Programming language … Program code … … … … … … … … … … … … … … … … … … … … … … [6]
Question paper, page 16
16 9608/22/O/N/19 © UCLES 2019 (b) Write pseudocode for the module ProcessStudentList(). The module description is repeated here for reference. Module Outline description ProcessStudentList() • Read each line from the file StudentList.txt • Check whether the Reference appears in the array using SearchLeavers() • If the Reference does not appear then write the line to the file UpdatedList.txt • Return the number of lines not copied. … … … … … … … … … … … … … … … … … … … … …
Question paper, page 17
17 9608/22/O/N/19 © UCLES 2019 [Turn over … … … … … … … … … … … … [9] (c) CountTimes() is to be used to count how many unused elements there are in the Leavers array. An unused element is one that contains an empty string. The module description is repeated here for reference. Module Outline description CountTimes() • Take two parameters: the name of an array and a string. • Count the number of elements that are the same as the string. Return the count value. Write a statement in program code that uses CountTimes() to assign the count of unused elements to the variable Result. Programming language … Program code … … [3]
Question paper, page 18
18 9608/22/O/N/19 © UCLES 2019 Appendix Built-in functions (pseudocode) Each function returns an error if the function call is not properly formed. MID(ThisString : STRING, x : INTEGER, y : INTEGER) RETURNS STRING returns a string of length y starting at position x from ThisString Example: MID("ABCDEFGH", 2, 3) returns "BCD" LENGTH(ThisString : STRING) RETURNS INTEGER returns the integer value representing the length of ThisString Example: LENGTH("Happy Days") returns 10 LEFT(ThisString : STRING, x : INTEGER) RETURNS STRING returns leftmost x characters from ThisString Example: LEFT("ABCDEFGH", 3) returns "ABC" RIGHT(ThisString: STRING, x : INTEGER) RETURNS STRING returns rightmost x characters from ThisString Example: RIGHT("ABCDEFGH", 3) returns "FGH" INT(x : REAL) RETURNS INTEGER returns the integer part of x Example: INT(27.5415) returns 27 NUM_TO_STRING(x : REAL) RETURNS STRING returns a string representation of a numeric value. Note: This function will also work if x is of type INTEGER Example: NUM_TO_STRING(87.5) returns "87.5" STRING_TO_NUM(x : STRING) RETURNS REAL returns a numeric representation of a string. Note: This function will also work if x is of type CHAR Example: STRING_TO_NUM("23.45") returns 23.45 Operators (pseudocode) Operator Description & Concatenates (joins) two strings Example: "Summer" & " " & "Pudding" produces "Summer Pudding" AND Performs a logical AND on two Boolean values Example: TRUE AND FALSE produces FALSE OR Performs a logical OR on two Boolean values Example: TRUE OR FALSE produces TRUE
Question paper, page 19
19 9608/22/O/N/19 © UCLES 2019 BLANK PAGE
Question paper, page 20
20 9608/22/O/N/19 © UCLES 2019 Permission to reproduce items where third-party owned material protected by copyright is included has been sought and cleared where possible. Every reasonable effort has been made by the publisher (UCLES) to trace copyright holders, but if any items requiring clearance have unwittingly been included, the publisher will be pleased to make amends at the earliest possible opportunity. To avoid the issue of disclosure of answer-related information to candidates, all copyright acknowledgements are reproduced online in the Cambridge Assessment International Education Copyright Acknowledgements Booklet. This is produced for each series of examinations and is freely available to download at www.cambridgeinternational.org after the live examination series. Cambridge Assessment International Education is part of the Cambridge Assessment Group. Cambridge Assessment is the brand name of the University of Cambridge Local Examinations Syndicate (UCLES), which itself is a department of the University of Cambridge. BLANK PAGE
Mark scheme, page 1
This document consists of 13 printed pages. © UCLES 2019 [Turn over Cambridge Assessment International Education Cambridge International Advanced Subsidiary and Advanced Level COMPUTER SCIENCE 9608/22 Paper 2 Written Paper October/November 2019 MARK SCHEME Maximum Mark: 75 Published This mark scheme is published as an aid to teachers and candidates, to indicate the requirements of the examination. It shows the basis on which Examiners were instructed to award marks. It does not indicate the details of the discussions that took place at an Examiners’ meeting before marking began, which would have considered the acceptability of alternative answers. Mark schemes should be read in conjunction with the question paper and the Principal Examiner Report for Teachers. Cambridge International will not enter into discussions about these mark schemes. Cambridge International is publishing the mark schemes for the October/November 2019 series for most Cambridge IGCSE™, Cambridge International A and AS Level components and some Cambridge O Level components.
Mark scheme, page 2
9608/22 Cambridge International AS/A Level – Mark Scheme PUBLISHED October/November 2019 © UCLES 2019 Page 2 of 13 Generic Marking Principles These general marking principles must be applied by all examiners when marking candidate answers. They should be applied alongside the specific content of the mark scheme or generic level descriptors for a question. Each question paper and mark scheme will also comply with these marking principles. GENERIC MARKING PRINCIPLE 1: Marks must be awarded in line with: • the specific content of the mark scheme or the generic level descriptors for the question • the specific skills defined in the mark scheme or in the generic level descriptors for the question • the standard of response required by a candidate as exemplified by the standardisation scripts. GENERIC MARKING PRINCIPLE 2: Marks awarded are always whole marks (not half marks, or other fractions). GENERIC MARKING PRINCIPLE 3: Marks must be awarded positively: • marks are awarded for correct/valid answers, as defined in the mark scheme. However, credit is given for valid answers which go beyond the scope of the syllabus and mark scheme, referring to your Team Leader as appropriate • marks are awarded when candidates clearly demonstrate what they know and can do • marks are not deducted for errors • marks are not deducted for omissions • answers should only be judged on the quality of spelling, punctuation and grammar when these features are specifically assessed by the question as indicated by the mark scheme. The meaning, however, should be unambiguous. GENERIC MARKING PRINCIPLE 4: Rules must be applied consistently e.g. in situations where candidates have not followed instructions or in the application of generic level descriptors. GENERIC MARKING PRINCIPLE 5: Marks should be awarded using the full range of marks defined in the mark scheme for the question (however; the use of the full mark range may be limited according to the quality of the candidate responses seen). GENERIC MARKING PRINCIPLE 6: Marks awarded are based solely on the requirements as defined in the mark scheme. Marks should not be awarded with grade thresholds or grade descriptors in mind.
Mark scheme, page 3
9608/22 Cambridge International AS/A Level – Mark Scheme PUBLISHED October/November 2019 © UCLES 2019 Page 3 of 13 Question Answer Marks 1(a)(i) Any three from: 1. Indentation 2. Blank lines / white space 3. Sensible identifier names / use of Camel Case for identifier names 4. Capitalised keywords 3 1(a)(ii) 5 Is Full = TRUE? END YES Output "Too many attempts" START NO Tries ← 1 Tries ← Tries + 1 Call TopUp() Full ← ReadSensor("F1") Is Tries > 3? Is NOT Full AND Tries < 4 NO YES NO Output "Already Full" Full ← ReadSensor("F1") Output "Tank now full" YES Mark as follows: • One mark for START and END • One mark for each of the 4 areas outlined Loop must be included for this area mark
Mark scheme, page 4
9608/22 Cambridge International AS/A Level – Mark Scheme PUBLISHED October/November 2019 © UCLES 2019 Page 4 of 13 Question Answer Marks 1(b)(i) One mark per row Example value Data type 43 INTEGER TRUE BOOLEAN −273.16 REAL "−273.16" STRING 4 1(b)(ii) One mark per row Expression Evaluates to RIGHT("Stop", 3) & LEFT("ich",2) "topic" MID(NUM_TO_STRING(2019), 3, 1) "1" INT(NUM_TO_STRING(-273.16)) ERROR INT(13/2) 6 4 Question Answer Marks 2(a) One mark per point: 1. The source code represents a solution / design / algorithm expressed in a high-level language 2. The Object code is produced (by the compiler) during the translation stage // The Object code is produced by translating the source code (NOT produced by Interpreter) 3. Corrective maintenance occurs when testing reveals a fault (or error) in the program and this is corrected // Corrective maintenance is when errors are found and fixed // Corrective maintenance is when a program is debugged Accept alternative answers provided they relate to the program development cycle 3 2(b) Any three from: 1. Dynamic syntax checking // Identification of syntax errors 2. Highlighting undeclared variables // incorrect variable usage... 3. Parameter checking 4. Type checking 5. Auto-indentation 6. PrettyPrint 3
Mark scheme, page 5
9608/22 Cambridge International AS/A Level – Mark Scheme PUBLISHED October/November 2019 © UCLES 2019 Page 5 of 13 Question Answer Marks 3(a) DECLARE Result : ARRAY [0:9] OF INTEGER DECLARE Index : INTEGER FOR Index ← 0 TO 9 Result[Index] ← 0 ENDFOR One mark for each of the following: 1. Declaration of RESULT array (10 elements of type INTEGER) 2. Loop 3. Assignment within a loop 3 3(b) DECLARE Index : INTEGER DECLARE NextChar : CHAR DECLARE NextCharValue : INTEGER FOR Index ← 1 TO LENGTH(InString) NextChar ← MID(InString, Index, 1) NextCharValue ← STRING_TO_NUM(NextChar) Result[NextCharValue] ← Result[NextCharValue] + 1 ENDFOR FOR Index ← 0 TO 9 OUTPUT "Count of digit " & NUM_TO_STRING(Index) & " : " & NUM_TO_STRING(Result[Index]) ENDFOR One mark for each of the following: 1. Declaration of INTEGER variable for Index (or equivalent) to index Result array 2. First loop from 1 to length of InString: 3. Select each character (e.g MID) in first loop 4. Apply type conversion to obtain integer value for index in first loop 5. Increment element of Result array in a loop 6. Separate second loop to repeat 10 times: 7. Attempt to OUTPUT two items (digit 0 to 9 plus corresponding count) in any loop 8. OUTPUT statement including index and count in any loop including type conversion of element from array if required in a loop 8
Mark scheme, page 6
9608/22 Cambridge International AS/A Level – Mark Scheme PUBLISHED October/November 2019 © UCLES 2019 Page 6 of 13 Question Answer Marks 4(a) PROCEDURE Button(ButtonNum : INTEGER) DECLARE Limit : INTEGER IF ButtonNum = 10 // increase volume THEN IF MaxVol = 0 THEN Limit ← 49 ELSE Limit ← MaxVol ENDIF IF VolLevel < Limit THEN VolLevel ← VolLevel + 1 ENDIF ELSE // otherwise must be ButtonNum 20 - decrease IF VolLevel > 0 THEN VolLevel ← VolLevel - 1 ENDIF ENDIF ENDPROCEDURE Mark as follows: 1. Check if parameter value = 10 2. Check if parameter value = 20 3. Check if MaxVol = 0 4. Decrement VolLevel and ensure still in range If attempting to increase volume (parameter value was 10): 5. Increment VolLevel 6. Ensure VolLevel still in range: for both cases. i.e: VolLevel <= 49 (for MaxVol = 0) VolLevel <= MaxVol (for MaxVol <> 0) 6 4(b) 2 independent marks for each test: Test 1 MaxVol: 0/49 VolLevel expected: 49 Test 2 VolLevel before: 34 VolLevel expected: 34 Test 3 Parameter: 20 VolLevel expected: 0 6
Mark scheme, page 7
9608/22 Cambridge International AS/A Level – Mark Scheme PUBLISHED October/November 2019 © UCLES 2019 Page 7 of 13 Question Answer Marks 4(c)(i) One mark for type, one for description: • Type: Logical Error • Description: Program does not perform as expected • Type: Run-time error • Description: Program executes an invalid instruction / out of bounds error / attempts to divide by zero // program crashes 2 4(c)(ii) One mark per bullet point: • Tests carried out before all the modules / subroutines have been written • Simple / dummy module written to simulate / model / replace the actual module / subroutine / object • Contains an output statement // returns a fixed value to indicate that the call has been made 3 Question Answer Marks 5 One mark for each of: 1. Diagram with boxes as above correctly labelled 2. P3 and S2 3. Return Boolean from Validate() 4. P4 5. M4 6. T4 7. Return parameter from Update() 7
Mark scheme, page 8
9608/22 Cambridge International AS/A Level – Mark Scheme PUBLISHED October/November 2019 © UCLES 2019 Page 8 of 13 Question Answer Marks 6(a) 'Pseudocode' solution included here for development and clarification of mark scheme. Programming language example solutions appear in the Appendix. FUNCTION SearchLeavers(Reference : STRING) RETURNS BOOLEAN DECLARE Index : INTEGER DECLARE Found : BOOLEAN Found ← FALSE Index ← 0 WHILE Index < 500 AND NOT Found IF Reference = Leavers[Index] THEN Found ← TRUE ENDIF Index ← Index + 1 ENDWHILE RETURN Found ENDFUNCTION One mark for each of the following: 1. Function heading (and ending) as above 2. Initialisation and increment of Index used to index Leavers array in a loop 3. Conditional loop repeating while Index < 500 and exit loop if Reference is found: 4. Compare indexed array element value with Reference in a loop 5. Set termination logic if found in a loop 6. Return Boolean value 6
Mark scheme, page 9
9608/22 Cambridge International AS/A Level – Mark Scheme PUBLISHED October/November 2019 © UCLES 2019 Page 9 of 13 Question Answer Marks 6(b) FUNCTION ProcessStudentList() RETURNS INTEGER DECLARE NotCopied : INTEGER DECLARE FileData : STRING DECLARE Reference : STRING NotCopied ← 0 OPENFILE "StudentList.txt" FOR READ OPENFILE "UpdatedList.txt" FOR WRITE WHILE NOT EOF("StudentList.txt") READFILE "StudentList.txt", FileData IF MID(FileData, 6, 1) = '*' THEN Reference ← MID(FileData, 1, 5) // five char reference ELSE Reference ← MID(FileData, 1, 8) // eight char reference ENDIF IF SearchLeavers(Reference) = FALSE THEN WriteFile "UpdatedList.txt", FileData ELSE NotCopied ← NotCopied + 1 ENDIF ENDWHILE CLOSEFILE "StudentList.txt" CLOSEFILE "UpdatedList.txt" RETURN NotCopied ENDFUNCTION One mark for each of the following: 1. Function heading and ending as above 2. Declaration and use of three local variables and initialisation of count to 0 3. OPEN both files in correct mode and CLOSE 4. Pre-Condition loop to go through the file StudentList.txt until EOF() 5. Read line from StudentList.txt and extract correct Reference (either 5 or 8 characters) in a loop 6. Call SearchLeavers() with Reference (after attempted extraction) in a loop 7. If result is FALSE then write FileData to UpdatedList.txt in a loop 8. Otherwise increment NotCopied in a loop 9. Return NotCopied count 9
Mark scheme, page 10
9608/22 Cambridge International AS/A Level – Mark Scheme PUBLISHED October/November 2019 © UCLES 2019 Page 10 of 13 Question Answer Marks 6(c) 'Pseudocode' solution included here for development and clarification of mark scheme. Programming language example solutions appear in the Appendix. One mark per underlined section: Result ← CountTimes (Leavers, "") (Space before open bracket to highlight underlined section only) 3
Mark scheme, page 11
9608/22 Cambridge International AS/A Level – Mark Scheme PUBLISHED October/November 2019 © UCLES 2019 Page 11 of 13 Program Code Example Solutions Q6 (a): Visual Basic Function SearchLeavers(ByVal Reference As String) As Boolean Dim Index As Integer Dim Found As Boolean Found = FALSE Index = 0 Do While Index < 500 And Not Found If Reference = Leavers(Index) Then Found = TRUE End If Index = Index + 1 Loop Return Found End Function
Mark scheme, page 12
9608/22 Cambridge International AS/A Level – Mark Scheme PUBLISHED October/November 2019 © UCLES 2019 Page 12 of 13 Q6 (a): Pascal function SearchLeavers(Reference : String) : boolean; var Index : integer; var Found : boolean; begin Found := FALSE; Index := 0; While Index < 500 And Not Found begin if Reference = Leavers[Index] Then Found := TRUE; Index := Index + 1; end; result := Found; // SearchLeavers := Found end; Q6 (a): Python def SearchLeavers(Reference): ## Index : Integer ## Found : Boolean Found = False Index = 0 while Index < 500 and not Found: if Reference == Leavers[Index]: Found = True Index = Index + 1 return Found
Mark scheme, page 13
9608/22 Cambridge International AS/A Level – Mark Scheme PUBLISHED October/November 2019 © UCLES 2019 Page 13 of 13 Q6 (c): Visual Basic Result = CountTimes(Leavers, "") Q6 (c): Pascal Result := CountTimes(Leavers, ""); Q6 (c): Python Result = CountTimes(Leavers, "")
What you needed in this session
Cambridge’s own grade thresholds for 2019 Oct/Nov, Paper 2 · Variant 2. A higher threshold means an easier paper — the bar moves with how the cohort did.