In Starting Out With C++, Gaddis makes a very detailed and slow-paced presentation of both programming and C++ syntax concepts so all readers will be able to follow along. Objects are introduced after control structures, functions, arrays, and pointers, and C-style strings are used throughout. The book includes the hallmark pedagogocial features that readers of Gaddis books have come to expect.
Table of Contents:
CHAPTER 1 Introduction to Computers and Programming
1.1 Why Program?
1.2 Computer Systems: Hardware and Software
1.3 Programs and Programming Languages
1.4 What Is a Program Made of?
1.5 Input, Processing, and Output
1.6 The Programming Process
1.7 Procedural and Object-Oriented Programming
Review Questions and Exercises
Serendipity Booksellers Software Development Project—Part 1 CHAPTER 2 Introduction to C++
2.1 The Parts of a C++ Program
2.2 The cout Object
2.3 The #include Directive
2.4 Variables and Literals
2.5 Identifiers
2.6 Integer Data Types
2.7 The char Data Type
2.8 Floating-Point Data Types
2.9 The bool Data Type
2.10 Determining the Size of a Data Type
2.11 Variable Assignments and Initialization
2.12 Scope
2.13 Arithmetic Operators
2.14 Comments
2.15 Focus on Software Engineering: Programming Style
2.16 If You Plan to Continue in Computer Science: Standard and Prestandard C++
Review Questions and Exercises
Serendipity Booksellers Software Development Project—Part 2
CHAPTER 3 Expressions and Interactivity
3.1The cin Object
3.2 Mathematical Expressions
3.3 When You Mix Apples and Oranges: Type Conversion
3.4 Overflow and Underflow
3.5 Type Casting
3.6 Named Constants
3.7 Multiple Assignment and Combined Assignment
3.8 Formatting Output
3.9 Formatted Input
3.10 Focus on Object-Oriented Programming:More About Member Functions
3.11 More Mathematical Library Functions
3.12 Focus on Debugging: Hand Tracing a Program
3.13 Focus on Problem Solving: A Case Study
3.14 Introduction to File Input and Output
Review Questions and Exercises
Serendipity Booksellers Software Development Project—Part 3
CHAPTER 4 Making Decisions
4.1 Relational Operators
4.2 The if Statement
4.3 Flags
4.4 Expanding the if Statement
4.5 The if/else Statement
4.6 The if/else if Statement
4.7 Using a Trailing else
4.8 Menus
4.9 Focus on Software Engineering: Nested if Statements
4.10 Logical Operators
4.11 Checking Numeric Ranges with Logical Operators
4.12 Focus on Software Engineering: Validating User Input
4.13 More About Variable Definitions and Scope
4.14 Comparing Strings
4.15 The Conditional Operator
4.16 The switch Statement
4.17 Testing for File Open Errors
4.18 Focus on Problem Solving and Program Design: A Case Study
Review Questions and Exercises
Serendipity Booksellers Software Development Project—Part 4
CHAPTER 5 Looping
5.1 The Increment and Decrement Operators
5.2 Introduction to Loops: The while Loop
5.3 Counters
5.4 Letting the User Control the Loop
5.5 Keeping a Running Total
5.6 Sentinels
5.7 Using a Loop to Read Data from a File
5.8 The do-while and for Loops
5.9 Focus on Software Engineering: Deciding Which Loop to Use
5.10 Nested Loops
5.11 Breaking Out of a Loop
5.12 The continue Statement
5.13 Focus on Software Engineering: Using Loops for Data Validation
5.14 Focus on Problem Solving and Program Design: A Case Study
Review Questions and Excercises
Serendipity Booksellers Software Development Project—Part 5
CHAPTER 6 Functions
6.1 Focus on Software Engineering: Modular Programming
6.2 Defining and Calling Functions
6.3 Function Prototypes
6.4 Sending Data into a Function
6.5 Passing Data by Value
6.6 Focus on Software Engineering: Using Functions in a Menu-Driven Program
6.7 The return Statement
6.8 Returning a Value from a Function
6.9 Returning a Boolean Value
6.10 Local and Global Variables
6.11 Static Local Variables
6.12 Default Arguments
6.13 Using Reference Variables as Parameters
6.14 Overloading Functions
6.15 The exit() Function
6.16 Stubs and Drivers
6.17 Focus on Problem Solving and Program Design: A Case Study
Review Questions and Exercises
Serendipity Booksellers Software Development Project—Part 6
CHAPTER 7 Arrays
7.1 Arrays Hold Multiple Values
7.2 Accessing Array Elements
7.3 No Bounds Checking in C++
7.4 Array Initialization
7.5 Processing Array Contents
7.6 Focus on Software Engineering: Using Parallel Arrays
7.7 Arrays as Function Arguments
7.8 Two-dimensional Arrays
7.9 Arrays of Strings
7.10 Arrays with Three or More Dimensions
7.11 Focus on Problem Solving and Program Design: A Case Study
7.12 Focus on Problem Solving and Program Design: A Case Study
7.13 If You Plan to Continue in Computer Science: Introduction to the STL vector
Review Questions and Exercises
Serendipity Booksellers Software Development Project—Part 7
CHAPTER 8 Searching and Sorting Arrays
8.1 Focus on Software Engineering: Introduction to Search Algorithms
8.2 Focus on Problem Solving and Program Design: A Case Study
8.3 Focus on Software Engineering: Introduction to Sorting Algorithms
8.4 Focus on Problem Solving and Program Design: A Case Study
8.5 If You Plan to Continue in Computer Science: Sorting and Searching vectors
Review Questions and Exercises
Serendipity Booksellers Software Development Project—Part 8
CHAPTER 9 Pointers
9.1 Getting the Address of a Variable
9.2 Pointer Variables
9.3 The Relationship Between Arrays and Pointers
9.4 Pointer Arithmetic
9.5 Initializing Pointers
9.6 Comparing Pointers
9.7 Pointers as Function Parameters
9.8 Focus on Software Engineering: Dynamic Memory Allocation
9.9 Focus on Software Engineering: Returning Pointers from Functions
9.10 Focus on Problem Solving and Program Design: A Case Study
Review Questions and Exercises
Serendipity Booksellers Software Development Project—Part 9
CHAPTER 10 Characters, Strings, and the string Class
10.1 Character Testing
10.2 Character Case Conversion
10.3 Review of the Internal Storage of C-Strings
10.4 Library Functions for Working with C-Strings
10.5 String/Numeric Conversion Functions
10.6 Focus on Software Engineering: Writing Your Own C-String-Handling Functions
10.7 Focus on Problem Solving and Program Design: A Business Case Study
10.8 The C++ string Class
10.9 Focus on Problem Solving and Program Design: A Case Study
Review Questions and Exercises
Serendipity Booksellers Software Development Project—Part 10
CHAPTER 11 Structured Data
11.1 Abstract Data Types
11.2 Focus on Software Engineering: Combining Data into Structures
11.3 Accessing Structure Members
11.4 Initializing a Structure
11.5 Arrays of Structures
11.6 Focus on Software Engineering: Nested Structures
11.7 Structures as Function Arguments
11.8 Returning a Structure from a Function
11.9 Pointers to Structures
11.10 Focus on Software Engineering: When to Use ., When to Use ->, and When to Use *
11.11 Unions
11.12 Focus on Problem Solving and Program Design: A Case Study
Review Questions and Exercises
Serendipity Booksellers Software Development Project—Part 11
CHAPTER 12 Advanced File Operations
12.1 File Operations
12.2 File Output Formatting
12.3 Passing File Stream Objects to Functions
12.4 More Detailed Error Testing
12.5 Member Functions for Reading and Writing Files
12.6 Focus on Software Engineering: Working with Multiple Files
12.7 Binary Files
12.8 Creating Records with Structures
12.9 Random-Access Files
12.10 Opening a File for Both Input and Output
12.11 Focus on Problem Solving and Program Design: A Case Study
Review Questions and Exercises
Serendipity Booksellers Software Development Project—Part 12
CHAPTER 13 Introduction to Classes
13.1 Procedural and Object-Oriented Programming
13.2 Introduction to Classes
13.3 Defining an Instance of a Class
13.4 Why Have Private Members?
13.5 Focus on Software Engineering: Some Design Considerations
13.6 Focus on Software Engineering: Using Private Member Functions
13.7 Inline Member Functions
13.8 Constructors
13.9 Destructors
13.10 Constructors That Accept Arguments
13.11 Focus on Software Engineering: Input Validation Objects
13.12 Overloading Constructors
13.13 Only One Default Constructor and One Destructor
13.14 Arrays of Objects
13.15 Focus on Problem Solving and Program Design: An OOP Case Study
13.16 Focus on Object-Oriented Programming: Creating an Abstract Array Data Type
13.17 Focus on Object-Oriented Programming: Extending the Abstract Array Data Type
13.18 If You Plan to Continue in Computer Science: An Object-Oriented System Development Primer
Review Questions and Exercises
Serendipity Booksellers Software Development Project—Part 13
CHAPTER 14 More About Classes
14.1 Instance and Static Members
14.2 Friends of Classes
14.3 Memberwise Assignment
14.4 Copy Constructors
14.5 Operator Overloading
14.6 Object Conversion
14.7 Creating a String Class
14.8 Object Composition
Review Questions and Exercises
Serendipity Booksellers Software Development Project—Part 14
CHAPTER 15 Inheritance, Polymorphism, and Virtual Functions
15.1 What Is Inheritance?
15.2 Protected Members and Class Access
15.3 Constructors and Destructors
15.4 Redefining Base Class Functions
15.5 Polymorphism and Virtual Member Functions
15.6 Abstract Base Classes and Pure Virtual Functions
15.7 Base Class Pointers
15.8 Classes Derived from Derived Classes
15.9 Multiple Inheritance
Review Questions and Exercises
Serendipity Booksellers Software Development Project—Part 15
CHAPTER 16 Exceptions, Templates, and the Standard Template Library (STL)
16.1 Exceptions
16.2 Function Templates
16.3 Focus on Software Engineering: Where to Start When Defining Templates
16.4 Class Templates
16.5 Introduction to the Standard Template Library (STL)
Review Questions and Exercises
Serendipity Booksellers Software Development Project—Part 16
CHAPTER 17 Linked Lists
17.1 Introduction to the Linked List ADT
17.2 Linked List Operations
17.3 A Linked List Template
17.4 Variations of the Linked List
17.5 The STL list Container
Review Questions and Exercises
Serendipity Booksellers Software Development Project—Part 17
CHAPTER 18 Stacks and Queues
18.1 Introduction to the Stack ADT
18.2 Dynamic Stacks
18.3 The STL stack Container
18.4 Introduction to the Queue ADT
18.5 Dynamic Queues
18.6 The STL deque and queue Containers
Review Questions and Exercises
Serendipity Booksellers Software Development Project—Part 18
CHAPTER 19 Recursion
19.1 Introduction to Recursion
19.2 Focus on Problem Solving and Program Design: The Recursive Factorial Function
19.3 Focus on Problem Solving and Program Design: The Recursive gcd Function
19.4 Focus on Problem Solving and Program Design: Solving Recursively Defined Problems
19.5 Focus on Problem Solving and Program Design: Recursive Linked List Operations
19.6 Focus on Problem Solving and Program Design: A Recursive Binary Search Function
19.7 Focus on Problem Solving and Program Design: The QuickSort Algorithm
19.8 Exhaustive Algorithms
19.9 Focus on Software Engineering: Recursion Versus Iteration
Review Questions and Exercises
Serendipity Booksellers Software Development Project—Part 19
CHAPTER 20 Binary Trees
20.1 Definition and Applications of Binary Trees
20.2 Binary Search Tree Operations
20.3 Template Considerations for Binary Search Trees
Review Questions and Exercises
Serendipity Booksellers Software Development Project—Part 20
Appendix A The ASCII Character Set
Appendix B Operator Precedence and Associativity
Appendix C Introduction to Flowcharting
Appendix D Enumerated Data Types
Appendix E Namespaces
Appendix F Creating a Boolean Data Type
Appendix G Passing Command Line Arguments
Appendix H Header File and Library Function Reference
Appendix I Binary Numbers and Bitwise Operations
Appendix J Multi-Source File Programs
Appendix K Introduction to Microsoft Visual C++ 6.0
Appendix L Introduction to Borland C++ Builder 5.0
Appendix M Introduction to Microsoft Visual C++ .NET
Appendix N Stream Member Functions for Formatting
Appendix O Answers to Checkpoints
Appendix P Solutions to Odd Numbered Review Question