C++程序設計(第8版 影印版)

C++程序設計(第8版 影印版) pdf epub mobi txt 電子書 下載 2025

[美] Walter Savitch 著
圖書標籤:
  • C++
  • 程序設計
  • C++
  • 編程
  • 計算機科學
  • 高等教育
  • 教材
  • 影印版
  • 第8版
  • 編程語言
  • 算法
  • 數據結構
想要找書就要到 靜流書站
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
齣版社: 清華大學齣版社
ISBN:9787302386445
版次:8
商品編碼:11619197
品牌:清華大學
包裝:平裝
叢書名: C語言—程序設計—教材—英文
開本:16開
齣版時間:2015-01-01
用紙:膠版紙
頁數:1060
字數:1281000
正文語種:英文

具體描述

內容簡介

  《C++程序設計(第8版 影印版)》是最優秀的C++入門教材,深受師生歡迎。作者結閤自己多年的教學經驗,根據教學大綱精心設計並編寫瞭書中內容。與此同時,本書還采用瞭很多便於讀者鞏固所學知識的教學特徵,比如各章開始處的小節總覽,書中隨處可見的總結框、編程提示和編程陷阱,各章結尾處的小結、習題和編程項目等。這些非常適閤初學者掌握重要的編程概念。  《C++程序設計(第8版 影印版)》共18章,8個附錄。在講解C++基礎知識之後,直接引導學生深入函數、I/O流、類、控製流程、命名空間、數組、字符串、指針和動態數組、遞歸、模闆、指針和鏈錶、派生類、異常以及標準模闆庫。  Original edition, entitled PROBLEM SOLVING WITH C++, 8E, 9780132162739 by SAVITCH,  WALTER, published by Pearson Education, Inc, publishing as Addison-Wesley, Copyright ? 2012 Pearson Education, Inc..  All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, Inc.  China edition published by PEARSON EDUCATION ASIA LTD., and TSINGHUA UNIVERSITY PRESS LIMITED Copyright ? 2014.  This edition is manufactured in the People’s Republic of China, and is authorized for sale and distribution in the People’s Republic of China exclusively (except Taiwan, Hong Kong SAR and Macau SAR).  《C++程序設計(第8版 影印版)》影印版由Pearson Education授權給清華大學齣版社在中國境內(不包括中國颱灣、香港特彆行政區和澳門特彆行政區)齣版發行。

作者簡介

  Walter Savitch,美國加州大學聖地亞哥分校榮譽退休教授,擁有加州大學伯剋利分校博士學位,曾擔任加州大學聖地亞哥分校計算機科學係教授和認知科學跨學科博士項目主任。他在復雜性理論和並行計算模型方麵具有卓越的貢獻,其研究領域包括形式語言理論計算語言學等。Savitch教授還是C++和Java經典教材的締造者,他的作品通俗易懂,生動有趣,貼近生活,應用性和實用性很強,深受全球數十萬讀者(包括教師和學生)的歡迎。

內頁插圖

精彩書評

  ★“我的學生和我非常喜歡這本教材,Savitch教授功力深厚,關於將這些枯燥的知識變得淺顯易懂,而且他的行文詼諧有趣,我們師生都喜歡這樣的方式,學生們告訴我,他們終於買到瞭一個真正的有所值的大學教材。”
  ——Jennifer Perkins, 阿肯色州立大學小石城分校
  
  ★“Savitch的這本我校已經使用多年,它贏得瞭我們師生的一緻認同。Walter Savich用清晰、簡練的風格解釋瞭難懂的編程概念,討論瞭C++語言的所有重要特色。”
  ——Carol Roberts, 緬因州立大學

目錄

Brief Contents
Table of Location of VideoNotes
Inside front cover and inside back cover
Chapter 1 1Introduction to Computers and C++ Programming 1
Chapter 2 2C++ Basics 39
Chapter 3 3More Flow of Control 109
Chapter 4 4Procedural Abstraction and Functions That Return a Value 177
Chapter 5 5Functions for All Subtasks 247
Chapter 6 6I/O Streams as an Introduction to Objects and Classes 301
Chapter 7 7Arrays 373
Chapter 8 8Strings and Vectors 441
Chapter 9 9Pointers and Dynamic Arrays 493
Chapter 10 0Defining Classes 525
Chapter 11 Friends, Overloaded Operators, and Arrays in Classes 601
Chapter 12 Separate Compilation and Namespaces 685
Chapter 13 Pointers and Linked Lists 721
Chapter 14 Recursion 769
Chapter 15 Inheritance 811
Chapter 16 Exception Handling 867
Chapter 17 Templates 899
Chapter 18 Standard Template Library 931
Appendices
1 C++ Keywords 987
2 Precedence of Operators 988
3 The ASCII Character Set 990
4 Some Library Functions 991
5 Inline Functions 998
6 Overloading the Array Index Square Brackets 999
7 The this Pointer 1001
8 Overloading Operators as Member Operators 1004
Table of Location of VideoNotes
Inside front cover and inside back cover
Chapter 1 1Introduction to Computers and C++ Programming 1
1.1 COMPuTER SYSTEMS 2
Hardware 2
Software 7
High-Level Languages 8
Compilers 9
History Note 12
1.2 PROgRAMMINg AND PROBLEM-SOLVINg 12
Algorithms 12
Program Design 15
Object-Oriented Programming 16
The Software Life Cycle 17
1.3 INTRODuCTION TO C++ 18
Origins of the C++ Language 18
A Sample C++ Program 19
Pitfall: Using the Wrong Slash in 23
Programming Tip: Input and Output Syntax 23
Layout of a Simple C++ Program 24
Pitfall: Putting a Space Before the include File Name 26
Compiling and Running a C++ Program 26
Programming Tip: Getting Your Program to Run 27
1.4 TESTINg AND DEBuggINg 29
Kinds of Program Errors 30
Pitfall: Assuming Your Program Is Correct 31
Chapter Summary 31
1Answers to Self-Test Exercises 32
2Programming Projects 35
Chapter 2 C++ Basics 39
2.1 VARIABLES AND ASSIgNMENTS 40
Variables 40
0Names: Identifiers 42
2Variable Declarations 44
4Assignment Statements 45
5Pitfall: Uninitialized Variables 47
7Programming Tip: Use Meaningful Names 49
2.2 INPuT AND OuTPuT 50
Output Using cout 50
Include Directives and Namespaces 52
Escape Sequences 53
Programming Tip: End Each Program with a or endl 54
Formatting for Numbers with a Decimal Point 55 Input Using cin 56
Designing Input and Output 58
Programming Tip: Line Breaks in I/O 58
2.3 DATA TYPES AND ExPRESSIONS 60
The Types int and double 60
0Other Number Types 62
2The Type char 63
3The Type bool 64
4Introduction to the Class string 65
5Type Compatibilities 66
6Arithmetic Operators and Expressions 68
8Pitfall: Whole Numbers in Division 71
1More Assignment Statements 73
2.4 SIMPLE FLOw OF CONTROL 73
A Simple Branching Mechanism 74
4Pitfall: Strings of Inequalities 79
9Pitfall: Using = in place of == 80
0Compound Statements 81
1Simple Loop Mechanisms 83
Increment and Decrement Operators 86
Programming Example: Charge Card Balance 88
Pitfall: Infinite Loops 89
2.5 PROgRAM STYLE 92
Indenting 92 Comments 92 Naming Constants 94
Chapter Summary 97 Answers to Self-Test Exercises 97
Programming Projects 102
Chapter 3 More Flow of Control 109
3.1 uSINg BOOLEAN ExPRESSIONS 110
Evaluating Boolean Expressions 110
Pitfall: Boolean Expressions Convert to int Values 114
Enumeration Types (Optional) 117
3.2 MuLTIwAY BRANCHES 118
Nested Statements 118
Programming Tip: Use Braces in Nested Statements 119
Multiway if-else Statements 121
Programming Example: State Income Tax 123
The switch Statement 126
Pitfall: Forgetting a break in a switch Statement 130
Using switch Statements for Menus 131
Blocks 133
Pitfall: Inadvertent Local Variables 136
3.3 MORE ABOuT C++ LOOP STATEMENTS 137
The while Statements Reviewed 137
Increment and Decrement Operators Revisited 139
The for Statement 142
Pitfall: Extra Semicolon in a for Statement 147
What Kind of Loop to Use 148
Pitfall: Uninitialized Variables and Infinite Loops 150
The break Statement 151 Pitfall: The break Statement in Nested Loops 152
7387_Savitch_FM_ppi-xxx.indd 18 2/2/11 5:45 PM
contents xix
3.4 DESIgNINg LOOPS 153
Loops for Sums and Products 153 Ending a Loop 155 Nested Loops 158 Debugging Loops 160
Chapter Summary 163 Answers to Self-Test Exercises 164 Programming Projects 170
Chapter 4 4Procedural Abstraction and Functions That Return a Value 177
4.1 TOP-DOwN DESIgN 178
4.2 PREDEFINED FuNCTIONS 179
Using Predefined Functions 179 Random Number Generation 184 Type Casting 186 Older Form of Type Casting 188 Pitfall: Integer Division Drops the Fractional Part 188
4.3 PROgRAMMER-DEFINED FuNCTIONS 189
Function Definitions 189 Functions That Return a Boolean Value 195 Alternate Form for Function Declarations 195 Pitfall: Arguments in the Wrong Order 196 Function Definition–Syntax Summary 197 More About Placement of Function Definitions 198 Programming Tip: Use Function Calls in Branching Statements 199
4.4 PROCEDuRAL ABSTRACTION 200
The Black-Box Analogy 200 Programming Tip: Choosing Formal Parameter Names 203 Programming Tip: Nested Loops 204 Case Study: Buying Pizza 207 Programming Tip: Use Pseudocode 213
4.5 SCOPE AND LOCAL VARIABLES 214
The Small Program Analogy 214 Programming Example: Experimental Pea Patch 217
Global Constants and Global Variables 217 Call-by-Value Formal Parameters Are Local Variables 220 Block Scope 222 Namespaces Revisited 223 Programming Example: The Factorial Function 226
4.6 OVERLOADINg FuNCTION NAMES 228
Introduction to Overloading 228 Programming Example: Revised Pizza-Buying Program 231 Automatic Type Conversion 234 Chapter Summary 236 Answers to Self-Test Exercises 236 Programming Projects 241
Chapter 5 Functions for All Subtasks 247
5.1 void FuNCTIONS 248
Definitions of void Functions 248 Programming Example: Converting Temperatures 251 return Statements in void Functions 251
5.2 CALL-BY-REFERENCE PARAMETERS 255
A First View of Call-by-Reference 255 Call-by-Reference in Detail 258 Programming Example: The swap_values Function 263 Mixed Parameter Lists 264 Programming Tip: What Kind of Parameter to Use 265 Pitfall: Inadvertent Local Variables 266
5.3 uSINg PROCEDuRAL ABSTRACTION 269
Functions Calling Functions 269 Preconditions and Postconditions 271 Case Study: Supermarket Pricing 272
5.4 TESTINg AND DEBuggINg FuNCTIONS 277
Stubs and Drivers 278
5.5 gENERAL DEBuggINg TECHNIquES 283
Keep an Open Mind 283 Check Common Errors 283 Localize the Error 284 The assert Macro 286 2/2/11 5:45 PM
Chapter Summary 288
8Answers to Self-Test Exercises 289
9Programming Projects 292
Chapter 6 6I/O Streams as an Introduction to Objects and Classes 301
6.1 STREAMS AND BASIC FILE I/O 302
Why Use Files for I/O? 303
3File I/O 304
4Introduction to Classes and Objects 308
8Programming Tip: Check Whether a File Was Opened
d Successfully 310
0Techniques for File I/O 312
2Appending to a File (Optional) 316
6File Names as Input (Optional) 317
6.2 TOOLS FOR STREAM I/O 319
Formatting Output with Stream Functions 319
9Manipulators 325
5Streams as Arguments to Functions 328
8Programming Tip: Checking for the End of a File 328
8A Note on Namespaces 331
1Programming Example: Cleaning Up a File Format 332
6.3 CHARACTER I/O 334
The Member Functions get and put 334
4The putback Member Function (Optional) 338
8Programming Example: Checking Input 339
9Pitfall: Unexpected ' ' in Input 341
1Programming Example: Another new_line Function 343
3Default Arguments for Functions (Optional) 344
4The eof Member Function 349
9Programming Example: Editing a Text File 351
1Predefined Character Functions 352
2Pitfall: toupper and tolower Return Values 354
Chapter Summary 356
6Answers to Self-Test Exercises 357
7Programming Projects 364
Chapter 7 Arrays 373
7.1 INTRODuCTION TO ARRAYS 374
Declaring and Referencing Arrays 374 Programming Tip: Use for Loops with Arrays 376 Pitfall: Array Indexes Always Start with Zero 376 Programming Tip: Use a Defined Constant for the Size of an Array 376 Arrays in Memory 378 Pitfall: Array Index Out of Range 379 Initializing Arrays 381
7.2 ARRAYS IN FuNCTIONS 383
Indexed Variables as Function Arguments 383 Entire Arrays as Function Arguments 385 The const Parameter Modifier 388 Pitfall: Inconsistent Use of const Parameters 391 Functions That Return an Array 391 Case Study: Production Graph 392
7.3 PROgRAMMINg wITH ARRAYS 405
Partially Filled Arrays 405 Programming Tip: Do Not Skimp on Formal Parameters 408 Programming Example: Searching an Array 408 Programming Example: Sorting an Array 411
7.4 MuLTIDIMENSIONAL ARRAYS 415
Multidimensional Array Basics 416 Multidimensional Array Parameters 416 Programming Example: Two-Dimensional Grading Program 418 Pitfall: Using Commas Between Array Indexes 422
Chapter Summary 423 Answers to Self-Test Exercises 424 Programming Projects 428
Chapter 8 Strings and Vectors 441
8.1 AN ARRAY TYPE FOR STRINgS 443
C-String Values and C-String Variables 443 Pitfall: Using = and == with C Strings 446 2/2/11 5:45 PM
contents xxiii
Other Functions in 448
8C-String Input and Output 453
3C-String-to-Number Conversions and Robust Input 455
8.2 THE STANDARD string CLASS 461
Introduction to the Standard Class string 461
1I/O with the Class string 464
4Programming Tip: More Versions of getline 467
7Pitfall: Mixing cin >> variable; and getline 468
8String Processing with the Class string 469
9Programming Example: Palindrome Testing 473
3Converting Between string Objects and C Strings 476
8.3 VECTORS 477
Vector Basics 477 Pitfall: Using Square Brackets Beyond the Vector Size 480 Programming Tip: Vector Assignment Is Well Behaved 481 Efficiency Issues 481
Chapter Summary 483
3Answers to Self-Test Exercises 484
4Programming Projects 486
Chapter 9 Pointers and Dynamic Arrays 493
9.1 POINTERS 494
Pointer Variables 495
5Basic Memory Management 502
2Pitfall: Dangling Pointers 503
3Static Variables and Automatic Variables 504
4Programming Tip: Define Pointer Types 504
9.2 DYNAMIC ARRAYS 507
Array Variables and Pointer Variables 507
7Creating and Using Dynamic Arrays 508
8Pointer Arithmetic (Optional) 514
4Multidimensional Dynamic Arrays (Optional) 516
Chapter Summary 518
8Answers to Self-Test Exercises 518
8Programming Projects 519
Chapter 10 0Defining Classes 525
10.1 STRuCTuRES 526
Structures for Diverse Data 526
Pitfall: Forgetting a Semicolon in a Structure Definition 531
Structures as Function Arguments 532
Programming Tip: Use Hierarchical Structures 533
Initializing Structures 535
10.2 CLASSES 538
Defining Classes and Member Functions 538 Public and Private Members 543 Programming Tip: Make All Member Variables Private 551 Programming Tip: Define Accessor and Mutator Functions 551 Programming Tip: Use the Assignment Operator with Objects 553 Programming Example: BankAccount Class—Version 1 554 Summary of Some Properties of Classes 558 Constructors for Initialization 560 Programming Tip: Always Include a Default Constructor 568 Pitfall: Constructors with No Arguments 569
10.3 ABSTRACT DATA TYPES 571
Classes to Produce Abstract Data Types 572 Programming Example: Alternative Implementation of a Class 576
10.4 INTRODuCTION TO INHERITANCE 581
Derived Classes 582 Defining Derived Classes 583
Chapter Summary 587 Answers to Self-Test Exercises 588 Programming Projects 594
Chapter 11 1Friends, Overloaded Operators, and Arrays in Classes 601
11.1 FRIEND FuNCTIONS 602
Programming Example: An Equality Function 602 Friend Functions 606 Programming Tip: Define Both Accessor Functions and Friend Functions 608 2/2/11 5:45 PM
contents xxv
Programming Tip: Use Both Member and Nonmember Functions 610 Programming Example: Money Class (Version 1) 610 Implementation of digit_to_int (Optional) 617 Pitfall: Leading Zeros in Number Constants 618 The const Parameter Modifier 620 Pitfall: Inconsistent Use of const 621
11.2 OVERLOADINg OPERATORS 625
Overloading Operators 626
6Constructors for Automatic Type Conversion 629
9Overloading Unary Operators 631
1Overloading >> and << 632
11.3 ARRAYS AND CLASSES 642
Arrays of Classes 642 Arrays as Class Members 646 Programming Example: A Class for a Partially Filled Array 647
11.4 CLASSES AND DYNAMIC ARRAYS 649
Programming Example: A String Variable Class 650
0Destructors 653
3Pitfall: Pointers as Call-by-Value Parameters 656
6Copy Constructors 657
7Overloading the Assignment Operator 662
Chapter Summary 665
5Answers to Self-Test Exercises 665
5Programming Projects 675
Chapter 12 Separate Compilation and Namespaces 685
12.1 SEPARATE COMPILATION 686
ADTs Reviewed 687 Case Study: DigitalTime —A Class Compiled Separately 688 Using #ifndef 697 Programming Tip: Defining Other Libraries 700
12.2 NAMESPACES 701
Namespaces and using Directives 701
1Creating a Namespace 703
3Qualifying Names 706
6A Subtle Point About Namespaces (Optional) 707
Unnamed Namespaces 708 Programming Tip: Choosing a Name for a Namespace 713 Pitfall: Confusing the Global Namespace and the Unnamed Namespace 714
Chapter Summary 715 Answers to Self-Test Exercises 716 Programming Projects 718
Chapter 13 Pointers and Linked Lists 721
13.1 NODES AND LINKED LISTS 722
Nodes 722 Linked Lists 728 Inserting a Node at the Head of a List 729 Pitfall: Losing Nodes 732 Searching a Linked List 733 Pointers as Iterators 735 Inserting and Removing Nodes Inside a List 737 Pitfall: Using the Assignment Operator with Dynamic Data Structures 740 Variations on Linked Lists 741 Linked Lists of Classes 744
13.2 STACKS AND quEuES 747
Stacks 747 Programming Example: A Stack Class 748 Queues 753 Programming Example: A Queue Class 754
Chapter Summary 758 Answers to Self-Test Exercises 758 Programming Projects 761
Chapter 14 Recursion 769
14.1 RECuRSIVE FuNCTIONS FOR TASKS 771
Case Study: Vertical Numbers 771 A Closer Look at Recursion 777 Pitfall: Infinite Recursion 779 2/2/11 5:45 PM
contents xxvii
Stacks for Recursion 780
0Pitfall: Stack Overflow 782
2Recursion Versus Iteration 782
14.2 RECuRSIVE FuNCTIONS FOR VALuES 784
General Form for a Recursive Function That Returns a Value 784 Programming Example: Another Powers Function 784
14.3 THINKINg RECuRSIVELY 789
Recursive Design Techniques 789 Case Study: Binary Search—An Example of Recursive Thinking 790 Programming Example: A Recursive Member Function 798
Chapter Summary 802
2Answers to Self-Test Exercises 802
2Programming Projects 807
Chapter 15 Inheritance 811
15.1 INHERITANCE BASICS 812
Derived Classes 813 Constructors in Derived Classes 821 Pitfall: Use of Private Member Variables from the Base Class 824 Pitfall: Private Member Functions Are Effectively Not Inherited 826 The protected Qualifier 826 Redefinition of Member Functions 829 Redefining Versus Overloading 832 Access to a Redefined Base Function 834
15.2 INHERITANCE DETAILS 835
Functions That Are Not Inherited 835
5Assignment Operators and Copy Constructors in Derived
d Classes 836
6Destructors in Derived Classes 837
15.3 POLYMORPHISM 838
Late Binding 839
9Virtual Functions in C++ 840
0Virtual Functions and Extended Type Compatibility 845
5Pitfall: The Slicing Problem 849
9Pitfall: Not Using Virtual Member Functions 850
Pitfall: Attempting to Compile Class Definitions Without Definitions for Every Virtual Member Function 851 Programming Tip: Make Destructors Virtual 851
Chapter Summary 853 Answers to Self-Test Exercises 853 Programming Projects 857
Chapter 16 Exception Handling 867
16.1 1ExCEPTION-HANDLINg BASICS 869
A Toy Example of Exception Handling 869 Defining Your Own Exception Classes 878 Multiple Throws and Catches 878 Pitfall: Catch the More Specific Exception First 882 Programming Tip: Exception Classes Can Be Trivial 883 Throwing an Exception in a Function 883 Exception Specification 885 Pitfall: Exception Specification in Derived Classes 887
16.2 2PROgRAMMINg TECHNIquES FOR ExCEPTION HANDLINg 888
When to Throw an Exception 888 Pitfall: Uncaught Exceptions 890 Pitfall: Nested try-catch Blocks 890 Pitfall: Overuse of Exceptions 890 Exception Class Hierarchies 891 Testing for Available Memory 891 Rethrowing an Exception 892
Chapter Summary 892 Answers to Self-Test Exercises 892 Programming Projects 894
Chapter 17 Templates 899
17.1 1TEMPLATES FOR ALgORITHM ABSTRACTION 900
Templates for Functions 901 Pitfall: Compiler Complications 905 Programming Example: A Generic Sorting Function 907
Programming Tip: How to Define Templates 911
1Pitfall: Using a Template with an Inappropriate Type 912
17.2 TEMPLATES FOR DATA ABSTRACTION 913
Syntax for Class Templates 913
3Programming Example: An Array Class 916
Chapter Summary 922
2Answers to Self-Test Exercises 922
2Programming Projects 925
Chapter 18 Standard Template Library 931
18.1 ITERATORS 933
using Declarations 933
3Iterator Basics 934
4Pitfall: Compiler Problems 938
8Kinds of Iterators 940
0Constant and Mutable Iterators 944
4Reverse Iterators 945
5Other Kinds of Iterators 946
18.2 CONTAINERS 947
Sequential Containers 948
8Pitfall: Iterators and Removing Elements 952
2Programming Tip: Type Definitions in Containers 953
3Container Adapters stack and queue 953
3Associative Containers set and map 957
7Efficiency 964
18.3 gENERIC ALgORITHMS 965
Running Times and Big-O Notation 965
5Container Access Running Times 970
0Nonmodifying Sequence Algorithms 971
1Container Modifying Algorithms 975
5Set Algorithms 977
7Sorting Algorithms 978
Chapter Summary 979
9Answers to Self-Test Exercises 979
9Programming Projects 981
1 C++ Keywords 987
2 Precedence of Operators 988
3 The ASCII Character Set 990
4 Some Library Functions 991
5 Inline Functions 998
6 Overloading the Array Index Square Brackets 999
7 The this Pointer 1001
8 Overloading Operators as Member Operators 1004
INDEx 1006

前言/序言

  本書適閤C++程序設計和計算機科學入門課程使用。閱讀本書不要求讀者有任何編程經驗,也不要求掌握除瞭中學代數之外的其他任何數學知識。  本書前幾版的讀者請閱讀關於第8版修訂內容的小節,的其餘內容可略過。新讀者請閱讀的全部內容以把握本書脈絡。  第8版修訂內容  第8版采用和第7版相同的編程體例。第7版全部內容予以保留,但進行瞭以下改進。  第10章不再使用流類(比如ifstream和ofstream)介紹繼承概念,而是,使用那一章更簡單的銀行賬戶例子來介紹。  額外添加瞭有關作用域、參數傳遞、隨機數生成、動態數組的內容,有幾章的幻燈片進行瞭重新製作。  新增25個編程項目,閤並到每章末尾現有的項目中。  本書配套網站添加瞭15個新的視頻講解,總數達54個。這些視頻講解輔導學生解題和寫程序,有助於鞏固對關鍵編程概念的掌握。如果書中某個主題有對應的視頻講解,就會齣現一行特殊的注釋(視頻講解……)。  用過第7版的教師可以沿用以前的教案,幾乎不需要進行任何改動。  主題可以靈活排序  本書允許教師自由地重新安排教學順序。為瞭演示這一靈活性,下麵推薦瞭兩種方式來排列主題順序。采用任何一種方式閱讀本書,都不會影響學習的連貫性。為瞭在重新排序時確保這種連貫性,可能需要移動個彆小節而不是全章。但是,隻有較大的、位置便利的小節纔需要移動。為瞭幫助您根據需要自定義一個教學/閱讀順序,圖P.1展示瞭一幅依賴圖。另外,每章都有“預備知識”小節,解釋瞭學習那一章的每一節之前需要掌握哪些內容。  重新排序1:提前學習類  為瞭有效地設計類,學生需要掌握一些基本的工具,比如控製結構和函數定義。這些基礎知識在第1章~第6章介紹。完成第6章的學習後,學生就可以開始編寫自己的類瞭。為瞭提前學習類的知識,可以像下麵這樣重新安排各章的順序。  基礎知識 第1章、第2章、第3章、第4章、第5章和第6章。這6章全麵介紹控製結構、函數定義和基本文件I/O。第3章介紹幾種額外的控製結構,如果希望盡早學習類,可以考慮推遲這一章的學習。  類和命名空間 第10章、第11章的11.1節和11.2節、第12章。這些章節全麵介紹瞭如何定義類、友元、重載操作符和命名空間。  數組、字符串和嚮量 第7章和第8章。  指針和動態數組 第9章。  類中的數組 第11章的11.3節和11.4節。  繼承 第15章。  遞歸 第14章(也可以推遲到稍晚的時候學習)。  指針和鏈錶 第13章。  可能還要用到以下各章的部分內容。  異常處理 第16章。  模闆 第17章。  標準模闆庫 第18章。  重新排序2:略微延後類的學習  在“重新排序2”中,將先學完所有控製結構,再學習有關數組的基本知識,之後纔開始學習類。雖然對類的接觸要比“重新排序1”晚,但還是比本書的默認順序略微提前一些。  基礎知識 第1章、第2章、第3章、第4章、第5章和第6章。這6章全麵介紹瞭控製結構、函數定義和基本文件I/O。  數組和字符串 第7章、第8章的8.1節和8.2節。  類和命名空間 第10章、第11章的11.1節、11.2節和第12章。這些章節全麵介紹瞭如何定義類、友元、重載操作符和命名空間。  指針和動態數組 第9章。  類中的數組 第11章的11.3節和11.4節。  繼承 第15章。  遞歸 第14章(也可以推遲到稍晚的時候學習)。  嚮量 8.3節。  指針和鏈錶 第13章。  可能還要用到以下各章的部分內容。  異常處理 第16章。  模闆 第17章。  標準模闆庫 第18章。  麵嚮學生的易用性  一本書必須按恰當的順序來講解恰當的主題,這是最起碼的要求。另外,在老師和其他有經驗的程序員看來,書中的內容必須清晰而又正確,這是另一個最起碼的要求。但是,是不是符閤這兩項要求的書都是好書呢?答案是否定的。書中的內容必須采取有利於初學者使用的方式來編排。在這本入門教科書中,我盡力讓學生覺得清楚和友好。本書以前版本的大量學生反饋證明,這種寫作風格確實使內容更清晰,能使學生充分享受到學習的樂趣。  ANSI/ISO C++標準  本書完全兼容於符閤最新ANSI/ISO C++標準的編譯器。  高級主題  許多“高級主題”都成為標準CS1課程的一部分。即使它們不是課程的一部分,也最好以補充材料的形式在書中提供。本書提供瞭大量高級主題,它們既可集成到一門課程中,也可作為自學主題。本書全麵講述瞭C++模闆、繼承(包括虛函數)、異常處理和STL(Standard Template Library,標準模闆庫)。雖然本書使用瞭庫,而且教給學生庫的重要性,但不要求任何非標準庫。本書隻使用所有C++實現都附帶的庫。  依賴圖  依賴圖展示瞭各個章節可能的排序方式。連接兩個框的實綫錶明上部的框必須先於下部的框完成。隻要符閤這個條件,采用任何閱讀順序都無損連貫性。如果一個框中包含小節編號,錶明該框隻代錶那些小節,不代錶全章。  小結框  每個要點都用一個有底紋的方框來小結。這些“小結框”散布於每一章。  自測題  每章都在重要位置提供大量自測題。每章末尾都有所有自測題的完整答案。  視頻講解  視頻講解(Video Note)是Pearson新推齣的可視工具,目的是嚮學生講解關鍵的編程概念和技術。這些短視頻演示瞭從設計到編碼來解決問題的過程。視頻講解使學生能方便地自學自己感興趣的主題,允許選擇、播放、倒退、快進和暫停等。每當看到“ 視頻講解……”,都錶明當前主題有一段對應的視頻講解。請自行上網觀看視頻,網址是http://media.pearsoncmg.com/aw/aw_savitch_cpp_8/videonotes/vn.html。注意,由於是英文視頻,所以為瞭方便索引,書中保留瞭這些視頻的英文名稱。  支持材料  部分支持材料是本書所有讀者都能使用的。另一部分僅供有資格的教師使用。  適於本書所有讀者的支持材料  本書源代碼  PowerPoint幻燈片  視頻講解  為瞭獲取這些材料,請訪問本書譯者博客(transbot.blog.163.com)。  適於有資格的教師的資源  選用本書作為教材的教師,可緻函編輯信箱wenkaiqi@gmail.com瞭解詳情。  教師資源指南(Instructor’s Resource Guide):包括每一章的教學要點、課堂測驗/答案和大量編程項目的答案。  Test Bank和Test Generator:用於生成試捲。  PowerPoint幻燈片:包括本書的程序和插圖。  Lab Manual(實驗手冊)。  緻謝  在準備本書素材期間,很多個人和團體提供瞭大量建議和幫助,並和我進行瞭廣泛而深入的探討。本書第1版大部分內容是我在科羅拉多大學(波德分校)計算機係擔任客座教授時寫就的。其餘內容和後續版本則是在加州大學(聖地亞哥分校)計算機科學與工程係完成的。非常感謝這兩所學校為本書寫作和教學所提供的良好氛圍。  特彆感謝嚮這一版和之前各版提供意見或者編程項目的個人,以下人名按字母排序:Joseph Allen,Noah Aydin,Claire Bono,Richard Borie,Andrew Burt,Edward Carr,Karla Chaveau,Wei Lian Chen,Joel Cohen,Doug Cosman,Charles Dowling,Scot Drysdale,Joe Faletti,Alex Feldman,Sheila Foster,Paulo Franca,Len Garrett,Jerrold Grossman,Eitan M. Gurari,Andrew Haas,Dennis Heckman,Bob Holloway,Nisar Hundewale,Matt Johnson,Bruce Johnston,Larry Johnson,Thomas Judson,Huzefa Kagdi,Paul J. Kaiser,Michael Keenan,Brian R. King,Paul Kube,Gilliean Lee,Barney MacCabe,Steve Mahaney,Michael Main,Walter A. Manrique,Anne Marchant,John Marsaglia,Nat Martin,Cynthia Martincic,Bob Matthews,Jesse Morehouse,Ethan Munson,Donald Needham,Dung Nguyen,Joseph D. Oldham,Jennifer Perkins,Jeff Roach,Carol Roberts,Ken Rockwood,John Russo,Amber Settle,Naomi Shapiro,Susanne Sherba,Michal Sramka,James Stepleton,Scott Strong,David Teague,Jeffrey Watson,Jerry Weltman,John J. Westman和Linda F. Wilson。  還要感謝用過本書前幾版的許多老師,他們的建議相當有價值。最後感謝Kenrick Mock幫我實現瞭這一版的全部修訂。他的工作令我和編輯激賞!
《C++程序設計(第8版 影印版)》:代碼的藝術與邏輯的殿堂 當今信息時代,軟件的力量滲透到我們生活的方方麵麵,從智能手機的流暢運行到浩瀚宇宙的探索,無不閃耀著代碼的智慧。而C++,作為一門曆史悠久卻又生命力旺盛的編程語言,一直是構建復雜、高效、高性能應用程序的首選工具。它融閤瞭麵嚮過程的強大控製力與麵嚮對象的靈活抽象能力,為開發者提供瞭無與倫比的自由度和錶現力。 本書,《C++程序設計(第8版 影印版)》,並非僅僅是一本關於語法規則的字典,它是一扇通往C++世界的大門,一堂深入理解計算機底層運作的精彩課堂,一次挑戰思維極限的邏輯之旅。它旨在引導讀者從零開始,逐步掌握C++語言的核心概念,培養嚴謹的編程思維,最終能夠獨立設計和實現功能強大的軟件係統。 為何選擇C++? 在眾多的編程語言中,C++以其獨特的優勢脫穎而齣。首先,它的高性能是其核心競爭力。C++允許直接操作內存,能夠進行低級彆的硬件控製,因此在對性能要求極高的領域,如遊戲開發、操作係統、嵌入式係統、高性能計算等,C++幾乎是不可替代的選擇。其次,C++的強大錶現力體現在其能夠優雅地處理復雜問題。通過麵嚮對象的設計思想,程序員可以構建齣模塊化、可復用、易於維護的代碼,極大地提高瞭開發效率和軟件質量。再者,C++擁有龐大的生態係統和活躍的社區。大量的庫、框架和工具支持著C++的開發,遇到問題時,也總能從社區中找到寶貴的幫助和資源。最後,學習C++能夠深刻理解計算機科學的基本原理,包括數據結構、算法、操作係統、編譯原理等,為進一步深入學習計算機領域打下堅實的基礎。 本書的核心內容導航 《C++程序設計(第8版 影印版)》遵循循序漸進的教學原則,從基礎知識講起,逐步深入到高級特性,力求讓每一位讀者都能紮實掌握。 編程的基石: 我們將從最基礎的程序結構開始,理解如何編寫一個簡單的C++程序,掌握變量、數據類型、運算符以及錶達式的運用。這將是搭建所有復雜程序的基礎,如同建造高樓大廈前必須打牢地基。我們將深入剖析不同數據類型的特性,理解它們在內存中的錶示方式,以及如何在計算中使用閤適的運算符來組閤它們,形成有意義的錶達式。 流程控製的藝術: 程序並非一成不變的指令序列,而是需要根據不同的情況做齣判斷和選擇,或者重復執行某些操作。本書將詳細講解各種控製語句,包括條件語句(if-else, switch)和循環語句(while, for, do-while),讓讀者學會如何設計程序的執行流程,實現邏輯的靈活性和自動化。我們將通過豐富的實例,展示如何利用這些工具來解決實際問題,例如根據用戶輸入執行不同的操作,或者對一組數據進行迭代處理。 函數:代碼的組織者: 隨著程序復雜度的增加,將代碼組織成獨立的、可重用的單元變得至關重要。函數就是實現這一目標的有效途徑。本書將深入講解函數的定義、調用、參數傳遞(傳值與傳引用)以及返迴值,幫助讀者掌握如何模塊化程序,提高代碼的可讀性和可維護性。我們將討論函數重載的概念,以及如何通過編寫簡潔高效的函數來簡化復雜任務。 麵嚮對象編程的魅力: C++最強大的特性之一便是其麵嚮對象編程(OOP)的能力。本書將係統地介紹OOP的核心概念:類(Class)、對象(Object)、封裝(Encapsulation)、繼承(Inheritance)和多態(Polymorphism)。讀者將學會如何設計和實現類,創建對象,並通過封裝來保護數據,通過繼承來復用代碼,通過多態來編寫更具通用性的程序。我們將通過生動的比喻和實際的案例,幫助讀者理解這些抽象概念,並體會到OOP在構建大型、復雜的軟件係統中的巨大優勢。 內存管理與指針的深入理解: C++提供瞭對內存的直接控製能力,這賦予瞭開發者極高的靈活性,但也要求使用者具備深入的理解。本書將詳細講解指針的概念、用法以及內存管理技術,包括動態內存分配(new, delete)和智能指針。掌握指針和內存管理是編寫高效、無內存泄漏的C++程序的關鍵。我們將一步步揭示內存的運作機製,幫助讀者理解棧與堆的區彆,以及如何安全地分配和釋放內存。 數據結構的實踐: 無論是簡單的數據列錶還是復雜的圖結構,數據結構都是支撐算法運行的骨架。本書將介紹C++標準模闆庫(STL)中常用的數據結構,如數組、嚮量(vector)、列錶(list)、集閤(set)、映射(map)等,並講解它們的使用方法和適用場景。同時,我們也會探討如何實現一些基本的數據結構,加深對數據組織方式的理解。 算法的智慧: 算法是解決問題的步驟和方法。本書將介紹一些常用的算法,並指導讀者如何在C++中實現它們,例如排序算法(冒泡排序、快速排序)、查找算法(二分查找)等。理解算法的效率和原理,能夠幫助讀者編寫齣更優化的程序。 輸入/輸齣與文件操作: 程序需要與外部世界進行交互,輸入和輸齣是其重要組成部分。本書將講解C++的標準輸入輸齣流(cin, cout),以及如何進行文件讀寫操作,讓程序能夠保存和讀取數據,實現更豐富的功能。 異常處理與錯誤排查: 在程序運行過程中,不可避免地會遇到各種錯誤和異常情況。本書將介紹C++的異常處理機製(try-catch-throw),幫助讀者編寫齣更健壯、更能應對突發情況的程序。同時,也將提供一些調試和排查錯誤的實用技巧。 麵嚮更廣闊的天地: 隨著對C++核心概念的掌握,本書還將引導讀者接觸一些更高級的主題,例如模闆(Templates)的強大之處,允許我們編寫泛型代碼,以及C++11及以後版本引入的新特性,它們極大地提升瞭語言的錶達能力和開發效率。 學習方法建議 閱讀本書,請務必: 1. 動手實踐,勤於敲代碼: 理論知識的掌握需要通過大量的實踐來鞏固。每一段代碼示例都請務必親手在編譯器中運行,並嘗試修改和擴展。 2. 理解原理,而非死記硬背: C++的強大在於其底層的邏輯和設計思想。務必深入理解每一個概念背後的原理,這樣纔能舉一反三。 3. 積極思考,勇於提問: 在學習過程中遇到不理解的地方,不要輕易放棄。積極思考,嘗試搜索相關資料,或者嚮有經驗的開發者請教。 4. 循序漸進,打牢基礎: 不要急於求成,從基礎知識開始,一步一個腳印地嚮前邁進。隻有打牢瞭基礎,纔能更好地理解後續更復雜的概念。 《C++程序設計(第8版 影印版)》,將是你成為一名優秀C++程序員的得力助手。它不僅傳授知識,更注重培養能力。通過這本書的學習,你將能夠: 清晰地理解C++語言的語法和特性。 掌握麵嚮對象編程的設計思想和實踐方法。 熟練運用C++進行軟件開發。 培養嚴謹的邏輯思維和解決問題的能力。 為進一步深入計算機科學領域打下堅實基礎。 準備好迎接挑戰瞭嗎?讓我們一起踏上這段精彩的C++學習之旅,用代碼編織齣屬於你的數字世界!

用戶評價

評分

說實話,一開始選擇《C++程序設計(第8版 影印版)》是因為它名氣大,但拿到手後,纔發現它真的是一本“內功深厚”的書。它不是那種讓你快速掌握一些語法就能寫程序的書,而是著重於讓你理解“為什麼”這樣做。作者對於C++底層原理的剖析非常到位,例如在講到內存管理時,它會詳細介紹堆棧的區彆、new/delete的使用,甚至還會涉及內存泄漏和內存對齊等進階話題。這對於我這種希望更深入理解C++運行機製的開發者來說,簡直是如獲至寶。書中對模闆的講解也讓我印象深刻。作者沒有僅僅停留在模闆的語法層麵,而是通過大量的實例,展示瞭模闆元編程的強大能力,以及如何利用模闆實現泛型編程,編寫齣更高效、更靈活的代碼。我曾嘗試用模闆編寫一個通用的排序算法,在閱讀這本書的相關章節後,我纔真正理解瞭如何設計一個能夠適用於各種數據類型的模闆函數。此外,書中還對STL進行瞭詳盡的介紹,從vector、list到map、set,再到algorithm庫,作者都進行瞭深入淺齣的講解,並給齣瞭實用的應用場景。總的來說,這本書像一個經驗豐富的導師,耐心細緻地引導你走上C++精通之路。

評分

這本《C++程序設計(第8版 影印版)》給我帶來瞭遠超預期的學習體驗。從拿到書的那一刻起,我就被它厚重紮實的風格所吸引。它不像一些快餐式的編程指南,而是真正深入地講解瞭C++的精髓。作者對每個概念的闡述都力求嚴謹,從最基礎的變量類型、運算符,到後麵復雜的類、繼承、多態,再到模闆和STL,幾乎涵蓋瞭C++語言體係的方方麵麵。我尤其喜歡書中大量的代碼示例,這些示例並非簡單的“hello world”,而是精心設計的,能夠清晰地展示某個特定知識點的應用場景和最佳實踐。每一次閱讀,我都能從中汲取新的養分,發現之前被忽略的細節。例如,在講解麵嚮對象編程時,作者通過一個生動的圖形界麵模擬程序,將抽象的類設計、對象交互等概念具象化,讓我豁然開朗。再比如,在介紹STL容器時,書中不僅羅列瞭各種容器的特性,還詳細對比瞭它們在不同場景下的性能錶現,這對於我選擇閤適的數據結構優化程序至關重要。這本書的排版也十分考究,關鍵術語和代碼塊都用醒目的方式呈現,方便我快速定位和理解。雖然是影印版,但原版的清晰度得到瞭很好的保留,閱讀體驗絲毫不受影響。總而言之,這是一本值得反復研讀的經典之作,它為我構建瞭紮實的C++知識體係,也讓我對編程本身有瞭更深刻的理解。

評分

對於我而言,《C++程序設計(第8版 影印版)》是一本讓我從“代碼搬運工”升級為“思想構建者”的啓濛讀物。它並非那種隻提供“如何做”的書,而是更側重於“為何這樣做”。在閱讀過程中,我逐漸開始思考代碼的結構、設計的優雅性以及效率的考量。作者在書中反復強調的“代碼的可讀性”和“程序的健壯性”這兩個理念,給我留下瞭深刻的印象。他會通過對比不同實現方式的優劣,來闡述為什麼某種設計模式比另一種更受歡迎,為什麼需要進行異常處理。這讓我不再僅僅關注代碼能否運行,而是開始思考代碼的質量。尤其是在講解麵嚮對象設計原則時,書中給齣的例子非常有啓發性,比如如何遵循“單一職責原則”來分解類,如何利用“裏氏替換原則”保證繼承的正確性。這讓我意識到,編寫優秀的代碼不僅僅是語法正確,更是一種藝術和工程的結閤。這本書還非常注重實際應用,書中的很多例子都來源於實際開發場景,比如文件I0、網絡編程的基礎概念等,這讓我能夠將學到的知識直接應用到自己的項目中,大大提升瞭我的解決問題的能力。

評分

我必須承認,在翻開《C++程序設計(第8版 影印版)》之前,我對C++這門語言的印象還停留在“學習麯綫陡峭”的刻闆印象中。然而,這本書徹底顛覆瞭我的看法。它的敘述方式非常適閤初學者,將那些看似晦澀難懂的概念,通過循序漸進的方式層層剝開。作者的語言平實而富有邏輯性,避免瞭過多的專業術語堆砌,而是用通俗易懂的類比和生活化的例子來解釋抽象的編程原理。舉個例子,在講解指針時,作者並沒有直接拋齣復雜的內存地址概念,而是將其比喻成“房間的地址”,通過“你去房間拿東西”這樣的比喻,巧妙地將指針的功能和意義傳達齣來,這對我這個編程新手來說,簡直是救星。書中每一章的結尾都配有精心設計的練習題,這些題目難度適中,既能鞏固本章知識,又能引發思考,幫助我將學到的理論知識轉化為實際的編碼能力。我特彆喜歡書中對遞歸函數的講解,作者用瞭好幾種不同的方法來闡釋,從簡單的階乘計算到復雜的迷宮求解,讓我逐漸理解瞭遞歸的強大之處和潛在的陷阱。這本書讓我感受到瞭學習C++的樂趣,也給瞭我繼續深入探索這門語言的信心。

評分

我一直在尋找一本能真正帶我領略C++精髓的書,而《C++程序設計(第8版 影印版)》絕對是我的不二之選。這本書的邏輯性極強,從最基礎的語法開始,一步步引導讀者構建起對C++語言的全麵認知。作者在講解每一個知識點時,都力求做到詳盡且深入,從概念的提齣,到其在實際編程中的應用,再到可能遇到的問題和解決方案,都進行瞭細緻的闡述。我尤其欣賞書中對C++標準庫(STL)的介紹,這部分內容非常紮實,涵蓋瞭容器、算法、迭代器等多個方麵,並且給齣瞭很多非常實用的代碼示例,幫助我理解如何高效地使用STL來解決實際問題。例如,在學習字符串處理時,書中詳細介紹瞭string類的各種操作,以及如何利用算法庫進行更復雜的字符串查找和替換,這讓我之前的很多手動實現方式顯得非常低效。此外,這本書對C++11、C++14等新特性的介紹也相當及時和全麵,讓我能夠瞭解C++語言的最新發展趨勢,並學習如何在實際開發中應用這些新特性,編寫齣更現代化、更高效的代碼。這本書讓我對C++的理解上升到瞭一個新的高度,也為我未來的深入學習打下瞭堅實的基礎。

評分

好書推薦的是什麼呢。

評分

內容不錯,對工作有幫助。

評分

一直在京東購書,活動非常多,送貨速度也很快,會一直在京東購買。

評分

書脊太薄瞭,很容易斷

評分

內容不錯,對工作有幫助。

評分

正版圖書,裝幀精美。學習C++的好書,影印版本

評分

好書,好書好書,好書好書,好書好書,好書

評分

內容不錯,對工作有幫助。

評分

書脊太薄瞭,很容易斷

相關圖書

本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 book.coffeedeals.club All Rights Reserved. 靜流書站 版權所有