书海网短评:
WalterSavitch教授的C++入门经典,长销十几年结构严谨、清晰,行文诙谐幽默,妙趣横生更多技巧提示,更多生动有趣的编程实例近70个精彩视频,410+自测题,230+编程项目
WalterSavitch教授的C++入门经典,长销十几年
结构严谨、清晰,行文诙谐幽默,妙趣横生
更多技巧提示,更多生动有趣的编程实例
近70个精彩视频,410+自测题,230+编程项目
作为C++入门经典教材,《C++入门经典(第10版)》结合作者多年的教学经验,清楚梳理出一个有利于教与学的结构体系,从各章开头的内容总览,到随处可见的自测题、小结框、编程提示和编程陷阱,再到章末的小结、习题、编程练习和编程项目,由浅入深,从简到繁,可以帮助初学者渐入佳境,逐步理解并掌握重要的编程概念。
《C++入门经典(第10版)》共18章,8个附录。在讲解C++基础知识之后,循序渐进地引导读者深入函数、I/O流、类、控制流程、命名空间、数组、字符串、指针和动态数组、递归、模板、指针和链表、派生类、异常以及标准模板库。《C++入门经典(第10版)》前几版被全国100多所高校选作C++程序设计课程的教材,很受师生欢迎。《C++入门经典(第10版)》也适合自学,不同层次的知识点和测试练习,可以帮助读者以自己的节奏进入美妙的C++编程世界。
WalterSavitch
加州大学圣迭戈分校荣誉退休教授。拥有加州大学伯克利分校博士学位,曾担任加州大学圣迭戈分校计算机科学系教授和认知科学跨学科博士项目主任。他在复杂性理论和并行计算模型方面具有卓越贡献,其研究领域包括形式语言理论和计算语言学等。
周靖
微软*有价值专家(MVP),资深译者。涉猎广泛,具有深厚的技术功底和良好的文学素养。早期痴迷于硬件,曾多年担任《微型计算机》杂志特约作者。继而潜心钻研程序设计,并在这方面积累了丰富的经验。此后专职从事计算机图书的翻译。其翻译风格严谨、准确、朴实、流畅,深受读者好评。代表译著有《C++入门经典》、《VisualC#从入门到精通》、《CLRviaC》系列版本。
“我的学生和我非常喜欢这本教材,Savitch教授功力深厚,善于将这些枯燥的知识变得浅显易懂,而且他的行文诙谐有趣,我们师生都喜欢这样的方式。学生们告诉我,他们终于买到了一本真正物有所值的大学教材。”
——JenniferPerkins,阿肯色州立大学小石城分校
“Savitch的这本教材在我校已经使用多年,它赢得了我们师生的一致认同。WalterSavitch用清晰、简练的风格解释了难懂的编程概念,讨论了C++语言的所有重要特色。”
——CarolRoberts,缅因州立大学
“如果说写作是一种艺术的话,它便能催生出一个艺术家。Savitch的书就是这样的艺术。它以流畅、一致且轻松愉快的方式将C++编程知识娓娓道来。”
——CoskunBayrak,阿肯色州立大学小石城分校
“从编程基础到面向对象概念,这样的安排符合逻辑,而且高效,能让刚涉足C++编程的学生理解类和一些更高级的主题。”
——StephenWeissman,伯灵顿社区大学
“《C++入门经典(第10版)》内容全面,涵盖C++语言的主要语法和算法的基础知识。它尤其针对入门读者,重点介绍C++语言的基本语法和编程思想,对基础部分的讲解浅显易懂,细致入微。其章节结构的安排,也为教师调整授课顺序提供了很大的灵活性,便于教师根据学生情况对内容进行裁减和重组。书中适时穿插自测题,有利于读者及时加以复习和巩固。作为一本翻译教材,这《C++入门经典(第10版)》的中文表述很流畅,翻译质量不错,可以看出译者在程序设计方面的造诣。总的说来,这是一本适合初学者的好书,尤其适合没有教师指导的自学读者。但由于其顺序灵活可调,也非常适合教学使用。”
——郑莉教授,清华大学计算机系
目录
第1章计算机和C++编程入门1
1.1计算机系统2
1.2编程和问题求解9
1.3C++入门13
1.4测试和调试22
小结24
自测题答案25
编程练习26
编程项目27
第2章C++基础知识29
2.1变量和赋值30
2.2输入和输出37
2.3数据类型和表达式44
2.4简单控制流程54
2.5程序风格67
小结71
自测题答案72
编程练习75
编程项目76
第3章更多的控制流程81
3.1使用布尔表达式82
3.2多路分支87
3.3C++循环语句详解101
3.4设计循环111
小结119
自测题答案120
编程练习123
编程项目124
第4章过程抽象和返回值的函数129
4.1自顶向下设计130
4.2预定义函数130
4.3程序员自定义函数138
4.4过程抽象146
4.5作用域和局部变量155
4.6重载函数名称164
小结170
自测题答案171
编程练习173
编程项目174
第5章用函数完成所有子任务177
5.1void函数178
5.2传引用参数182
5.3使用过程抽象192
5.4测试和调试函数198
5.5常规调试技术201
小结205
自测题答案206
编程练习208
编程项目209
第6章I/O流——对象和类入门213
6.1流和基本文件I/O214
6.2流I/O工具227
6.3字符I/O236
小结252
自测题答案253
编程练习257
编程项目258
第7章数组263
7.1数组入门264
7.2函数中的数组272
7.3数组编程287
7.4多维数组297
小结303
自测题答案304
编程练习306
编程项目307
第8章字符串和向量315
8.1字符串的数组类型316
8.2标准string类330
8.3向量342
小结347
自测题答案348
编程练习349
编程项目350
第9章指针和动态数组355
9.1指针356
9.2动态数组364
小结373
自测题答案374
编程练习374
编程项目375
第10章定义类379
10.1结构380
10.2类388
10.3抽象数据类型411
10.4继承418
小结423
自测题答案424
编程练习428
编程项目428
第11章类中的友元函数、
重载操作符和数组433
11.1友元函数434
11.2重载操作符449
11.3数组和类460
11.4类和动态数组465
小结477
自测题答案478
编程练习484
编程项目484
第12章独立编译和命名空间491
12.1独立编译492
12.2命名空间503
小结513
自测题答案514
编程练习515
编程项目516
第13章指针和链表517
13.1节点和链表518
13.2栈和队列536
小结544
自测题答案545
编程练习546
编程项目547
第14章递归553
14.1面向任务的递归函数554
14.2面向值的递归函数564
14.3递归思想567
小结577
自测题答案578
编程练习581
编程项目581
第15章继承585
15.1继承基础586
15.2继承细节602
15.3多态性604
小结615
自测题答案616
编程练习619
编程项目620
第16章异常处理627
16.1异常处理基础628
16.2用于异常处理的编程技术642
小结646
自测题答案647
编程练习647
编程项目649
第17章模板651
17.1用于算法抽象的模板652
17.2用于数据抽象的模板660
小结668
自测题答案669
编程练习671
编程项目671
第18章标准模板库675
18.1迭代器676
18.2容器687
18.3泛型算法699
18.4不断进化的C++708
小结722
自测题答案723
编程练习724
编程项目724
附录AC++关键字729
附录B操作符的优先级730
附录CASCII字符集731
附录D部分库函数732
附录E内联函数736
附录F重载数组索引方括号737
附录Gthis指针738
附录H将操作符重载为成员操作符740
第2章C++基础知识
别以为你知道计算机终端是个什么东西。计算机终端可不是什么乏味的旧电视,前头再摆个打字机。它是一种接口,使身体和心灵可以和宇宙相连接,并且把其中的一些东西移来移去。
——道格拉斯?亚当斯,《银河系漫游指南》第五卷?基本无害
概述
本章将解释更多的C++示范程序,展示C++语言足够多的细节,便于你写出简单的C++程序。
预备知识
第1章简单介绍了一个C++示范程序,本章将使用那个程序(如果还没有阅读对那个程序的描述,请在继续后面的学习之前阅读它,这对你很有帮助)。
2.1变量和赋值
一旦理解变量在编程中的用法,就可以说理解了编程的精髓。
——艾兹格?戴克斯特拉,“结构化编程”课堂笔记
程序要处理数字和字母之类的数据。C++和其他常用编程语言一样,使用名为变量的编程构造来命名和存储数据。变量是编程语言(如C++)的核心,所以要从变量开始介绍C++。下面将围绕图2.1的程序展开讨论,并解释该程序中的所有元素。虽然此程序的常规思路应该是很清楚的,但某些细节是新的,需要进行一些解释。
前言
《C++入门经典(第10版)》适合C++程序设计和计算机科学入门课程。不要求读者有任何编程经验,也不要求掌握除中学代数之外的其他任何数学知识。
《C++入门经典(第10版)》前几版的读者请阅读关于第10版修订内容的小节,前言其余内容可略过。新读者请阅读前言的全部内容以把握《C++入门经典(第10版)》脉络。
第10版修订内容
第10版采用和第9版相同的体例。保留第9版全部内容,但进行了以下修订。
*统一采用camelCase拼写法,不再采用C风格的下划线连接。例如,set_name改为setName。
*第10章讨论了浅拷贝和深拷贝。
*第12章和第17章讨论了如何用头文件引入编译模板。
*第18章讨论了C++11的std::array类、正则表达式、线程和智能指针。
*进行了大量勘误和编辑,强调了文件I/O的首选方法,术语更规范,更好地定义了封装,并不再讨论已在C++11和更高版本中成为标准的一些东西。
*新增10个编程项目。
*新增5个视频讲解,总数达69个。这些视频讲解辅导学生解题和写程序,有助于巩固对关键编程概念的掌握。如书中某个主题有对应的视频讲解,就会出现一行特殊的注释(视频讲解:……)。
用过第9版的教师可沿用以前的教案,几乎不需要任何改动。
主题可以灵活排序
《C++入门经典(第10版)》允许教师自由安排教学顺序。为了演示这一灵活性,下面推荐了两个额外的顺序。采用任何顺序都不会影响学习的连贯性。为了在改变顺序时确保这种连贯性,可能需要移动个别小节而不是全章。但只有较大的、位置便利的小节才需移动。为了帮助您根据需要自定义一个教学/阅读顺序,图P.1展示了一幅依赖图。另外,每章都有“预备知识”小节,解释学习那一章的每一节之前需掌握的内容。
重新排序1:提前学习类
为有效设计类,学生需要掌握一些基本工具,比如控制结构和函数定义。这些基础知识在第1章~第6章介绍。完成第6章后,学生就可开始写自己的类了。如果想提前学习类的相关知识,可像下面这样重新安排各章顺序。
*基础知识第1章~第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”晚,但还是比《C++入门经典(第10版)》的默认顺序提前一些。
*基础知识第1章到第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章。
面向学生的易用性
一《C++入门经典(第10版)》必须按恰当的顺序来讲解恰当的主题,这是最起码的要求。另外,在老师和其他有经验的程序员看来,书的内容必须清晰而正确,这是另一个最起码的要求。但是不是符合这两项要求的书都是好书呢?答案是否定的。书中的内容必须采取有利于初学者使用的方式来编排。在这本入门教科书中,我尽力让学生觉得清楚和友好。《C++入门经典(第10版)》以前版本的大量学生反馈证明,这种写作风格确实使内容更清晰,能使学生充分享受到学习的乐趣。
ANSI/ISOC++标准
《C++入门经典(第10版)》可顺利使用符合最新ANSI/ISOC++标准的编译器。写作时最新标准是C++14。
高级主题
许多“高级主题”都已成为标准CS1课程的一部分。即使不是,以补充材料的形式提供也不错。《C++入门经典(第10版)》提供大量高级主题,它们既可集成到课程中,也可作为自学主题。《C++入门经典(第10版)》全面讲述了C++模板、继承(包括虚函数)、异常处理和STL(StandardTemplateLibrary,标准模板库)。虽然《C++入门经典(第10版)》使用了库,而且教给学生库的重要性,但不要求任何非标准库。《C++入门经典(第10版)》只用所有C++实现都有的库。
依赖图
下面的依赖图展示了各个章节可能的排序方式。连接两个框的实线表明上部的框必须先于下部的框完成。只要符合这个条件,采用任何阅读顺序都无损连贯性。如果一个框中包含小节编号,表明该框只代表那些小节,不代表全章。
小结框
每个要点都用一个有底纹的方框来小结,它们散布于各章。
自测题
每章都在重要位置提供大量自测题。答案在章末提供。
视频讲解
视频讲解(VideoNote)旨在讲解关键编程概念和技术,演示了从设计到编码来解决问题的过程。视频讲解使学生能方便地自学感兴趣的主题,支持选择、播放、倒退、快进和暂停。每当看到“视频讲解:……”,都表明当前主题有对应的视频讲解。视频列表请从《C++入门经典(第10版)》中文版配套网站获取,网址是http://transbot.ys168.com和https://pan.baidu.com/s/1yd43W。注意,由于是英文视频,所以为了方便索引,书中保留了这些视频的英文名称。
支持材料
部分支持材料《C++入门经典(第10版)》所有读者都适合。其他仅适合认证教师。
适合《C++入门经典(第10版)》所有读者的支持材料
*源代码
*PowerPoint幻灯片
*视频讲解
获取这些材料请访问《C++入门经典(第10版)》译者博客(transbot.blog.163.com)或网盘(http://transbot.ys168.com和https://pan.baidu.com/s/1yd43W)。
适合认证教师的资源
选用《C++入门经典(第10版)》作为教材的教师,可致函责编信箱coo@netease.com,了解详情。
*教师资源指南(Instructor’sResourceGuide):包括每一章的教学要点、课堂测验/答案和大量编程项目的参考答案。
*TestBank和TestGenerator:用于生成试卷。
*PowerPoint幻灯片:包括《C++入门经典(第10版)》的程序和插图。
*LabManual(实验手册)。
致谢
在准备《C++入门经典(第10版)》素材期间,许多个人和团体提供了大量建议和帮助,并和我进行了广泛而深入的探讨。《C++入门经典(第10版)》第1版大部分内容是我在科罗拉多大学(波德分校)计算机系担任客座教授时写就的。其余内容和后续版本则是在加州大学(圣地亚哥分校)计算机科学与工程系完成的。非常感谢两所学校为《C++入门经典(第10版)》写作和教学所提供的良好氛围。
特别感谢向这一版和之前各版提供意见或者编程项目的个人,以下人名按字母排序:AlexFeldman,AmberSettle,AndrewBurt,AndrewHaas,AnneMarchant,BarneyMacCabe,BobHolloway,BobMatthews,BrianR.King,BruceJohnston,CarolRoberts,CharlesDowling,ClaireBono,CynthiaMartincic,DavidFeinstein,DavidTeague,DennisHeckman,DonaldNeedham,DougCosman,DungNguyen,EdwardCarr,EitanM.Gurari,EthanMunson,FiroozKhosraviyani,FrankMoore,GillieanLee,HuzefaKagdi,JamesStepleton,JeffRoach,JeffreyWatson,JenniferPerkins,JerryWeltman,JoeFaletti,JoelCohen,JohnJ.Westman,JohnMarsaglia,JohnRusso,JosephAllen,JosephD.Oldham,JerroldGrossman,JesseMorehouse,KarlaChaveau,KenRockwood,LarryJohnson,LenGarrett,LindaF.Wilson,MalGunasekera,MarianneLepp,MattJohnson,MichaelKeenan,MichaelMain,MichalSramka,NaomiShapiro,NatMartin,NoahAydin,NisarHundewale,PaulJ.Kaiser,PaulKube,PauloFranca,RichardBorie,ScotDrysdale,ScottStrong,SheilaFoster,SteveMahaney,SusanneSherba,ThomasJudson,WalterA.Manrique,WeiLianChen和WojciechKomornicki。
还要感谢用过《C++入门经典(第10版)》前几版的许多老师,他们的建议相当有价值。最后感谢KenrickMock帮我实现了这一版的全部修订。他的工作令我和编辑激赏!









