For courses in C++ Programming.
Fundamentals of C++ for Novices and Experienced Programmers Alike
Intended for use in a two-term, three-term, or accelerated one-term C++ programming sequence, this Ninth Edition of
Starting Out with C++: Early Objects
introduces the fundamentals of C++ to novices and experienced programmers alike. In clear, easy-to-understand terms, the text introduces all of the necessary topics for beginning C++ programmers. Real-world examples allow readers to apply their knowledge in understanding how, why, and when to implement the features of C++. The text is organized in a progressive, step-by-step fashion that allows for flexibility. Building on the popularity of previous editions, the Ninth Edition has been updated and enhanced with new material, including C++11 topics and recent changes in technology.
Author(s): Tony Gaddis; Judy Walters; Godfrey Muganda
Edition: 9
Publisher: Pearson
Year: 2016
Language: English
Pages: 1272
Front Cover
Title Page
Copyright Page
Contents at a Glance
CONTENTS
Preface
About the Authors
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 Tying It All Together: Hi! It's Me
Review Questions and Exercises
Programming Challenges
2. Introduction to C++
2.1 The Parts of a C++ Program
2.2 The count Object
2.3 The #include Directive
2.4 Variables and the Assignment Statement
2.5 Literals
2.6 Identifiers
2.7 Integer Data Types
2.8 Floating-Point Data Tyes
2.9 The char Data Type
2.10 The C++ string Class
2.11 The bool Data Type
2.12 Determining the Size of a Data Type
2.13 More on Variable Assignments and Initialization
2.14 Scope
2.15 Arithmetic Operators
2.16 Comments
2.17 Programming Style
2.18 Tying It All Together: Smile!
Review Questions and Exercises
Programming Challenges
3. Expressions and Interactivity
3.1 The cin object
3.2 Mathematical Expressions
3.3 Data Types Conversion and Type Casting
3.4 Overflow and Underflow
3.5 Named Constants
3.6 Multiple and Combined Assignment
3.7 Formatting Output
3.8 Working with Characters and Strings
3.9 More Mathematical Library Functions
3.10 Random Numbers
3.11 Focus on Debugging: Hand Tracing a Program
3.12 Green Fields Landscaping Case Study-Part 1
3.13 Tying It All Together: Word Game
Review Questions and Exercises
Programming Challenges
4. Making Decisions
4.1 Relational Operators
4.2 The if Statement
4.3 The if/else Statement
4.4 The if/else if Statement
4.5 Menu-Driven Programs
4.6 Nested if Statements
4.7 Logical Operators
4.8 Validating User Input
4.9 More about Blocks and Scope
4.10 More about Characters and Strings
4.11 The Conditional Operator
4.12 The switch Statement
4.13 Enumerated Data Types
4.14 Focus on Testing and Debugging: Validating Output Results
4.15 Green Fields Landscaping Case Study-Part 2
4.16 Tying It All Together: Fortune Teller
Review Questions and Exercises
Programming Challenges
5. Looping
5.1 Introduction to Loops: The while Loop
5.2 Using the while Loop for Input Validation
5.3 The Increment and Decrement Operators
5.4 Counters
5.5 Keeping a Running Total
5.6 Sentinels
5.7 The do-while Loop
5.8 The for Loop
5.9 Focus on Software Engineering: Deciding Which Loop to Use
5.10 Nested Loops
5.11 Breaking Out of a Loop
5.12 Using Files for Data Storage
5.13 Focus on Testing and Debugging: Creating Good Test Data
5.14 Central Mountain Credit Union Case Study
5.15 Tying It All Together: What a Colorful World
Review Questions and Exercises
Programming Challenges
6. Functions
6.1 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 The return Statement
6.7 Returning a Value from a Function
6.8 Returning a Boolean Value
6.9 Using Functions in a Menu-Driven Program
6.10 Local and Global Variables
6.11 Static Local Values
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 Little Lotto Case Study
6.18 Tying It All Together: Glowing Jack-o-lantern
Review Questions and Exercises
Programming Challenges
7. Introduction to Classes and Objects
7.1 Abstract Data Types
7.2 Object-Oriented Programming
7.3 Introduction to Classes
7.4 Creating and Using Objects
7.5 Defining Member Functions
7.6 Constructors
7.7 Destructors
7.8 Private Member Functions
7.9 Passing Objects to Functions
7.10 Object Composition
7.11 Focus on Software Engineering: Seperating Class Specification, Implementation, and Client Code
7.12 Structures
7.13 More about Enumerated Data Types
7.14 Home Software Company OOP Case Study
7.15 Introduction to Object-Oriented Analysis and Design
7.16 Screen Control
7.17 Tying It All Together: Yoyo Animation
Review Questions and Exercises
Programming Challenges
8. Arrays
8.1 Arrays Hold Multiple Values
8.2 Accessing Array Elements
8.3 Inputting and Displaying Array Data
8.4 Array Initialization
8.5 The Range-Based for Loop
8.6 Processing Array Contents
8.7 Using Parallel Arrays
8.8 The typedef Statement
8.9 Arrays Function Arguments
8.10 Two-Dimensional Arrays
8.11 Arrays with Three or More Dimensions
8.12 Vectors
8.13 Arrays of Objects
8.14 National Commerce Bank Case Study
8.15 Tying It All Together: Rock, Paper, Scissors
Review Questions and Exercises
Programming Challenges
9. Searching, Sorting, and Algorithm Analysis
9.1 Introduction to Search Algorithms
9.2 Searching an Array of Objects
9.3 Introduction to Sorting Algorithms
9.4 Sorting an Array of Objects
9.5 Sorting and Searching Vectors
9.6 Introduction to Analysis of Algorithms
9.7 Case Studies
9.8 Tying It All Together: Secret Messages
Review Questions and Exercises
Programming Challenges
10. Pointers and the Address Oerator
10.1 Pointers and the Address Operator
10.2 Pointer Variables
10.3 The Relationship Between Arrays and Pointers
10.4 Pointer Arithmetic
10.5 Initializing Pointers
10.6 Comparing Pointers
10.7 Pointers as Function Parameters
10.8 Pointers to Constants and Constant Pointers
10.9 Focus on Software Engineering: Dynamic Memory Allocation
10.10 Focus on Software Engineering: Returning Pointers from Functions
10.11 Pointers to Class Objects and Structures
10.12 Focus on Software Engineering: Selecting Members of Objects
10.13 Smart Pointers
10.14 Tying It All Together: Pardon Me, Do You Have the Time?
Review Questions and Exercises
Programming Challenges
11. More about Classes and Object-Oriented Programming
11.1 The this Pointer and Constant Member Functions
11.2 Static Members
11.3 Friends of Classes
11.4 Memberwise Assignment
11.5 Copy Constructors
11.6 Operator Overloading
11.7 Rvalue References and Move Operations
11.8 Function Objects and Lambda Expressions
11.9 Type Conversion Operators
11.10 Convert Constructors
11.11 Aggregation and Composition
11.12 Inheritance
11.13 Protected Members and Class Access
11.14 Constructors, Destructors, and Inheritance
11.15 Overriding Base Class Functions
11.16 Tying It All Together: Putting Data on the World Wide Web
Review Questions and Exercises
Programming Challenges
12. More on C-Strings and the string Class
12.1 C-Strings
12.2 Library Functions for Working with C-Strings
12.3 Converstions Between Numbers and Strings
12.4 Writng Your Own C-String Handling Functions
12.5 More about the C++ string Class
12.6 Advanced Software Enterprises Case Study
12.7 Tying It All Together: Program Execution Environments
Review Questions and Exercises
Programming Challenges
13. Advanced File and I/O Operations
13.1 Input and Output Streams
13.2 More Detailed Error Testing
13.3 Member Functions for Reading and Writing Files
13.4 Binary Files
13.5 Creating Records with Structures
13.6 Random-Access Files
13.7 Opening a File for Both Input and Output
13.8 Online Friendship Connections Case Study: Object Serialization
13.9 Tying It All Together: File Merging and Color-Coded HTML
Review Questions and Exercises
Programming Challenges
14. Recursion
14.1 Introduction to Recursion
14.2 The Recursive Factorial Function
14.3 The Recursive gcd Function
14.4 Solving Recursively Defined Problems
14.5 A Recursive Binary Search Function
14.6 Focus on Problem Solving and Program Design: The QuickSort Algorithm
14.7 The Towers of Hanoi
14.8 Focus on Problem Solving: Exhaustive and Enumeration Algorithms
14.9 Focus on Software Engineering: Recursion versus Iteration
14.10 Tying It All Together: Infix and Prefix Expressions
Review Questions and Exercises
Programming Challenges
15. Polymorphism and Virtual Functions
15.1 Type Compatibility in Inheritance Hierarchies
15.2 Polymorphism and Virtual Member Functions
15.3 Abstract Base Classes and Pure Virtual Functions
15.4 Focus on Object-Oriented Programming: Composition versus Inheritance
15.5 Secure Encryption Systems, Inc., Case Study
15.6 Tying It All Together: Let's Move It
Review Questions and Exercises
Programming Challenges
16. Exceptions, Templates, and the Standard Template Library (STL)
16.1 Exceptions
16.2 Fucntion Templates
16.3 Class Templates
16.4 Class Templates and Inheritance
16.5 Introduction to the Standard Template Library
16.6 Tying It All Together: Word Transformers Game
Review Questions and Exercises
Programming Challenges
17. Linked Lists
17.1 Introduction to the Linked List ADT
17.2 Linked List Operations
17.3 A Linked List Template*
17.4 Recursive Linked List Operations
17.5 Variations of the Linked List
17.6 The STL list Container*
17.7 Reliable Software Systems, Inc., Case Study
17.8 Tying It All Together: More on Graphics and Animation
Review Questions and Exercises
Programming Challenges
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*
18.7 Focus on Problem Solving and Program Design: Eliminating Recursion
18.8 Tying It All Together: Converting Postfix Expressions to Infix
Review Questions and Exercises
Programming Challenges
19. Binary Trees
19.1 Definition and Applications of Binary Trees
19.2 Binary Search Tree Operations
19.3 Template Considerations for Binary Search Trees
19.4 Tying It All Together: Genealogy Trees
Review Questions and Exercises
Programming Challenges
APPENDICES
A: The ASCII Character Set
B: Operator Precedence and Associativity
C: Answers to Checkpoints
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18 - 19
D: Answers to Odd-Numbered Review Questions
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
INDEX
Symbols and Numerics
A
B
C
D - E
F
G
H - I
J - K - L
M - N
O
P
Q
R
S
T
U
V
W
Location of Videonotes in the Text
C++ Quick Reference