**Introduction to Computing and Engineering**

**1 Problem Solving**

1.1 Historical Perspective

1.2 Recent Engineering Achievements

Changing Engineering Environment

1.3 Computing Systems

Computer Hardware

Computer Software

1.4 Data Representation and Storage

Number Systems

Data Types and Storage

1.5 An Engineering Problem-Solving Methodology

Summary

**2 Simple C++ Programs**

ENGINEERING CHALLENGE: Vehicle Performance

2.1 Program Structure

2.2 Constants and Variables

Scientific Notation

Numeric Data Types

Boolean Data Type

Character Data Type

String Data

Symbolic Constants

Auto Type Specifier

2.3 C++ Classes

Class Declaration

Class Implementation

2.4 Building C++ Solutions with IDEs: Xcode

Xcode

2.5 C++ Operators

Assignment Operator

Arithmetic Operators

Precedence of Operators

Overflow and Underflow

Increment and Decrement Operators

Abbreviated Assignment Operators

2.6 Standard Input and Output

The cout Object

Stream Objects

Manipulators

The cin Object

2.7 Building C++ Solutions with IDEs: NetBeans

NetBeans

2.8 Basic Functions Included in the C++ Standard Library

Elementary Math Functions

Trigonometric Functions

Hyperbolic Functions*

Character Functions

2.9 Problem Solving Applied: Velocity Computation

2.10 System Limitations

Summary

**3 Control Structures: Selection**

ENGINEERING CHALLENGE: Global Change

3.1 Algorithm Development

Top-Down Design

3.2 Structured Programming

Pseudocode

Evaluation of Alternative Solutions

3.3 Conditional Expressions

Relational Operators

Logical Operators

Precedence and Associativity

3.4 Selection Statements: if Statement

Simple if Statements

if/else Statement

3.5 Numerical Technique: Linear Interpolation

3.6 Problem Solving Applied: Freezing Temperature of Seawater

3.7 Selection Statements: switch Statement

3.8 Building C++ Solutions with IDEs: NetBeans

NetBeans

3.9 Defining Operators for Programmer-Defined Data Types

Summary

**4 Control Structures: Repetition**

ENGINEERING CHALLENGE: Data Collection

4.1 Algorithm Development

Pseudocode and Flowchart Description

4.2 Repetition Structures 156

while Loop

do/while Loop

for Loop

4.3 Problem Solving Applied: GPS

4.4 break and continue Statements

4.5 Structuring Input Loops

Counter-Controlled Loops

Sentinel-Controlled Loop

End-Of-Data Loop

4.6 Problem Solving Applied: Weather Balloons

4.7 Building C++ Solutions with IDEs: Microsoft Visual C++

Microsoft Visual C++

Summary

**5 Working with Data Files**

ENGINEERING CHALLENGE: Weather Prediction

5.1 Defining File Streams

Stream Class Hierarchy

ifstream Class

ofstream Class

5.2 Reading Data Files

Specified Number of Records

Trailer or Sentinel Signals

End-of-File

5.3 Generating a Data File

5.4 Problem Solving Applied: Data Filters–Modifying an HTML File

5.5 Error Checking

The Stream State

5.6 Numerical Technique: Linear Modeling

5.7 Problem Solving Applied: Ozone Measurements

5.8 Building C++ Solutions with IDEs: Xcode-Weather Patterns

Summary

**6 Modular Programming with Functions**

ENGINEERING CHALLENGE: Simulation

6.1 Modularity

6.2 Programmer-Defined Functions

Function Definition

Solution 1

Solution 2

Function Prototype

6.3 Parameter Passing

Pass by Value

Pass by Reference

Storage Class and Scope

6.4 Problem Solving Applied: Calculating a Center of Gravity

6.5 Random Numbers

Integer Sequences

Floating-Point Sequences

6.6 Problem Solving Applied: Instrumentation Reliability

6.7 Defining Class Methods

Public Interface

Accessor Methods

Mutator Methods

6.8 Problem Solving Applied: Design of Composite Materials

Solution 1:

Solution 2:

6.9 Numerical Technique: Roots of Polynomials

Polynomial Roots

Incremental-Search Technique

6.10 Problem Solving Applied: System Stability

Newton—Raphson Method

6.11 Numerical Technique: Integration

Integration Using the Trapezoidal Rule

Summary

**7 One-Dimensional Arrays**

ENGINEERING CHALLENGE: Tsunami Warning Systems

7.1 Arrays

Definition and Initialization

Pseudocode

Range-based for Statement

Computation and Output

Function Arguments

7.2 Problem Solving Applied: Hurricane Categories 357

7.3 Statistical Measurements

Simple Analysis

Variance and Standard Deviation

Custom Header Files

7.4 Problem Solving Applied: Speech Signal Analysis

7.5 Sorting and Searching Algorithms

Selection Sort

Search Algorithms

Unordered Lists

Ordered Lists

7.6 Problem Solving Applied: Tsunami Warning Systems

7.7 Character Strings

C Style String Definition and I/O

String Functions

7.8 The string Class

7.9 Building C++ Solutions with IDEs: Xcode Vegetation Maps

7.10 The vector class

Parameter Passing

7.11 Problem Solving Applied: Calculating Probabilities

Summary

**8 Two-Dimensional Arrays**

ENGINEERING CHALLENGE: Terrain Navigation

8.1 Two-Dimensional Arrays

Declaration and Initialization

Computations and Output

Function Arguments

8.2 Problem Solving Applied: Terrain Navigation

8.3 Two-Dimensional Arrays and the vector class

Function Arguments

8.4 Matrices

Determinant

Transpose

Matrix Addition and Subtraction

Matrix Multiplication

8.5 Numerical Technique: Solution to Simultaneous Equations

Graphical Interpretation

Gauss Elimination

8.6 Problem Solving Applied: Electrical Circuit Analysis

8.7 Higher-Dimensional Arrays

Summary

**9 An Introduction to Pointers**

ENGINEERING CHALLENGE: Weather Patterns

9.1 Addresses and Pointers

Address Operator

Pointer Assignment

Pointer Arithmetic

9.2 Pointers to Array Elements

One-Dimensional Arrays

Character Strings

Pointers as Function Arguments

9.3 Problem Solving Applied: El Niño-Southern Oscillation Data

9.4 Dynamic Memory Allocation

The new Operator

Dynamically Allocated Arrays

The delete Operator

9.5 Problem Solving Applied: Seismic Event Detection

9.6 Common Errors Using new and delete

9.7 Linked Data Structures

Linked Lists

Stacks

Queue 518

9.8 The C++ Standard Template Library

The list class

The stack class

The queue class

9.9 Problem Solving Applied: Concordance of a Text File 525

Summary

**10 Advanced Topics**

ENGINEERING CHALLENGE: Artificial Intelligence

10.1 Data Abstraction

Overloading Operators

The Pixel class

\Arithmetic Operators

friend Functions

Validating Objects

Bitwise Operators

10.2 Building C++ Solutions with IDEs: Xcode Image Files

10.3 Binary File Input and Output

Opening Binary Files

Reading and Writing Binary Files

Contents

10.4 Problem Solving Applied: Color Image Processing

10.5 Recursion

Factorial Function

Fibonacci Sequence

The BinaryTree class

10.6 Generic Programming

Function Templates

Class Templates

10.7 Inheritance

The Rectangle class

The Square Class

The Cube class

10.8 virtual Methods

10.9 Problem Solving Applied: Iterated Prisoner’s Dilemma

Summary

**C++ Standard Library**

B ASCII Character Codes

C Using MATLAB to Plot Data from ASCII Files

C++ Program to Generate a Data File

ASCII Data File Generated by the C++ Program 649

Generating a Plot with MATLAB

D References

E PRACTICE! Solutions

Index