9608 - s19 - QP - 22 SOLVED
9608 - s19 - QP - 22 SOLVED
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.
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.
DC (ST/CT) 163546/4
© UCLES 2019 [Turn over
2
...........................................................................................................................................
...........................................................................................................................................
..................................................................................................................................... [2]
INPUT age
..................................................................................................................
input
.........................
..................................................................................................................
IF age<0
..................................................................................................................
process
.........................
..................................................................................................................
OUTPUT age
..................................................................................................................
Output
..................................................................................................................
[5]
Variable Value
Married 03/04/1982
ID "M1234"
MiddleInitial 'J'
Height 5.6
IsMarried TRUE
Children 2
For the built-in functions list, refer to the Appendix on page 16.
Expression Evaluates to
STRING_TO_NUM(RIGHT(ID, 3)) 234
INT(Height * Children) 11
Give an appropriate data type for the following variables from part (b).
ID STRING
MiddleInitial CHAR
Height REAL
IsMarried BOOLEAN
[5]
...........................................................................................................................................
Sub routines are pre defined libraries.
.....................................................................................................................................
EASY TO UNDERSTAND [1]
...........................................................................................................................................
THEY SAVE TIME TO CHECK THE CODE FOR ERRORS AS THEY ARE PRE TESTED.
2 ........................................................................................................................................
...........................................................................................................................................
3 ........................................................................................................................................
THEY ALLOW FOR MODULAR PROGRAMMING.
...........................................................................................................................................
CHANGES NEED TO BE MADE TO THE PROGRAM ONLY ONCE IF TASK CHANGES.
[3]
Answer 23 + DoSomething("Yellow")
Justification .......................................................................................................................
AS IT DOESNT RETURN ANYTHING.
(b) The program development cycle involves writing, translating and testing a high-level language
program.
• editor
• translator
• debugger
THE CODE IS WRITTEN IN HIGH LEVEL LANGUAGE FOR THE PROGRAM IN THE
...................................................................................................................................................
EDITOR.
...................................................................................................................................................
THE CODE IS CONVERTED FROM HIGH LEVEL TO BINARY IN THE TRANSLATOR SO
...................................................................................................................................................
THAT IT IS UNDERSTOOD BY THE COMPUTER.
...................................................................................................................................................
THE CODE IS CHECKED FOR ANY ERRORS IN THE DEBUGGER. ERRORS ARE ALSO
...................................................................................................................................................
RESOLVED HERE.
............................................................................................................................................. [3]
© UCLES 2019 9608/22/M/J/19
5
(c) The following lines of code are taken from a high-level language program.
Identify the type of control structure and describe the function of the code.
SELECTION PRE CONDITIONAL LOOP
Control structure .......................................................................................................................
IF THE VALUE OF RESULT IS LESS THAN 20 THEN
Function of code .......................................................................................................................
CALL THE FUNCTION RESETSENSOR AND PASS IT THE VALUE
...................................................................................................................................................
3.
...................................................................................................................................................
AFTER THIS, ASSIGN THE VALUE OF GETSENSOR WITH VALUE 3
TO THE VARIABLE RESULT.
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
[3]
3 The following structure chart shows the relationship between three modules.
TopLevel
B
D
A C
E
SubA SubB
A, D : STRING
C : CHAR
B, E : INTEGER
...........................................................................................................................................
..................................................................................................................................... [3]
...........................................................................................................................................
..................................................................................................................................... [3]
(b) Module hierarchy and parameters are two features that may be represented on a structure
chart.
For the built-in functions list, refer to the Appendix on page 16.
NewString '0'
Selected 0
ENDFOR
RETURN Selected
ENDFUNCTION
Result Search("12∇34∇5∇∇39")
Complete the following trace table by performing a dry run of this function call.
The symbol '∇' represents a space character. Use this symbol to represent a space
character in the trace table.
3 S 012S
3 012S3
4
4 012S34
5
6 S 012S34S
[5]
(ii) State the value returned by the function when it is called as shown in part (a)(i).
12S34S5SS39
....................................... [1]
034
(b) There is an error in the algorithm. When called as shown in part (a)(i), the function did not
return the largest value as expected.
(i) Explain why this error occurred when the program called the function.
IF NEXTCHAR < 0 OR NEXTCHAR> 9
...........................................................................................................................................
...........................................................................................................................................
LOOP TERMINATES AT THE FINAL DIGIT AND THERE IS NO FINAL COMPARISON
MADE
...........................................................................................................................................
..................................................................................................................................... [2]
(ii) Describe how the algorithm could be amended to correct the error.
REVERSE THE SYMBOLS.
...........................................................................................................................................
CHECK IF NEWSTRING IS GREATER THAN SELECTED.
...........................................................................................................................................
ADD SPACE CHARACTER
...........................................................................................................................................
..................................................................................................................................... [2]
5 A student is learning about text files. She wants to write a program to count the number of lines in
a file.
...................................................................................................................................................
DECLARE VARIABLE OF TYPE INTEGER TO STORE COUNT OF NUMBER OF LINES.
...................................................................................................................................................
OPEN THE FILE.
...................................................................................................................................................
USE WHILE LOOP AND EOF STATEMENT.
...................................................................................................................................................
KEEP ON APPENDING VARIABLE BY 1 TILL END OF FILE ISNT REACHED.
...................................................................................................................................................
END THE WHILE LOOP.
.............................................................................................................................................
CLOSE THE FILE. [3]
(b) A procedure, CountLines(), is being written to count the number of lines in a text file. The
procedure will:
...................................................................................................................................................
OPENFILE FILENAME FOR READ
...................................................................................................................................................
WHILE NOT EOF
READFILE FILENAME, LINE
LINENUM<-LINENUM+1
...................................................................................................................................................
ENDWHILE
...................................................................................................................................................
CLOSEFILE FILENAME
OUTPUT("THE NUMBER OF LINES ARE", LINENUM)
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
............................................................................................................................................. [6]
6 Nadine is developing a program to store the ID and preferred name for each student in a school.
For example, student Pradeep uses the preferred name “Prad”.
The program will consist of three separate modules. Each module will be implemented using
either a procedure or a function.
Module Description
TopLevel() • Call GetInfo() to obtain a string containing a valid user ID and a
preferred name
• Call WriteInfo() to write the string to either File1.txt or
File2.txt depending on the first character of the user ID as follows:
○ ‘A’ to ‘M’: writes to File1.txt
○ ‘N’ to ‘Z’: writes to File2.txt
For example, a string with a user ID of "G1234" writes to File1.txt
• End the program if the file write was unsuccessful
• Input (Y/N) to either repeat for the next user ID or to end the program
GetInfo() • Input a user ID and repeat until the user ID is valid
• Input a preferred name. This will be an empty string if no preferred
name is input.
• Concatenate the user ID and preferred name using a '*' character as
a separator and return this string
WriteInfo() • Open the file
• Append the concatenated string to the file
• Close the file
• Return a Boolean value:
○ TRUE if the file write was successful
○ FALSE if the file write failed, for example, if the disk was full
Nadine has decided that global variables and nested modules must not be used.
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.
Program code
FUNCTION GetInfo(): RETURNS STRING
...................................................................................................................................................
REPEAT
...................................................................................................................................................
INPUT USERID
UNTIL USERID>0
...................................................................................................................................................
INPUT PREFFEREDNAME
...................................................................................................................................................
STRING<- "USERID"&"*"&"PREFFEREDNAME"
...................................................................................................................................................
RETURN STRING
...................................................................................................................................................
ENDFUNCTION
...................................................................................................................................................
VALIDATION OF THE USER ID.
...................................................................................................................................................
VALID= FALSE
...................................................................................................................................................
REPEAT
INPUT USERID
...................................................................................................................................................
FOR C= 1 TO LENGTH(USERID)
IF LENGTH(USERID)==5 AND A<LEFT(USERID,1)<Z AND 0<RIGHT(USERID,4)<9 THEN
...................................................................................................................................................
VALID= TRUE
ELSE
...................................................................................................................................................
VALID= FALSE
ENDIF
...................................................................................................................................................
NEXT
UNTIL VALID=TRUE
...................................................................................................................................................
...................................................................................................................................................
FUNCTION GETINFO() RETURNS STRING
...................................................................................................................................................
INPUT USERID
WHILE Z<(LEFT((USERID,1))<A AND 9<(RIGHT(USERID,4))<0 AND LENGTH(USERID)<>5
...................................................................................................................................................
INPUT USERID
ENDWHILE
INPUT PREFNAME
...................................................................................................................................................
IF PREFNAME=”” THEN
PREFNAME= ‘’
...................................................................................................................................................
STRING= USERID & ‘*’ % PREFNAME
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
...................................................................................................................................................
............................................................................................................................................. [8]
© UCLES 2019 9608/22/M/J/19 [Turn over
14
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.
Program code
PROCEDURE TOPLEVEL()
...................................................................................................................................................
CALL GETINFO(STRING)
...................................................................................................................................................
CALLWRITEINFO()
...................................................................................................................................................
DECLARE CHOICE:BOOLEAN
DECLARE CHAR:CHAR
...................................................................................................................................................
INPUT CHOICE
...................................................................................................................................................
REPEAT
...................................................................................................................................................
CHAR<- MID(STRING,1,1)
...................................................................................................................................................
IF CHAR>=A AND CHAR<=M THEN
WRITEINFO(FILE1,TXT)
...................................................................................................................................................
ELSEIF CHAR>=N AND CHAR<=M THEN
...................................................................................................................................................
WRITEINFO(FILE2.TXT)
...................................................................................................................................................
ELSE
PRINT "FILE WRITE UNSUCCESSFUL."
...................................................................................................................................................
ENDIF
...................................................................................................................................................
UNTIL CHOICE= N
ENDPROCEDURE
...................................................................................................................................................
...................................................................................................................................................
PROCEDURE TOPLEVEL()
...................................................................................................................................................
REPEAT
INPUT CHOICE
...................................................................................................................................................
IF CHOICE== Y THEN
...................................................................................................................................................
STRING = GETINFO()
...................................................................................................................................................
IF A<LEFT(STRING,1)<M THEN
...................................................................................................................................................
WRITEINFO(FILE1.TXT)
...................................................................................................................................................
ELIF N<LEFT(STRING,1)<Z THEN
WRITEINFO(FILE2.TXT)
...................................................................................................................................................
ELSE
...................................................................................................................................................
OUTPUT"WRITE UNSUCCESSFUL"
ENDIF
...................................................................................................................................................
UNTIL CHOICE== N
...................................................................................................................................................
ENDPROCEDURE
............................................................................................................................................. [8]
© UCLES 2019 9608/22/M/J/19
15
...................................................................................................................................................
...................................................................................................................................................
............................................................................................................................................. [3]
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.
Appendix
Operators (pseudocode)
Operator Description