前言
本书适合C++(www.cppentry.com)程序设计和计算机科学入门课程使用。阅读本书不要求读者有任何编程(www.cppentry.com)经验,也不要求掌握除了中学代数之外的其他任何数学知识。
本书前几版的读者请阅读关于第8版修订内容的小节,前言的其余内容可略过。新读者请阅读前言的全部内容以把握本书脉络。
第8版修订内容
第8版采用和第7版相同的编程(www.cppentry.com)体例。第7版全部内容予以保留,但进行了以下改进。
第10章不再使用流类(比如ifstream和ofstream)介绍继承概念,而是,使用那一章更简单的银行账户例子来介绍。
额外添加了有关作用域、参数传递、随机数生成、动态数组的内容,有几章的幻灯片进行了重新制作。
新增25个编程(www.cppentry.com)项目,合并到每章末尾现有的项目中。
本书配套网站添加了15个新的视频讲解,总数达54个。这些视频讲解辅导学生解题和写程序,有助于巩固对关键编程(www.cppentry.com)概念的掌握。如果书中某个主题有对应的视频讲解,就会出现一行特殊的注释(视频讲解:……)。
用过第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++(www.cppentry.com)标准
本书完全兼容于符合最新ANSI/ISO C++(www.cppentry.com)标准的编译器。
高级主题
许多"高级主题"都成为标准CS1课程的一部分。即使它们不是课程的一部分,也最好以补充材料的形式在书中提供。本书提供了大量高级主题,它们既可集成到一门课程中,也可作为自学主题。本书全面讲述了C++(www.cppentry.com)模板、继承(包括虚函数)、异常处理和STL(Standard Template Library,标准模板库)。虽然本书使用了库,而且教给学生库的重要性,但不要求任何非标准库。本书只使用所有C++(www.cppentry.com)实现都附带的库。
依赖图
依赖图展示了各个章节可能的排序方式。连接两个框的实线表明上部的框必须先于下部的框完成。只要符合这个条件,采用任何阅读顺序都无损连贯性。如果一个框中包含小节编号,表明该框只代表那些小节,不代表全章。
|
| (点击查看大图)图P.1 依赖图 |
小结框
每个要点都用一个有底纹的方框来小结。这些"小结框"散布于每一章。
自测题
每章都在重要位置提供大量自测题。每章末尾都有所有自测题的完整答案。
视频讲解
视频讲解(Video Note)是Pearson新推出的可视工具,目的是向学生讲解关键的编程(www.cppentry.com)概念和技术。这些短视频演示了从设计到编码来解决问题的过程。视频讲解使学生能方便地自学自己感兴趣的主题,允许选择、播放、倒退、快进和暂停等。每当看到" 视频讲解:……",都表明当前主题有一段对应的视频讲解。请自行上网观看视频,网址是http://media.pearsoncmg.com/aw/aw_savitch_cpp_8/videonotes/vn.html。注意,由于是英文视频,所以为了方便索引,书中保留了这些视频的英文名称。
支持材料
部分支持材料是本书所有读者都能使用的。另一部分仅供有资格的教师使用。
适于本书所有读者的支持材料
本书源代码
PowerPoint幻灯片
视频讲解
为了获取这些材料,请访问本书译者博客(transbot.blog.163.com)。
适于有资格的教师的资源
选用本书作为教材的教师,可致函编辑信箱wenkaiqi@gmail.com了解详情。
教师资源指南(Instructor's Resource Guide):包括每一章的教学要点、课堂测验/答案和大量编程(www.cppentry.com)项目的答案。
Test Bank和Test Generator:用于生成试卷。
PowerPoint幻灯片:包括本书的程序和插图。
Lab Manual(实验手册)。