9618/21

Computer Science 9618/21May/June 2025

Cambridge AS Level · Fundamental Problem-solving and Programming Skills · worked solutions for every part, with the mark scheme

7
questions
75
marks
120
minutes

Topics Data Types and Structures · Programming · Algorithm Design and Problem-solving · Software Development

Q1Medium-EasyAlgorithm Design and Problem-solvingData Types and StructuresProgramming

A program is being developed to help the manager of a shop control the stock.

(a)

An identifier table has been used during the design stage.

Complete the identifier table:

Example valueExplanationVariable nameData type
"Fruit"a category of stock that is sold in the shop
20/02/2025when an item was sold
12.67the cost of an item
TRUEto indicate if an item is in stock
4M
(b)

A module Sales() is part of the stock control program.

The table contains pseudocode extracts from the module Sales()

Each extract may include all or part of:

  • assignment
  • selection
  • iteration (repetition).

Complete the table by placing one or more ticks (✓) in each row:

Pseudocode extractAssignmentSelectionIteration
Result ← CalculateTotal()
WHILE IsClosed
REPEAT
INPUT Value
UNTIL Sales[4] > Value
IF Sales[Current] <= 150 THEN
Discount ← TRUE
ENDIF
CASE OF Option
5M
(c)

Decomposition has been used to design the program to help the shop manager control the stock.

Describe decomposition.

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

.............................................................................................................................................

3M
Q2Medium-EasySoftware DevelopmentProgramming

A program is being developed to calculate the pay of employees working for a company.

A function CalculateBonus() calculates bonus pay based on the value of sales.

Bonus pay is calculated as shown in the table.

Value of sales (in dollars)Bonus pay (in dollars)
below 20000
between 2000 and 4000 inclusive10
above 4000100

A flowchart for the function CalculateBonus() has been designed.

(a)

The flowchart contains logic errors.

One logic error is that BonusPay will not be set to 10 although the ValueOfSales input is between 2000 and 4000 inclusive.

2M
(i)

Explain why this error occurs.

...........................................................................................................................................

.....................................................................................................................................

1M
(ii)

Explain how this error could be corrected.

...........................................................................................................................................

.....................................................................................................................................

1M
(b)

There are different ways to reduce the risk of errors when developing the new program, such as the use of constants.

4M
(i)

State a value that could be replaced by a constant in the function CalculateBonus()

.....................................................................................................................................

1M
(ii)

Explain how the use of constants helps to reduce the risk of programming errors.

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

.....................................................................................................................................

2M
(iii)

One other way that can reduce the risk of errors when writing the program is the use of library routines.

Explain how library routines can reduce the risk of programming errors.

...........................................................................................................................................

.....................................................................................................................................

1M
(c)

All the logic errors have been corrected, and the program has been coded.

Identify and describe two other types of error that the program could contain.

Type of error .............................................................................................................................

Description ................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

Type of error .............................................................................................................................

Description ................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

4M
Q38MMediumAlgorithm Design and Problem-solvingProgramming

A student has been asked to create a simple guessing game program. This program will generate a random integer value between 1 and 100. It will then repeatedly prompt the user to input an integer value until they input the randomly generated value.

The student has written a structured English description:

step 1 – randomly generate an integer value between 1 and 100 inclusive
step 2 – prompt the user to input an integer value
step 3 – output an appropriate message if the value input was too high; then repeat from step 2
step 4 – output an appropriate message if the value input was too low; then repeat from step 2
step 5 – output an appropriate message if the value input was the same value that was randomly generated; then end the program.

Write a pseudocode algorithm from this structured English description.

Assume no input validation is needed.

..........................................................................................................................................................

..........................................................................................................................................................

..........................................................................................................................................................

..........................................................................................................................................................

..........................................................................................................................................................

..........................................................................................................................................................

..........................................................................................................................................................

..........................................................................................................................................................

..........................................................................................................................................................

..........................................................................................................................................................

..........................................................................................................................................................

..........................................................................................................................................................

..........................................................................................................................................................

..........................................................................................................................................................

..........................................................................................................................................................

..........................................................................................................................................................

..........................................................................................................................................................

....................................................................................................................................................

Similar questions
Q4MediumProgrammingData Types and StructuresAlgorithm Design and Problem-solving

Study the algorithm:

DECLARE Chars : ARRAY[1:4] OF CHAR
DECLARE I, J : INTEGER
DECLARE Key : CHAR
I ← 2
Chars[1] ← 'D'
Chars[2] ← 'T'
Chars[3] ← 'H'
Chars[4] ← 'R'
WHILE I <= 4 //Outer loop
  Key ← Chars[I]
  J ← I - 1
  WHILE J >= 0 AND Chars[J] > Key //Inner loop
    Chars[J + 1] ← Chars[J]
    J ← J - 1
  ENDWHILE
  Chars[J + 1] ← Key
  I ← I + 1
ENDWHILE
(a)

The outer loop structure used in the algorithm is not the most appropriate one to use.

State the type of loop structure that would be the most appropriate to use and justify why it is the most appropriate.

Loop structure ...........................................................................................................................

Justification ...............................................................................................................................

...................................................................................................................................................

2M
(b)

Complete the trace table by dry running the algorithm.

The first row has been completed.

IKeyJChars[J]Chars[1]Chars[2]Chars[3]Chars[4]
2'D''T''H''R'
6M
Q57MMediumData Types and Structures

Stacks and queues are both abstract data types.

A stack uses a top-of-stack pointer to indicate the location of the last item added to the stack.

A queue uses two pointers:

  • a front pointer to indicate the location of the next item to be removed from the queue
  • a rear pointer to indicate the location of the next item to be added to the queue.

A queue can be used to reverse the items stored on a stack.

For example, if a stack contains six items:

Initial state of the stack:

Final state of the stack when the items have been reversed:

Describe how the queue could be used to reverse the items that are currently stored on the stack.

Your description must include how the pointers are used in both the stack and queue.

Assume:

  • The stack initially contains an unknown number of items.
  • The queue can store all the items currently stored on the stack.
  • The queue is initially empty.

..........................................................................................................................................................

..........................................................................................................................................................

..........................................................................................................................................................

..........................................................................................................................................................

..........................................................................................................................................................

..........................................................................................................................................................

..........................................................................................................................................................

..........................................................................................................................................................

..........................................................................................................................................................

..........................................................................................................................................................

..........................................................................................................................................................

..........................................................................................................................................................

..........................................................................................................................................................

..........................................................................................................................................................

..........................................................................................................................................................

..........................................................................................................................................................

..........................................................................................................................................................

..........................................................................................................................................................

..........................................................................................................................................................

....................................................................................................................................................

Similar questions
Q6Medium-HardSoftware DevelopmentData Types and Structures

A program monitors the speed of vehicles as they move around a large building site.

Each vehicle contains a sensor which reads an integer value that represents the speed of the vehicle. The value is expected to be in the range 0 to 60 inclusive.

The sensors cannot read values less than 0.

A program module has been written to validate the values read by the sensors.

(a)

A test plan is needed to fully test the module.

Complete the table. The first line has been completed for you.

Assume the sensors generate only integer values.

Type of test dataTest data valueExpected outcome
normal36data item is accepted
4M
(b)

Each sensor used in the system has a unique sensor ID number in the range 1 to 50.

The program that is used to monitor the speed of each vehicle reads each sensor value every second and stores this value along with the sensor's unique ID into a global 2D array Reading.

The global array Reading has been declared as follows:

DECLARE Reading : ARRAY[1:2000, 1:2] OF INTEGER

The array contains 4000 elements organised as 2000 rows and 2 columns.

Column 1 contains the sensor value, and column 2 contains the sensor ID.

When 2000 sensor readings have been taken, the array is full and the system stops taking any more sensor readings until the array has been processed.

A procedure Sort() is needed to sort the array into ascending order of sensor value using an efficient bubble sort algorithm.

Write efficient pseudocode for the procedure Sort()

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

.............................................................................................................................................

8M
Q7Medium-HardProgrammingData Types and Structures

A program is being developed to implement a customer loyalty scheme for a coffee shop.

The programmer has decided that the following data items need to be stored for each customer:

Data itemDescription
customer IDa unique six-digit string
pointsan integer value that is increased by one for every cup of coffee the customer orders

When a customer visits the shop and orders coffee, the scheme operates as follows:

  • The total number of points is increased by the number of coffees ordered.
  • If just one cup of coffee is ordered and the number of points goes above 10, then:
    • the cup of coffee they have just ordered is given to them free of charge
    • the number of points is reduced by 11.
  • If the order is for multiple coffees and the number of points goes above 10, then:
    • they get one coffee free of charge for every 11 points
    • the number of points is reduced by 11 for each free coffee.

For example, the:

  • customer currently has 9 points
  • customer orders 16 cups of coffee
  • total number of points now becomes 25
  • customer gets 2 free coffees and now has 3 points left.

The programmer has defined a program module that is called every time a customer places an order:

ModuleDescription
CustomerOrder()- called with two integer parameters:
  ◦ the number of coffees ordered
  ◦ the current number of points
- output a suitable message giving the number of free coffees
- return a value for the new points total.
(a)

Write pseudocode for module CustomerOrder()

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

...................................................................................................................................................

.............................................................................................................................................

6M
(b)

A text file Loyalty.txt will be used to store the data items for the loyalty scheme. The data items for each customer will be stored on a separate line of the text file where each data item is separated by a comma:

<CustomerID>,<Points>

The contents of the text file Loyalty.txt will always be stored in ascending order by customer ID.

When the data items are read from or written to the text file Loyalty.txt, they may need to be converted to the appropriate data type.

Each customer has a unique customer ID starting at "100001" with this value increasing by one each time a new customer joins the loyalty scheme.

When a customer joins the loyalty scheme, they are assigned the next customer ID and value of points is set to 0.

For example, if the loyalty scheme has 204 customers and a new customer joins the loyalty scheme, the following line is added to the text file Loyalty.txt:

"100205,0"

You can assume that the number of customers in the loyalty scheme will never be more than 9000.

The programmer has defined a program module as follows:

ModuleDescription
AddNewCustomers()- called with an integer parameter representing the number of new customers to be added to the loyalty scheme
- adds a new line, containing the required information, to the text file Loyalty.txt for each customer added to the loyalty scheme
- outputs each new customer ID added to the loyalty scheme
12M
(i)

Write pseudocode for module AddNewCustomers()

Assume that there is at least one customer already in the loyalty scheme.

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

.....................................................................................................................................

8M
(ii)

The requirements for AddNewCustomers() are changed. There may be no existing customers in the loyalty scheme.

Explain the changes that will need to be made to the module AddNewCustomers()

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

.....................................................................................................................................

4M