chapter 6 modular programming dr. j.-y. pan dept. comm. eng. nat. chung cheng univ. ...
Post on 19-Dec-2015
221 views
TRANSCRIPT
Chapter 6Modular Programming
Dr. J.-Y. Pan Dept. Comm. Eng.Nat. Chung Cheng Univ.http://[email protected]
3-2中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
本章重點
PointerName scopeTesting skill
3-3中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
6.1 Function With Output Parameter
Argument lists provide the communication links between the main function and its function subprograms.
Arguments enable a function to manipulate different data each time it is called.
When a function call executes, the computer allocates memory space in the function data area for each formal parameter. The value of each actual parameter is stored in the memory cell allocated to its corresponding formal parameter.
3-4中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
Figure 6.1 Function separate
3-5中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
Pointer A memory cell whose content is the address of another memory cell
Fig 1.4Fig 3.15
Actual & Formal
3-6中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
If a reference x is of type “whatever-type”, the reference &x is of type “pointer to whatever-type,” that is, “whatever-type *.”
3-7中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
Figure 6.5 Comparison of Direct and Indirect Reference
3-8中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
6.1 (cont) Meaning of * Symbol
Three distinct meanings of the symbol * Multiplication
3 * x + 4 (expression)
Part of the names of the parameters’ data typespointer tochar *signp; (declaration)
Unary indirection operatorfollow the pointer*signp = ‘+’; (execution statement)
3-9中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
6.2 Multiple Calls to a Function with Input/Output Parameters
sort A rearrangement of data in a particular
sequence (increasing or decreasing)
Example 6.2 The main function in Fig. 6.6 gets three data
values and rearranges the data in increasing sequence.
3-10中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
Figure 6.6 Program to Sort Three Numbers
3-11中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
Figure 6.6 Program to Sort Three Numbers (cont’d)
Comparing to p.164, Fig 4.5
3-12中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
6.2 (cont) Trace of Program to Sort Three Numbers
Statement num1 num2 num3 Effect
scanf(“...”, &num1, &num2, &num3);
7.5 9.6 5.5 Enter data
Order(&num1, &num2); No change
Order(&num1, &num3); 5.5 9.6 7.5 Switch
Order(&num2, &num3); 5.5 7.5 9.6 Switch
printf(“...”, num1, num2, num3)
Display
3-13中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
Figure 6.7 Data Areas After temp = *smp; During Call order(&num1, &num3);
3-14中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
Program Style
Functions that return a single value are the easiest functions for a program reader to deal with.
If a function subprogram has a meaningful name, the reader can often get a good idea of what is happening in the calling function.
3-15中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
6.3 Scope of Names
The scope of a name refers to the region of a program where a particular meaning of a name is visible or can be referenced.
Name is defined as constant macros and their scope begins at their definition and continues to the end of the source file.
3-16中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
Figure 6.8 Outline of Program for Studying Scope of Names
3-17中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
Scope of Names Use in Fig. 6.8
3-18中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
6.4 Formal Output Parameters as Actual Arguments
Fig. 6.9 shows a function that scans a data line representing a common fraction of the form numerator / denominator Numerator is an integer Denominator is a positive integer
Figure 6.10 shows the data areas for scan_fraction and the function calling it.
3-19中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
Figure 6.9 Function scan_fraction
nump &slash denomp
Driver: Fig 6.15
3-20中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
Figure 6.10 Data Areas for scan_fraction and Its Caller
scanf()
3-21中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
6.5 A Program with Multiple Functions CASE STUDY Arithmetic with Common Fractions
3-22中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
3-23中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
6.5 (cont) Case Study: Arithmetic with Common Fractions
Design Initial Algorithm
1.Repeat as log as user wants to continue2. Get a fraction problem3. Compute the result4. Display problem and result5. Check if user wants to continue
Refinement2.1 Get first fraction2.2 Get operator2.3 Get second fraction
3-24中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
6.5 (cont) Case Study: Arithmetic with Common Fractions
Design Refinement
3.1 Select a task based on operator3.1.2 Add the fractions3.1.3 Add the first fraction and the negation of the second3.1.4 Multiply the fractions3.1.5 Multiply the first fraction and the reciprocal of the
second
3.2 Put the result fraction in reduced form
3-25中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
6.5 (cont) Case Study: Arithmetic with Common Fractions
Design Refinement of 3.2
3.2.1 Find the greatest common divisor (gcd) of the numerator and denominator
3.2.2 Divide the numerator and denominator by the gcd
Fig. 6.11 shows the data flow among the steps
3-26中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
Figure 6.11 Structure Chart for Common Fraction Problem
Fig 6.9
HW5
3-27中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
6.5 (cont) Case Study: Arithmetic with Common Fractions
Implementation (Figure 6.12) stub
A skeleton function that consists of a header and statements that display trace messages and assign values to output parameters
Enables testing of the flow of control among functions before this function is completed
multiply_fractions and find_gcd use stubs
3-28中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
Figure 6.12 Program to Perform Arithmetic Operations on Common Fractions
直接看程式…
3-29中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
Figure 6.12 Program to Perform Arithmetic Operations on Common Fractions (cont’d)
3-30中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
Figure 6.12 Program to Perform Arithmetic Operations on Common Fractions (cont’d)
3-31中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
Figure 6.12 Program to Perform Arithmetic Operations on Common Fractions (cont’d)
3-32中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
Figure 6.12 Program to Perform Arithmetic Operations on Common Fractions (cont’d)
3-33中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
Figure 6.12 Program to Perform Arithmetic Operations on Common Fractions (cont’d)
3-34中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
Figure 6.13 Sample Run of a Partially Complete Program Containing Stubs
3-35中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
Testing (Figure 6.13) Insert a stub for each function not yet completed Each stub prints an identification message and
assigns values to its output parameters
3-36中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
6.6 Debugging and Testing a Program SystemThe number of statements in a program system
grows, the possibility of error also increases. keep each function to a manageable size
Top-down testing the process of testing flow of control between a main
function and its subordinate functionsBottom-up testing
The process of separately testing individual functions of a program system
Unit test A test of an individual function
System integration tests Testing a system after replacing all its stubs with
functions that have been pretested
3-37中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
Figure 6.15 Driver for Function scan_fractionDriver
A short function written to test another function by defining its arguments, calling it, and displaying its result.
3-38中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
6.6 (cont) Debugging Tips for Program Systems
Carefully document each function parameter and local variable using comments.
Create a trace of execution by displaying namesTrace or display the values of all input and
input/output parametersTrace or display the values of all function outputs
after returning from a functionMake sure that a function stub assigns a value to
the variable pointed to by each output parameter Use “step into” and “step over” in debugger
3-39中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab
6.7 Common Programming Errors
N O TBeware of name scope and life time
Is there any identifier referenced outside its scope?
Does the identifier refer to what you want to? …