图书前言

前言

一、 编写背景

进入中国出版网www.chinapub.com,以C++为关键字搜索书名,竟然可搜索出900多种图书; 从清华大学出版社网站www.tup.tsinghua.edu.cn 中也能搜索出200种以上的C++书籍。这一方面说明,C++作为一个程序设计语言,以它“是一种更好的C语言”与“支持面向对象”的特点,深受广大编程者的喜爱。另一方面,关于C++有这么多书籍还表明,没有哪一种或少数几种C++书籍就能满足所有学习者的需要。

C++书籍从使用方面可分为两大类: 使用手册类与教材类。使用手册类以介绍具体的编译器的使用与编程为内容,如Visual C++Windows编程、Borland C++Builder 编程等,供学习与使用具体编译器的编程者使用。教材则供课堂教学或初学者使用。目前国内各种C++教材可以分为两大类: 翻译教材与自编教材。翻译教材的原教材一般有很好的背景,有的是国外名牌大学的教材,有的是国外名家撰写的畅销教材。这些教材从内容上引入了C++语言的最新标准,在知识点的叙述上准确深入,各书的举例有自己的特色。但它们的一个共同的突出问题就是篇幅太长,不适合学生在有限的课堂教学学时的情况下学习。有的书翻译不通顺甚至个别地方有翻译错误,还会给读者带来额外的理解困难。

国内的教材一般以国外的翻译教材为母本,有内容紧凑、语言通顺的优点。但许多国内教材是国外教材的简单拼凑,连例子也从国外教材照搬,很少有自己的深入理解和创造。这些教材突出的缺点是对C++语言规则没有进行深入的分析,对示例程序缺乏相应的解释,学生学习时不容易从实质上掌握语言。很多作者自己很少或根本没有使用C++进行编程开发,对在编程中经常使用的方法以及易犯的错误没有突出讲解。相反,对不常用的方法与只有在考题中出现的错误反复讲述,学生学完后感觉很好,可一旦动手编程,有时竟连一个学生成绩管理和单向链表的应用程序都写得错误百出。

编写本书的初衷是试图吸收国内外教材两方面的优点,弥补其不足。实际的效果有待读者检验。

二、 本书的特色

本书的特色体现在以下3个方面。

1. 体系结构合理安排

学习C++并不是一定要学习面向对象的编程,使用C++也并不是一定要使用其面向对象的特性。因此,全书总体结构分为两大部分: 面向过程的程序设计、面向对象的程序设计两部分内容相对独立。第1~6章完整介绍结构化的面向过程的程序设计,读者学完第1~6章再加上第11章的部分内容后,完全可以编写完成各种功能的程序。

各章的组织结构以引言开头,导出一章的内容,然后指出学习目标; 进入一章主体时先介绍概念、语法,然后举例,对常犯的错误进行了强调指出; 一章的内容讲述完成后,用精炼的语言总结该章的知识要点; 在习题部分提供了多种题型的习题,除供学生课堂练习以及课后巩固所学知识外,也为教师出考题提供了素材,为学生备考提供了模拟题目。

2. 强调内存的概念

学习C++,不仅在于学习语言本身的语法规则,更在于掌握计算机如何工作,程序在计算机中如何运行等知识。特别是要了解C++语言程序如何通过编译后调入内存、在内存中如何分配各种数据、程序在运行时如何对内存的控制等内容。对内存概念掌握的重要性对于程序员来讲,就像城市的地图对于一个出租车司机一样,出租车司机可以仅凭脑海里的零碎道路的印象开车,但远不及脑海里有一张城市地图的轮廓效率高。本书从常量、变量在内存的存放、变量的赋值、函数的调用以及参数的传递、指针与数组的内存映像,到对象在内存中的存放,始终贯穿着内存的概念。

前言

C++语言程序设计教程(第二版)

3. 重视基本概念

对基本概念的叙述力求准确,讲解简明,深入浅出。C++中除了语法规则外,基本概念也是很重要的,对基本概念的理解有助于把握知识点的本质、进行灵活运用、避免错误。除了在章节的开头对概念进行叙述外,在每章小结中对概念进行了强调。全书的程序举例均尽量采用现实世界有意义的问题,有助于读者对概念的理解、记忆、运用。在全书中绘制了大量的图表,对知识点进行了直观描述。

三、 教学安排

本书可以供不同基础与需求的学习者使用,参考学时如表1所示。

表1参考学时表

各 章 内 容无C语言基础,

面向过程编程无C语言基础,

全面学习有C语言基础

第1章C++编程简介221

第2章数据类型与表达式641

第3章控制结构88

第4章函数10103

第5章构造数据类型16163

第6章C++程序的结构662

第7章类与对象1210

第8章继承与派生1210

第9章多态性1010

第10章类模板与STL编程86

第11章C++输入输出流与文件系统664

第12章string类字符串处理22

第13章异常处理22

总学时549854

四、 第二版所做的改进

本书第一版于2006年9月出版,取得了良好的教学效果。在此基础上,作者听取了诸多专家、同行和读者的意见,并结合自己的教学实践,在如下几个方面对第一版进行了改进。

(1) 加强了面向对象程序设计的思想及方法的介绍和应用,并将其融会贯穿到教材各章的改编中。

(2) 根据标准C++语言的要求,全面修订了所有实例、习题及其分析。

(3) 对C++程序设计中的知识点与若干难点,改进了讲解方式,力求与具体应用相结合,不单纯、枯燥的讲解语法,同时在体系结构上循序渐进,深入浅出,简洁自然,从而更有利于读者自学。

(4) 增加了STL编程,将类模板与STL紧密结合,在阐述泛型程序设计思想的基础上对STL容器、适配器、算法以及函数对象进行了较全面的分析和介绍。有利于进一步培养和强化面向对象程序设计的方法的理解和应用,为将来进一步深入学习MFC编程、Java程序设计打下良好基础。

(5) 增加和修订了一定数量的习题,进一步强化了对C++基本编程能力的培养。

五、 致谢

本书由沈显君博士负责编写,其中沈显君博士编写了第1、6、7、8、9、10章,杨进才教授编写了第5、11、12、13章,张勇博士编写了第2、3、4章。全书由沈显君博士统稿,杨进才教授审阅。

特别感谢在第一版的编写中提供了宝贵支持的刘蓉副教授。感谢王敬华副教授,魏开平副教授,他们对全书的风格、内容提供了无私的指导,对格式的编排等细节方面也提出了宝贵的意见。感谢徐函秋、徐欢、温柳英、李芳等同学在第一版的编写和教学实践中提供了许多改进的意见。在此一并表示感谢。感谢读者选择使用本书,由于本书作者水平有限,书中难免有错误、疏漏、不妥之处,恳请读者提出批评和修改意见,我们将不胜感激。

编者

2009年8月