C++程序设计教程 第3版
作者 : 皮德常 编著
出版日期 : 2021-10-26
ISBN : 978-7-111-69421-2
适用人群 : 适合作为高等院校计算机、软件工程、物联网工程专业本科生程序设计课程的教材,同时可供软件开发人员、广大科技工作者参考。
定价 : 69.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 352
开本 : 16
原书名 :
原出版社:
属性分类: 教材
包含CD : 无CD
绝版 :
图书简介

以“程序设计”为主线,从材料取舍、内容表达方式、实例选取到习题和课程设计配置都以读者掌握“程序设计”的基本概念、方法和技巧为重点,并融入了作者多年的C++教学经验和软件工程实践经验。

图书特色

图书前言

本书前两版出版以来一直受到众多读者喜爱,许多读者和授课教师纷纷与作者联系,作者受益良多,深表感谢。针对初学者和自学者的需求,本版结合读者反馈和作者近几年的科研成果,采用Visual Studio 2015对C++的知识点进行了全面的修订。
本书的特点如下:
1)本书主要讲解C++程序设计的编程方法,这是计算机类专业学生的编程基础。
2)本书是作者教学经验的结晶。作者20年来一直从事程序设计方面的教学和科研工作,主讲C、C++、Java等程序设计课程,积累了丰富的教学经验。“从实践到理论,再从理论到实践,循序而渐进”是作者教学的心得体会,编写教材也不例外。作者深知学生的薄弱环节和学习特点,所以将自己的知识、授课方法和教学经验总结出来,以使更多的学生受益。
3)在内容安排上,本书尽量提前讲解文件操作这部分内容(许多书都是在最后讲解)。因为文件是很实用也是比较难学的,所以这种安排也为学生进行课程设计和实验做了铺垫。
4)在作业安排上,从易到难,环环相扣。作者在教学中发现,许多学生学过C++却不会编程。因此,本书设计了许多与实际有关的习题,并且它们彼此相关。
5)强调课程设计。C++课程应该有课程设计,我们在本书的最后给出了一个课程设计要求,希望学生能独立、认真完成。这对提高学生的编程能力、巩固学过的知识大有裨益。
6)力求语言通俗易懂。本书的编写目的是让学生通过自学或在教师的讲授下,能够运用C++语言的核心要素进行程序设计。因此,本书围绕着如何进行C++编程展开。为了便于学生学习,作者力求讲解通俗易懂,将复杂的概念采用浅显的语言描述,做到易学、易用、有趣,从而便于学生理解和掌握C++编程思想与方法。
7)强调程序的可读性。本书中的程序全部采用统一的程序设计风格。例如,类名、函数名和变量名的定义做到“见名知义”;采用缩排格式组织程序代码并配以尽可能多的注释。希望学生能够模仿这种程序设计风格。
8)包含大量的程序示例,并给出运行结果。凡是程序开头带有编号的程序,都是完整的程序,可以直接在计算机上编译运行。
9)采用醒目的标记来显示知识点。这些标记是注意、警告和思考等,它们穿插在正文中,帮助学生尽快找到重要的信息。
注意:值得关注的地方,也是作者在教学中发现学生容易搞错的知识点。
警告:这是容易混淆的知识点。
思考:提出问题,引导学生思考,以培养思考能力。
本书的电子教案采用PowerPoint制作,可以在讲课时用多媒体投影演示,这样可部分取代板书。教师不仅可以使用本教案,还可以方便地修改和重新组织其中的内容以适应自己的教学需要。使用本教案可以减少教师备课时编写教案的工作量,以及因板书所花费的时间和精力,从而提高单位课时内的知识含量。
我们向使用本书的教师免费提供电子教案,需要本教案的教师可以直接与机械工业出版社华章分社联系。
在编写本书的过程中,作者得到了许多同事的帮助,包括王珊珊、张志航、郑洪源、陈丹等,他们提出了许多宝贵的意见和建议。作者的研究生马程、张玉、方卓然、张伟、王强、程冉、李文等人,为本书做了大量的程序验证工作。在教学的过程中,作者也受到了许多学生提出的问题的启发,这也使作者在写书的过程中注意有的放矢。
感谢您选择本书,欢迎您对本书的内容提出批评和修改建议,作者将不胜感激。作者的电子邮件地址:dc.pi@163.com。

皮德常
2021年10月

上架指导

计算机\程序设计

封底文字

本书是中国大学MOOC“面向对象C++程序设计”国家精品课程的配套教材、“十三五”江苏省高等学校重点教材、江苏省高等学校精品教材。针对初学者和自学者的需求,结合读者的反馈和作者近几年的科研成果,本书第3版基于C++标准0x,采用Visual Studio 2015对C++的知识点进行了全面的修订。

本书特色:
内容充实,取材适中。涵盖了C++程序设计必要的基础知识,系统地介绍了C++程序设计的基本概念、方法和技术。而且,C++兼具面向过程和面向对象的程序设计特征,涉及很多的概念和语言机制,以满足初学者的需求为出发点,作者只选取了其中最实用的部分。
以教授程序设计的基本概念、方法和技巧为主线。除了引入基本概念外,主要介绍如何编写优质程序,还以“警告”“注意”“思考”“知识点”等醒目的形式开辟专栏讲授编程方法、技巧和经验。
在内容安排上,尽量提前讲解文件操作,以便读者尽早学习这部分既实用又比较难掌握的内容,为后续进行课程设计和实验做铺垫;在作业安排上,从易到难,环环相扣;强调课程设计。
力求语言通俗易懂,将复杂的概念采用浅显的语言描述,做到易学、易用、有趣,便于读者理解和掌握C++编程。
包含大量的程序示例,并给出了运行结果;书中的程序全部采用统一的程序设计风格,强调程序的可读性。

作者简介

皮德常 编著:皮德常,男,1971年11月生,博士,副教授,硕士生导师。于1994年、1997、2002年在南京航空航天大学获得学士、硕士和博士学位。近几年来,先后发表科研论文42篇,获南京航空航天大学教学优秀奖4次,教学观摩奖1次;主持和参与国家自然科学基金3项、江苏省自然科学基金和国家“863”计划各1项;先后获得省部级科技进步二等奖2次、三等奖2次;在清华大学出版社、国防工业出版社和机械工业出版社出版计算机专业书5本。

图书目录

前言
教学建议
第1章 C++程序设计基础 1
1.1 为什么要学习C++程序设计 1
1.2 简单的C++程序举例 2
1.3 注释方法 3
1.4 编程风格 3
1.5 C++程序的词法单位 3
1.5.1 C++程序中的字符 4
1.5.2 标识符 4
1.5.3 关键字 4
1.6 C++的基本数据类型 5
1.7 变量和常量 6
1.7.1 变量 6
1.7.2 文字常量 7
1.7.3 符号常量 8
1.7.4 常变量 9
1.8 运算符和表达式 9
1.8.1 算术运算符和算术表达式 9
1.8.2 初识运算符的优先级和结合性 9
1.8.3 赋值运算符和赋值表达式 10
1.8.4 自增、自减运算符 11
1.8.5 关系运算符和关系表达式 11
1.8.6 逻辑运算符和逻辑表达式 12
1.8.7 位运算符和位表达式 13
1.8.8 逗号运算符和逗号表达式 15
1.8.9 sizeof运算符 15
1.8.10 C++的运算符优先级和结合性 16
1.9 语句 16
1.10 类型转换 17
1.10.1 赋值时的类型转换 17
1.10.2 混合运算时的类型转换 18
1.10.3 强制类型转换 19
1.11 简单的输出和输入方法 19
1.11.1 cout对象和cin对象 19
1.11.2 格式化输出 22
1.11.3 采用函数成员实现格式化输出 24
1.11.4 对函数成员的初步讨论 26
1.11.5 指定输入域宽 26
1.11.6 读取一行 27
1.11.7 读取一个字符 27
1.11.8 读取字符时易出错的地方 28
1.12 枚举类型 29
1.12.1 枚举类型的定义 29
1.12.2 枚举类型的变量 29
1.12.3 枚举类型的应用 30
思考与练习 31
第2章 C++的流程控制 32
2.1 算法的基本概念和表示方法 32
2.1.1 算法的基本概念 32
2.1.2 算法的表示 32
2.1.3 算法的三种基本结构 33
2.2 选择结构程序设计 34
2.2.1 基本的if语句 34
2.2.2 嵌套的if语句 36
2.2.3 条件运算符 38
2.2.4 switch语句 39
2.3 循环结构程序设计 41
2.3.1 while循环 41
2.3.2 do-while循环 42
2.3.3 for循环 42
2.3.4 循环嵌套 44
2.3.5 break语句 45
2.3.6 continue语句 46
2.3.7 应该少用的goto语句 47
2.4 程序设计应用举例 47
思考与练习 51
第3章 函数 54
3.1 函数的定义和调用 54
3.1.1 概述 54
3.1.2 定义函数 54
3.1.3 调用函数 55
3.2 函数的声明 57
3.3 函数的参数传递和返回值 58
3.3.1 函数参数的传递方式 58
3.3.2 函数的返回值 59
3.4 局部变量和全局变量 61
3.4.1 内存存储区的布局 61
3.4.2 局部变量 62
3.4.3 全局变量 62
3.4.4 局部变量与栈 63
3.5 变量的存储类别 64
3.5.1 auto修饰的变量 64
3.5.2 register修饰的变量 65
3.5.3 static修饰的变量 65
3.5.4 extern修饰的变量 66
3.6 默认参数 68
3.7 引用做参数 70
3.8 函数重载 71
3.9 函数模板 74
3.9.1 从函数重载到函数模板 74
3.9.2 定义函数模板的方法 77
3.9.3 函数模板重载 77
3.10 内联函数 78
3.11 函数的递归调用 79
3.12 函数的调试方法 84
3.13 编译预处理 85
3.13.1 宏定义 85
3.13.2 文件包含 87
3.13.3 条件编译 87
思考与练习 89
第4章 数组 92
4.1 一维数组 92
4.1.1 一维数组的定义和应用 92
4.1.2 引用一维数组元素 93
4.1.3 数组无越界检查 93
4.1.4 数组初始化 93
4.2 多维数组 95
4.2.1 二维数组的定义 95
4.2.2 二维数组的初始化 95
4.2.3 引用二维数组元素 96
4.3 数组做函数参数 97
4.3.1 数组元素做函数参数 97
4.3.2 数组名做函数参数 98
4.4 常用算法举例 99
4.5 字符数组与字符串 110
4.5.1 字符数组的定义 110
4.5.2 字符数组的初始化 111
4.5.3 字符串 111
4.5.4 字符数组的输入和输出 112
4.6 处理字符和字符串 113
4.6.1 处理字符的宏 113
4.6.2 处理C风格字符串的函数 114
4.6.3 自定义字符串处理函数 117
思考与练习 119
第5章 指针 120
5.1 指针的概念 120
5.2 指针变量 120
5.2.1 定义指针变量 120
5.2.2 运算符&和* 121
5.2.3 引用指针变量 122
5.3 指针与数组 124
5.3.1 指向数组元素的指针 124
5.3.2 指针的运算 125
5.3.3 二维数组与指针 127
5.4 指针与函数 131
5.4.1 基本类型的变量做函数形参 131
5.4.2 引用做函数形参 132
5.4.3 指针变量做函数形参 133
5.4.4 返回指针的函数 135
5.4.5 指向函数的指针 137
5.5 指针数组与指向指针的指针 138
5.5.1 指针数组 138
5.5.2 main函数的参数 141
5.5.3 指向指针的指针 141
5.5.4 再次讨论main函数的参数 142
5.6 内存的动态分配和释放 143
5.7 void和const修饰指针变量 146
5.7.1 void修饰指针 146
5.7.2 const修饰指针 147
5.8 对容易混淆概念的总结 148
思考与练习 150
第6章 结构体与链表 153
6.1 抽象数据类型 153
6.2 结构体的定义及应用 153
6.2.1 定义结构体类型 153
6.2.2 定义结构体类型的变量 154
6.2.3 初始化结构体类型的变量 156
6.2.4 结构体类型变量及其成员的引用 156
6.2.5 结构体数组与指针 159
6.3 用typedef定义类型 161
6.4 单向链表 162
6.4.1 链表的概念 162
6.4.2 带头结点的单向链表常用算法 164
思考与练习 169
第7章 文件操作 170
7.1 文件的基本概念 170
7.1.1 文件命名的原则 170
7.1.2 使用文件的基本过程 170
7.1.3 文件流类型 170
7.2 打开文件和关闭文件 171
7.2.1 打开文件 171
7.2.2 文件的打开模式 172
7.2.3 定义流对象时打开文件 173
7.2.4 测试文件打开是否失败 173
7.2.5 关闭文件 174
7.3 采用流操作符读写文件 174
7.3.1 采用“<<”操作符写文件 174
7.3.2 格式化输出在写文件中的应用 176
7.3.3 采用“>>”操作符从文件读数据 177
7.3.4 检测文件结束 178
7.4 流对象做参数 179
7.5 出错检测 181
7.6 采用函数成员读写文件 182
7.6.1 采用“>>”操作符读文件的缺陷 183
7.6.2 采用函数getline读文件 183
7.6.3 采用函数get读文件 185
7.6.4 采用函数put写文件 186
7.7 多文件操作 186
7.8 二进制文件 188
7.8.1 二进制文件的操作 188
7.8.2 读写结构体记录 189
7.9 随机访问文件 192
7.9.1 顺序访问文件的缺陷 192
7.9.2 定位函数seekp和seekg 192
7.9.3 返回位置函数tellp和tellg 195
7.10 输入/输出二进制文件综合举例 196
思考与练习 199
第8章 类的基础部分 201
8.1 面向过程程序设计与面向对象程序设计的区别 201
8.1.1 面向过程程序设计的缺陷 201
8.1.2 面向对象程序设计的基本思想 201
8.2 类的基本概念 203
8.3 定义函数成员 205
8.4 定义对象 206
8.4.1 访问对象的成员 206
8.4.2 指向对象的指针 206
8.4.3 引入私有成员的原因 208
8.5 类的多文件组织 208
8.6 私有函数成员的作用 210
8.7 内联函数 211
8.8 构造函数和析构函数 212
8.8.1 构造函数 213
8.8.2 析构函数 215
8.8.3 带参构造函数 216
8.8.4 构造函数应用举例——输入有效的对象 218
8.8.5 重载构造函数 220
8.8.6 默认构造函数的表现形式 221
8.9 对象数组 222
8.10 类的应用举例 225
8.11 抽象数组类型 229
8.11.1 创建抽象数组类型 229
8.11.2 扩充抽象数组类型 231
思考与练习 235
第9章 类的高级部分 236
9.1 静态成员 236
9.1.1 静态数据成员 236
9.1.2 静态函数成员 239
9.2 友元函数 241
9.2.1 外部函数作为类的友元 241
9.2.2 类的成员函数作为另一个类的友元 242
9.2.3 一个类作为另一个类的友元 245
9.3 对象赋值问题 246
9.4 拷贝构造函数 247
9.4.1 默认的拷贝构造函数 249
9.4.2 调用拷贝构造函数的情况 249
9.5 运算符重载 252
9.5.1 重载赋值运算符 252
9.5.2 this指针 254
9.5.3 重载双目算术运算符 257
9.5.4 重载单目算术运算符 259
9.5.5 重载关系运算符 260
9.5.6 重载流运算符“<<”和“>>” 260
9.5.7 重载类型转换运算符 262
9.5.8 重载运算符“[ ]” 266
9.5.9 重载运算符时要注意的问题 270
9.5.10 运算符重载综合举例—自定义string类 271
9.6 对象组合 278
思考与练习 279
第10章 继承、多态和虚函数 281
10.1 继承 281
10.2 保护成员和类的访问 285
10.3 构造函数和析构函数 288
10.3.1 默认构造函数和析构函数的调用 288
10.3.2 向基类的构造函数传参数 289
10.3.3 初始化列表的作用 291
10.4 覆盖基类的函数成员 292
10.5 虚函数 295
10.6 纯虚函数和抽象类 298
10.6.1 纯虚函数 298
10.6.2 抽象类 298
10.6.3 指向基类的指针 301
10.7 多重继承 302
10.8 多继承 303
10.9 类模板 306
10.9.1 定义类模板的方法 306
10.9.2 定义类模板的对象 308
10.9.3 类模板与继承 310
思考与练习 312
第11章 异常处理 315
11.1 异常 315
11.1.1 抛出异常 315
11.1.2 处理异常 316
11.2 基于对象的异常处理 317
11.3 捕捉多种类型的异常 319
11.4 通过异常对象获取异常信息 321
11.5 再次抛出异常 322
思考与练习 323
第12章 数据库程序设计 324
12.1 数据库简介 324
12.2 SQL语句 324
12.2.1 定义表 325
12.2.2 查询 325
12.2.3 插入 325
12.2.4 删除 325
12.2.5 修改 326
12.3 数据库连接 326
12.3.1 创建数据表 326
12.3.2 配置Visual Studio 2015相关环境 326
12.4 数据库编程中的基本操作 329
12.4.1 数据库编程的基本过程 329
12.4.2 数据库查询 329
12.4.3 插入记录 331
12.4.4 修改记录 333
12.4.5 删除记录 335
思考与练习 337
课程设计 338
参考文献 342

教学资源推荐
作者: 施霞萍 张欢欢 王瑾德 马可幸 编著
作者: [美]雷蒙德·盖拉多(Raymond Gallardo) 斯科特·霍梅尔(Scott Hommel) 索娅·坎南(Sowmya Kannan) 琼尼·戈登(Joni Gordon) 沙伦·比奥卡·扎卡沃(Sharon Biocca Zakhour)著
作者: (美)H.M.Deitel
参考读物推荐
作者: Ted Husted
作者: [美]约书亚·伍德(Joshua Wood),[美]布赖恩·坦努斯(Brian Tannous) 著
作者: [罗]马里乌斯·班西拉(Marius Bancila) 著