本书从程序设计的一般过程与方法出发,以C++语言为媒介,重点讲述结构化程序设计与面向对象程序设计的基础知识。本书集算法分析与设计、面向对象分析与设计、软件工程基础、C++语言编程等多方面知识于一身,详细分析了产生相关理论与技术的起因,力求使读者不但知其然,而且知其所以然,因此本书适合作为程序设计的基础教程。
在编著风格上,本书从分析人类解决问题的思维过程为开端,介绍计算机的问题求解过程和方式;从人类认识世界的规律和方法人手,讲解面向对象技术理论和方法;通过对比,使读者加深对所学知识的理解和掌握。
本书是在作者多年教学工作的基础上,结合国内外多部优秀教材,通过深入分析、提炼和加工而成,适合作为计算机及相关专业的教材,也可供从事软件开发和应用的广大科技人员参考。
第1章 程序设计概论
1.1 问题求解
1.2 程序设计语言
1.3 程序设计范例的演化
习题
第2章 算法设计基础
2.1 算法的描述
2.2 结构化算法设计初步
2.3 算法的计算复杂性
2.4 常用算法设计策略
习题
第3章 基本数据类型
3.1 数据对象
3.2 基本数据类型
3.3 变量与常量
3.4 指针类型
3.5 引用类型
3.6 类型的意义
习题
第4章 操作及其控制
4.1 基本操作与运算符
4.2 表达式
4.3 语句
4.4 预处理指令
习题
第5章 函数与数据控制
5.1 函数定义与说明
5.2 数据控制
5.3 函数的顺序控制
5.4 相关的其他语法
5.5 常用系统函数
习题
第6章 构造类型
6.1 数组类型
6.2 枚举类型
6.3 结构类型
6.4 结构化数据
6.5 抽象数据类型
6.6 自定义类型
习题
第7章 结构化算法的实现
7.1 基本控制结构的C++实现
7.2 子算法设计与C++实现
7.3 递归与迭代
习题
第8章 程序开发过程
8.1 软件开发方法概述
8.2 软件设计
8.3 软件编码
8.4 软件测试与调试
8.5 程序运行效率
习题
第9章 面向对象程序设计
9.1 面向对象方法学
9.2 基本概念
9.3 面向对象分析
9.4 面向对象设计
习题
第10章 类与对象的实现
10.1 C++中的类
10.2 对象及其成员的使用
10.3 类的特殊成员
习题
第11章 类间关系的实现
11.1 一般—特殊关系的实现
11.2 多态性与虚函数
11.3 整体一部分关系的实现
11.4 关联关系的实现
11.5 关于类层次的总结
习题
第12章 面向对象程序设计的其他技术
12.1 运算符重载
12.2 流类库
12.3 模板
习题
附录A Microsoft C++的保留字
附录B C++中的基本数据类型
附录C 扩展ASCII字符集
附录D C++的运算符
词汇索引
参考文献
坐在计算机前,挥洒自如地驰骋于电脑世界,一行行程序在自己手下源源不断地流出,这是一些初学编程者的美好憧憬。然而,在学习了程序设计语言的具体语法后,真正动起手来编写程序时,往往会觉得一筹莫展、无所适从;在遇到一种新型编程语言时,即便是已经掌握了某些编程语言,学起来也常常会感到举步维艰,没有体会到已有的知识积累给学习新语言带来的便利。为什么会这样?原因在于没有掌握程序设计的一般过程,没有深入了解通用程序设计语言的本质规律。
通用程序设计语言是与人类自然语言具有一定程度相似性的人造语言,使用通用程序设计语言进行程序设计,并不能简单地等价于人们所常说的“编程序”。程序设计是一个过程,通常分为3个阶段:算法分析与设计、程序编写与调试、程序测试。正像人们利用自然语言书写文章一样,与此3个阶段相对应的是构思、起草与修改、审阅。不同阶段的任务是相对独立的,如果对此没有深入的了解,就很容易将它们混为一谈。在缺乏对问题深入、全面分析的情况下,就匆匆动手编写程序,自然就会像没有经过构思而书写出来的文章一样。我们编写本书的目的,就在于使读者通过本课程的学习,从刻意地按照程序设计的准则编写程序,到自然而然地遵从程序设计准则从事程序设计。为实现这个目的,算法分析和设计自然成为本课程的主要学习任务之一。
程序设计归根到底是要使用程序设计语言将问题的解题过程描述出来,因此学习程序设计语言是本课程的另一个重要任务。本书虽然以C++语言为背景介绍命令式程序设计语言的相关知识,但是读者应该注意到,现有的通用程序设计语言的语法和风格可能迥异,但无论哪一种语言,都是以数据(类型)、操作(运算)、(操作)顺序控制和数据控制为基本内容,不同的语言都以不同的格式对这4个方面提供不同的支持,因此读者在学习本书的具体内容时,可以不管语言的具体表述格式,而是深入学习和理解这4个方面的实质,这会为学习其他程序设计语言带来便利。
与许多其他同类教材不同的是,本书强调软件开发过程的重要性,为读者介绍了有关软件开发模型与软件测试的基本原理和技术。现代软件开发多为集体合作,在合作过程中每一个编程者所编写程序的规范性、正确性和可靠性非常重要,在学习程序设计之初就了解程序设计的规范过程,对于培养将来参与大型软件开发所需要的分工合作精神十分重要。
全书分为3个部分:第一部分包括第1章和第2章,讲述程序设计的基本概念和思想,读者在学习过程中应该以了解和掌握结构化算法设计为重点;第二部分包括第3章至第8章,以C++语言中的非面向对象语法为例,讲述一般程序设计语言所具有的基本内容:数据(类型)、操作、(操作)顺序控制、数据控制,同时重点介绍了如何进行结构化程序设计及软件开发的一般过程,对于这部分内容的学习,读者应该抛却具体的语言,从最一般的观点(通过程序)理解算法结构与解题过程描述;第三部分由第9章至第12章组成,重点介绍面向对象程序开发技术的基本方法,包括面向对象分析与设计的基本思想和主要步骤,以及C十十中的面向对象特征的语法,使读者了解和掌握人类认知的一般规律,以及如何通过适当的步骤,采用面向对象技术和面向对象语言的基本语法,将自身对客观事物的认识描述出来。
本教材的内容从简到难,覆盖面广,有些内容涉及比较深入的知识(标题中带有*号),教师在使用本教材时,应该根据学生及教学的具体情况对内容进行适当裁剪。总之,学习的重点应该放在算法和程序结构的设计,注重以程序设计语言的习惯和方式表述问题的解决方案,而不在于具体语言的语法细节。
本书所有例题和习题中的程序都已在WindowsXP环境Visual C++ 6.0编译系统下运行通过,读者在学习时选择Visual C++ 5.0以上的版本即可。
本书是在多年教学基础上编写的,适合作为计算机及其相关专业本科教学用书,也可用作其他专业的计算机教学参考书。对于有志深入学习程序设计的广大电脑爱好者,本书也是一个好的选择。书中所用到的部分素材来源于教学过程中的积累和其他中外文教材、资料,由于无法在此一一列举,现谨对这些教材和资料的作者表示衷心的感谢。在教材编写过程中,对于吉林大学张长海教授及编委会成员给予的关心和指导以及清华大学出版社所给予的大力支持,作者在此表示最衷心的感谢!恳请各位专家不吝赐教。