Computer Science
Algorithms, Programming and Logic
Basic Programming Syntax
Pseudocode
Made By Edited By
@neekh @apuppy.
Version 5, for examinations until 2028.
Information
This booklet explains the structures of Pseudocode with clear examples to help the user understand
the basics of programming using this programming language.
All information provided in this document is aligned inclusively with the Cambridge IGCSE™ and
Cambridge O Level Computer Science syllabus covering examinations from 2023 to 2028.
For additional information or queries, please contact @neekh on Discord.
Contents
1 Comments 3
2 Data Types 4
3 Declarations 5
3.1 Variable Declaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.2 Constant Declaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.3 Assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4 Functions 7
4.1 Input and Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.2 Other Library Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
5 Operations 8
5.1 Arithmetic Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5.2 Logical Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.3 String Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
6 Iterations and Loops 10
6.1 Count-controlled FOR Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
6.2 Post-conditional REPEAT Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
6.3 Pre-conditional WHILE Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
7 Selections 12
7.1 IF statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
7.2 CASE statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
8 Arrays 14
8.1 1D Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
8.2 2D Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
9 File Handling 15
10 Procedures and Functions 16
10.1 Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
10.2 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2
Comments
Comments in code act as a form of note that programmers might add to explain sections of programs
or other forms of logic. They are ignored by the compiler when the program is being executed. These
comments help make the code maintainable and manageable both for the program author and other
programmers.
Comments can be generalized into three forms, these are as follows:
• Multi-line comments
• Single-line comments
• Inline comments
In Pseudocode, all forms of comments are preceded with //.
Pseudocode
Multi-line comments
// This is an example of a multi-line comment
// It is normally used for larger explanations
Single-line comments
// This is an example of a single-line comment
Inline comments
OUTPUT Result // This is an example of an inline comment
3
Data Types
In programming, there are a few keywords used to designate certain data types, these are as follows:
INTEGER
REAL
CHAR
STRING
BOOLEAN
Literals
Literals of these data types are written as follows:
INTEGER written as normal in the denary numbering system, e.g: 5, -3, 0
REAL written with at least one digit on either side of the decimal point (0s being added if
necessary), e.g. 3.14, -4.5, 0.0
CHAR written as a single character delimited by single quotes, e.g. 'x', '@'.
STRING delimited by double quotes. Strings may be empty, e.g. "An orange cat", " ".
BOOLEAN written as either TRUE or FALSE.
4
Declarations
In programming, a declaration is a statement that introduces an element to a program. It provides
the compiler with explicit information about the element before it is used. Additionally, by using
declarations, programmers enhance the accessibility and maintainability of their code.
In Pseudocode, there are two types of declarations, these are as follows:
• Variable declaration
• Constant declaration
Variable Declaration
Variables are declared in the following format:
DECLARE <identifier> : <data type>
Pseudocode
Declaration of the INTEGER data type
DECLARE NumTeams : INTEGER
Declaration of the REAL data type
DECLARE Score : REAL
Declaration of the CHAR data type
DECLARE Choice : CHAR
Declaration of the STRING data type
DECLARE Feedback : STRING
Declaration of the BOOLEAN data type
DECLARE Found : BOOLEAN
Constant Declaration
Constants are declared by stating the identifier and the literal value in the following format:
CONSTANT <identifier> ← <value>
Pseudocode
Constant declaration of integer
CONSTANT UpperBound ← 15
Constant declaration of decimal number
CONSTANT MaxTemp ← 123.4
5
Assignment
In Pseudocode, the assignment operator is ←
Assignment statements are written in the following format:
<identifier> ← <value>
Pseudocode
Assigning a literal value to a variable
MaxAttempt ← 4
Assigning an expression to a variable
ActualScore ← Score * 100
Assigning another variable to a variable
CurrentTemp ← Temp
6
Functions
In programming there are a few built-in library functions that may be provided.
Input and Output
In Pseudocode, values can be input as follows:
INPUT <identifier>
Values can be output as follows:
OUTPUT <value(s)>
Several values, separated by commas, can be output using the same function.
Pseudocode
Input function
INPUT Answer
Output function
OUTPUT Score
Output function outputting multiple values
OUTPUT AvgScore, TotalScore, HighestScore
Other Library Functions
In Pseudocode the following library functions are practiced:
ROUND(<identifier>, <places>)
Returns the value of the identifier rounded to places number of decimal places. The identifier
should be any value that evaluates to the REAL data type whilst the number of places should be a
positive integer.
RANDOM()
Returns a random decimal number between 0 and 1 inclusive.
Pseudocode
Rounding function
ROUND(3.1415, 1)
Returns 3.1
Random function
RANDOM() * 5
Returns a random decimal number between 0 and 5 inclusive
ROUND(RANDOM() * 10), 0)
Returns a random integer between 0 and 10 inclusive
7
Operations
In programming, there are three types of operations, these are as follows:
• Arithmetic operations
• Logical operations
• String operations
Arithmetic Operations
For arithmetic operations, standard mathematical operator symbols are used. These operator
symbols are as follows:
Pseudocode
Addition +
Subtraction -
Multiplication *
Division /
Raised to the power of ^
Pseudocode
Calculating the area of a circle
Area ← Pi * Radius ^ 2
Integer division operations may also be used for calculations.
In Pseudocode, these integer division operations are written as follows:
DIV(<dividend>, <divisor>)
Returns the quotient of dividend divided by the divisor with the fractional part discarded.
MOD(<dividend>, <divisor>)
Returns the remainder of dividend divided by the divisor.
Pseudocode
DIV integer division operation
DIV(10, 3)
Returns 3
MOD integer division operation
MOD(10, 3)
Returns 1
8
Logical Operations
The following symbols are used for logical operations:
Pseudocode
Equal to =
Less than <
Less than or equal to <=
Greater than >
Greater than or equal to >=
Not equal to <>
These operations evaluate expressions to BOOLEAN data type values.
String Operations
String operations are used to manipulate values of the STRING data type.
In Pseudocode, the basic string operations are written as follows:
LENGTH(<identifier>)
Returns the integer value representing the length of the string.
LCASE(<identifier>)
Returns the string/character with all characters in lower case.
UCASE(<identifier>)
Returns the string/character with all characters in upper case.
SUBSTRING(<identifier>, <start>, <length>)
Returns a string of the length length starting at the position start. The length and start
should be a positive integer.
Pseudocode
Length string operation
LENGTH("Good evening")
Returns 12
Lower case string operation
LCASE('H')
Returns 'h'
Upper case string operation
UCASE("A blue bird")
Returns "A BLUE BIRD"
Substring string operation
SUBSTRING("Happy Days", 1, 5)
Returns "Happy"
9
Iterations and Loops
In programming, there are three types of iterations. These are as follows:
• Count-controlled FOR loop
• Post-conditional REPEAT loop
• Pre-conditional WHILE loop
Count-controlled FOR Loop
In count-controlled loop, the identifier must be a variable of the INTEGER data type.
For Pseudocode, count-controlled loops are written in the following structure:
FOR <identifier> ← <start> TO <finish>
<statements>
NEXT <identifier>
The identifier is assigned each of the integer values from start to finish inclusive, executing the
statements inside the loop after each assignment.
If start is equal to finish, the statements will only be executed once and if start is greater than
finish, the statements will not be executed at all.
An increment can be specified as follows:
FOR <identifier> ← <start> TO <finish> STEP <increment>
<statements>
NEXT <identifier>
The increment must be an expression that evaluates to an integer. The identifier will be assigned
the values from start in successive increments of increment until it reaches finish. If it goes
past finish, the loop will be terminated. increment can be negative.
Pseudocode
Count-controlled loop
FOR Index ← 1 TO 30
OUTPUT Numbers[Index]
NEXT Index
Nested count-controlled loop
FOR Row ← 5 TO 10
FOR Column ← 1 TO 3
OUTPUT Value[Row, Column]
NEXT Column
NEXT Row
Count-controlled loop with specified increment
FOR Index ← 1 TO 30 STEP 5
OUTPUT Numbers[Index]
NEXT Index
10
Post-conditional REPEAT Loop
In post-conditional loop, the condition must be an expression that evaluates to an BOOLEAN data
type.
The statements in the post-conditional loop will be executed at least once. The condition is tested
after the statements are executed and if the condition evaluates to TRUE the loop is then terminated,
otherwise the process is repeated again.
In Pseudocode, post-conditional loops are written as follows:
REPEAT
<statements>
UNTIL <conditions>
Pseudocode
Post-conditional loop
REPEAT
INPUT InpPassword
UNTIL InpPassword = Password
Pre-conditional WHILE Loop
In pre-conditional loop, the condition must be an expression that evaluates to an BOOLEAN data
type.
The condition is tested before the statements are executed, and the statements will only be executed
if the condition evaluates to TRUE. After the conditions have been executed the conditions are tested
again. The loop terminates when the condition evaluates to FALSE.
In Pseudocode, pre-conditional loops are written as follows:
WHILE <conditions> DO
<statements>
ENDWHILE
Pseudocode
Pre-conditional loop
WHILE Number < 10 DO
OUTPUT Number
Number ← Number + 1
ENDWHILE
11
Selections
There are two functions of selections this booklet practices, these are as follows:
• IF statements
• CASE statements
IF statements
In Pseudocode, an IF statement without an ELSE clause is written as follows:
IF <conditions>
THEN
<statements>
ENDIF
IF statement with an ELSE clause is written as follows:
IF <conditions>
THEN
<statements>
ELSE
<statements>
ENDIF
Pseudocode
IF statement without ELSE clause
IF Answer = CorrectAnswer
THEN
Score ← Score + 1
ENDIF
IF statement with ELSE clause
IF Answer = CorrectAnswer
THEN
Score ← Score + 1
ELSE
OUTPUT "Wrong Answer!"
ENDIF
12
CASE statements
In Pseudocode, CASE statements allow one out of several branches of code to be executed
depending on the value of the variable.
CASE statements are written as follows:
CASE OF <identifier>
<value n> : <statements>
ENDCASE
An OTHERWISE clause can be added as follows:
CASE OF <identifiers>
<value n> : <statements>
OTHERWISE <statements>
ENDCASE
These clauses are tested in a sequence. When a value that applies is found, it’s statement is executed
and the CASE statement is completed. If present, an OTHERWISE clause must be the last case. It’s
statement will be executed if none of the preceding cases apply.
Pseudocode
CASE statement
CASE OF Choice
1 : OUTPUT "Birch wood selected"
2 : OUTPUT "Spruce wood selected"
3 : OUTPUT "Fir wood selected"
ENDCASE
CASE statement with an OTHERWISE clause
CASE OF Movement
'w' : ycord ← ycord + 1
'a' : xcord ← xcord - 1
's' : ycord ← ycord - 1
'd' : xcord ← xcord + 1
OTHERWISE OUTPUT "Invalid choice!"
ENDCASE
13
Arrays
Arrays are fixed-length structures of elements that have identical data type, accessible by consecutive
index numbers. Square brackets, [<index>] are used to indicate the array indices.
In programming, arrays can have multiple dimensions, however this booklet only practices 1D and
2D arrays.
1D Arrays
In Pseudocode, 1D arrays are declared as follows:
DECLARE <identifier> : ARRAY[<l>:<u>] OF <data type>
Where l stands for lower bound and u stands for upper bound.
1D arrays are assigned in the following way:
<identifier>[<index>] ← <value>
Pseudocode
1D array declaration
DECLARE StudentName : ARRAY[1:30] OF STRING
1D array assignment
StudentName[19] ← "John Doe"
2D Arrays
In Pseudocode, 2D arrays are declared as follows:
DECLARE <identifier> : ARRAY[<lr>:<ur>, <lc>:<uc>] OF <data type>
Where r stands for row, c stands for column, l stands for lower bound and u stands for upper bound.
2D arrays are assigned as follows:
<identifier>[<ri>, <ci>] ← <value>
Where ri stands for row index and ci stands for column index.
Pseudocode
2D array declaration
DECLARE Grade : ARRAY[1:30, 1:5] OF CHAR
2D array assignment
Grade[16, 3] ← 'A'
14
File Handling
File Opening
When opening a file, the mode of operation of the file should be stated as follows:
OPENFILE <file identifier> FOR <file mode>
The file identifier will be the name of the file. The following file modes can be used:
READ for data to be read from the file
WRITE for data to be written to a file. In case the file does not exist, a new file will be created.
Existing data is overridden.
A file can only be opened in one mode at a time.
Reading from File
Data is read from the file (after the file has been opened in the READ mode) as follows:
READFILE <file identifier>, <identifier>
When executed, a line of text is read from the file and assigned to the identifier.
Writing from File
Data is written to a file (after the file has been opened in WRITE mode) as follows:
WRITE <file identifier>, <identifier>
When executed, the value from the identifier is assigned to the file.
File Closing
When a file is no longer in use, it is closed as follows:
CLOSEFILE <file identifier>
Pseudocode
Opening file in read mode
OPENFILE "Names.txt" FOR READ
Opening file in write mode
OPENFILE "Remarks.txt" FOR WRITE
Reading from a file
READFILE "Names.txt", Data
Writing to a file
WRITEFILE "Remarks.txt", Remark
Closing file
CLOSEFILE "Names.txt"
15
Procedures and Functions
Procedures and functions are always defined at the top of the program.
Procedures
In Pseudocode, a procedure with no parameters is defined as follows:
PROCEDURE <identifier>
<statements>
ENDPROCEDURE
A procedure with parameters is defined as follows:
PROCEDURE <identifier>(<par n> : <data type>)
<statements>
ENDPROCEDURE
When used, par n is the identifier for the parameters of the procedure. These will be used as
variables in the statements of the procedure.
Procedures should be called as follows:
CALL <identifier>
CALL <identifier>(<val n>)
When a procedure is called, if any parameters are present, they are substituted by the values, and the
statements are executed.
Pseudocode
Defining procedure with no parameter
PROCEDURE DisplayError
OUTPUT "Invalid response! Try again"
ENDPROCEDURE
Defining procedure with parameter
PROCEDURE CalculateScore(RawScore:INTEGER)
FullScore ← (RawScore/60) * 100
HalfScore ← (RawScore/60) * 50
OUTPUT FullScore, HalfScore
ENDPROCEDURE
Calling procedure with no parameter
CALL DisplayError
Calling procedure with parameter
CALL CalculateScore(48)
Returns 80 and 40
16
Functions
In Pseudocode, functions behave the same way as procedures except it only returns one singular
value. During definition the data type of the value returned has to be stated.
A function with no parameter is defined as follows:
FUNCTION <identifier> RETURNS <data type>
<statements>
ENDFUNCTION
A function with parameter is defined as follows:
FUNCTION <identifier>(<par n>:<data type>) RETURNS <data type>
<statements>
ENDFUNCTION
Function calls are not a complete program statement; the keyword CALL should not be used when
calling a function. Instead, functions should only be called as part of an expression.
Pseudocode
Defining function
FUNCTION SumSquare(Num1:INTEGER, Num2:INTEGER) RETURNS INTEGER
RETURN Num1 ^ 2 + Num2 ^ 2
ENDFUNCTION
Using function
OUTPUT "Sum of squares: ", SumSquare(5, 10)
17