新書推薦:

《
东方看世界·极简法国史
》
售價:NT$
347.0

《
动物与人体的比较解剖书
》
售價:NT$
458.0

《
步行景观:作为审美实践的行走(艺术与社会译丛)
》
售價:NT$
286.0

《
北朝隋唐史论集
》
售價:NT$
1270.0

《
半小时漫画中国史(全5册)
》
售價:NT$
1273.0

《
7步吃透商业提案写作
》
售價:NT$
306.0

《
大国谍影
》
售價:NT$
449.0

《
制造消费者
》
售價:NT$
230.0
|
編輯推薦: |
·在设计自定义类之前介绍基本的编程概念和技术,同时侧重于解决问题,使用了数学、科学、商业、金融、游戏等许多不同领域的示例。 ·CodeAnimation和LiveExample引导读者逐行阅读代码,通过填写缺失的代码,读者能够在实时编码环境中得到实时反馈,有助于在实践中巩固所学。 ·算法动画、交互式流程图和UML图向读者展示算法的每个步骤,以可视化和交互方式展示算法如何工作。 ·新版反映了近期的编程趋势,比如云存储和触摸屏,而且所有的代码都兼容C++17。
|
內容簡介: |
本书是关于C++程序设计的经典教材,分为基础篇和进阶篇,主要介绍程序设计基础、面向对象程序设计和数据结构。本书采用“基础优先,问题驱动”的教学方式,在设计自定义类之前介绍基本的编程概念和技术,同时侧重于解决问题而非语法,通过不同领域的示例说明相关概念。本书引导读者循序渐进地学习,从基本的编程技术到面向对象编程,从简单的数据类型到经典的结构,为读者构建了友好的学习曲线。本书可作为高等院校计算机相关专业程序设计课程的教材,也可作为C++语言及编程爱好者的参考书。
|
關於作者: |
梁勇(Y. Daniel Liang) 佐治亚南方大学计算机科学荣休教授。之前曾是普渡大学计算机科学系副教授,并曾两次获得普渡大学卓越研究奖。他撰写了30多本著作,其中程序设计类教材在世界各地得到广泛使用。
|
目錄:
|
目 录
Introduction to C++ Programming and Data Structures, Fifth Edition
第1章 计算机、程序和C++概述 1
1.1 简介 1
1.2 什么是计算机 2
1.2.1 中央处理器 3
1.2.2 比特和字节 4
1.2.3 内存 5
1.2.4 存储设备 6
1.2.5 输入和输出设备 8
1.2.6 通信设备 9
1.3 程序设计语言 10
1.3.1 机器语言 10
1.3.2 汇编语言 10
1.3.3 高级语言 11
1.4 操作系统 15
1.4.1 控制和监视系统活动 16
1.4.2 分配和派发系统资源 16
1.4.3 调度操作 17
1.5 C++的历史 18
1.6 一个简单的C++程序 19
1.7 C++程序开发周期 26
1.8 程序设计风格和文档 29
1.8.1 适当的注释和注释风格 30
1.8.2 适当的缩进和间距 30
1.8.3 块样式 30
1.9 程序设计错误 31
1.9.1 语法错误 32
1.9.2 运行时错误 33
1.9.3 逻辑错误 34
1.9.4 常见错误 35
关键术语 37
章节总结 38
编程练习 39
第2章 程序设计初步 43
2.1 简介 44
2.2 编写一个简单程序 44
2.3 从键盘读取输入 48
2.4 标识符 52
2.5 变量 53
2.6 赋值语句和赋值表达式 56
2.7 命名常量 58
2.8 数值数据类型和操作 61
2.8.1 数值字面量 66
2.8.2 数值运算符 67
2.8.3 指数运算 72
2.9 计算表达式和运算符优先级 73
2.10 案例研究:显示当前时间 75
2.11 复合赋值运算符 78
2.12 递增和递减运算符 80
2.13 数值类型转换 84
2.14 软件开发过程 88
2.15 案例研究:计算货币单位 93
2.16 常见错误 97
关键术语 99
章节总结 100
编程练习 101
第3章 选择 114
3.1 简介 115
3.2 bool数据类型 115
3.3 if语句 118
3.4 双分支if-else语句 121
3.5 嵌套if和多分支if-else
语句 124
3.6 常见错误和陷阱 128
3.7 案例研究:计算体重指数 134
3.8 案例研究:计算税费 137
3.9 生成随机数 141
3.10 逻辑运算符 144
3.11 案例研究:确定闰年 151
3.12 案例研究:彩票 152
3.13 switch语句 155
3.14 条件运算符 160
3.15 运算符优先级和结合律 162
3.16 调试 164
关键术语 166
章节总结 166
编程练习 167
第4章 数学函数、字符和
字符串 183
4.1 简介 184
4.2 数学函数 184
4.2.1 三角函数 184
4.2.2 指数函数 186
4.2.3 取整函数 188
4.2.4 min、max和abs函数 189
4.2.5 案例研究:计算三角形的
角度 190
4.3 字符数据类型和运算 192
4.3.1 ASCII码 192
4.3.2 从键盘读取字符 194
4.3.3 特殊字符的转义序列 194
4.3.4 char型数据和数值型数据
之间的转换 196
4.3.5 字符的比较和检测 199
4.4 案例研究:生成随机字符 201
4.5 案例研究:猜生日 204
4.6 字符函数 206
4.7 案例研究:将十六进制数转换为
十进制数 209
4.8 string类型 212
4.8.1 字符串索引和下标运算符 214
4.8.2 连接字符串 215
4.8.3 比较字符串 216
4.8.4 读取字符串 217
4.9 案例研究:使用字符串修改彩票
程序 222
4.10 格式化控制台输出 224
4.10.1 setprecision(n)
操纵器 227
4.10.2 fixed操纵器 228
4.10.3 showpoint操纵器 229
4.10.4 setw(width)操纵器 229
4.10.5 left和right操纵器 231
4.11 简单文件输入和输出 235
4.11.1 写入文件 235
4.11.2 从文件中读取 237
关键术语 239
章节总结 240
编程练习 240
第5章 循环 252
5.1 简介 252
5.2 while循环 253
5.3 案例研究:猜数字 259
5.4 循环设计策略 264
5.5 使用用户确认或哨兵值控制
循环 266
5.6 输入和输出重定向以及从文件中
读取所有数据 270
5.7 do-while循环 272
5.8 for循环 277
5.9 使用哪个循环 282
5.10 嵌套循环 286
5.11 最小化数值误差 290
5.12 案例研究 291
5.12.1 案例研究:求最大公约数 291
5.12.2 案例研究:预测未来学费 294
5.12.3 案例研究:将十进制数
转换为十六进制数 296
5.13 关键字break和continue 299
5.14 案例研究:检查回文 306
5.15 案例研究:显示质数 309
关键术语 312
章节总结 313
编程练习 313
第6章 函数 332
6.1 简介 332
6.2 定义函数 334
6.3 调用函数 337
6.4 void函数 341
6.5 通过值传递参数 348
6.6 模块化代码 349
6.7 重载函数 355
6.8 函数原型 360
6.9 默认参数 362
6.10 内联函数 364
6.11 局部、全局和静态局部变量 367
6.11.1 for循环中的变量作用域 370
6.11.2 静态局部变量 371
6.12 通过引用传递参数 374
6.13 常量引用参数 386
6.14 案例研究:将十六进制数转换
为十进制数 386
6.15 函数抽象和逐步细化 390
6.15.1 自顶向下设计 392
6.15.2 自顶向下或自底向上实现 394
6.15.3 实现细节 394
6.15.4 逐步细化的好处 397
关键术语 398
章节总结 398
编程练习 400
第7章 一维数组和C字符串 419
7.1 简介 420
7.2 数组基础知识 420
7.2.1 声明数组 420
7.2.2 访问数组元素 422
7.2.3 数组初始化语句 424
7.2.4 处理数组 425
7.2.5 foreach循环 429
7.3 案例研究:分析数字 431
7.4 案例研究:一副牌 434
7.5 将数组传递给函数 437
7.6 防止函数中数组参数的更改 442
7.7 从函数返回数组 444
7.8 案例研究:统计每个字母的出现
次数 446
7.9 查找数组 449
7.9.1 线性查找法 450
7.9.2 二分查找法 451
7.10 数组排序 456
7.11 C字符串 460
7.11.1 C字符串的输入和输出 461
7.11.2 C字符串函数 462
7.11.3 用strcpy和strncpy
复制字符串 465
7.11.4 用strcat和strncat
连接字符串 466
7.11.5 比较字符串 467
7.11.6 字符串与C字符串相互
转换 469
7.11.7 将字符串转换为数字 469
7.12 将数字转换为字符串 470
关键术语 471
章节总结 471
编程练习 472
第8章 多维数组 492
8.1 简介 492
8.2 声明二维数组 493
8.3 处理二维数组 496
8.4 将二维数组传递给函数 499
8.5 案例研究:对选择题测验评分 502
8.6 案例研究:寻找最近点对 505
8.7 案例研究:数独 508
8.8 多维数组 513
8.8.1 案例研究:每日温度和
湿度 514
8.8.2 案例研究:猜测生日 516
关键术语 519
章节总结 519
编程练习 519
第9章 对象和类 540
9.1 简介 540
9.2 为对象定义类 541
9.3 示例:定义类和创建对象 543
9.4 构造函数 548
9.5 构造和使用对象 549
9.6 将类定义与实现分离 553
9.7 防止多重包含 557
9.8 类中的内联函数 559
9.9 数据字段封装 560
9.10 变量作用域 564
9.11 类抽象和封装 566
关键术语 573
章节总结 574
编程练习 575
第10章 面向对象思维 581
10.1 简介 581
10.2 string类 582
10.2.1 构造字符串 582
10.2.2 追加字符串 583
10.2.3 字符串赋值 584
10.2.4 函数at、clear、erase、empty、back和front 586
10.2.5 函数length、size、capacity和c_str() 587
10.2.6 比较字符串 588
10.2.7 获取子字符串 589
10.2.8 在字符串中查找 590
10.2.9 插入和替换字符串 591
10.2.10 字符串运算符 593
10.2.11 用stringstream将
数字转换为字符串 596
10.2.12 拆分字符串 596
10.2.13 案例研究:替换
字符串 597
10.3 将对象传递给函数 599
10.4 对象数组 603
10.5 实例成员和静态成员 605
10.6 常量成员函数 612
10.7 面向对象的思想 616
10.8 类关系 622
10.8.1 关联 622
10.8.2 聚合和组合 623
10.9 案例研究:
StackOfIntegers类 626
10.10 构造函数初始化列表 629
10.11 类设计指南 634
10.11.1 内聚性 635
10.11.2 一致性 635
10.11.3 封装性 635
10.11.4 清晰性 635
10.11.5 完整性 636
10.11.6 实例与静态 636
关键术语 637
章节总结 637
编程练习 638
第11章 指针与动态内存管理 646
11.1 简介 647
11.2 指针基础 647
11.3 使用typedef关键字定义
同义类型 655
11.4 将const与指针一起使用 656
11.5 数组和指针 658
11.6 在函数调用中传递指针参数 663
11.7 从函数返回指针 667
11.8 有用的数组函数 669
11.9 动态持久内存分配 672
11.10 创建和访问动态对象 678
11.11 this指针 680
11.12 析构函数 681
11.13 案例研究:Course类 686
11.14 复制构造函数 690
11.15 自定义复制构造函数 694
关键术语 698
章
|
內容試閱:
|
前 言
Introduction to C++ Programming and Data Structures, Fifth Edition
教学特色
每章的开头列出学习目标,明确学生应该从这一章中学到什么。这份简洁的列表有助于学生在完成学习后,判断自己是否达到了学习目标。
要点提示强调了每节中所涵盖的重要概念。
CodeAnimation模拟程序的执行,它引导学生逐行浏览代码、要求学生提供输入并立即展示这些输入对程序产生的影响。
LiveExample让学生能够在类似于IDE的环境中练习编码。给学生提供填写缺失代码的机会,要求他们编译和运行程序,提交内容后能立即获得反馈。LiveExample引导学生逐步接近正确答案,帮助他们坚持下去,并保持不断尝试的动力。
交互式流程图、算法动画和UML图可以用来提升解决问题和逻辑思维的能力,有助于理解操作流程,并在学生开始编码之前帮助他们可视化程序中正在发生的事情。
本版新增内容
本版在细节上进行了全面修订,旨在改善清晰度、呈现方式、内容、示例和练习。主要的改进包括:
更新1.2节,包括云存储和触摸屏的内容。
更新4.8.4节,讨论基于元组的输入与基于行的输入。
在C++17中不再支持异常说明符。因此,在第5版中删除了第4版的16.8节。对所有使用异常说明符的代码都进行了修订。
18.11节是全新的。它介绍了三种字符串匹配算法:暴力法、Boyer-Moore算法和KMP算法。
21.11节也是全新的。它介绍了使用霍夫曼编码进行数据压缩的方法。
附录I是全新的。它给出了大O、大Omega和大Theta表示法的精确数学定义。
灵活的章节顺序
可采用灵活的章节顺序阅读本版,如下图所示:
补充说明
由于影印版未获得英文版Revel版本(互动式数字教材)的授权,因此大量视频和动画内容无法通过纸质版本有效呈现。我们在书中提供了互动内容的访问地址,读者可通过以下二维码获得完整的互动内容链接列表。
|
|