100% found this document useful (3 votes)
884 views

Computer Science 15 Marks Questions p2

Computer science p2 15 marks questions

Uploaded by

Zain
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (3 votes)
884 views

Computer Science 15 Marks Questions p2

Computer science p2 15 marks questions

Uploaded by

Zain
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 47

IGCSE COMPUTER SCIENCE 0478 PAPER 2

Scenario
Questions
Practice

IGCSE PAPER 2 PROGRAMMING QUESTIONS PRACTICE


Compilation of Scenario (12-15 Mark) Questions
Everything available before May/June 2023.
Includes special section by ChatGPT!

-sockette
QUESTION
11 A times table test will be set up. Before using
the test, the user can set the times table to be
tested and the number of questions to be asked. The
times tables can be any whole number between 2 and
12 inclusive. The number of questions can be between
5 and 10 inclusive. No questions can be the same in
any test. The name of the user should be displayed
with all messages and prompts.

Write and test a program that meets the following


requirements:

o Sets up the starting conditions for the test


o During the test:
o displays each question with the question number
o checks if the answer input is correct and displays
the right answer if the answer input was
wrong
o adds one to the user’s total every time an answer
is right.
o At the end of the test:
o displays the result
o asks the user if they want a retest.

You must use pseudocode or program code and add


comments to explain how your code works. All
inputs and outputs must contain suitable
messages.
MARKSCHEME
Cambridge IGCSE™ and O Level Computer Science

Python

# set up starting conditions


Name = input("Please enter your name ")
Table = 0
while (Table < 1 or Table > 12):
Table = int(input("Please enter a table between 1 and 12 "))
Questions = 0
while (Questions < 5 or Questions > 10):
Questions = int(input("Please enter the number of questions
between 5 and 10 "))
Retest = True
# conduct the test
while Retest:
Right = 0
for QuestionNumber in range(1, Questions + 1):
print("Question ", QuestionNumber)
print (Table, " X ", QuestionNumber)
Answer = int(input("Answer "))
if Answer == Table*QuestionNumber:
print(Name, " you are right, well done")
Right +=1
else:
print(Name, " you are wrong the answer is ",
Table*QuestionNumber)
print("Test over ", Name, " you got ", Right, " out of ",
Questions)
Choice = input(" Do you want a retest Y or N? ")# check for
a retest
if Choice != "Y":
Retest = False [14]

Cambridge IGCSE™ and O Level Computer Science Second Edition Study and Revision Guide
© Hodder & Stoughton Ltd 2022
Cambridge IGCSE™ and O Level Computer Science

Visual Basic:
Module Module1
Sub Main()
Dim Name, Choice As String
Dim Table, Questions, QuestionNumber, Right, Answer As Integer
Dim ReTest As Boolean
' set up staring conditions
Console.Write("Please enter your name ")
Name = Console.ReadLine()
Do
Console.Write("Please enter a table between 1 and 12 ")
Table = Int(Console.ReadLine())
Loop Until Table >= 1 And Table <= 12
Do
Console.Write("Please enter the number between 5 and 10 ")
Questions = Int(Console.ReadLine())
Loop Until Questions >= 5 And Questions <= 10
ReTest = True
' conduct the test
Do
Right = 0
For QuestionNumber = 1 To Questions
Console.WriteLine("Question " & QuestionNumber)
Console.WriteLine(Table & " X " & QuestionNumber)
Answer = Int(Console.ReadLine())
If Answer = QuestionNumber * Table Then
Console.WriteLine(Name & " you are right well done")
Right = Right + 1
Else
Console.WriteLine(Name & " you are wrong the answer is " & Table *
QuestionNumber)
End If
Next
Console.WriteLine("Test over " & Name & " you got " & Right & " out of "
& Questions)
Console.WriteLine("Do you want a retest Y or N?")
Choice = Console.ReadLine()
If Choice <> "Y" Then
ReTest = False
End If

Loop Until Not ReTest


Cambridge IGCSE™ and O Level Computer Science Second Edition Study and Revision Guide
© Hodder & Stoughton Ltd 2022
Cambridge IGCSE™ and O Level Computer Science

Java:
import java.util.Scanner;
class ExamQ11Java
{
public static void main(String args[])
{
// set up starting conditions
Scanner myObj = new Scanner(System.in);
String Name;
System.out.print("Please enter your name ");
Name = myObj.next();
int Table;
do
{
System.out.print("Please enter a table between 1 and 12 ");
Table = myObj.nextInt();
}
while (Table < 1 || Table > 12);
int Questions;
do
{
System.out.print("Please enter the number of questions between 5 and 10 ");
Questions = myObj.nextInt();
}
while (Questions < 5 || Questions > 12);

boolean Retest = true;

int QuestionNumber, Answer, Right;

// conduct the test


do
{
Right = 0;
for (QuestionNumber= 1; QuestionNumber <= Questions; QuestionNumber ++)
{
System.out.println("Question " + QuestionNumber);
System.out.println(Table + " X " + QuestionNumber);
Answer = myObj.nextInt();
if (Answer == Table * QuestionNumber)
{
System.out.println(Name + " you are right, well done");
Right ++;
}
else
{
System.out.println(Name + " you are wrong the answer is " + Table * QuestionNumber);
}
}
System.out.println("Test over " + Name + " you got " + Right + " out of " + Questions );
System.out.print("Do you want a retest Y or N? ");
String Choice;
Choice = myObj.next();
if(!Choice.equals("Y"))
{
Retest = false;
}
}
while (Retest);

Cambridge IGCSE™ and O Level Computer Science Second Edition Study and Revision Guide
© Hodder & Stoughton Ltd 2022
QUESTION
SPECIMEN 2A
13 The 1D array StudentName[] contains the names of students in a class.
The 2D array
StudentMark[] contains the mark for each subject, for each student. The
position of
each student’s data in the two arrays is the same, for example, the student
in position 10 in
StudentName[] and StudentMark[] is the same.
The variable ClassSize contains the number of students in the class. The
variable SubjectNo
contains the number of subjects studied. All students study the same number
of subjects.
The arrays and variables have already been set up and the data stored.
Students are awarded a grade based on their average mark.

Average markGrade awarded


greater than or equal to 70 = distinction
greater than or equal to 55 and less than 70 = merit
greater than or equal to 40 and less than 55 = pass
less than 40 = fail

Write a program that meets the following requirements:


• calculates the combined total mark for each student for all their
subjects
• calculates the average mark for each student for all their subjects,
rounded to the nearest
whole number
• outputs for each student:
– name
– combined total mark
– average mark
– grade awarded
• calculates, stores and outputs the number of distinctions, merits, passes
and fails for the
whole class.

You must use pseudocode or program code and add comments to explain how
your code works.
© UCLES 2020 0478/02/SP/23
You do not need to initialise the data in the array.
MARKSCHEME
SPECIMEN 2A
0478/02 Cambridge IGCSE – Mark Scheme
For examination

SPECIMEN from 2023

Question Answer Marks


13Example 15 mark answer in pseudocode.

// meaningful identifier names and appropriate data structures (variables, constants and the
// given arrays) to store all the data required
DECLARE TotalMark : ARRAY[1:50] OF INTEGER
DECLARE AverageMark : ARRAY[1:50] OF INTEGER
DECLARE SubjectCounter : INTEGER
DECLARE StudentCounter : INTEGER
DECLARE DistinctionNo : INTEGER
DECLARE MeritNo : INTEGER
DECLARE PassNo : INTEGER
DECLARE FailNo : INTEGER

CONSTANT Distinction = 70

CONSTANT Merit = 55

CONSTANT Pass = 40

// initialisation processes for this scenario, initialising the running totals used for
// grades and combined totals
DistinctionNo 0
MeritNo 0

PassNo 0

FailNo 0


FOR StudentCounter 1 to ClassSize
TotalMark[StudentCounter] 0

NEXT StudentCounter

// programming techniques of iteration, selection, totalling, counting and output are used

© UCLES 2020 Page 12 of 16


0478/02 Cambridge IGCSE – Mark Scheme
For examination

SPECIMEN from 2023

Question Answer Marks


13 FOR StudentCounter 1← to ClassSize
FOR SubjectCounter 1←to SubjectNo
TotalMark[StudentCounter] TotalMark[StudentCounter] + StudentMark[StudentCounter,
SubjectCounter]

NEXT SubjectCounter
AverageMark[StudentCounter] INT((TotalMark[StudentCounter] / SubjectNo) + 0.5)
OUTPUT "Name ", StudentName[StudentCounter]

OUTPUT "Combined total mark ", TotalMark[StudentCounter]
OUTPUT "Average mark ", AverageMark[StudentCounter]
IF AverageMark[StudentCounter] >= Distinction
THEN
DistinctionNo DistinctionNo + 1
OUTPUT "Grade Distinction"

ELSE
IF AverageMark[StudentCounter] >= Merit
THEN
MeritNo MeritNo + 1
OUTPUT "Grade Merit"

ELSE
IF AverageMark[StudentCounter] >= Pass
THEN
PassNo PassNo + 1
OUTPUT "Grade Pass"

ELSE
FailNo FailNo + 1
OUTPUT "Grade Fail"

ENDIF
ENDIF
ENDIF
NEXT StudentCounter

OUTPUT "Number of Distinctions ", DistinctionNo


OUTPUT "Number of Merits ", MeritNo
OUTPUT "Number of Passes ", PassNo
OUTPUT "Number of Fails ", FailNo

© UCLES 2020 Page 13 of 16


QUESTION
SPECIMEN 2B
13 The names of patients are stored in the one-dimensional (1D)
array Patient[] of type string.
A separate two-dimensional (2D) array Readings[] stores the
latest data recorded about each patient.
The array already contains the readings taken by a nurse for
each patient:
• temperature measured to one decimal place
• pulse rate, a whole number.
Temperature readings should be in the range 31.6 to 37.2
inclusive.
Pulse readings should be in the range 55.0 to 100.0
inclusive.
The hospital number given to the patient is used for the
index on both arrays, this is a value between 1 and 1000
inclusive.
When the data for a patient is checked a warning is given if
any of the readings are out of range.
If both readings are out of range, then a severe warning is
given.
Write a procedure, using pseudocode or program code, that
meets the following requirements:
• takes the hospital number as a parameter
• checks if the number is valid
• outputs an error message and exits the procedure if the
number is not valid
• if the hospital number is valid:
– output the patient’s name
– output ‘Normal readings’ if both the readings are within
range
– output ‘Warning’ and the name of the reading e.g. ‘Pulse’
if one reading is out of range
– output ‘Severe warning’ and the names of the two readings
‘Pulse and temperature’ if
both readings are out of range
– exits the procedure.
You must use pseudocode or program code and add comments to
explain how your code works.
You do not need to initialise the data in the arrays.
MARKSCHEME
SPECIMEN 2B
0478/02 Cambridge IGCSE – Mark Scheme For examination

SPECIMEN from 2023

Question Answer Marks


13 Read the whole answer: 15
Check if each requirement listed below has been met. Requirements may be met using a suitable built-in function from the
programming language used (Python, VB.NET or Java)
On script tick if requirement met, cross if no attempt seen, omission mark and/or comment if partially met (see marked
scripts).
Use the tables for A02 and A03 below to award a mark in a suitable band using a best fit approach
Then add up the total.
Marks are available for:
AO2 (maximum 9 marks)
AO3 (maximum 6 marks)

Techniques
Procedure
required: R1 that takes the hospital number as a parameter (use of procedures and parameters)
R2 Check if hospital number valid (selection, use of 1D array)
R3 Check temperature reading (selection, use of 2D array)
R4 Check pulse reading (selection, use of 2D array)
R5 Output appropriate messages for each selection (output with appropriate messages)

Data Structures required:


The names underlined must be used as given in the scenario
Arrays or lists ,
Patient Readings
Variables
HospitalNumber
Constants
Example 15 , , ,mark be variables
couldanswer in pseudocode.
TempHigh TempLow PulseHigh PulseLow

//Declaration of variables and constants


CONSTANT TempHigh = 37.2
CONSTANT TempLow = 31.6
CONSTANT PulseHigh = 100.0
CONSTANT PulseLow = 55.0

© Cambridge University Press & Assessment 2023 Page 11 of 14


0478/02 Cambridge IGCSE – Mark Scheme For examination

SPECIMEN from 2023

Question Answer Marks


13 PROCEDURE CheckPatient(HospitalNumber :INTEGER)
IF HospitalNumber >=1 AND HospitalNumber <=1000 // check for valid hospital number
THEN
OUTPUT "Name of Patient ",Patient(HospitalNumber)
IF Reading[HospitalNumber,1] <= TempHigh AND
Reading[HospitalNumber,1] >= TempLow AND
Reading[HospitalNumber,2] <= PulseHigh AND
Reading[HospitalNumber,2] >= PulseLow // check if all readings normal
THEN
OUTPUT "Normal readings"
ENDIF
IF (Reading[HospitalNumber,1] <= TempHigh AND
Reading[HospitalNumber,1] >= TempLow) AND
(Reading[HospitalNumber,2] > PulseHigh OR
Reading[HospitalNumber,2] < PulseLow) // check if pulse out of range
THEN
OUTPUT "Warning Pulse"
ENDIF
IF (Reading[HospitalNumber,1] > TempHigh OR
Reading[HospitalNumber,1] < TempLow) AND
(Reading[HospitalNumber,2] <= PulseHigh AND
Reading[HospitalNumber,2] >= PulseLow) // check if temp out of range
THEN
OUTPUT "Warning temperature"
ENDIF
IF (Reading[HospitalNumber,1] > TempHigh OR
Reading[HospitalNumber,1] < TempLow) AND
(Reading[HospitalNumber,2] > PulseHigh OR
Reading[HospitalNumber,2] < PulseLow) // check if both out of range
THEN
OUTPUT "Severe warning, Pulse and temperature"
ENDIF
ELSE
OUTPUT "Hospital number not valid"
ENDIF
ENDPROCEDURE

© Cambridge University Press & Assessment 2023 Page 12 of 14


QUESTIONS
(NO MARKSCHEME)
8 Programming

15 Write and test a program that uses a two-dimensional array, Game[] to store the moves
in a noughts and crosses game. The program should meet the following requirements:
» each game with an empty array.
Start
» Allow two players to input their moves in turn; the contents of the array are displayed
before

and after every move.
» One player can input O and the other input X; no other moves are allowed, and no move
can
use a space in the array already occupied.
» After every move the program should check for a completed line of three Os or three Xs,
and
if found output the winner of the game.
» procedures and parameters.
Use
»
Include comments to explain how your code works.

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

..

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

..

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

..

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

..

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

..

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

..

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

..

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

..

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

..

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

..

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

..
54 Photocopying prohibited Cambridge IGCSE and O Level Computer Science Algorithms, Programming and Logic Workbook
...............................................................................................................................................................................

..
QUESTION
A programmer has been asked to design and write a program to
accept inputs about each game player:
• name
• age in years
• nickname
• if the player wants to use their name or their nickname.

The program must include a validation check on the age,


ensure the name and the nickname are no more than eight
characters long, then output a personalised welcome message
for each player.
There can be three, four or five players for each game; the
input routine finishes when all the players have entered
their details.

a) Give a suitable identifier name and data type for each


input. Explain your choice of data type for each input.

b) Write your design for the program in pseudocode. Include


the validation checks for input. Your program must include
selection and iteration, use comments to show where these
have been used and give the reason why thy have been used.

[12]

Extend your program design to store each name and nickname


in a two-dimensional array, the age in another array and the
choice in another array. The index of the array will
identify the player.

Use a procedure to output the personalised welcome message


for each player when all players have entered their details.
This output should be in ascending order of age.
a) Declare and initialise the arrays needed.
b) Write your design for the program in pseudocode.

You do not need to include the declarations for the arrays


and the validation checks for input.
[12]
MARKSCHEME
QUESTION
Using a programming language write a program to store the
names of 50 people playing a game and their high scores.
Output the names and the scores ordered from highest to
lowest score and output the average score.

Your program must include and use meaningful identifier


names for
- variables
- constants
- arrays
- procedures / functions.

Your program must be fully commented using your programming


languages commenting feature.

[1O]
MARKSCHEME
QUESTION
The one-dimensional array BabyName[] contains the names of
the babies in a nursery.
Another one-dimensional array ParentPhone [] contains the
phone numbers for the parents of the baby.
A final one-dimensional array BabyAge[] contains the baby's
age in months.

The position of each baby's data in the three arrays is the


same; for example, the baby in position 3 in BabyName 0,
ParentPhone and BabyAge[] is the same.

Write and test a program that meets the following


requirements:
1. uses procedures to display these lists:
parent phone numbers and baby names in alphabetic order
of baby name
baby names for babies aged under three months

2. uses a procedure to display all the details for a baby,


with the name used as a parameter

3. uses a procedure to update the details for a baby, with


the name used as a parameter.

You must use pseudocode or program code with local and


global variables and add comments to explain how your code
works.

All inputs and outputs must contain suitable messages.

[12]
MARKSCHEME
IGCSE Computer Science - Paper 2 - Feb/March 2023
(Unofficial ~ Past Paper hasn't been released yet)

2D array called TeamPoints that stores the points for every


match for every team. 1D array called TeamName that stores
the names of every team at the same index location as in
TeamPoints.

A constant LeagueSize with the number of teams. A constant


MatchNo with the number of matches played by each team.

Points in the 2D array TeamPoints are awarded based on the


following criteria:
- An away win is 3 points
- A home win is 2 points
- A draw is 1 point
- A loss is 0 points

You must:
- Calculate and store the total points scored
- Calculate and display the total points for all matches in
each category (away win, home win, draw, loss)
- Calculate and display the total team points, total team
points for each category and name for each of the teams
- Find and display the name of the team with the highest and
lowest points

[15]
(Unofficial Python Markscheme by S_Skamr ~ Past Paper hasn't been
released yet)

Note: This code makes use of helper functions and dictionaries


(Discouraged for IGCSE Syllabus)

"""
MAPPINGS

0: Loss
1: Draw
2: Home Win
3: Away Win

They start with 0 so it can be easily used to index into a list that
stores every count for the mappings - helpers.
"""

# Test data generation starts (not required) -------------

from random import randint

# random test team names


teams = ["Berkeley", "Princeton", "Stanford", "Michigan", "CalTech",
"Duke", "Yale", "Cambridge", "Oxford", "Imperial", "Kings", "Harvard",
"NYU", "UC Davis"]
# number of mappings - this should never change as the number of
categories are a total of 4 always
MAP_COUNT = 4
# number of teams
TEAM_COUNT = len(teams)
# number of matches
MATCH_COUNT = randint(4,12)
# Generate a list of random numbers from 0-3 for the number of matches
for each team - 1 list of random numbers for every team
points = [[randint(0, 3) for i in range(MATCH_COUNT)] for x in
range(TEAM_COUNT)]

# Test data generation over -------------


# Generate an empty helper for all category mappings to maintain their
counts
def genHelper():
return [0] * MAP_COUNT

# each point value maps to a certain category of outcome - this function


increments the helper value for that outcome; each helper is essentailly a
list where the index corresponds to the point value
def incrementHelper(point, helper):
# increment the helper's value at index 'point'
helper[point] += 1
# return the full helper back
return helper

# Maps each index to the required message when printing - for eg. an index
of 1 corresponds to the returned message "Draws" which can be used to
display the required details for draws
def mapMsg(index):
return ["Losses", "Draws", "Home wins", "Away wins"][index]

# Set total points to 0 and generate a helper for totalCategory


(totalCategory counts the total count of each category)
totalPoints = 0
totalCategory = genHelper()

# Setting highest and lowest to [Name, Point] format with corresponding


values for 2nd index
highest = [None, 2**-64]
lowest = [None, 2**64]

# Enumerate self implementation - uses a generator to iterate over an


iterable while maintaining the count for index 'i'
def enumerateOver(iterObj, s=0):
i = s
for element in iterObj:
yield i, element
i += 1
# Loop over the index and matches returned by enumerating over the points
list
for i, teamMatches in enumerateOver(points):
# Generate a helper for the current team's category counts
teamHelper = genHelper()
# Current teams total points
teamTotalPoints = 0
# Points for every match of every team
for points in teamMatches:
# Add the points to the team's total points and the total Global
points
teamTotalPoints += points
totalPoints += points
# Increment the total category based helper and the current teams
helper as required
totalCategory, teamHelper = incrementHelper(points,
totalCategory), incrementHelper(points, teamHelper)
# Print the team's name as corresponding to the current index
print(f"Team name: {teams[i]}")
# Use the number of mappings and the 'mapMsg' function to display
Losses, Draws, Home wins, and Away wins for every team
for j in range(MAP_COUNT):
print(f"Team {mapMsg(j)}: {teamHelper[j]}")
# Display the team's total points
print(f"Team total points: {teamTotalPoints}")

# Check if the current teams points belong to highest or lowest and


set highest or lowest to the current teams name and points if so
if teamTotalPoints > highest[1]:
highest = [teams[i], teamTotalPoints]
if teamTotalPoints < lowest[1]:
lowest = [teams[i], teamTotalPoints]

# Print a divider for aesthetics


print("---")

# For each of the mappings print out the totals


for j in range(MAP_COUNT):
print(f"Total {mapMsg(j)}: {totalCategory[j]}")
print("---")

# Print the team with the lowest and highest points and their names
print(f"Lowest scoring team with {lowest[1]} points is {lowest[0]}.")
print(f"Highest scoring team with {highest[1]} points is {highest[0]}.")
IGCSE CS SCENARIO QUESTIONS

CHAT GPT
QUESTIONS

IGCSE PAPER 2 PROGRAMMING QUESTIONS PRACTICE


These questions have been generated by ChatGPT. They
have a higher difficulty level than usual IGCSE
Questions.
The AI has generated questions and answers that maybe
relevant but are not be the preferred source for practice
questions for IGSCE

You might also like