图书前言

  

  

  

  

前    言

  本书适合C++程序设计和计算机科学入门课程使用。阅读本书不要求读者有任何编程经验,也不要求掌握除了中学代数之外的其他任何数学知识。

  本书前几版的读者请阅读关于第9版修订内容的小节,前言的其余内容可略过。新读者请阅读前言的全部内容以把握本书脉络。

第9版修订内容

  第9版采用和第8版相同的编程体例。保留第8版全部内容,但进行以下修订。

* 章末的编程作业现在划分为“编程练习”和“编程项目”。编程练习帮助巩固本章的知识点,程序一般都很小,适合课堂练习。编程项目则要求综合运用多方面的知识来解决问题,程序一般比编程练习大,适合作为家庭作业。

* 在C++98的背景下介绍C++11,涉及的主题包括新整型、auto类型、原始字符串字面值、强枚举、nullptr、以范围为基础的for循环、字符串和整数相互转换、成员初始化列表和委托构造函数等。

* 提供了关于排序、安全编程(即溢出和数组越界)以及继承的补充材料。

* 勘误。

* 新增21个编程练习和10个编程项目。

* 本书配套网站新增10个视频讲解,使总数达到64个。这些视频讲解辅导学生解题和写程序,有助于巩固对关键编程概念的掌握。如果书中某个主题有对应的视频讲解,就会出现一个特殊的图标。

  用过第8版的教师可沿用以前的教案,几乎不需要任何改动。

主题可以灵活排序

  本书允许教师自由安排教学顺序。为了演示这一灵活性,下面推荐了两种顺序。采用任何顺序都不会影响学习的连贯性。为了在改变顺序时确保这种连贯性,可能需要移动个别小节而不是全章。但是,只有较大的、位置便利的小节才需要移动。为了帮助您根据需要自定义一个教学/阅读顺序,图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++标准的编译器。写作时的最新标准是C++ 11。

高级主题

  许多“高级主题”都已成为标准CS1课程的一部分。即使不是,以补充材料的形式提供也不错。本书提供大量高级主题,它们既可集成到课程中,也可作为自学主题。本书全面讲述了C++模板、继承(包括虚函数)、异常处理和STL(Standard Template Library,标准模板库)。虽然本书使用了库,而且教给学生库的重要性,但不要求任何非标准库。本书只使用所有C++实现都有的库。

小结框

  每个要点都用一个有底纹的方框来小结,它们散布于各章。

自测题

  每章都在重要位置提供大量自测题。答案在章末提供。

视频讲解

   视频讲解(Video Note)旨在讲解关键编程概念和技术,演示了从设计到编码来解决问题的过程。视频讲解使学生能方便地自学感兴趣的主题,支持选择、播放、倒退、快进和暂停。每当看到“ 视频讲解”,都表明当前主题有对应的视频讲解。注意,由于是英文视频,所以为了方便索引,书中保留了这些视频的英文名称。

支持材料

  有一部分支持材料适用于本书所有读者。其他仅适用于有资格的教师。

  适用于本书所有读者的支持材料

* 源代码

* PowerPoint幻灯片

* 视频讲解

  适用于有资格的教师的资源

* 教师资源指南(Instructor’s Resource Guide):包括每一章的教学要点、课堂测验/答案和大量编程项目的参考答案。

* Test Bank和Test Generator:用于生成试卷。

* PowerPoint幻灯片:包括本书的程序和插图。

* Lab Manual(实验手册)。