| |
| |
Preface | |
| |
| |
| |
Introduction to Computers and Programming | |
| |
| |
| |
Why Program? | |
| |
| |
| |
Computer Systems: Hardware and Software | |
| |
| |
| |
Programs and Programming Languages | |
| |
| |
| |
What Is a Program Made of? | |
| |
| |
| |
Input, Processing, and Output | |
| |
| |
| |
The Programming Process | |
| |
| |
| |
Procedural and Object-Oriented Programming | |
| |
| |
| |
Introduction to C++ | |
| |
| |
| |
The Parts of a C++ Program | |
| |
| |
| |
The cout Object | |
| |
| |
| |
The #include Directive | |
| |
| |
| |
Variables and Literals | |
| |
| |
| |
Identifiers | |
| |
| |
| |
Integer Data Types | |
| |
| |
| |
The char Data Type | |
| |
| |
| |
Floating-Point Data Types | |
| |
| |
| |
The bool Data Type | |
| |
| |
| |
Determining the Size of a Data Type | |
| |
| |
| |
Variable Assignments and Initialization | |
| |
| |
| |
Scope | |
| |
| |
| |
Arithmetic Operators | |
| |
| |
| |
Comments | |
| |
| |
| |
Focus on Software Engineering: Programming Style | |
| |
| |
| |
If You Plan to Continue in Computer Science: Standard and Prestandard C++ | |
| |
| |
| |
Expressions and Interactivity | |
| |
| |
| |
The cin Object | |
| |
| |
| |
Mathematical Expressions | |
| |
| |
| |
When You Mix Apples and Oranges: Type Conversion | |
| |
| |
| |
Overflow and Underflow | |
| |
| |
| |
Type Casting | |
| |
| |
| |
Named Constants | |
| |
| |
| |
Multiple Assignment and Combined Assignment | |
| |
| |
| |
Formatting Output | |
| |
| |
| |
Formatted Input | |
| |
| |
| |
Focus on Object-Oriented Programming: More About Member Functions | |
| |
| |
| |
More Mathematical Library Functions | |
| |
| |
| |
Focus on Debugging: Hand Tracing a Program | |
| |
| |
| |
Focus on Problem Solving: A Case Study | |
| |
| |
| |
Introduction to File Input and Output | |
| |
| |
| |
Making Decisions | |
| |
| |
| |
Relational Operators | |
| |
| |
| |
The if Statement | |
| |
| |
| |
Flags | |
| |
| |
| |
Expanding the if Statement | |
| |
| |
| |
The if/else Statement | |
| |
| |
| |
The if/else if Statement | |
| |
| |
| |
Using a Trailing else | |
| |
| |
| |
Menus | |
| |
| |
| |
Focus on Software Engineering: Nested if Statements | |
| |
| |
| |
Logical Operators | |
| |
| |
| |
Checking Numeric Ranges with Logical Operators | |
| |
| |
| |
Focus on Software Engineering: Validating User Input | |
| |
| |
| |
More About Variable Definitions and Scope | |
| |
| |
| |
Comparing Strings | |
| |
| |
| |
The Conditional Operator | |
| |
| |
| |
The switch Statement | |
| |
| |
| |
Testing for File Open Errors | |
| |
| |
| |
Looping | |
| |
| |
| |
The Increment and Decrement Operators | |
| |
| |
| |
Introduction to Loops: The while Loop | |
| |
| |
| |
Using the while Loop for Input Validation | |
| |
| |
| |
Counters | |
| |
| |
| |
The do-while Loop | |
| |
| |
| |
The for Loop | |
| |
| |
| |
Keeping a Running Total | |
| |
| |
| |
Sentinels | |
| |
| |
| |
Using a Loop to Read Data from a File | |
| |
| |
| |
Focus on Software Engineering: Deciding Which Loop to Use | |
| |
| |
| |
Nested Loops | |
| |
| |
| |
Breaking Out of a Loop | |
| |
| |
| |
The continue Statement | |
| |
| |
| |
Functions | |
| |
| |
| |
Focus on Software Engineering: Modular Programming | |
| |
| |
| |
Defining and Calling Functions | |
| |
| |
| |
Function Prototypes | |
| |
| |
| |
Sending Data into a Function | |
| |
| |
| |
Passing Data by Value | |
| |
| |
| |
Focus on Software Engineering: Using Functions in a Menu-Driven Program | |
| |
| |
| |
The return Statement | |
| |
| |
| |
Returning a Value from a Function | |
| |
| |
| |
Returning a Boolean Value | |
| |
| |
| |
Local and Global Variables | |
| |
| |
| |
Static Local Variables | |
| |
| |
| |
Default Arguments | |
| |
| |
| |
Using Reference Variables as Parameters | |
| |
| |
| |
Overloading Functions | |
| |
| |
| |
The exit() Function | |
| |
| |
| |
Stubs and Drivers | |
| |
| |
| |
Arrays | |
| |
| |
| |
Arrays Hold Multiple Values | |
| |
| |
| |
Accessing Array Elements | |
| |
| |
| |
No Bounds Checking in C++ | |
| |
| |
| |
Array Initialization | |
| |
| |
| |
Processing Array Contents | |
| |
| |
| |
Focus on Software Engineering: Using Parallel Arrays | |
| |
| |
| |
Arrays as Function Arguments | |
| |
| |
| |
Two-Dimensional Arrays | |
| |
| |
| |
Arrays of Strings | |
| |
| |
| |
Arrays with Three or More Dimensions | |
| |
| |
| |
Focus on Problem Solving and Program Design: A Case Study | |
| |
| |
| |
If You Plan to Continue in Computer Science: Introduction to the STL vector | |
| |
| |
| |
Searching and Sorting Arrays | |
| |
| |
| |
Focus on Software Engineering: Introduction to Search Algorithms | |
| |
| |
| |
Focus on Problem Solving and Program Design: A Case Study | |
| |
| |
| |
Focus on Software Engineering: Introduction to Sorting Algorithms | |
| |
| |
| |
Focus on Problem Solving and Program Design: A Case Study | |
| |
| |
| |
If You Plan to Continue in Computer Science: Sorting and Searching vectors | |
| |
| |
| |
Pointers | |
| |
| |
| |
Getting the Address of a Variable | |
| |
| |
| |
Pointer Variables | |
| |
| |
| |
The Relationship Between Arrays and Pointers | |
| |
| |
| |
Pointer Arithmetic | |
| |
| |
| |
Initializing Pointers | |
| |
| |
| |
Comparing Pointers | |
| |
| |
| |
Pointers as Function Parameters | |
| |
| |
| |
Focus on Software Engineering: Dynamic Memory Allocation | |
| |
| |
| |
Focus on Software Engineering: Returning Pointers from Functions | |
| |
| |
| |
Focus on Problem Solving and Program Design: A Case Study | |
| |
| |
| |
Characters, Strings, and the string Class | |
| |
| |
| |
Character Testing | |
| |
| |
| |
Character Case Conversion | |
| |
| |
| |
Review of the Internal Storage of C-Strings | |
| |
| |
| |
Library Functions for Working with C-Strings | |
| |
| |
| |
String/Numeric Conversion Functions | |
| |
| |
| |
Focus on Software Engineering: Writing Your Own C-String-Handling Functions | |
| |
| |
| |
The C++ string Class | |
| |
| |
| |
Focus on Problem Solving and Program Design: A Case Study | |
| |
| |
| |
Structured Data | |
| |
| |
| |
Abstract Data Types | |
| |
| |
| |
Focus on Software Engineering: Combining Data into Structures | |
| |
| |
| |
Accessing Structure Members | |
| |
| |
| |
Initializing a Structure | |
| |
| |
| |
Arrays of Structures | |
| |
| |
| |
Focus on Software Engineering: Nested Structures | |
| |
| |
| |
Structures as Function Arguments | |
| |
| |
| |
Returning a Structure from a Function | |
| |
| |
| |
Pointers to Structures | |
| |
| |
| |
Focus on Software Engineering: When to Use., When to Use ->, and When to Use | |
| |
| |
| |
Unions | |
| |
| |
| |
Enumerated Data Types | |
| |
| |
| |
Advanced File Operations | |
| |
| |
| |
File Operations | |
| |
| |
| |
File Output Formatting | |
| |
| |
| |
Passing File Stream Objects to Functions | |
| |
| |
| |
More Detailed Error Testing | |
| |
| |
| |
Member Functions for Reading and Writing Files | |
| |
| |
| |
Focus on Software Engineering: Working with Multiple Files | |
| |
| |
| |
Binary Files | |
| |
| |
| |
Creating Records with Structures | |
| |
| |
| |
Random-Access Files | |
| |
| |
| |
Opening a File for Both Input and Output | |
| |
| |
| |
Introduction to Classes | |
| |
| |
| |
Procedural and Object-Oriented Programming | |
| |
| |
| |
Introduction to Classes | |
| |
| |
| |
Defining an Instance of a Class | |
| |
| |
| |
Why Have Private Members? | |
| |
| |
| |
Focus on Software Engineering: Separating Class Specification from Implementation | |
| |
| |
| |
Inline Member Functions | |
| |
| |
| |
Constructors | |
| |
| |
| |
Passing Arguments to Cosntructors | |
| |
| |
| |
Destructors | |
| |
| |
| |
Overloading Constructors | |
| |
| |
| |
Private Member Functions | |
| |
| |
| |
Arrays of Objects | |
| |
| |
| |
Focus on Problem Solving and Program Design: An OOP Case Study | |
| |
| |
| |
Focus on Object-Oriented Programming: Creating an Abstract Array Data Type | |
| |
| |
| |
Focus on Object-Oriented Design: The Unified Modeling Language (UML) | |
| |
| |
| |
Focus on Object-Oriented Design: Finding the Classes and Their Responsibilities | |
| |
| |
| |
More About Classes | |
| |
| |
| |
Instance and Static Members | |
| |
| |
| |
Friends of Classes | |
| |
| |
| |
Memberwise Assignment | |
| |
| |
| |
Copy Constructors | |
| |
| |
| |
Operator Overloading | |
| |
| |
| |
Object Conversion | |
| |
| |
| |
Aggregation | |
| |
| |
| |
Focus on Object-Oriented Design: Class Collaborations | |
| |
| |
| |
Inheritance, Polymorphism, and Virtual Functions | |
| |
| |
| |
What Is Inheritance? | |
| |
| |
| |
Protected Members and Class Access | |
| |
| |
| |
Constructors and Destructors in Base and Derived Classes | |
| |
| |
| |
Redefining Base Class Functions | |
| |
| |
| |
Class Hierarchies | |
| |
| |
| |
Polymorphism and Virtual Member Functions | |
| |
| |
| |
Abstract Base Classes and Pure Virtual Functions | |
| |
| |
| |
Multiple Inheritance | |
| |
| |
| |
Exceptions, Templates, and the Standard Template Library (STL) | |
| |
| |
| |
Exceptions | |
| |
| |
| |
Function Templates | |
| |
| |
| |
Focus on Software Engineering: Where to Start When Defining Templates | |
| |
| |
| |
Class Templates | |
| |
| |
| |
Introduction to the Standard Template Library (STL) | |
| |
| |
| |
Linked Lists | |
| |
| |
| |
Introduction to the Linked List ADT | |
| |
| |
| |
Linked List Operations | |
| |
| |
| |
A Linked List Template | |
| |
| |
| |
Variations of the Linked List | |
| |
| |
| |
The STL list Container | |
| |
| |
| |
Stacks and Queues | |
| |
| |
| |
Introduction to the Stack ADT | |
| |
| |
| |
Dynamic Stacks | |
| |
| |
| |
The STL stack Container | |
| |
| |
| |
Introduction to the Queue ADT | |
| |
| |
| |
Dynamic Queues | |
| |
| |
| |
The STL deque and queue Containers | |
| |
| |
| |
Recursion | |
| |
| |
| |
Introduction to Recursion | |
| |
| |
| |
Solving Problems with Recursion | |
| |
| |
| |
Focus on Problem Solving and Program Design: The Recursive gcd Function | |
| |
| |
| |
Focus on Problem Solving and Program Design: Solving Recursively Defined Problems | |
| |
| |
| |
Focus on Problem Solving and Program Design: Recursive Linked List Operations | |
| |
| |
| |
Focus on Problem Solving and Program Design: A Recursive Binary Search Function | |
| |
| |
| |
The Towers of Hanoi | |
| |
| |
| |
Focus on Problem Solving and Program Design: The QuickSort Algorithm | |
| |
| |
| |
Exhaustive Algorithms | |
| |
| |
| |
Focus on Software Engineering: Recursion vs. Iteration | |
| |
| |
| |
Binary Trees | |
| |
| |
| |
Definition and Applications of Binary Trees | |
| |
| |
| |
Binary Search Tree Operations | |
| |
| |
| |
Template Considerations for Binary Search Trees | |
| |
| |
| |
The ASCII character Set | |
| |
| |
| |
Operator Precedence and Associativity | |
| |
| |
Index | |