This book presents introductory programming and software development concepts to engineers using a disciplined approach. It provides numerous case studies and programming projects based on real-world examples from a wide range of engineering disciplines, making the material relevant to what students will encounter in their careers. The authors introduce implementations of basic numerical and statistical methods commonly used by engineers. The book focuses on many aspects of software engineering, establishing early the connection between good problem-solving skills and effective software development. The five-phase software development method is presented in Chapter 1 and applied in every subsequent Case Study throughout. C Program Design for Engineers presents material in an order that meets the needs of a beginning programmer, rather than by the structure of the C programming language. For example, the coverage of pointers is simplified by discussing them over several chapters, thus allowing the student to absorb the intricacies of pointer usage a little at a time.This approach makes it possible to present fundamental concepts using traditional high-level terminology--outputparameter, array, array subscript, string--and makes it easier for students without prior assembly-language background to master the many facets of pointer usage.
(Each Chapter concludes with "Common Programming Errors" and a "Chapter Review.") 1. Overview of Computers and Software. Computer Components. Computer Software. Computing for Engineers. The Software Development Method. Applying the Software Development Method. Case Study: Converting Miles to Kilometers. 2. Overview of C. C Language Elements. Variable Declarations and Data Types. Executable Statements. General Form of a C Programs. Case Study: Finding the Area and Circumference of a Circle. Formatting Numbers in Program Output. Interactive Mode, Batch Mode, and Data Files. 3. Data Types, Operators, and Simple Functions. Representation of Data Types. Arithmetic Expressions. Extending a Problem Solution. Case Study: Quality Control in Manufacturing Flat Washers. Functions Implementing Additional Operators. Simple User-Defined Functions 4. Selection Structures: if and switch Statements. Control Structures. Conditions. The if Statement. if Statements with Compound Statements. Nested if Statements and Multiple-Alternative Decisions. Decision Steps in Algorithms. Case Study: Computing Compass Bearings. The switch Statement. 5. Repetition and Loop Statements. Repetition in Programs: Using Loops to Solve Problems. Counting Loops and the while Statement. Computing a Sum or a Product in a Loop. The for Statement. Conditional Loops. Loop Design. Nested Control Structures. The do-while Statement and Flag-Controlled Loops. Problem Solving Illustrated. Case Study: Computing Radiation Levels. How to Debug and Test Programs. 6. Modular Programming. Functions with Input Arguments. Problem Solving with Top-Down Design. Case Study: Finding Prime Numbers. Functions Output Parameters Implemented with Pointers. Introduction to Scope of Names. Formal Output Parameters as Actual Arguments. Recursive Functions. Case Study: Bisection Method for Finding Roots. Top-Down Design Illustrated. Case Study: Performing Arithmetic Operations on Common Fractions. Debugging and Testing a Program System. 7. Arrays. Declaring and Referencing Arrays. Array Subscripts. Using for Loops for Sequential Access. Using Array Elements as Function Arguments. Array Arguments. Using Character Arrays as Strings. Array Processing Illustrated. Case Study: Finding Palindromes in Nucleotide Sequences. Dynamic Allocation of Arrays. 8. Multidimensional Arrays. Declaring and Referencing Multidimensional Arrays. Modeling with Two-Dimensional Arrays. Case Study: Cellular Telephone System. Vectors and Matrices. Solving Systems of Linear Equations. 9. Structure Types. User-Defined Structure Types. Structure Type Data as Input and Output Parameters. Functions Whose Result Values Are Structured. Problem Solving with Structure Types. Case Study: A User-Defined Type for Complex Numbers. Parallel Arrays and Arrays of Structures. Case Study: Universal Measurement Conversion. 10. Text and Binary File Processing. Input/Output Files: Review and Further Study. Binary Files. Searching a Database. Case Study: Metals Database Inquiry. 11. Programming in the Large. Using Abstraction to Manage Complexity. Personal Libraries: Header Files. Personal Libraries: Implementation Files. Storage Classes. Modifying Functions for Inclusion in a Library. Conditional Compilation. Arguments to Function main. Defining Macros with Parameters. 12. Introduction to Numerical Methods. Finding Roots of Equations. Fundamental Statistics. Numerical Differentiation. Numerical Integration. Solving First-Order Differential Equations. Commercial Numerical Methods Software. 13. On To C++. C++ Control Structures, Input/Output, and Functions. C++ Support for Object-Oriented Programming. Appendixes. A. Character Sets B. ANSI C Standard Libraries. C. C Operators. D. C Numeric Types. E. Enumerated Types. F. Pointer Arithmetic. G. Dynamic Allocation of Two-Dimensional Arrays. H. ANSI C Reserved Words. Answers. Index.