PDLC
PDLC
Analysis Design
C7.1
Program
Development
Life Cycle
Coding Testing
DEFINITION
a new program.
Every software that has been developed follows the
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
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.
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
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
end product.
DESIGN
ar
e
• Visualise end goals • Show how a program's • Enable complex
instructions to be read in
Analysis Design
C7.1
Program
Development
Coding
Life Cycle
Testing
CODING
The implementation stage
program functional.
CODING
Example: E-commerce App
CODING
Example: E-commerce App
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
carried out.
TESTING
1
TESTING
What do you think?
Chapter 7: Algorithm Design and Problem Solving
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.
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.
Terminator
Algorithm &
Pseudocode
fake, pretentious
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
Input Iterative
Assignment Conditional
and Statement Statement
statement
Output
Assignment statement
Variable Value
Value
3.The values on the right can have one value or multiple value
combined with mathematical operators.
Assignment statement
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
Store value
1 2 3 4 5 6 7 8 9 10
Peter Jane
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
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 cost
Price ← Cost * 2
Selling priceselling
← Price +
priceTax
OUTPUT
Conditional
• An element of pseudocode which allows the algorithm to do different
things depending on the input/scenario
INPUT Age
IF Age < 18
THEN
OUTPUT "Child"
ELSE
OUTPUT "Adult"
ENDIF
IF ... THEN ... ELSE ... ENDIF
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 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"
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
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.
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
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
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
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
Found!
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
Sorting Numbers:
7 6 5 4 3 2 1
1 2 3 4 5 6 7
Bubble sort
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.
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
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!
[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.
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
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
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
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