0% found this document useful (0 votes)
54 views182 pages

PDLC

Uploaded by

aravind
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
54 views182 pages

PDLC

Uploaded by

aravind
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 182

Chapter 7: Algorithm Design and Problem Solving

Analysis Design
C7.1
Program
Development
Life Cycle
Coding Testing
DEFINITION

Program Development Life Cycle


A process that developers follow when creating

a new program.
Every software that has been developed follows the

same process (with alteration according to company).

Analysis Coding Launch

Design Testing
Mini software that you will be doing in the exam (Taken from the specimen paper).

Scenario

Your task
Chapter 7: Algorithm Design and Problem Solving

Design
C7.1

Analysis Program
Development
Life Cycle
Coding Testing
ANALYSIS
REQUIREMENT SPRECIFICATION

Problem needs to be clearly

defined and set out so anyone

working on the solution

understand what is needed.


ANALYSIS
UNDERSTANDING REQUIREMENTS FROM THE CLIENT’S
PERSPECTIVE. CLIENT CAN BE A PERSON OR AN END USER.
WE NEED TO DISCUSS WITH THEM, COLLECT DATA AND
SEVERAL INFORMATION EXCHANGE. IF NOT, THE PROCESS
CAN BE ENDLESS REPETITIONS AND CORRECTIONS.

Is this what my
client want?
TWO STEPS OF ANALYSIS

Decomposition Abstraction
DECOMPOSITION
Decomposition breaks down a complex problem into smaller parts, which

can be subdivided into even smaller parts, that can be solved easily.

EXAMPLE - ORGANIZE A HANG OUT


Sub Sub Sub
Task 1 Task 2 Task 3

Confirmation
Find a place Arranging
on who is
to hang out Transport
going
ABSTRACTION
Abstraction keeps the key elements required for the solution to the

problem and discards any unnecessary details and information

that is not required (temperorily).

EXAMPLE - ORGANIZE A HANG OUT


Sub
Sub
Task 1
Task 2

Confirmation Find a place


The most important
to hang out
on who is
sub task
going
ABSTRACTION
Abstraction keeps the key elements required for the solution to the

problem and discards any unnecessary details and information

that is not required (temperorily).

EXAMPLE - ORGANIZE A HANG OUT


Sub
Sub
Task 1 Before knowing if anyone is
Task 2
going, the details of where to
Confirmation Find a place
The most important hang out can be temperorily
to hang out
on who is abstracted. Eg. Just have a
sub task
brief idea of where to go
going
ABSTRACTION - EXAMPLE 2 (TEACHING THIS LESSON)

LEVEL 1
ABSTRACTION - EXAMPLE 2 (TEACHING THIS LESSON)

LEVEL 2
ABSTRACTION - EXAMPLE 2 (TEACHING THIS LESSON)

LEVEL 3
AND SO
ON...
Chapter 7: Algorithm Design and Problem Solving

Analysis

C7.1
Program Design

Development
Life Cycle
Coding Testing
DESIGN
In this stage, the developers of the

program will continue the

decomposition phase from the analysis

and begin to draw up visuals of the

end product.
DESIGN

W1: Structured W2: Flowchart W3: Pseudocode


• Show how a program's • Enable complex
diagram
• Visualise end goals decomposed parts will run, problems and

including any decisions or instructions to be read in

inputs that are needed plain English


DESIGN r 7 .2
pt e
h a
n C
e i
o r
n m
Structured diagram Flowchart Pseudocode

ar
e
• Visualise end goals • Show how a program's • Enable complex

L decomposed parts will run,

including any decisions or


problems and

instructions to be read in

inputs that are needed plain English


Chapter 7: Algorithm Design and Problem Solving

Analysis Design
C7.1
Program
Development
Coding
Life Cycle
Testing
CODING
The implementation stage

The programmers work on the

design modules, such as input,

output and processes, and write

code to make each part of the

program functional.
CODING
Example: E-commerce App
CODING
Example: E-commerce App

Module 1: Update sold count automatically


Module 2: Login and

CODING
Example: E-commerce App
SignUp page
Module 3: Notification

CODING
Example: E-commerce App
centre
CODING
Example: E-commerce App
Module 4: Search bar
CODING
An established app can have more than a million lines of code.
CODING r 8
e
The implementation stage
p t
h a
C
The programmers work on the

e n
design modules,isuch as input,

o r
n m
output and processes, and write

ar
e
code to make each part of the
L program functional.
Chapter 7: Algorithm Design and Problem Solving

Analysis Design
C7.1
Program
Development
Testing
Life Cycle
Coding
TESTING Test strategy
The system is divided into small

sections that are tested for input,

output and validation rules. Test data

is used for all of the tests to be

carried out.
TESTING

Unit Testing Integration Testing


• Testing each part of the • All code is combined to

code individually form a program. Then,

the program is tested.


TESTING
Eg. Test that when an item is sold, the count is indeed increased by

1
TESTING
What do you think?
Chapter 7: Algorithm Design and Problem Solving

Analysis Program Design

Coding Development Testing


Life Cycle
The program
development cycle is
a cycle and not a
linear process. After
Analysis
developing a Program Design
software,
Coding it is Development Testing
necessary to go back
to the start of the
process again if
Life
Cycle
something has been
discovered during
C7.2 - System, sub-system and
Structured Diagram
Computer system
• Made up of software, data, hardware,
communications and people.
• Each computer system can be divided up
into a set of sub-systems
• Each sub-systems can be further divided
into sub-systems and so on until each
sub-system just performs a single action.
Computer system
Example
• Made up of software, data,
hardware, communications
and people.
• Each computer system can be
divided up into a set of sub-
systems
• Each sub-systems can be
further divided into sub-
systems and so on until each
sub-system just performs a
single action.
Example
Computer system
• Made up of software, data,
hardware, communications
and people.
• Each computer system can be
divided up into a set of sub- • Software - the code
systems
• Data - users' preference (like and follow)
• Each sub-systems can be
• Hardware - server to store all the data (posts,
further divided into sub-
systems and so on until each
stories, etc)
sub-system just performs a
• Communication and people - instagram's
single action. employees
Computer system Example

• Made up of software, data,


hardware, communications
and people.
• Each computer system can be
divided up into a set of sub-
systems
• Each sub-systems can be
further divided into sub-
systems and so on until each
sub-system just performs a
single action.
post story reel
Computer system
Normal
• Made up of software, data,
hardware, communications
and people.
• Each computer system can be
divided up into a set of sub-
systems
• Each sub-systems can be
further divided into sub-
story
systems and so on until each Close
sub-system just performs a friends
single action.
Other examples of a
computer system
• Alarm App
• Weather App
• Games!!
to aspiring programmer

Before you build something, figure out what you


want to build first.
Components of a
computer system
• Inputs
• Outputs
• Processes
• Storage
Understanding the components of a computer
system will help us to break down problem easier.
if i were to create a software today...

How do I divide my system into sub-system and


sub-system?

How do I then start developing a sub-


system using an appropriate
programming language?
Use software design tools
Structured
How do I divide my system into sub-system and
sub-system? diagram

How do I then start developing a sub-


system using an appropriate
programming language?
Flowchart Pseudocode
Structured diagram
• Show top-down design in a diagrammatic
form.
• Hiearchical, showing how a solution can
be divided into sub-systems with each
level giving a more detailed breakdown.

Top-down design
Decomposition of a computer system into a set of sub- systems, then breaking
each sub-system down into a set of smaller sub-systems, until each sub-system
just performs a single action.
Structured diagram in application
(alarm clock)
Alarm Clock
Structured diagram in application
(alarm clock)
Alarm Clock

Inputs Outputs
Processes
Structured diagram in application
(alarm clock)
Alarm Clock

Inputs Outputs
Processes

Set Time
Turn alarm
Check Time Sound Turn off
on and off
Alarm alarm
Try it yourself
A security system on a door allows a user to type a
code into a keypad to enter the room. If an incorrect
code is input, an error message is shown and a short
alarm sound is played.

Draw a structured diagram for the security system.


Definition of algorithm

An algorithm is a set of instructions for


solving a problem or accomplishing a
task.
Example of an algorithm (Real Life)
Example of an algorithm (Real Life) - Driving a car

Walk to the parking


space Letgoooo!

Open the door


Put on your seatbelt

Turn on the engine


Example of an algorithm (Software) - Alarm clock

For every 1 second, check


if time match

Alarm will ring


if time match,check if
day match (eg. weekday

If both matches, send


signal to sound
system
Flowchart and pseudocode are an effective way to communicate
how the algorithm that makes up a system or a sub-system
work.

Flowchart Pseudocode
Flowchart and pseudocode are an effective way to communicate
how the algorithm that makes up a system or a sub-system
work.

Flowchart Pseudocode
Have a look at a flowchart
showing how the checking
for the alarm time
subsystem works, can you
understand what is it
doing?
Components of a flow chart
Terminator process Input/output
Used at the beginning Show the input of
Represent an
and end of each data and output of
instruction
flowchart No matter how small information
Protecting the
the environment is
ecosystem on the same as
earth, everything protecting the
is interconnected ecosystem
Components of a flow chart
Decision
• Used to decide which action is to be taken next
• There are always two outputs from a decision
flowchart symbol
Components of a flow chart

subroutine Flowline
• Represents a smaller procedure • Use arrows to show the
running within the large direction of flow
program.
• Abstraction in action

• Could be
another
flowchart
defined
Input/
output

Terminator
subroutine

process
Decision
A computer program allows a user to input
two numbers. It multiplies the numbers Analysis
together and if the answer is larger than 100
it outputs the message "Greater than 100".
Input:
The program loops until the user does not Output:
want to input any more numbers.
Process:
Draw a flowchart that represents an
algorithm for the computer program.
A computer program allows a user to input Analysis
two numbers. It multiplies the numbers
together and if the answer is larger than 100
Input: Number 1 & 2
it outputs the message "Greater than 100".
The program loops until the user does not
Output: Message >100
want to input any more numbers. Process:
Draw a flowchart that represents an - if N1 + N2 > 100,
algorithm for the computer program.
output message >100
- process continue until user
does not want to input
A computer program allows a user to input
two numbers. It multiplies the numbers
together and if the answer is larger than 100
it outputs the message "Greater than 100".
The program loops until the user does not
want to input any more numbers.

Draw a flowchart that represents an


algorithm for the computer program.
Tickets are sold for a concert at $20 each, if
10 tickets are bought then the discount is
10%, if 20 tickets are bought the discount is
20%. No more than 25 tickets can be
bought in a single transaction.

You are asked to design a program that can


automatically calculate the cost of the
purchase. Draw a flowchart for this
program.
Analysis
Tickets are sold for a concert at $20 each, if Input:
10 tickets are bought then the discount is
10%, if 20 tickets are bought the discount is Output:
20%. No more than 25 tickets can be
bought in a single transaction. Process:

You are asked to design a program that can


automatically calculate the cost of the
purchase. Draw a flowchart for this
program.
Analysis
Tickets are sold for a concert at $20 each, if Input: Number of tickets
10 tickets are bought then the discount is
10%, if 20 tickets are bought the discount is (limit = 25)
20%. No more than 25 tickets can be
bought in a single transaction. Output: Total cost

You are asked to design a program that can


Process:
automatically calculate the cost of the
10 tickets = 10% discount
purchase. Draw a flowchart for this
program. 20 tickets = 20% discount
Input/
output

Terminator

Tickets are sold for a concert at $20 each, if


10 tickets are bought then the discount is
10%, if 20 tickets are bought the discount is
Decision
20%. No more than 25 tickets can be
bought in a single transaction.

subroutine You are asked to design a program that can


automatically calculate the cost of the
purchase. Draw a flowchart for this
process program.

Flow chart components reca


Tickets are sold for a concert at $20 each, if
10 tickets are bought then the discount is
10%, if 20 tickets are bought the discount is
20%. No more than 25 tickets can be
bought in a single transaction.

You are asked to design a program that can


automatically calculate the cost of the
purchase. Draw a flowchart for this
program.
C7.4

Algorithm &
Pseudocode

IGCSE Computer Science


Pseudocode

fake, pretentious

Pseudocode to sort an array of numbers


Pseudocode
• Standard method of showing an
algorithm (a series of steps and
instructions to achieve a task)
• It uses English key words that
are very similar to those used in
a high-level programming
language
• It is not bound by the strict syntax
rules of a programming language
Pseudocode to sort an array of numbers

What is Pseudocode?
Pseudocode
• Person reading the pseudocode
does not need to have
knowledge in a programming
language to understand the
algorithm
• Commonly used in Computer
Science research paper

Pseudocode to sort an array of numbers

Why do we need pseudocode?


Elements of pseudocode

Input Iterative
Assignment Conditional
and Statement Statement
statement
Output
Assignment statement

• A value is assigned to item/variable

Variable Value

2. Variable is a container for storing a value.

Value
3.The values on the right can have one value or multiple value
combined with mathematical operators.
Assignment statement

One value Multiple values

x 5 x 5 *6
name "Hello" + " Adam"
name "Adam"

The values on the right can have one value or multiple value combined
with mathematical operators.
Mathematical operators
Operator Action

+ Addition

- Subtraction

* Multiply

/ Divide
^ Raise to the power of

() Group
Assignment statement

Instead of doing... We can do

Output "adadjjdwajdajw" name "adadjjdwajdajw"


Output "adadjjdwajdajw" Output name
Output "adadjjdwajdajw" Output name
Output "adadjjdwajdajw" Output name
Output "adadjjdwajdajw" Output name
Output "adadjjdwajdajw" Output name
Keyword: REFER

We need to declare variables so that we can refer to them whenver we


need to.
Test your understanding - Assignment statement questions

Given that Cost 5


Your task, create the following variables:
• Price - twice the value of cost
• Tax - 12% of the total price
• Selling price - Price plus tax
• Gender variable containing the value "M"
• Chosen variable containing the value FALSE
Test your understanding - Assignment statement questions

Given that Cost 5


Answer
• Price ← Cost * 2
• Tax ← Price * 0.12
• Selling price ← Price + Tax
• Gender ← "M"
• Chosen ← FALSE
Assignment statement - ARRAY

Assigning an array to a variable

DECLARE MyClass : ARRAY[1:10] OF STRING

Store value

We can also assign an array to a variable.


Array = A container that can store multiple items
To access a particular element of an array, we can put a
[position] after the variable name.

Assigning an array to a variable

DECLARE MyClass : ARRAY[1:10] OF STRING

1 2 3 4 5 6 7 8 9 10

Peter Jane

MyClass[3] -> Peter


MyClass[8] -> Jane
Test your understanding - Assignment statement questions

Your task, create an array variable named markList. The array size is 20
and it stores the INTEGER data type. How to access the 12th element?

Previous examples:
Assigning an array to a variable

DECLARE MyClass : ARRAY[1:10] OF STRING

1 2 3 4 5 6 7 8 9 10

Peter Jane
Input and Output

Input Output
Used for data entry; Used to display
it is usually followed information on a
by a variable where screen
the data input is
stored

Input variable Output variable


Input and Output - Application

INPUT cost

Price ← Cost * 2

Tax ← Price * 0.12

Selling priceselling
← Price +
priceTax

OUTPUT
Conditional
• An element of pseudocode which allows the algorithm to do different
things depending on the input/scenario

IF ... THEN ... ELSE ... ENDIF

CASE OF ... OTHERWISE ... ENDCASE


IF ... THEN ... ELSE ... ENDIF

INPUT Age
IF Age < 18
THEN
OUTPUT "Child"
ELSE
OUTPUT "Adult"
ENDIF
IF ... THEN ... ELSE ... ENDIF

If condition is INPUT Age Condition


true (eg. Age
IF Age < 18
< 18)
THEN
OUTPUT "Child"
If condition is
false (eg. ELSE
End of if
Age not < 18) OUTPUT "Adult"
statement
ENDIF
Comparison operators
Operator Action

> Greater Than


< Less Than
= Equal to
>= Greater Than or equal to
<= Less Than or equal to
<> Not Equal to
AND Both
OR Either
NOT Not
Test your understanding - Conditionals questions
Write a program in pseudocode that does the following.

Ask a user to INPUT his/her height and weight. If the height is


greater than 170 AND weight is lighter than 85, then OUTPUT the
message "You meet the requirement", else OUTPUT the message
"You need to be taller and lighter.
Test your understanding - Conditionals answer

INPUT Height
INPUT Weight
IF Height > 170 AND Weight < 85
THEN
OUTPUT "YOU MEET THE REQUIREMENT"
ELSE
OUTPUT "YOU NEED TO BE TALLER OR LIGHTER".
ENDIF
CASE OF ... OTHERWISE ... ENDCASE

• For a CASE statement the value of the variable decides the path to be
taken. Several values are usually specified.

INPUT ItemCode The data inside the this variable will be


CASE OF ItemCode checked in the below statements.

B101 : OUTPUT "Mineral Water”


B102 : OUTPUT "Biscuit"
B103 : OUTPUT “Rice”
If none of the data inside the variable
OTHERWISE : OUTPUT "Invalid Code" matches, it will display the output inside
ENDCASE OTHERWISE statement.
Specify which variable we are looking
CASE OF ... OTHERWISE ... ENDCASE
into when deciding which path to take

INPUT FoodToBuy
CASE OF FoodToBuy
Milo : OUTPUT "Here's your milo"
Biscuit : OUTPUT "Here's your biscuit"
OTHERWISE : OUTPUT "The canteen does not have this food"
ENDCASE
Choices
Path that will be taken if the variable is neither
"Milo" nor "Biscuit"

Declare the end of case statement


Test your understanding - Conditionals questions

Write a program in pseudocode that does the following (Use the


CASE Statement).

Ask a user to INPUT his/her grades. If the grade entered is "A",


OUTPUT "excellent". If the grade entered is "B", OUTPUT "Not bad
huh". If the grade entered is "C", OUTPUT "Fair". If the grade entered
is "D" , OUTPUT "Why you sleep in my class?" . For all the other
value, OUTPUT "Invalid input".
Test your understanding - Conditionals answer

INPUT Grade
CASE OF Grade
A : OUTPUT "Excellent"
B : OUTPUT "Not bad huh"
C : OUTPUT "Fair"
D : OUTPUT "Why you sleep in my class?"
OTHERWISE : OUTPUT "Invalid input"
ENDCASE
Iterative statement
• An element of pseudocode which allows the algorithm to repeat certain
actions.

FOR... WHILE...
REPEAT...
TO... DO...
UNTIL...
NEXT... ENDWHILE

A repetition, where the


A repetition, where the
number of repeats is
A set number of number of repeats is not
not known, that may
repetitions known, that is completed
never be completed
at least once
FOR...
TO...
NEXT...
FOR Counter ← 1 TO 10
A set number of
repetitions OUTPUT Counter
NEXT
Beginning value
FOR... Ending value
TO...
NEXT...
FOR Counter ← 1 TO 10
A set number of
repetitions OUTPUT Counter
NEXT

Counter +1
What does the above pseudocode do?
What does the below pseudocode do?

Beginning value
FOR... Ending value
TO...
NEXT...
FOR Counter ← 1 TO 10
A set number of
repetitions OUTPUT "Enter Name of Student "
INPUT StudentName[Counter]
NEXT
Counter +1
ANSWER: Ask the user for 10 names iteratively, and
then place each name into the array.

FOR... FOR Counter ← 1 TO 10


TO...
OUTPUT "Enter Name of Student "
NEXT...
A set number of
INPUT StudentName[Counter]
repetitions
NEXT

1 2 3 4 5 6 7 8 9 10
REPEAT...
UNTIL... REPEAT

A repetition, where
OUTPUT "Hello"
the number of INPUT Option
repeats is not
known, that is Until Option = -1
completed at least
once
REPEAT...
UNTIL... REPEAT

A repetition, where
OUTPUT "Hello"
the number of INPUT Option
repeats is not
known, that is Until Option = -1
completed at least
once Condition to determine whether we want
to continue our program
What does the code below do?

Total ← 0
Mark ← 0
REPEAT...
REPEAT
UNTIL...
Total ← Total + Mark
OUTPUT "Enter value for mark, -1 to finish "
INPUT Mark
UNTIL Mark = -1
Answer: In each iteration, ask the user for a mark. The mark given
will be added to the total. The program stops when the user enter
the value -1.

Total ← 0
REPEAT... Mark ← 0
UNTIL... REPEAT
Total ← Total + Mark
A repetition, where
the number of
OUTPUT "Enter value for mark, -1 to finish"
repeats is not INPUT Mark
known, that is
completed at least UNTIL Mark = -1
once
WHILE...
Total ← 0
DO...
OUTPUT "Enter value for mark, -1 to finish "
ENDWHILE
INPUT Mark
A repetition, where WHILE Mark <> -1 DO
the number of
Total ← Total + Mark
repeats is not
known, that may
OUTPUT "Enter value for mark, -1 to finish"
never be completed INPUT Mark
ENDWHILE
WHILE...
Total ← 0
DO...
OUTPUT "Enter value for mark, -1 to finish "
ENDWHILE
INPUT Mark
WHILE Mark <> -1 DO
Total ← Total + Mark
Block that
OUTPUT "Enter value for mark, -1 to finish"
will be
INPUT Mark
executed by
Condition to decide
the DO ENDWHILE
whether the DO block
keyword
will be run
Signify the end of the while loop.
Test your understanding - Iterative questions
Write a program in pseudocode that does the following.

Ask the user to enter a number iteratively. Then, the square of (power
of two) the number will need to be stored in an array. The program
shall halt when the user enters the value 0.

Hint: You can declare a dynamic (non-fixed size array) like this

DECLARE SquareNumArray : ARRAY[1: ] OF INTEGER


Test your understanding - Iterative answer

DECLARE SquareNumArray : ARRAY[1: ] OF INTEGER


COUNTER ← 1
INPUT Number
WHILE Number <> 0 DO
SquareNumArray[COUNTER] ← Number ^ 2
COUNTER ← COUNTER + 1
INPUT Number
END WHILE
C7.5

Standard methods of
solutions
Totalling
• Totalling means keeping a total that values are added to. For
example, keeping a running total of the marks awarded to each
student in a class.
StudentMark:
70 75 80 60 70 65 75 90 95 100
Totalling
StudentMark[1:10]
70 75 80 60 70 65 75 90 95 100

Pseudocode to find the total mark:


Total ← 0
ClassSize ← 10
FOR Counter ← 1 TO ClassSize
Total ← Total + StudentMark[Counter]
NEXT Counter
Counting
• Keeping a count of the number of times an action is performed is
another standard method. For example, counting the number of
students that were awarded a pass mark.

StudentMark[1:10]
70 75 80 60 7 65 75 25 95 100
Counting
70 75 80 60 7 65 75 25 95 100

PassCount ← 0
ClassSize ← 10
FOR Counter ← 1 TO ClassSize
IF StudentMark[Counter] > 50
THEN
PassCount ← PassCount + 1
NEXT Counter
Test your understanding
StudentName:
Ali Zak Bb Ali ZZ J

Write an algorithm (in pseudocode) to find the total number of students


whose name is "Ali" .
Test your understanding
StudentName:
Ali Zak Bb Ali ZZ J

AliCount ← 0
ClassSize ← 6
FOR Counter ← 1 TO ClassSize
IF StudentName[Counter] = "Ali"
THEN
AliCount ← AliCount + 1
NEXT Counter
Maximum and minimum
• Finding the maximum and minimum of a given array. Eg. Find the
highest and lowest mark awarded to a class of students.

StudentMark:
70 75 80 60 7 65 75 25 95 100
Maximum and minimum
• Method 1: Set the MaximumMark to be 0. Set the MinimumMark to
be 100.
MaximumMark ← 0
MinimumMark ← 100
ClassSize ← 10
FOR Counter ← 1 TO ClassSize
IF StudentMark[Counter] > MaximumMark
THEN
MaximumMark ← StudentMark[Counter]
ENDIF
IF StudentMark[Counter] < MinimumMark
THEN
MinimumMark ← StudentMark[Counter]
Maximum and minimum
• Method 2: Set the MaximumMark and MinimumMark to be
StudentMark[1]
MaximumMark ← StudentMark[1]
MinimumMark ← StudentMark[1]
ClassSize ← 10
FOR Counter ← 1 TO ClassSize
IF StudentMark[Counter] > MaximumMark
THEN
MaximumMark ← StudentMark[Counter]
ENDIF
IF StudentMark[Counter] < MinimumMark
THEN
MinimumMark ← StudentMark[Counter]
Average
• Finding the average value of a given array. Eg. Find the average
mark awarded to a class of students.

StudentMark:
70 75 80 60 7 65 75 25 95 100
Average
• Finding the average value of a given array. Eg. Find the average
mark awarded to a class of students.

Total ← 0
FOR Counter ← 1 TO ClassSize Totalling
Total ← Total + StudentMark[Counter]
NEXT Counter
Average ← Total / ClassSize
Average
• Finding the average value of a given array. Eg. Find the average
mark awarded to a class of students.

Total ← 0
FOR Counter ← 1 TO ClassSize
Total ← Total + StudentMark[Counter]
NEXT Counter
Average ← Total / ClassSize
Linear search
• A type of search that is used to check if a value is stored in a list,
performed by going through the items in the list one at a time. Eg.
Searching for a name in a class list of students name, where all the
names stored are different.

StudentName:
ZK Lyn Tam YW Dan Joh Abd
Linear search
StudentName:
ZK Lyn Tam YW Dan Joh Abd

Say,we want to search for a


student called Lyn ..
Linear search
StudentName:
ZK Lyn Tam YW Dan Joh Abd

Found!

The algorithm will go through the value in the array


one by one until it finds the target OR it reaches the
end of the list.
Linear search
OUTPUT "Please enter name to find "
INPUT Name
Found ← FALSE
Counter ← 1

REPEAT
IF Name = StudentName[Counter]
THEN
Found ← TRUE
ELSE
Counter ← Counter + 1
ENDIF
UNTIL Found ← TRUE OR Counter > ClassSize

IF Found
THEN
OUTPUT Name, " found at position ", Counter, " in the list."
Bubble sort
• Lists can be more useful if the items are sorted in a meaningful order. For
example, names could be sorted in alphabetical order, or numbers could be
sorted in ascending or descending order.

Sorting Names:
ZK Lyn Tam YW Dan Joh Abd

Abd Dan Joh Lyn Tam YW ZK


Bubble sort
• Lists can be more useful if the items are sorted in a meaningful order. For
example, names could be sorted in alphabetical order, or numbers could be
sorted in ascending or descending order.

Sorting Numbers:
7 6 5 4 3 2 1

1 2 3 4 5 6 7
Bubble sort

Find this video on YouTube for a


thorough explanation!
Bubble sort
First ← 1
Last ← 10

REPEAT
Swap ← FALSE
FOR Index ← First TO Last - 1
IF Temperature[Index] > temperature[Index + 1]
THEN
Temp ← Temperature[Index]
Temperature[Index] ← Temperature[Index + 1]
Temperature[Index + 1] ← Temp
Swap ← TRUE
ENDIF
NEXT Index
C7.6

VALIDATION
AND
VERIFICATIO
James Gan
N
IN ORDER FOR COMPUTER SYSTEMS TO ONLY ACCEPT DATA INPUTS THAT
ARE REASONABLE AND ACCURATE, EVERY ITEM OF DATA NEEDS TO BE
EXAMINED BEFORE IT IS ACCEPTED BY THE SYSTEM.
VALIDATION VERIFICATIO
N
FOR DATA VERIFICATION
ENTRY, IS USED TO
VALIDATION CHECK THAT
ENSURES THE DATA
THAT ONLY DOES NOT
DATA THAT IS CHANGE AS IT
REASONABLE IS BEING
IS ACCEPTED. ENTERED.
VALIDATI
ON
VALIDATION IS THE AUTOMATED CHECKING BY A PROGRAM THAT
DATA IS REASONABLE BEFORE IT IS ACCEPTED INTO A COMPUTER
SYSTEM.

IF THE DATA IS REJECTED A MESSAGE SHOULD BE OUTPUT


EXPLAINING WHY THE DATA WAS REJECTED AND ANOTHER
OPPORTUNITY GIVEN TO ENTER THE DATA.
VALIDATI
Range ON
DEFINITI
Check ON
A RANGE CHECK CHECKS THAT THE
VALUE OF A NUMBER IS BETWEEN AN
UPPER VALUE AND A LOWER VALUE
SAY, WE WANT A PROGRAM THAT ONLY ACCEPTS A NUMBER FROM 0 -100

54 35 102
VALIDATI
Range ON
THE CODE WILL REPEATEDLY
Check ASK THE USER FOR MARK INPUT
AS LONG AS THE MARK IS NOT
WITHIN THE RANGE 0-100

OUTPUT "PLEASE ENTER THE STUDENT'S MARK "


REPEAT
INPUT STUDENTMARK
IF STUDENTMARK < 0 OR STUDENTMARK > 100
THEN
OUTPUT "THE STUDENT'S MARK SHOULD BE IN THE RANGE 0 TO 100,
PLEASE RE-ENTER THE MARK "
ENDIF
UNTIL STUDENTMARK >= 0 AND STUDENTMARK <= 100
VALIDATI
length ON
DEFINITI
Check ON CHECK EIHTER CHECKS THAT DATA CONTAINS
A LENGTH
- AN EXACT NUMBER OF CHARACTERS (EG. 8)
- THE DATA ENTERED IS A REASONABLE NUMBER OF
CHARACTERS (EG. 8-20)
SAY, WE WANT A PROGRAM THAT ONLY ACCEPTS A PASSWORD WITH LENGTH
BETWEEN 8 - 20
ABCDEFGHIJKLM
ABCD12345 ABCD NOPQRSTUVWXY
Z
VALIDATI
length THE CODE WILL REPEATEDLY ON
ASK THE USER FOR NAME INPUT
Check AS LONG AS THE LENGTH OF
THE NAME IS NOT WITHIN 2 TO 30
CHARACTERS.

OUTPUT "PLEASE ENTER YOUR NEW PASSWORD"


REPEAT
INPUT password
IF LENGTH(password) > 20 OR LENGTH(password) < 2
THEN
OUTPUT "Too short or too long, please re-enter "
ENDIF
VALIDATI
TYPE ON
DEFINITI
Check ON
A TYPE CHECK CHECKS THAT THE DATA
ENTERED IS OF A GIVEN DATA TYPE, FOR
EXAMPLE, THAT THE NUMBER OF MEALS
SAY, WE WANT A PROGRAM THAT ONLY ACCEPTS AN INTEGER (NUMBER) AS
ORDERED MUST BE A NUMBER
INPUT (EG. NUMBER OF MCD MEAL YOU ORDER).

3 3.2 THRE
E
VALIDATI
TYPE ON
IT CHECKS WHETHER THE
Check NUMBER IS A WHOLE NUMBER. IF
NOT, USER WILL BE PROMPTED
TO INPUT AGAIN!

OUTPUT "HOW MANY MEALS YOU WANT TO ORDER? "


REPEAT
INPUT numberofmeals
IF numberofmeals <> DIV(numberofmeals, 1)
THEN
OUTPUT "This must be a whole number, please re-enter"
ENDIF
UNTIL numberofmeals = DIV(numberofmeals, 1)
VALIDATI
Presence ON
DEFINITI
check ON CHECK CHECKS TO ENSURE THAT SOME
A PRESENCE
DATA HAS BEEN ENTERED AND THE VALUE HAS NOT
BEEN LEFT BLANK.

FOR EXAMPLE, AN EMAIL ADDRESS FOR AN ONLINE


TRANSACTION MUST BE COMPLETED.

[email protected] ""
VALIDATI
Presence ON
DEFINITI
check ON CHECK CHECKS TO ENSURE THAT SOME
A PRESENCE
DATA HAS BEEN ENTERED AND THE VALUE HAS NOT
BEEN LEFT BLANK, FOR EXAMPLE, AN EMAIL ADDRESS
FOR AN ONLINE TRANSACTION MUST BE COMPLETED.
OUTPUT "PLEASE ENTER YOUR EMAIL ADDRESS "
REPEAT
INPUT EmailAddress
IF EmailAddress = ""
THEN
OUTPUT "please enter something!"
ENDIF
VALIDATI
Format ON
DEFINITI
check ON CHECK CHECKS THAT THE CHARACTERS
A FORMAT
ENTERED CONFORM TO A PRE-DEFINED PATTERN.

FOR EXAMPLE, WE WANT TO CREATE A PROGRAM THAT ONLY


ACCEPTS TAX CODE STARTING WITH "TC"

TC10212 TC12212 AC1212


3
Check
CHECK
digit DIGIT
Check digits are used to identify errors in data
entry caused by mis-typing or mis-scanning a
barcode.
A check digit is the final
digit included in a code; it
is calculated from all the
other digits in the code.
TEST YOUR
UNDERSTA
NDING
Discuss, what checks are required for the following validations

– Entering a telephone number


– Entering a pupil’s name
– Entering a part number in the form XXX999, when X must be a
letter and 9 must be a digit.
TEST YOUR
UNDERSTA
NDING
Discuss, what checks are required for the following validations

– Entering a telephone number


(answer: length check, type check, format check)
– Entering a pupil’s name
(answer: type check)
– Entering a part number in the form XXX999, when X must be a
letter and 9 must be a digit.
VERIFICAT
ION
VERIFICATION IS CHECKING THAT DATA HAS BEEN ACCURATELY
COPIED FROM ONE SOURCE TO ANOTHER

VERIFICATION METHODS FOR INPUT DATA INCLUDE:


• DOUBLE ENTRY
• SCREEN/VISUAL CHECK
VERIFICATION(1) -
DOUBLE ENTRY
Data is entered twice, sometimes by different operators. The computer system compares
both entries and if they are different outputs an error message requesting that the data is
entered again.
VERIFICATION(2) -
SCREEN/VISUAL CHECK
A manual check completed by the user who is entering the data. When the data entry is
complete the data is displayed on the screen and the user is asked to confirm that it is
correct before continuing.
C7.7

TESTI
NG
TESTI
NG
• A program needs to be tested thorougly to ensure that it is
working as intended.
• Before a whole system is tested, each sub-system is tested
separately (eg. Pseudocode, flowchart).
• However, in order to test a solution thoroughly it may need to be
worked through several times with different sets of test data.
DATA THAT CAN BE USED FOR
TESTING

NORMAL ABNORM EXTREM BOUNDA


DATA AL E RY
DATA DATA DATA
DATA THAT A PROGRAM WOULD EXPECT
NORMAL TO RECEIVE, AND THE RESULT THAT
DATA ARE EXPECTED FROM THE DATA.

EG. PROGRAM THAT CALCULATES


THE AVERAGE SCORE
70 75 80 60 70 65 CORREC
T
AVERAG
E SCORE
NORMAL DATA THAT WOULD
BE EXPECTED
70
ABNORM DATA THAT A PROGRAM SHOULD
AL REJECT. OUR PROGRAM NEEDS TO
DATA
REJECT THE ERRORNEOUS DATA
EG. PROGRAM THAT CALCULATES
THE AVERAGE SCORE
WE NEED -5 75 80 60 70 65 INCORRE
TO TEST CT
THAT OUR
AVERAG
PROGRAM
E SCORE
WILL NORMAL DATA THAT WOULD
REJECT
BE EXPECTED
57.5
THIS DATA
ABNORM DATA THAT A PROGRAM SHOULD
AL REJECT. OUR PROGRAM NEEDS TO
DATA
REJECT THE ERRORNEOUS DATA
EG. PROGRAM THAT CALCULATES THE
AVERAGE SCORE
WE NEED -5 75 80 60 70 65 INCORRE
TO TEST CT
THAT OUR
AVERAG
PROGRAM
E SCORE
WILL NORMAL DATA THAT WOULD
REJECT
BE EXPECTED
57.5
THIS DATA
EXTREM EXTREME DATA ARE THE LARGEST
E AND SMALLEST VALUES THAT
DATA
NORMAL DATA CAN TAKE
EG. PROGRAM TAKES IN USER'S INPUT
70 FOR
75 STUDENT'S
80 60 MARK
100 0

NORMAL DATA THAT WOULD


EXTREME
BE EXPECTED
BOUNDA AT EACH BOUNDARY TWO VALUES ARE
RY REQUIRED: ONE VALUE IS ACCEPTED
DATA AND THE OTHER
SCENARIO: VALUE IS REJECTED
A PROGRAM
THAT ACCEPTS VALUE
FROM RANGE 1 - 10
EXAMPLE 1 EXAMPLE 2
10 11 1 0

NORMAL + REJECTED NORMAL + REJECTED


EXTREME DATA
BOUNDA AT EACH BOUNDARY TWO VALUES ARE
RY REQUIRED: ONE VALUE IS ACCEPTED
DATA AND THE OTHER
SCENARIO: VALUE IS REJECTED
A PROGRAM
THAT ACCEPTS VALUE
FROM RANGE 4 - 15
EXAMPLE 1 EXAMPLE 2

NORMAL + REJECTED NORMAL + REJECTED


EXTREME DATA
BOUNDA AT EACH BOUNDARY TWO VALUES ARE
RY REQUIRED: ONE VALUE IS ACCEPTED
DATA AND THE OTHER
SCENARIO: VALUE IS REJECTED
A PROGRAM
THAT ACCEPTS VALUE
FROM RANGE 4 - 15
EXAMPLE 1 EXAMPLE 2
4 3 15 16

NORMAL + REJECTED NORMAL + REJECTED


EXTREME DATA
0 0 100

1 9 9 9

2 9 7 7

3 9 3 3

4 9 1 1 91
0 0 100

1 19 19 19

2 27 19 27

3 31 19 31

4 31 14 14 31 14
0 0 100

1 9 9 9

2 9 7 7

3 9 3 3

4 9 1 1 91
0 0 100
1 13 13 13

2 17 13 17

3 21 13 21

4 21 11 11 21 11
C7.9

Writing and amending


algorithms
1) Identify the error A B C X Output

of an algorithm using
a Trace Table
The algorithm on the left will ouput out the maximum
and minimum value, but does it work?

A B C X Output

Try it yourself!
Test Data: 400, 101, 200, 700
Max Min

A B C X Output

Try it yourself!
Test Data: 400, 101, 200, 700
Explanation
By declaring C to 100, we can only detect a minimum value that is
below 100. Eg. All test data are (400, 101, 200, 300), even though 101
is the minimum value among all the other values, it still cannot be
detected as it is more than 100.
The algorithm on the left will ouput out the maximum
and minimum value, but does it work?

A B C X Output

Try it yourself!
Test Data: -7, -5, -3,-6
Max Min

A B C X Output

Try it yourself!
Test Data: -7, -5, -3,-6
Explanation
By declaring B to 0, we can only detect a maximum value that is above
0. Eg. All test data are (-5 , -3, -2 , -7), even though -2 is the maximum
value among all the other values, it still cannot be detected as it is not
more than 0.
We can fix it - quick fix

Identify two numbers where the algorithm


We can fix it - quick fix

1000001 will not be identified as the minimum


-1000001 will not be identified as the maximum
Ultimate
solution
Instead of initialising B and C
as some random value, we let
the first number to be B
(maximum) and C (minimum)
2) Identify the error
of an algorithm using
self-generated
test data
Problem statement
Tickets are sold for a concert at $20 each, if 10 tickets are bought then the
discount is 10%, if 20 tickets are bought the discount is 20%. No more
than 25 tickets can be bought in a single transaction

You are asked to design a program that can automatically calculate the
cost of the purchase. Output the cost. The program will keep repeating
until a user INPUT a value “stop”. Write the pseudocode for this program.
REPEAT
OUTPUT "How many tickets would you like to buy? "
INPUT NumberOfTickets
UNTIL NumberOfTickets > 0 OR NumberOfTickets < 26

IF NumberOfTickets < 10
THEN

Answer
Discount ← 0
ELSE
IF NumberOfTickets < 20
THEN
Discount ← 0.1
ELSE
Discount ← 0.2
ENDIF
REPEAT
OUTPUT "How many tickets would you like to buy? "
INPUT NumberOfTickets
UNTIL NumberOfTickets > 0 OR NumberOfTickets < 26

create some test IF NumberOfTickets < 10


data to check the THEN
Discount ← 0
correctness of an
ELSE
algorithm IF NumberOfTickets < 20
THEN
Discount ← 0.1
ELSE
Discount ← 0.2
ENDIF
eg. REPEAT
OUTPUT "How many tickets would you like to buy? "
INPUT NumberOfTickets
Test data = 12 UNTIL NumberOfTickets > 0 OR NumberOfTickets < 26
Discount = 10%
IF NumberOfTickets < 10
Calculation=
THEN
Discount ← 0
(12 x 20) * 0.9 = ELSE
IF NumberOfTickets < 20
$216
THEN
Discount ← 0.1
Now, go through ELSE
Discount ← 0.2
the algorithm to
ENDIF

You might also like