Zum Hauptinhalt springen
Nicht aus der Schweiz? Besuchen Sie lehmanns.de
Für diesen Artikel ist leider kein Bild verfügbar.

Big C++

Late Objects
Buch | Hardcover
848 Seiten
2019 | 3rd Revised edition
John Wiley & Sons Inc (Verlag)
978-1-119-63572-7 (ISBN)
CHF 379,95 inkl. MwSt
  • Titel ist leider vergriffen;
    keine Neuauflage
  • Artikel merken
Big C++: Late Objects, 3rd Edition focuses on the essentials of effective learning and is suitable for a two-semester introduction to programming sequence. This text requires no prior programming experience and only a modest amount of high school algebra.  It provides an approachable introduction to fundamental programming techniques and design skills, helping students master basic concepts and become competent coders.  The second half covers algorithms and data structures at a level suitable for beginning students.  Horstmann and Budd combine their professional and academic experience to guide the student from the basics to more advanced topics and contemporary applications such as GUIs and XML programming. More than a reference, Big C++ provides well-developed exercises, examples, and case studies that engage students in the details of useful C++ applications.







Choosing the enhanced eText format allows students to develop their coding skills using targeted, progressive interactivities designed to integrate with the eText.  All sections include built-in activities, open-ended review exercises, programming exercises, and projects to help students practice programming and build confidence. These activities go far beyond simplistic multiple-choice questions and animations. They have been designed to guide students along a learning path for mastering the complexities of programming. Students demonstrate comprehension of programming structures, then practice programming with simple steps in scaffolded settings, and finally write complete, automatically graded programs.


The perpetual access VitalSource Enhanced eText, when integrated with your school’s learning management system, provides the capability to monitor student progress in VitalSource SCORECenter and track grades for homework or participation.


*Enhanced eText and interactive functionality available through select vendors and may require LMS integration approval for SCORECenter.

Preface iii


Special Features xxiv


1 Introduction 1


1.1 What is Programming? 2


1.2 The Anatomy of a Computer 3


C&S Computers are Everywhere 5


1.3 Machine Code and Programming Languages 5


C&S Standards Organizations 7


1.4 Becoming Familiar with Your Programming Environment 7


PT 1 Backup Copies 10


1.5 Analyzing Your First Program 11


CE 1 Omitting Semicolons 13


ST 1 Escape Sequences 13


1.6 Errors 14


CE 2 Misspelling Words 15


1.7 PROBLEM SOLVING Algorithm Design 16


The Algorithm Concept 16


An Algorithm for Solving an Investment Problem 17


Pseudocode 18


From Algorithms to Programs 19


HT 1 Describing an Algorithm with Pseudocode 19


WE 1 Writing an Algorithm for Tiling a Floor 21


2 Fundamental Data Types 25


2.1 Variables 26


Variable Definitions 26


Number Types 28


Variable Names 29


The Assignment Statement 30


Constants 31


Comments 31


CE 1 Using Undefined Variables 33


CE 2 Using Uninitialized Variables 33


PT 1 Choose Descriptive Variable Names 33


PT 2 Do Not Use Magic Numbers 34


ST 1 Numeric Types in C++ 34


ST 2 Numeric Ranges and Precisions 35


ST 3 Defining Variables with auto 35


2.2 Arithmetic 36


Arithmetic Operators 36


Increment and Decrement 36


Integer Division and Remainder 36


Converting Floating-Point Numbers to Integers 37


Powers and Roots 38


CE 3 Unintended Integer Division 39


CE 4 Unbalanced Parentheses 40


CE 5 Forgetting Header Files 40


CE 6 Roundoff Errors 41


PT 3 Spaces in Expressions 42


ST 4 Casts 42


ST 5 Combining Assignment and Arithmetic 42


C&S The Pentium Floating-Point Bug 43


2.3 Input and Output 44


Input 44


Formatted Output 45


2.4 PROBLEM SOLVING First Do It By Hand 47


WE 1 Computing Travel Time 48


HT 1 Carrying out Computations 48


WE 2 Computing the Cost of Stamps 51


2.5 Strings 51


The string Type 51


Concatenation 52


String Input 52


String Functions 52


C&S International Alphabets and Unicode 55


3 Decisions 59


3.1 The if Statement 60


CE 1 A Semicolon After the if Condition 63


PT 1 Brace Layout 63


PT 2 Always Use Braces 64


PT 3 Tabs 64


PT 4 Avoid Duplication in Branches 65


ST 1 The Conditional Operator 65


3.2 Comparing Numbers and Strings 66


CE 2 Confusing = and == 68


CE 3 Exact Comparison of Floating-Point Numbers 68


PT 5 Compile with Zero Warnings 69


ST 2 Lexicographic Ordering of Strings 69


HT 1 Implementing an if Statement 70


WE 1 Extracting the Middle 72


C&S Dysfunctional Computerized Systems 72


3.3 Multiple Alternatives 73


ST 3 The switch Statement 75


3.4 Nested Branches 76


CE 4 The Dangling else Problem 79


PT 6 Hand-Tracing 79


3.5 PROBLEM SOLVING Flowcharts 81


3.6 PROBLEM SOLVING Test Cases 83


PT 7 Make a Schedule and Make Time for Unexpected Problems 84


3.7 Boolean Variables and Operators 85


CE 5 Combining Multiple Relational Operators 88


CE 6 Confusing && and || Conditions 88


ST 4 Short-Circuit Evaluation of Boolean Operators 89


ST 5 De Morgan’s Law 89


3.8 APPLICATION Input Validation 90


C&S Artificial Intelligence 92


4 Loops 95


4.1 The while Loop 96


CE 1 Infinite Loops 100


CE 2 Don’t Think “Are We There Yet?” 101


CE 3 Off-by-One Errors 101


C&S The First Bug 102


4.2 PROBLEM SOLVING Hand-Tracing 103


4.3 The for Loop 106


PT 1 Use for Loops for Their Intended Purpose Only 109


PT 2 Choose Loop Bounds That Match Your Task 110


PT 3 Count Iterations 110


4.4 The do Loop 111


PT 4 Flowcharts for Loops 111


4.5 Processing Input 112


Sentinel Values 112


Reading Until Input Fails 114


ST 1 Clearing the Failure State 115


ST 2 The Loop-and-a-Half Problem and the break Statement 116


ST 3 Redirection of Input and Output 116


4.6 PROBLEM SOLVING Storyboards 117


4.7 Common Loop Algorithms 119


Sum and Average Value 119


Counting Matches 120


Finding the First Match 120


Prompting Until a Match is Found 121


Maximum and Minimum 121


Comparing Adjacent Values 122


HT 1 Writing a Loop 123


WE 1 Credit Card Processing 126


4.8 Nested Loops 126


WE 2 Manipulating the Pixels in an Image 129


4.9 PROBLEM SOLVING Solve a Simpler Problem First 130


4.10 Random Numbers and Simulations 134


Generating Random Numbers 134


Simulating Die Tosses 135


The Monte Carlo Method 136


C&S Digital Piracy 138


5 Functions 141


5.1 Functions as Black Boxes 142


5.2 Implementing Functions 143


PT 1 Function Comments 146


5.3 Parameter Passing 146


PT 2 Do Not Modify Parameter Variables 148


5.4 Return Values 148


CE 1 Missing Return Value 149


ST 1 Function Declarations 150


HT 1 Implementing a Function 151


WE 1 Generating Random Passwords 152


WE 2 Using a Debugger 152


5.5 Functions Without Return Values 153


5.6 PROBLEM SOLVING Reusable Functions 154


5.7 PROBLEM SOLVING Stepwise Refinement 156


PT 3 Keep Functions Short 161


PT 4 Tracing Functions 161


PT 5 Stubs 162


WE 3 Calculating a Course Grade 163


5.8 Variable Scope and Global Variables 163


PT 6 Avoid Global Variables 165


5.9 Reference Parameters 165


PT 7 Prefer Return Values to Reference Parameters 169


ST 2 Constant References 170


5.10 Recursive Functions (Optional) 170


HT 2 Thinking Recursively 173


C&S The Explosive Growth of Personal Computers 174


6 Arrays and Vectors 179


6.1 Arrays 180


Defining Arrays 180


Accessing Array Elements 182


Partially Filled Arrays 183


CE 1 Bounds Errors 184


PT 1 Use Arrays for Sequences of Related Values 184


C&S Computer Viruses 185


6.2 Common Array Algorithms 185


Filling 186


Copying 186


Sum and Average Value 186


Maximum and Minimum 187


Element Separators 187


Counting Matches 187


Linear Search 188


Removing an Element 188


Inserting an Element 189


Swapping Elements 190


Reading Input 191


ST 1 Sorting with the C++ Library 192


ST 2 A Sorting Algorithm 192


ST 3 Binary Search 193


6.3 Arrays and Functions 194


ST 4 Constant Array Parameters 198


6.4 PROBLEM SOLVING Adapting Algorithms 198


HT 1 Working with Arrays 200


WE 1 Rolling the Dice 203


6.5 PROBLEM SOLVING Discovering Algorithms by Manipulating Physical Objects 203


6.6 Two-Dimensional Arrays 206


Defining Two-Dimensional Arrays 207


Accessing Elements 207


Locating Neighboring Elements 208


Computing Row and Column Totals 208


Two-Dimensional Array Parameters 210


CE 2 Omitting the Column Size of a Two-Dimensional Array Parameter 212


WE 2 A World Population Table 213


6.7 Vectors 213


Defining Vectors 214


Growing and Shrinking Vectors 215


Vectors and Functions 216


Vector Algorithms 216


Two-Dimensional Vectors 218


PT 2 Prefer Vectors over Arrays 219


ST 5 The Range-Based for Loop 219


7 Pointers and Structures 223


7.1 Defining and Using Pointers 224


Defining Pointers 224


Accessing Variables Through Pointers 225


Initializing Pointers 227


CE 1 Confusing Pointers with the Data to Which They Point 228


PT 1 Use a Separate Definition for Each Pointer Variable 229


ST 1 Pointers and References 229


7.2 Arrays and Pointers 230


Arrays as Pointers 230


Pointer Arithmetic 230


Array Parameter Variables are Pointers 232


ST 2 Using a Pointer to Step Through an Array 233


CE 2 Returning a Pointer to a Local Variable 234


PT 2 Program Clearly, Not Cleverly 234


ST 3 Constant Pointers 235


7.3 C and C++ Strings 235


The char Type 235


C Strings 236


Character Arrays 237


Converting Between C and C++ Strings 237


C++ Strings and the [ ] Operator 238


ST 4 Working with C Strings 238


7.4 Dynamic Memory Allocation 240


CE 3 Dangling Pointers 242


CE 4 Memory Leaks 243


7.5 Arrays and Vectors of Pointers 243


7.6 PROBLEM SOLVING Draw a Picture 246


HT 1 Working with Pointers 248


WE 1 Producing a Mass Mailing 249


C&S Embedded Systems 250


7.7 Structures 250


Structured Types 250


Structure Assignment and Comparison 251


Functions and Structures 252


Arrays of Structures 252


Structures with Array Members 253


Nested Structures 253


7.8 Pointers and Structures 254


Pointers to Structures 254


Structures with Pointer Members 255


ST 5 Smart Pointers 256


8 Streams 259


8.1 Reading and Writing Text Files 260


Opening a Stream 260


Reading from a File 261


Writing to a File 262


A File Processing Example 262


8.2 Reading Text Input 265


Reading Words 265


Reading Characters 266


Reading Lines 267


CE 1 Mixing >> and getline Input 268


ST 1 Stream Failure Checking 269


8.3 Writing Text Output 270


ST 2 Unicode, UTF-8, and C++ Strings 272


8.4 Parsing and Formatting Strings 273


8.5 Command Line Arguments 274


C&S Encryption Algorithms 277


HT 1 Processing Text Files 278


WE 1 Looking for for Duplicates 281


8.6 Random Access and Binary Files 281


Random Access 281


Binary Files 282


Processing Image Files 282


C&S Databases and Privacy 286


9 Classes 289


9.1 Object-Oriented Programming 290


9.2 Implementing a Simple Class 292


9.3 Specifying the Public Interface of a Class 294


CE 1 Forgetting a Semicolon 296


9.4 Designing the Data Representation 297


9.5 Member Functions 299


Implementing Member Functions 299


Implicit and Explicit Parameters 299


Calling a Member Function from a Member Function 301


PT 1 All Data Members Should Be Private; Most Member Functions Should Be Public 303


PT 2 const Correctness 303


9.6 Constructors 304


CE 2 Trying to Call a Constructor 306


ST 1 Overloading 306


ST 2 Initializer Lists 307


ST 3 Universal and Uniform Initialization Syntax 308


9.7 PROBLEM SOLVING Tracing Objects 308


HT 1 Implementing a Class 310


WE 1 Implementing a Bank Account Class 314


C&S Electronic Voting Machines 314


9.8 PROBLEM SOLVING Discovering Classes 315


PT 3 Make Parallel Vectors into Vectors of Objects 317


9.9 Separate Compilation 318


9.10 Pointers to Objects 322


Dynamically Allocating Objects 322


The -> Operator 323


The this Pointer 324


9.11 PROBLEM SOLVING Patterns for Object Data 324


Keeping a Total 324


Counting Events 325


Collecting Values 326


Managing Properties of an Object 326


Modeling Objects with Distinct States 327


Describing the Position of an Object 328


C&S Open Source and Free Software 329


10 Inheritance 333


10.1 Inheritance Hierarchies 334


10.2 Implementing Derived Classes 338


CE 1 Private Inheritance 341


CE 2 Replicating Base-Class Members 341


PT 1 Use a Single Class for Variation in Values, Inheritance for Variation in Behavior 342


ST 1 Calling the Base-Class Constructor 342


10.3 Overriding Member Functions 343


CE 3 Forgetting the Base-Class Name 345


10.4 Virtual Functions and Polymorphism 346


The Slicing Problem 346


Pointers to Base and Derived Classes 347


Virtual Functions 348


Polymorphism 349


PT 2 Don’t Use Type Tags 352


CE 4 Slicing an Object 352


CE 5 Failing to Override a Virtual Function 353


ST 2 Virtual Self-Calls 354


HT 1 Developing an Inheritance Hierarchy 354


WE 1 Implementing an Employee Hierarchy for Payroll Processing 359


C&S Who Controls the Internet? 360


11 Recursion 363


11.1 Triangle Numbers 364


CE 1 Tracing Through Recursive Functions 367


CE 2 Infinite Recursion 368


HT 1 Thinking Recursively 369


WE 1 Finding Files 372


11.2 Recursive Helper Functions 372


11.3 The Efficiency of Recursion 373


11.4 Permutations 377


11.5 Mutual Recursion 380


11.6 Backtracking 383


WE 2 Towers of Hanoi 389


C&S The Limits of Computation 390


12 Sorting and Searching 393


12.1 Selection Sort 394


12.2 Profiling the Selection Sort Algorithm 397


12.3 Analyzing the Performance of the Selection Sort Algorithm 398


ST 1 Oh, Omega, and Theta 399


ST 2 Insertion Sort 400


12.4 Merge Sort 402


12.5 Analyzing the Merge Sort Algorithm 405


ST 3 The Quicksort Algorithm 407


12.6 Searching 408


Linear Search 408


Binary Search 410


PT 1 Library Functions for Sorting and Binary Search 412


ST 4 Defining an Ordering for Sorting Objects 413


12.7 PROBLEM SOLVING Estimating the Running Time of an Algorithm 413


Linear Time 413


Quadratic Time 414


The Triangle Pattern 415


Logarithmic Time 417


WE 1 Enhancing the Insertion Sort Algorithm 418


C&S The First Programmer 418


13 Advanced C++ 421


13.1 Operator Overloading 422


Operator Functions 422


Overloading Comparison Operators 425


Input and Output 425


Operator Members 426


ST 1 Overloading Increment and Decrement Operators 427


ST 2 Implicit Type Conversions 428


ST 3 Returning References 429


WE 1 A Fraction Class 430


13.2 Automatic Memory Management 430


Constructors That Allocate Memory 430


Destructors 432


Overloading the Assignment Operator 433


Copy Constructors 437


PT 1 Use Reference Parameters to Avoid Copies 441


CE 1 Defining a Destructor Without the Other Two Functions of the “Big Three” 442


ST 4 Virtual Destructors 443


ST 5 Suppressing Automatic Generation of Memory Management Functions 443


ST 6 Move Operations 444


ST 7 Shared Pointers 445


WE 2 Tracing Memory Management of Strings 446


13.3 Templates 446


Function Templates 447


Class Templates 448


ST 8 Non-Type Template Parameters 450


14 Linked Lists, Stacks, and Queues 453


14.1 Using Linked Lists 454


14.2 Implementing Linked Lists 459


The Classes for Lists, Node, and Iterators 459


Implementing Iterators 460


Implementing Insertion and Removal 462


WE 1 Implementing a Linked List Template 472


14.3 The Efficiency of List, Array, and Vector Operations 472


14.4 Stacks and Queues 476


14.5 Implementing Stacks and Queues 479


Stacks as Linked Lists 479


Stacks as Arrays 482


Queues as Linked Lists 482


Queues as Circular Arrays 483


14.6 Stack and Queue Applications 484


Balancing Parentheses 484


Evaluating Reverse Polish Expressions 485


Evaluating Algebraic Expressions 487


Backtracking 490


ST 1 Reverse Polish Notation 492


15 Sets, Maps, and Hash tables 495


15.1 Sets 496


15.2 Maps 499


PT 1 Use the auto Type for Iterators 503


ST 1 Multisets and Multimaps 503


WE 1 Word Frequency 504


15.3 Implementing a Hash Table 504


Hash Codes 504


Hash Tables 505


Finding an Element 507


Adding and Removing Elements 508


Iterating over a Hash Table 508


ST 2 Implementing Hash Functions 514


ST 3 Open Addressing 516


16 Tree Structures 519


16.1 Basic Tree Concepts 520


16.2 Binary Trees 524


Binary Tree Examples 524


Balanced Trees 526


A Binary Tree Implementation 527


WE 1 Building a Huffman Tree 528


16.3 Binary Search Trees 528


The Binary Search Property 529


Insertion 530


Removal 532


Efficiency of the Operations 533


16.4 Tree Traversal 538


Inorder Traversal 539


Preorder and Postorder Traversals 540


The Visitor Pattern 541


Depth-First and Breadth-First Search 542


Tree Iterators 543


16.5 Red-Black Trees 544


Basic Properties of Red-Black Trees 544


Insertion 546


Removal 548


WE 2 Implementing a Red-Black Tree 551


17 Priority Queues and Heaps 553


17.1 Priority Queues 554


WE 1 Simulating a Queue of Waiting Customers 557


17.2 Heaps 557


17.3 The Heapsort Algorithm 567


Appendix A Reserved Word Summary A-1


Appendix B Operator Summary A-3


Appendix C Character Codes A-5


Appendix D C++ Library Summary A-8


Appendix E C++ Language Coding Guidelines A-12


Appendix F Number Systems and Bit and Shift Operations A-19


Glossary G-1


Index I-1


Credits C-1


Quick Reference C-2

Erscheinungsdatum
Verlagsort New York
Sprache englisch
Maße 201 x 257 mm
Gewicht 1344 g
Themenwelt Mathematik / Informatik Informatik Software Entwicklung
ISBN-10 1-119-63572-1 / 1119635721
ISBN-13 978-1-119-63572-7 / 9781119635727
Zustand Neuware
Informationen gemäß Produktsicherheitsverordnung (GPSR)
Haben Sie eine Frage zum Produkt?
Mehr entdecken
aus dem Bereich
Entwurfsmuster für effektive Softwareentwicklung

von Karl Eilebrecht; Gernot Starke

Buch | Softcover (2024)
Springer Vieweg (Verlag)
CHF 27,95
Praxishandbuch für Java- und Webservice-Entwickler

von Kai Spichale

Buch | Softcover (2025)
dpunkt (Verlag)
CHF 62,85