Coursera C++程序设计 课程教材

本课程教材为:

《新标准C++程序设计》,郭炜编著,清华大学出版社

本书的特点

  1 . 内容深广却通俗易懂,入门与提高并重

      本书面向大学计算机专业的低年级学生,或非计算机专业但对编程能力要求较高的学生。本书可作为入门的程序设计语言教学之用,没学过C语言的读者可以直接学习本书。

      本书内容很广,覆盖了C++语言的方方面面,全面讲述了标准模板库STL的用法,几乎可以作为C++语言的参考手册来查阅。最后一章“C++高级主题”中的内容,更是大多数同等篇幅的教材所不曾涉及。而且,本书的宗旨是让读者不但要知其然,还要知其所以然,因此对于C++的一些语法特性,不但讲如何使用,还会讲C++为什么会有这个语法特性,甚至会介绍该特性是如何实现的 --- 比如“多态”的实现方法。

      作者有十年的C++语言第一线教学经验,非常清楚学生在学习C++时,哪些地方不易掌握,会提出什么样的问题,以及他们的问题应该如何回答。因此,本书写作时,就已经将对学生困惑的解答融入其中,用精简的语言直指问题的重点、难点和本质 --- 可以说将有限的文字,都用在了刀刃上。作者的目标是力图做到,读者不用教师讲授,也能独立看懂本书。

  2 . 紧扣C++标准

      国内大多数C++教材,依据的是1998年的C++标准“C++98”。许多教材甚至和“C++98”的标准都不能完全吻合,这从它们声称其“程序都在Visual C++ 6.0中编译通过”就可看出 --- Visual C++ 6.0并不是严格遵循“C++98”标准的编译器。目前,对C++标准支持最好的编译器有GNU gcc,以及微软的Visual C++ 10.0(包含在Visual Studio 2010中)等。本书的所有程序,除个别有特殊说明的以外,都同时在Visual C++ 10.0和Dev C++ 4.9.9.2(其内核编译器是gcc)中编译通过,并且运行结果相同,可以保证是符合C++标准的,而不是某种“C++方言”。

      最新的“C++11”标准通过的时间很短,目前还没有编译器能完全支持它。因此,本书不可能完全以“C++11”作为依据。本书的主要依据依然是“C++98”,但是收入了几个“C++98”之后新引入的特性,比如“long long”数据类型、无序容器(即哈希表)、智能指针shared_ptr等。本书中的头文件都是C++风格的,不像一些C++教材仍然使用C风格的头文件。另外,许多教材中的程序在用到字符串时,往往使用C风格的字符数组,而本书则尽量使用C++风格的string对象处理字符串。

  3;. 程序实例丰富实用,贴近编程实践

      作者不仅具有丰富的C++教学经验,还有着数十万行的C++商业软件开发经验。作者独立开发了多种流行的英语学习软件,如《我爱背单词》、《我爱背句子》、《我爱学语法》、《我爱学音标》、《角斗士超级复读机》等,还开发了背单词的网站“爱单词网”。这些软件,大量使用C++语言进行开发,有的完全用C++写成。因此,窃以为在对C++语言的运用和理解方面,比一般的教材作者多了一些心得,更能从实践的角度阐述如何运用C++的各种特性。所有样例程序都由作者精心编写,绝无从网上拷贝粘贴。程序风格优美,贴近现实,对实践的指导意义很强。

  4. 强调程序设计基本思想的培养

      作者担任北京大学ACM国际大学生程序设计竞赛队教练已有八年,手下的队员都是北京大学最出色的编程高手。他们的成长、求学、求职经历可以验证,算法才是程序设计的核心。学习程序设计,绝不能是仅仅掌握一门语言的语法,更重要的是掌握算法。只掌握语言的语法,在碰到具体问题时,往往还是不知道如何去编程解决。作为入门的程序设计语言教材,本书不可能讲述太多的算法,但是程序设计的基本思想仍是必定要涉及的。为此,本书专门辟出一章,讲述了枚举、递归、二分三种基本的程序设计思想,此外其他一些章节的例题和例子程序,也能体现程序设计的一些基本思路。

三、内容编排

      本书主要分为以下四篇:

      第一篇 结构化程序设计:是对C语言的继承、以及在C语言基础上的一些扩充。学过C语言的读者,可以粗略阅读甚至跳过此篇大部分内容,但是需要学习目录中带“*”的章节,这些章节仍然是C语言中没有的内容。

      第二篇 面向对象的程序设计: 包含类和对象、运算符重载、继承、多态等内容,是C++语言的学习重点。

      第三篇 泛型程序设计:包括如何编写模板以及如何使用标准模板库STL。即便不想用面向对象的方法编程,学习STL也是大有裨益的。

      第四篇 C++高级主题: 涉及了异常处理、名字空间、C++风格的强制类型转换等C++语言中比较深入的内容,以及C++11标准引人的几个新特性。

      本书每章后面都有小结和习题。讲述中还穿插了许多思考题,思考题难度较大,很适合作为启发式教学的讨论话题。

四、总结

      总而言之,本书书名中的“新标准”,有两层含义。一是指本书所有的讲述和程序都是严格遵循 C++标准的,而且提及了一些新C++标准的内容。第二层含义更为重要,指的是希望读者通过对本书的学习,对C++的掌握程度能够达到更高的标准,除了深入理解面向对象的程序设计外,还能够进行泛型程序设计并熟练使用STL --- 用现有的许多入门教材,是难以做到这一点的。

tag(s): C++
show comments · back · home
Edit with markdown