Sei sulla pagina 1di 24

Top-down Program Design

Selim Aksoy Bilkent University Department of Computer Engineering Edited by Sri Nurdiati Bogor Agricultural University Mathematics Department

Creating MATLAB Scripts


Choose File>New>M-file from the menu Use the editor to write your program Document your program using comments that include

Short note about what your program does Short note about how it works Author information Date information Version information
2

Creating MATLAB Scripts


% Script file: temp_conversion.m % % Purpose: % To convert an input temperature from degrees Fahrenheit to % an output temperature in kelvins. % % Record of revisions: % Date Programmer Description of change % ==== ========== ===================== % 12/01/97 S. J. Chapman Original code % % Define variables: % temp_f -- Temperature in degrees Fahrenheit % temp_k -- Temperature in kelvins % Prompt the user for the input temperature. temp_f = input('Enter the temperature in degrees Fahrenheit: '); % Convert to kelvins. temp_k = (5/9) * (temp_f - 32) + 273.15; % Write out the result. fprintf('%6.2f degrees Fahrenheit = %6.2f kelvins.\n', ... temp_f,temp_k);

Top-down Program Design


Start State the problem Define inputs and outputs Decomposition Design the algorithm Convert algorithm into MATLAB statements Test the resulting program End
4

Stepwise refinement

Algorithm

Systematic procedure that produces -in a finite number of steps- the answer to a question or the solution of a problem. The name derives from the Latin translation, Algoritmi de numero Indorum, of the 9thcentury Muslim mathematician Al-Khwarizmi An algorithm is a sequence of finite number of steps arranged in a specific logical order which, when executed, will produce a correct solution for a specific problem.
5

Pseudocode

A hybrid mixture of MATLAB and English for defining algorithms Independent of any programming language so it can be easily converted to any programming language Example pseudocode:
Prompt user to enter temperature in degrees Fahrenheit Read temperature in degrees Fahrenheit (temp_f) temp_k (in Kelvins) (5/9) * (temp_f 32) + 273.15 Write temperature in degree Kelvins

Testing

Test individual subtasks: unit testing Add tested components one by one and test them together: build Alpha release Beta release Test for all legal input data sets: standard data sets, ground truth

Typical testing process


Start Unit testing of individual subtasks
Substasks validated separately

Successive builds (adding subtasks to the program)

As many times as necessary

Substasks combined into program

Alpha release
Worst bugs fixed

As many times as necessary

Beta release
Minort bugs fixed

As many times as necessary

Finished program

Top-down Program Design

Problem: write a program that takes the radius and height (in meters) of a cylinder tank and the amount of water (in m3) from the user and output the amount of extra space (in m3) in the tank. Input:

radius and height amount of water


extra space
9

Output:

Top-down Program Design

Design:
1. 2.

3.
4. 5.

Get radius of the tank base from the user Get the height of the tank from the user Get the amount of water Calculate the amount of extra space Write the result Calculate the capacity of the tank (pi * radius^2 * h) extra space capacity - water
10

Step 4 is not clear enough, refine it:

Top-down Program Design

Code:
r = input('Enter the radius of the tank base:'); h = input('Enter the height of the tank:'); water = input('Enter the amount of water:'); capacity = pi * r^2 * h; space = capacity - water; fprintf('There is %f m3 extra space in the tank', space);

11

Top-down Program Design

Testing:
Enter the radius of the tank base:2 Enter the height of the tank:5 Enter the amount of water:10 There is 52.831853 m3 extra space in the tank

Continue testing:
Enter the radius of the tank base:2 Enter the height of the tank:5 Enter the amount of water:100 There is -37.168147 m3 extra space in the tank
12

Top-down Program Design

Design: refine step 4 again

Calculate the capacity of the tank (pi * radius^2 * h) extra space ((capacity water) + abs(capacity water))/2

13

Relational Operators

Relational operators are used to represent conditions (such as space 0 in the water tank example) Result of the condition is either true or false In MATLAB:

false is represented by 0 true is represented by 1 (non-zero)


14

Relational Operators
Operation 3<4 3 <= 4 3 == 4 Result 1 1 0

3 ~= 4
3>4 4 >= 4 A < B

1
0 1 1
15

Relational Operators

Dont confuse equivalence (==) with assignment (=) Be careful about round off errors during numeric comparisons (you can represent x == y as abs(x-y) < eps) Relational operations have lower priority than arithmetic operations (use parentheses to be safe, though)
16

Logical Operators

More complex conditions can be represented by combining relational operations using logic operators Logical operators:
& | xor ~ AND OR Exclusive OR NOT
17

Logical Operators
input a b 0
0 1 1

and a&b 0
0 0 1

or a|b 0
1 1 1

xor xor(a,b) 0
1 1 0

not ~a 1
1 0 0

0
1 0 1

18

Operator Hierarchy

Processing order of operations:


parenthesis (starting from the innermost) exponentials (left to right) multiplications and divisions (left to right) additions and subtractions (left to right) relational operators (left to right) ~ operators & operators (left to right) | operators (left to right)
19

Lab work :

Quiz 3.1 :

Number 1 31

Exercise 3.8 : Number 3.1

Exercise 2.15 :

Number 2.11 & 2.14


20

Write a program:

To assign (a+b)/(c+d) to a variable A and then to print out the value of A. Try different values of a, b, c, d. But make sure that c+d 0 Celsius temperatures can be converted to Fahrenheit by multiplying by 9, dividing by 5, and adding 32. Assign a variable called C the value 37, and implement this formula to assign a variable F the Fahrenheit equivalent of 37 Celsius. Try different values of C.
21

Write a program:

That print a Fahrenheit to Celsius Conversion table for each 5 degrees between 0 and 100 Fahrenheit. Make sure the table is nicely formatted with fixed field widths and column headers. That take any number as an input, and display the result that the number is odd or is even or is not an integer number.
22

Write a program:

that asks for a series of numbers, ending in the value 0, and calculates the sum and the mean. For example:
Enter a number (end in 0) : 5 Enter a number (end in 0) : 6 Enter a number (end in 0) : 7 Enter a number (end in 0) : 8 Enter a number (end in 0) : 0 4 numbers entered. Sum=26. Mean=6.5.
23

Potrebbero piacerti anche