I. Top-Down Structured Design with Void Functions
A. When to Use Functions
B. Writing Modules as Void Functions
II. An Overview of User-Defined Functions
A. Flow of Control in Function Calls
B. May We Introduce: Charles Babbage
C. Function Parameters
III. Syntax and Semantics of Void Functions
A. Function Call (Invocation)
B. Function Declarations and Definitions
1. Function Prototypes
2. Function Definitions
C. Local Variables
D. The Return Statement
E. Matters of Style: Naming Void Functions
F. Header Files
IV. Parameters
A. Value Parameters
B. Reference Parameters
C. An Analogy
D. Matching Actual Parameters with Formal Parameters
E. Theoretical Foundations: Parameter-Passing Mechanisms
V. Designing Functions
A. Writing Assertions as Program Comments
B. Matters of Style: Function Preconditions and Postconditions
C. Documenting the Direction of Data Flow
D. Matters of Style: Formatting Function Headings
E. Software Engineering Tip: Conceptual vs Physical Hiding of a Function
VI. Testing and Debugging
A. The
assertLibrary FunctionB. Testing and Debugging Hints
VII. Summary