Introduction to programming with C++

副标题:无

作   者:(美)Y. Daniel Liang著;王刚,刘晓光,刘璟译

分类号:

ISBN:9787111240174

微信扫一扫,移动浏览光盘

简介

  本书采用“基础先行的方法”,首先逐步介绍基础的程序设计概念,然后讲授面向对象程序设计方法,最后介绍如何利用面向对象方法构建具有错误处理、输入输出和复杂数据结构的有趣的应用程序。本书分为三部分:第一部分介绍基础程序设计方法,包括基本数据类型和运算、分支语句、循环、函数、数组、指针和c字符串以及递归等内容;第二部分介绍面向对象程序设计方法,主要包括对象和类的基本概念、对象和类的深入内容、继承和多态、文件输入和输出、运算符重载及异常处理等内容;第三部分介绍了数据结构方法的基础知识,包括模板、链表、栈、队列、树、堆、优先队列、算法效率、排序算法、stl容器、stl算法等内容。.    本书可以作为计算机及相关专业的程序设计基础课程的教材,也可以作为c++语言程序设计的自学或函授学习的参考书。    本书保持了liang博士系列丛书中一贯的标志性的教与学的哲学:以实例教,由实践学。通过使用他所提出的已经经过实践检验的“基础先行”的方法,liang博士在本书中通过大量实例阐明了基本的c++特性,使得学生可以通过实践来更有效地进行学习。    在引入面向对象程序设计思想之前,liang博士使用清晰简明的语言介绍了c++语言的基础知识和基本的程序设计技术,如循环、逐步求精等。这些概念都是使用简短且吸引人的实例来进行阐明的。他还在实例研究中给出了一些较大规模的实例,并附以整体的分析讨论和详细的逐行注解。..    本书首先帮助学生循序渐进地学习所有必需和重要的基本概念,然后再进入到面向对象程序设计方法的学习,最终掌握构建具有异常处理和输入输出功能的有意义的应用程序的方法。贯穿全书的实例和练习都以问题求解为中心,力图培养学生开发可重用组件并用之创建实际项目的意识。    本书特点    大量的表格和图示。    较早地介绍编写程序的方法——从第2章开始,学生就能编写简短、有趣的游戏程序。    使用uml描述类。    大量的补充资料——安装和配置c++开发环境、ide简明教程、补充的c++特性等,这些补充资料便于教师设计自己的课程内容。...

目录

译者序.

前言
第一部分 程序设计基础
第1章 计算机、程序和c++语言简介 2

1.1 引言 2

1.2 什么是计算机 2

1.2.1 cpu 3

1.2.2 内存 3

1.2.3 外存储设备 3

1.2.4 输入输出设备 4

1.2.5 通信设备 5

1.3 程序 5

1.4 操作系统 6

1.4.1 控制和监视系统活动 6

1.4.2 分配和指派系统资源 6

1.4.3 任务调度 7

*1.5 数制 7

1.5.1 二进制数与十进制数之间的转换 7

1.5.2 十六进制数与十进制数之间的转换 8

1.5.3 二进制数与十六进制数之间的转换 9

.1.6 c++语言的历史 9

1.7 一个简单的c++程序 10

1.8 c++程序开发周期 11

*1.9 使用visual c++开发c++程序 12

1.9.1 起步 12

1.9.2 创建项目 13

1.9.3 创建c++程序 14

1.9.4 编译c++程序 16

1.9.5 运行c++程序 16

*1.10 使用dev-c++开发c++程序 17

1.10.1 起步 17

1.10.2 创建程序 17

1.10.3 编译c++程序 18

1.10.4 运行c++程序 19

*1.11 用windows命令行方式开发c++程序 20

*1.12 在unix平台上开发c++程序 21

小结 21

习题 22

程序设计练习 22

第2章 基本数据类型和运算 23

2.1 引言 23

2.2 编写简单的程序 23

2.3 从键盘读取输入 25

2.4 省略std::前缀 26

2.5 标识符 27

2.6 变量 27

2.7 赋值语句和赋值表达式 28

2.8 命名常量 29

2.9 数值数据类型及其运算 30

2.9.1 数值文字常量 31

2.9.2 数值运算符 32

2.9.3 算术表达式 33

2.9.4 简写运算符 34

2.10 数值类型转换 35

2.11 字符数据类型及其运算 37

2.11.1 转义序列表示特殊符号 37

2.11.2 char型和数值型之间的转换 38

2.12 实例研究 38

2.12.1 实例:计算贷款偿还金额 38

2.12.2 实例:计算给定金额的货币数量 40

2.12.3 实例:显示当前时间 42

2.13 程序设计风格和文档 43

2.13.1 适当的注释和注释风格 43

2.13.2 变量和常量的命名 43

2.13.3 恰当的缩进和空白 43

2.14 程序设计错误 43

2.14.1 语法错误 44

2.14.2 运行时错误 44

2.14.3 逻辑错误 44

2.15 调试 45

小结 45

习题 46

程序设计练习 48

第3章 分支语句 50

3.1 引言 50

3.2 bool类型 50

3.3 if语句 51

3.4 实例:猜生日 53

3.5 逻辑运算符 55

3.6 if . . . else语句 57

3.7 嵌套的if语句 58

3.8 实例:计算税款 60

3.9 实例:一个数学学习工具 62

3.10 switch语句 63

3.11 条件表达式 65

3.12 输出格式控制 65

3.13 运算符优先级和结合律 68

3.14 枚举类型 69

小结 71

习题 71

程序设计练习 75

第4章 循环 77

4.1 引言 77

4.2 while循环 77

4.2.1 实例:一个改进的数学学习工具 78

4.2.2 使用用户确认控制循环 80

4.2.3 使用哨兵值控制循环 80

4.3 do-while循环 81

4.4 for循环 82

4.5 使用哪种循环 84

4.6 嵌套的循环 85

4.7 实例研究 86

4.7.1 实例:求最大公约数 86

4.7.2 实例:计算销售额 87

4.7.3 实例:显示数字金字塔 89

*4.8 关键字break和continue 91

4.9 实例:输出素数 92

*4.10 简单文件输入输出 94

4.10.1 向一个文件写入数据 94

4.10.2 从一个文件读取数据 95

4.10.3 检测文件尾 96

小结 97

习题 97

程序设计练习 100

第5章 函数 105

5.1 引言 105

5.2 函数创建 105

5.3 函数调用 106

5.4 无返回值函数 108

5.5 按值方式传递参数 109

5.6 按引用方式传递参数 111

5.7 函数重载 113

5.8 函数原型 115

5.9 默认参数 116

5.10 实例研究:使用函数计算税款 117

5.11 在不同程序中重用函数 118

5.12 实例研究:生成随机字符 119

5.13 变量的作用域 121

5.13.1 for循环中变量的作用域 123

5.13.2 静态局部变量 123

5.14 数学函数 124

5.15 函数抽象和逐步求精 125

5.15.1 自顶向下设计 125

5.15.2 自顶向下或自底向上实现.. 127

5.15.3 实现细节 128

*5.16 内联函数 131

小结 132

习题 133

程序设计练习 136

第6章 数组 141

6.1 引言 141

6.2 数组基础 141

6.2.1 声明数组 141

6.2.2 数组下标变量 142

6.2.3 数组初始化语句 143

6.2.4 初始化字符数组 143

6.2.5 处理数组 144

6.2.6 实例:测试数组 145

6.2.7 实例:评定成绩等级 146

6.3 数组作为函数参数 147

6.4 数组作为函数返回值 149

6.5 搜索 151

6.5.1 顺序搜索方法 151

6.5.2 二分搜索方法 151

6.6 排序数组 153

6.6.1 选择排序 153

*6.6.2 插入排序 155

6.7 二维数组 156

6.7.1 声明二维数组 156

6.7.2 处理二维数组 157

6.7.3 二维数组作为函数参数 158

6.7.4 实例:评定多项选择测试的成绩 159

*6.7.5 实例:计算纳税额 160

*6.8 多维数组 162

6.8.1 实例:计算学生成绩 162

6.8.2 实例:猜生日 163

小结 164

习题 165

程序设计练习 166

第7章 指针和c字符串 171

7.1 引言 171

7.2 指针基础 171

7.3 用指针实现实参的引用传递 174

7.4 数组和指针 174

7.5 常量指针 176

7.6 指针作为函数返回值 177

7.7 动态内存分配 178

7.8 实例研究:统计每个字母的出现次数 180

7.9 字符和字符串 182

7.9.1 字符串函数 183

7.9.2 字符串存储和访问 184

7.9.3 读取字符串 185

7.9.4 c字符串函数 185

7.9.5 实例:获取子串 189

7.10 实例研究:检查回文串 189

小结 191

习题 191

程序设计练习 193

第8章 递归 196

8.1 引言 196

8.2 实例:阶乘 196

8.3 实例:斐波那契数列 198

8.4 用递归方法求解问题 200

8.5 递归辅助函数 201

8.5.1 选择排序 202

8.5.2 二分搜索 203

8.6 汉诺塔 204

8.7 递归与迭代 207

小结 207

习题 207

程序设计练习 209

第二部分 面向对象程序设计
第9章 对象和类 212

9.1 引言 212

9.2 声明类 212

9.3 构造函数 214

9.4 对象名 214

9.5 声明和实现分离 217

9.6 通过指针访问对象成员 219

9.7 在堆中创建动态对象 220

9.8 c++字符串类 220

9.8.1 构造一个字符串 220

9.8.2 追加字符串 221

9.8.3 字符串赋值 222

9.8.4 函数at、clear、erase和empty 222

9.8.5 函数length、size和capacity 222

9.8.6 字符串比较 222

9.8.7 获得子串 223

9.8.8 字符串搜索 223

9.8.9 字符串插入和替换 223

9.8.10 字符串运算符 223

9.9 数据域封装 224

9.10 变量作用域 226

9.11 this指针 227

9.12 对象作为函数参数 228

9.13 对象数组 230

9.14 类抽象和封装 232

9.15 实例研究:loan类 232

9.16 构造函数初始化列表 235

小结 237

习题 238

程序设计练习 240

第10章 对象和类的更多内容 243

10.1 引言 243

10.2 不可变对象和不可变类 243

10.3 避免重复声明 245

10.4 实例成员和静态成员 246

10.5 析构函数 250

10.6 拷贝构造函数 252

10.7 自定义拷贝构造函数 254

10.8 友元函数和友元类 256

10.9 对象合成 257

10.10 实例研究:course类 259

10.11 实例研究:stackofintegers类 261

10.12 c++向量类 263

小结 265

习题 265

程序设计练习 268

第11章 继承和多态 269

11.1 引言 269

11.2 基类和派生类 269

11.3 泛型程序设计 275

11.4 构造函数和析构函数 275

11.4.1 调用基类构造函数 275

11.4.2 构造函数链和析构函数链 276

11.5 函数重定义 277

11.6 多态和虚函数 278

11.7 关键字protected 280

11.8 抽象类和纯虚函数 281

11.9 动态类型转换 285

小结 286

习题 287

程序设计练习 291

第12章 文件输入输出 293

12.1 引言 293

12.2 文本输入输出 293

12.2.1 向文件中写入数据 293

12.2.2 从文件中读取数据 294

12.2.3 检测文件是否存在 295

12.2.4 检测文件末尾 296

12.3 格式化输出 297

12.4 成员函数:getline、get和put 297

12.5 fstream和文件打开模式 300

12.6 检测流状态 301

12.7 二进制输入输出 303

12.7.1 write函数 303

12.7.2 read函数 304

12.7.3 实例:二进制数组i/o 305

12.7.4 实例:二进制对象i/o 306

12.8 随机访问文件 309

12.9 更新文件 311

小结 312

习题 313

程序设计练习 313

第13章 运算符重载 315

13.1 引言 315

13.2 rational类 315

13.3 运算符函数 320

13.4 简写运算符重载 321

13.5 [ ]运算符重载 322

13.6 一元运算符重载 323

13.7 ++和--运算符重载 323

13.8 [[和]]运算符重载 324

13.9 对象类型转换 325

13.10 新的rational类 326

13.11 重载赋值运算符 332

小结 333

习题 333

程序设计练习 334

第14章 异常处理 335

14.1 引言 335

14.2 异常处理概述 335

14.3 异常处理机制的优点 337

14.4 异常类 338

14.5 自定义异常类 341

14.6 多重异常捕获 344

14.7 异常的传播 347

14.8 重抛出异常 349

14.9 异常规约 350

14.10 何时使用异常机制 350

小结 351

习题 351

程序设计练习 353

第三部分 数 据 结 构
第15章 模板 356

15.1 引言 356

15.2 模板基础 356

15.3 实例:一个通用排序函数 358

15.4 模板类 359

15.5 改进stack类 364

小结 365

习题 366

程序设计练习 368

第16章 链表、栈和队列 369

16.1 引言 369

16.2 节点 369

16.3 链表类 371

16.4 实现linkedlist 373

16.4.1 实现addfirst(t element) 373

16.4.2 实现addlast(t element) 373

16.4.3 实现add(int index, t element) 374

16.4.4 实现removefirst() 375

16.4.5 实现removelast() 375

16.4.6 实现removeat(int index) 377

16.5 链表的变形 382

16.6 使用链表类实现栈类 382

16.7 队列 383

*16.8 迭代器 385

小结 388

习题 388

程序设计练习 390

第17章 树、堆和优先队列 392

17.1 引言 392

17.2 二叉树 392

17.2.1 描述二叉树 392

17.2.2 访问二叉树中的节点 393

17.2.3 向二叉搜索树中插入数据元素 393

17.2.4 树的遍历 394

17.2.5 二叉树类 394

17.3 堆 399

17.3.1 堆的描述 399

17.3.2 堆的删除操作 399

17.3.3 堆的插入操作 400

17.3.4 heap类 400

17.4 优先队列 403

小结 405

习题 406

程序设计练习 406

第18章 算法效率和排序 408

18.1 引言 408

18.2 评价算法效率 408

18.2.1 大o符号 409

18.2.2 实例:复杂性计算 409

18.2.3 分析二分搜索算法 411

18.2.4 分析选择排序算法 411

18.2.5 分析插入排序算法 412

18.2.6 分析汉诺塔算法 412

18.2.7 常见增长函数比较 412

18.3 起泡排序 413

18.4 归并排序 415

18.5 快速排序 418

18.6 堆排序 421

18.7 外排序 422

18.7.1 实现阶段i 423

18.7.2 实现阶段ii 424

18.7.3 合并两个阶段 426

18.7.4 外排序分析 429

小结 429

习题 430

程序设计练习 431

第19章 stl容器 433

19.1 引言 433

19.2 stl基础 433

19.3 stl迭代器 437

19.3.1 迭代器类型 439

19.3.2 迭代器运算符 439

19.3.3 预定义的迭代器 441

19.3.4 istream_iterator和ostream_iterator 442

19.4 顺序容器 443

19.4.1 顺序容器:vector 443

19.4.2 顺序容器:deque 445

19.4.3 顺序容器:list 446

19.5 关联容器 449

19.5.1 关联容器:set和multiset 449

19.5.2 关联容器:map和multimap 451

19.6 容器适配器 452

19.6.1 容器适配器:stack 452

19.6.2 容器适配器:queue 453

19.7 容器适配器:priority_queue 454

小结 454

习题 455

程序设计练习 457

第20章 stl算法 459

20.1 引言 459

20.2 算法类型 459

20.3 copy 461

20.4 fill和fill_n 462

20.5 generate和generate_n 463

20.6 remove、remove_if、remove_copy和remove_copy_if 464

20.7 replace、replace_if、replace_copy和replace_copy_if 466

20.8 find、find_if、find_end和find_first_of 468

20.9 search和search_n 472

20.10 sort和binary_search 473

20.11 adjacent_find、merge和inplace_merge 475

20.12 reverse和reverse_copy 476

20.13 rotate和rotate_copy 477

20.14 swap、iter_swap和swap_ranges 478

20.15 count和count_if 479

20.16 max_element和min_element 479

20.17 random_shuffle 480

20.18 for_each和transform 481

20.19 includes、set_union、set_difference、set_intersection和set_symmetric_difference 481

20.20 accumulate、adjacent_difference、inner_product和partial_sum 484

小结 486

习题 487

程序设计练习 489

附录 491

附录a c++关键字 492

附录b ascii字符集 493

附录c 运算符优先级表 494

附录d 位运算... 495


已确认勘误

次印刷

页码 勘误内容 提交人 修订印次

Introduction to programming with C++
    • 名称
    • 类型
    • 大小

    光盘服务联系方式: 020-38250260    客服QQ:4006604884

    意见反馈

    14:15

    关闭

    云图客服:

    尊敬的用户,您好!您有任何提议或者建议都可以在此提出来,我们会谦虚地接受任何意见。

    或者您是想咨询:

    用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问

    Video Player
    ×
    Audio Player
    ×
    pdf Player
    ×
    Current View

    看过该图书的还喜欢

    some pictures

    解忧杂货店

    东野圭吾 (作者), 李盈春 (译者)

    亲爱的云图用户,
    光盘内的文件都可以直接点击浏览哦

    无需下载,在线查阅资料!

    loading icon