0% found this document useful (0 votes)
45 views

CZ1102 Computing & Problem Solving Lecture 9

The document discusses various types of errors that can occur when programming in MATLAB, including syntax errors, logical errors, and rounding errors. It provides examples of common syntax errors and recommendations for debugging programs, such as running test cases with known outputs and stepping through code line-by-line. The document also emphasizes the importance of thorough problem analysis and top-down design when developing algorithms and programs.

Uploaded by

Charmaine Chu
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
45 views

CZ1102 Computing & Problem Solving Lecture 9

The document discusses various types of errors that can occur when programming in MATLAB, including syntax errors, logical errors, and rounding errors. It provides examples of common syntax errors and recommendations for debugging programs, such as running test cases with known outputs and stepping through code line-by-line. The document also emphasizes the importance of thorough problem analysis and top-down design when developing algorithms and programs.

Uploaded by

Charmaine Chu
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 25

Debugging and program design 

Week 11
By JI, Hui
Debugging
• Every programmers, even experienced 
programmers, seldom get programs to run 
correctly the first time
• Bug
– An error in the program
• Debugging
– The process of detecting and correcting such 
errors
Syntax error
• Syntax errors are typing errors in MATLAB 
statements
• the most frequent type of error, and are fatal: 
MATLAB stops execution and displays an error 
message
• However,  the error messages can sometimes 
be rather unhelpful—even misleading
Common examples
• Forgetting closing bracket
>>disp(['the answer is ' , 'quite obvious']

• Forgetting completing loops or conditional 
statements
>>if x < 0
disp(' negative ' )
else if x == 0
disp(' zero')
else
disp(' positive ' )
end
Errors for matrix  calculation
• Illegal operations
>>[1 2 3] * [4 5 6]

>>[1 2 3] + [4 5]

>>[1 2;3 4]*[1;3]

>>[1 2 3;4 5 6]^2

>>[8 4 3 4;9 0 1]
Misc
• Using double quotation instead of single one
>>word =“Something wrong !"
• Left out the arguments when calling function
>>y=sin;
• Wrong variable name
>>name$ = 'Joe'

• There are a large number of possible syntax errors and 
you will probably have discovered a good few yourself
• With experience you will gradually become more adept 
at spotting your mistakes.
Name hiding
• Name hiding
– Recall that a workspace variable ‘hides’ a script or 
function of the same name. The only way to 
access such a script or function is to clear the 
offending variable from the workspace.
– MATLAB function hides a script of the same name, 
e.g. create a script called why.m that displays 
some junk message, and then type why at the 
command line.
Errors in logic
• These are  errors in the actual algorithm that 
gives real troubles
• They are the more difficult to find than syntax 
error
• the program runs, but gives the wrong 
answers! 
• It’s even worse that it may gives you correct 
answer most of the time
Some tips
• Try to run the program for some special cases 
where you know the answers.
• If you don’t know any exact answers, try to 
use your insight into the problem to check 
whether the answers seem to be of the right 
order of magnitude
• Try working through the program by hand or 
using debugging facilities to see if you can 
spot where things start going wrong.
Round error
• Demonstration
>>x = 0.1;
while x ˜= 0.2
x = x + 0.001;
[x,x‐0.2]
end
• Outcome
– The program never stop
• Why
– The variable x never has the value 0.2 exactly, because of 
rounding error.
– x misses 0.2 by about 8.3×10
Recipe
• It would be better to replace the while clause 
with while x <= 0.2
• or, even better, with while abs(x ‐ 0.2) > 1e‐8
• In general, it is always better to test for 
‘equality’ of two non‐integer expressions a
and b as follows:
if abs((a‐b)/a) < 1e‐8
Program design
• So far, we have been concentrating on the 
technical aspects of writing MATLAB statements 
correctly
• The examples we have examined have been very 
simple logically.
• To design a successful program you need to 
understand a problem thoroughly, and to break it 
down into its most fundamental logical stages. 
• a systematic procedure or algorithm is needed for 
solving the problem.
Computer program design process
1. Problem analysis
– recognize the need and develop an understanding 
of the nature of the problem
2. Problem statement
– Develop a detailed statement of the problem to 
be solved with a computer program
3. Processing scheme
– Define the inputs required and the outputs to be 
produced by the program
(cont’)
4. Algorithm design
– Design the step‐by‐step procedure using the top‐down 
design process that decomposes the overall problem 
into subordinate problems
5.  Implementing algorithm
– Translate or convert the algorithm into a computer 
language (e.g. MATLAB) and debug the syntax errors 
until the tool executes successfully.
6.  Test and evaluation
– Test all of the options and conduct a validation study 
of the computer program
How to understand problems
• Asking questions
– What do I know about the problem?
– What is the information that I have to process in 
order the find the solution?
– What does the solution look like?
– What sort of special cases exist?
– How will I recognize that I have found 
the solution?
Top‐down algorithm design
• Breaking the problem into a set of 
subproblems called modules
• Creating a hierarchical structure of problem 
and modules
• This process continues for as many levels as it 
takes to expand every task to the smallest 
details
• A step that needs to be expanded is an 
abstract step
(cont’)
Pseudocode for algorithm design
• Uses a mixture of English and formatting to 
make the algorithm explicit
• Preparing a Hollandaise sauce
(cont’)
• Psuedocode of preparing a Hollandaise sauce
Case study for top‐down design
• Planning a large party
Sub‐program for making list
• Problem
– Create an address list that includes each person’s 
name, address, telephone number, and e‐mail 
address
– This list should then be printed in alphabetical 
order
– The names to be included in the list are on scraps 
of paper and business cards
Top‐down design for making list
(cont’)
(cont’)
(cont’)
Level 1

Level 1

You might also like