本书是教育部普通高等教育“十一五”国家级规划教材,是根据教育部《关于进一步加强高等学校计算机基础教学的意见暨计算机基础课程教学基本要求》中有关“计算机程序设计”课程“教学基本要求”,由国家教学成果奖获得者及其所在的国家级计算机基础教学团队结合多年教学实践编写的教材。
全书共分8章,系统地介绍了计算机程序设计方法。主要内容包括程序的基本结构、数据类型、表达式、控制结构、函数、类和对象、文件等。全书以精讲多练为指导思想,紧扣最基本的教学要求,配以大量有代表性的例题和习题,在强调基本理论的同时,突出了实践环节。
本书可作为高等学校各专业程序设计课程教材或参考书,也可供自学使用。
与本书配套的电子资源可在国家级精品课程网站的“计算机程序设计”项目上下载,网址为http://programming.xjtu.edu.cn
计算机程序设计是高等学校在计算机基础教学中最为核心的一门课程。C/C++作为程序设计的教学语言已经成为主流。
本书作为程序设计的入门教科书,其目标是使学生掌握程序设计的基本技能和方法,能够编写、调试和运行实用、规范、可读性好的C/C++程序。本书起点“从零开始”,在内容组织上循序渐进,不要求学生有程序设计方面的知识。
1. 本书组织框架
为了便于教学和学习,做到条理清楚、逻辑分明,每章均按以下6个主题精心组织内容:
(1) 本章目标 明确了每一章的教学和学习目标。
(2) 基本内容 涵盖了程序设计在某一方面最重要的知识点和技能点。建议教师在课堂重点讲授,学生应细读该部分内容,认真领会掌握其精髓。
(3) 扩展阅读 和“基本内容”部分一起组成了每一章的主要教学内容。这部分内容通常都是“基本内容”的延伸和继续,由学生在课外时间自学。必须强调的是这一部分也很重要,不能省略。一般来说,教师应在授课时间中抽出5~10分钟对自学内容略作导引,以利于学生自学。
(4) 上机指导 介绍了Visual C++集成开发环境的使用方法,以及如何调试和运行应用程序的方法。强调编程实践是本书的重要特色。第1章的上机指导内容可以在授课时间内讲授,其他章的上机指导一般由学生自学。该部分也可以作为学生上机的实验指导书,辅导教师在带学生上机时应对这些内容进行现场辅导。
(5) 应用举例 提供了大量有代表性的例子,所有例题均与本章的内容相关,是教师课堂教学和学生上机练习的重要参考资料。
(6) 习题 每章均配有若干习题,供学生上机练习。“精讲多练”式教学方法的基本特点是上机时数较多,所以这部分的习题量较大,在上机时数不足的情况下可以酌情选做若干题目。所有习题均为程序设计题目,边学边练能够迅速提高学习者的编程能力。
2. 本书特色
(1) 采用“精讲多练”模式,非常适合于教学和自学。“精讲多练”是我们曾荣获国家级教学成果一等奖的计算机基础教学改革成果。实践证明,采用“精讲多练”模式进行计算机程序设计语言的教学组织,可以取得很好的教学效果。
(2) 内容选取科学,重点突出。为了使初学者能很快地掌握程序设计方法,作者在多年程序设计教学的基础上,紧扣教育部《关于进一步加强高校计算机基础教学的意见》中有关“计算机程序设计”课程“教学基本要求”(一般要求),参考了大量资料,分析整理出C/C++的核心内容,并由浅入深地进行详尽介绍,从而做到既压缩了篇幅,又突出了重点,使学生能够迅速理解语言的核心内容和方法。
(3) 基于能力培养模式,注重实践与理论结合。本书集知识讲解和实验指导为一体,以面向问题而非面向语法为指导思想,突出分析、解决问题的能力培养,能够切实提高学生的独立编程水平。全书配备了大量典型的例题和习题,这些例题都有完整的代码和步骤,所有代码均在Visual C++ 2008 (Visual C++ 9.0)和Visual C++ 6.0编译环境下调试通过。
(4) 配套资源丰富。作为国家级精品课程“计算机程序设计”的主讲教材,国家级精品课程网站(http://programming.xjtu.edu.cn)为本书提供了全方位、立体化、交互式的网络学习支持,读者可从该网站下载本书电子课件,查阅与本书相关的最新消息,同时该网站还提供其他教学辅助课件、全程教学录像、上机实验指导和示例程序源码、优秀学生作业、课程大纲、教学计划等资源。所有内容均免费开放,无须注册及密码。
3. 致谢
在本书的编写中,西安交通大学计算机教学实验中心冯博琴教授(博士生导师、首届国家级教学名师)对作者进行了多方指导,并由他审核了书稿,在此向冯老师表示深深的谢意。作者亦曾与顾刚、杨琦、赵英良、崔舒宁、朱丹军、杨振平、卫颜俊、张伟、姚普选、刘路放诸同事进行了多次讨论交流,受益匪浅,以上同事还提供了一些有价值的材料。同时,本书的编写还得到了西安交通大学专项经费支持,清华大学出版社也为作者提供了宝贵帮助,在此一并表示感谢。
教育部普通高等教育“十一五”国家级规划教材的荣誉,使作者在编写过程中如履薄冰,唯恐有负众望。但由于作者学识浅陋,书中难免有缺点、错误存在,希望读者批评指正。
罗建军2009年4月于西安交通大学计算机教学实验中心
第1章 程序的基本结构1
1.1 几个简单的程序1
1.2 程序的基本结构和要素5
1.2.1 程序的基本结构5
1.2.2 输入与输出5
1.2.3 注释6
1.2.4 标识符和关键字6
1.3 C/C++背景7
1.3.1 程序设计语言的发展7
1.3.2 从C到C++8
1.4 Visual C++集成开发环境8
1.4.1 Developer Studio窗口简介9
1.4.2 编辑、调试和运行程序10
应用举例14
习题16
第2章 数据类型与表达式17
2.1 数据类型17
2.2 常量和变量18
2.2.1 常量18
2.2.2 变量20
2.3 运算符与表达式22
2.3.1 算术运算符和算术表达式22
2.3.2 关系运算符和关系表达式24
2.3.3 逻辑运算符和逻辑表达式25
2.3.4 赋值运算符和赋值表达式26
2.4 常量修饰符26
2.5 强制类型转换运算符28
2.6 语法错误29
应用举例31
习题34
第3章 程序的控制结构35
3.1 基本控制结构35
3.2 选择结构36
3.3 循环结构39
3.3.1 while语句40
3.3.2 do-while语句40
3.3.3 for语句41
3.4 其他控制转移语句44
3.4.1 switch语句44
3.4.2 转向语句46
3.4.3 问号表达式48
3.5 运行错误48
应用举例49
习题55
第4章 数组和字符串57
4.1 数组57
4.1.1 一维数组57
4.1.2 二维数组59
4.2 字符数组62
4.2.1 字符数组的定义、初始化和输入与输出62
4.2.2 字符串处理函数64
4.3 字符串类66
4.4 基本调试方法69
应用举例70
习题75
第5章 函数77
5.1 概述77
5.2 函数的定义和调用77
5.2.1 函数的定义77
5.2.2 函数的调用79
5.2.3 函数声明80
5.3 函数间参数传递81
5.4 变量的作用域和生存期82
5.4.1 变量的作用域82
5.4.2 变量的生存期84
5.5 函数的嵌套和递归调用86
5.5.1 函数的嵌套86
5.5.2 递归调用87
5.6 带默认形参值的函数89
5.7 函数重载90
5.8 函数模板92
5.9 Visual C++的跟踪调试功能93
应用举例96
习题100
第6章 指针和引用102
6.1 指针102
6.1.1 地址102
6.1.2 指针的定义103
6.1.3 指针的初始化104
6.1.4 指针的使用105
6.1.5 函数的传址调用方式106
6.2 指针与数组107
6.2.1 指针与一维数组107
6.2.2 指针与字符串109
6.3 引用110
6.3.1 引用的概念110
6.3.2 函数的引用调用方式111
6.4 动态存储分配113
6.5 自定义数据类型115
6.5.1 结构体类型115
6.5.2 枚举类型117
6.6 注释号在调试中的作用119
6.7 条件编译120
应用举例121
习题125
第7章 类与对象126
7.1 面向对象程序设计概述126
7.2 类与对象127
7.2.1 类的定义127
7.2.2 成员函数129
7.2.3 对象的使用130
7.2.4 构造函数与析构函数132
7.3 继承135
7.3.1 派生类的定义135
7.3.2 派生类的继承方式和访问属性136
7.3.3 派生类的构造函数和析构函数138
7.4 多态140
7.4.1 运算符重载140
7.4.2 虚函数142
7.5 类模板144
7.6 使用ClassView标签145
应用举例147
习题153
第8章 文件与数据输入输出154
8.1 输入输出与标准库154
8.2 标准输入流155
8.3 标准输出流157
8.4 文件160
8.4.1 文件和流161
8.4.2 文件的打开和关闭161
8.4.3 文件的读写163
8.5 二进制文件166
8.5 Visual C++的帮助功能168
应用举例169
习题172
附录A ASCII码表173
附录B 运算符的优先级别和结合方向175
附录C Visual C++2008使用指南177
参考文献184