前言
C++语言是优秀的计算机程序设计语言,它的功能相当强大。我们编写这本书的目的是,为没有任何程序设计基础的理工科大学生提供一本适用教材,使他们掌握从理论到实践都要求很高的C++语言。
一门课程的设置应该放在整个教学培养计划中统筹考虑。我们的教学目标不是马上培养一个会使用某种语言(例如C++语言)的程序员,而是强调对程序设计语言的理解和应用,“计算机语言”的角色是第一位的。所以,在教材编写和组织教学的过程中,我们力图通过对基本语法现象的剖析,由浅入深地让学生理解、掌握语言规则的原理,懂得用计算机指令的模式去分析和求解问题,并在机器上实现简单的程序。至于深入的算法及大程序的组织讨论,将由相关的后续课程(例如,数据结构、算法分析、计算方法、软件工程等)完成。因此,对高级程序设计语言规则的理解和应用是本教材写作的立足点。
我们根据多年从事计算机程序设计教学的经验,按照学生学习的认知规律,精心构造整本教材的体系和叙述方式。原则是:循序渐进、难点分散、通俗而不肤浅。本教材以语法范畴和程序组织为脉络,清晰渐进。从字符、词汇、数据、表达式、语句,到函数、类,是语法范畴构成的基本脉络;在程序功能方面,则以组织数据和组织程序为另外一条基本脉络,并以渐进的、粒度扩大的方式逐步导入分析。
例如,数据的组织方式:基本数据类型—数组—结构—链表,体现如何利用基本数据类型根据需要组织数据;程序的组织方式:语句—函数—类,体现结构化思想和面向对象思想对程序不同的组织方式。
指针是C++语言的重要概念,是操作对象的有力工具。本书没有一般C语言、C++语言教材中专门的“指针”一章。我们从最简单的变量开始,建立对象的名和地址的概念,用对象的不同访问方式贯穿于各章节。从结构化程序设计到面向对象程序设计,采取了比较平滑的过渡。首先,在一开始介绍基本数据类型、程序流程控制、函数等结构化程序设计的基本知识时,就非正式地使用“对象”这个术语(从计算机程序的角度,任何占有存储空间的实体都是对象);继而,掌握结构到类的演变,给出对象的准确定义;进一步,展开介绍面向对象程序的几个基本特性,即封装、继承、多态和类属在C++语言中的实现方法。同时,我们在本书的阐述中体现一个思想:没有一种对所有问题都是最好的程序设计方法,对特定问题,选择合适的解决方案是程序员必备的素质。
本书之所以取名为《C++程序设计基础》,原因有二:第一,它不是一本C++语言手册,不可能包罗所有语法规则和特定版本提供的各种功能;第二,它没有涉及复杂的算法和工程化的面向对象分析设计方法。这两个问题与教材的定位相关。对第一个原因,我们认为学生在掌握了程序设计的基本概念和基本方法之后,可以通过语言平台(例如Visual C++)或者其他资料学习,拓展对语言功能的了解。我们在有关章节中,也做了类似的引导,例如,STL标准类库的介绍,这些内容提供给教师选择或学生自学。至于第二个原因,那些是计算机专业后续课程的教学内容。本书介绍的程序设计方法和使用到的算法都立足于基本概念和方法,所以,例程通常是简单和小规模的。
本书分别在2003 年、2006 年和2009 年出版了第1~3 版。目前修订的第4 版教材的例程以VC2010 为运行环境,全书分为上、下两册。上册在第3 版的基础上增加了位运算和利用位运算的集合实现。下册介绍VC++在.Net环境下的Windows应用程序设计。编写下册教材的原因是,学生在掌握了C++程序设计基本语法之后,希望能够设计一个Windows界面的完整的应用程序。
上册共分12章,主要内容包括:基本数据与表达式、程序控制结构、函数、数组、集合与结构、类与对象、运算符重载、继承、虚函数与多态性、模板、输入/输出流、异常处理。
本书配套的电子课件和习题解答,请登录华信教育资源网下载(http://www.hxedu.com.cn)。该电子课件由近3000张PPT幻灯片组成,以图形语言为设计理念,充分表达程序设计课程的教学特点。
本书可以作为高等学校计算机类、信息类、电类专业本科生高级语言程序设计课程教材,也可以作为教师、学生和C++语言爱好者的参考书。
为了节省版面,程序在不影响结构阅读的情况下,以比较紧凑的方式排版。例如,一对花括号“{”和“}”会出现在同一程序行中。
本书的编写过程,是作者不断向学生学习,向同行学习,向C++学习的过程。在此,对所有使用本书的教师、学生,以及热心向我们提出宝贵意见的读者致以诚挚的感谢!希望继续得到读者的支持和帮助。
编著者
2012年5月