图书目录

目 录

引言 致读者  1

本书结构  2

讲授和学习本书的方法  5

程序设计和计算机科学  8

创造性和问题求解  9

反馈方法  9

作者简介  9

附言  11

第1章 计算、人和程序设计  12

1.1 介绍  13

1.2 软件  13

1.3 人  15

1.4 计算机科学  17

1.5 计算机无处不在  17

1.6 程序员的理想  23

回顾  25

术语  26

练习题  26

附言  27

第一部分 基  础  29

第2章 Hello, World!  30

2.1 程序  31

2.2 经典的第一个程序  31

2.3 编译  33

2.4 链接  35

2.5 程序设计环境  36

操作题  36

回顾  38

术语  38

练习题  38

附言  39

第3章 对象、类型和值  40

3.1 输入  41

3.2 变量  42

3.3 输入和类型  43

3.4 运算和运算符  45

3.5 赋值和初始化  47

3.6 复合赋值运算符  50

3.7 命名  52

3.8 类型和对象  53

3.9 类型安全  55

操作题  58

回顾  59

术语  59

练习题  60

附言  61

第4章 计算  62

4.1 计算的定义  63

4.2 目标和工具  64

4.3 表达式  65

4.4 语句  69

4.5 函数  79

4.6 向量容器  82

4.7 语言特性  87

操作题  87

回顾  88

术语  89

习题  89

附言  91

第5章 错误  92

5.1 介绍  93

5.2 错误的来源  94

5.3 编译时错误  95

5.4 链接时错误  97

5.5 运行时错误  97

5.6 异常  101

5.7 逻辑错误  107

5.8 估算  109

5.9 调试  110

5.10 前置条件和后置条件  113

5.11 测试  115

操作题  116

回顾  117

术语  118

练习题  118

附言  119

第6章 编写一个程序  120

6.1 一个问题  121

6.2 对问题的思考  122

6.3 回到计算器问题  124

6.4 语法  130

6.5 将语法转化为程序  135

6.6 尝试第一个版本  141

6.7 试验第二个版本  145

6.8 单词流  146

6.9 程序结构  150

操作题  151

回顾  151

术语  152

练习题  152

附言  153

第7章 完成一个程序  154

7.1 介绍  155

7.2 输入和输出   155

7.3 错误处理  157

7.4 负数  160

7.5 模运算:%   161

7.6 清理代码  162

7.7 错误恢复  168

7.8 变量  170

操作题  177

回顾  178

术语  178

练习题  178

附言  179

第8章 函数相关的技术细节  180

8.1 技术细节  181

8.2 声明和定义  182

8.3 头文件  186

8.4 作用域  188

8.5 函数调用和返回  192

8.6 求值顺序  205

8.7 命名空间  207

操作题  210

回顾  211

术语  212

练习题  212

附言  213

第9章 类相关的技术细节  214

9.1 用户自定义类型  215

9.2 类和成员  216

9.3 接口和实现  216

9.4 演化一个类  218

9.5 枚举类型  225

9.6 运算符重载  227

9.7 类接口  228

9.8 Date类  236

操作题  240

回顾  240

术语  240

练习题  241

附言  242

第二部分 输入和输出  243

第10章 输入和输出流  244

10.1 输入和输出的简介  245

10.2 I/O流模型  246

10.3 文件  247

10.4 打开文件  248

10.5 读写文件  249

10.6 I/O错误处理  251

10.7 读取单个值  253

10.8 用户自定义输出运算符  258

10.9 用户自定义输入运算符  259

10.10 一个标准的输入循环  259

10.11 读取结构化的文件  261

操作题  267

回顾  267

术语  268

练习题  268

附言  269

第11章 自定义输入与输出  270

11.1 有规律的和无规律的输入和输出  271

11.2 格式化输出  271

11.3 文件打开和定位  276

11.4 字符串流  280

11.5 面向行的输入  281

11.6 字符分类  282

11.7 使用非标准分隔符  284

11.8 还有很多未讨论的内容  289

操作题  290

回顾  290

术语  291

练习题  291

附言  292

第12章 一个显示模型  293

12.1 为什么要使用图形用户界面  294

12.2 一个显示模型:GUI库  295

12.3 第一个例子  296

12.4 使用GUI库  298

12.5 坐标系  299

12.6 Shape  299

12.7 使用形状类  300

12.8 让图形运行起来  308

操作题  309

回顾  309

术语  310

练习题  310

附言  311

第13章 图形类  312

13.1 图形类概览  313

13.2 Point和Line  315

13.3 Lines  316

13.4 Color  318

13.5 Line_style  320

13.6 Open_polyline  322

13.7 Closed_polyline  323

13.8 Polygon  324

13.9 Rectangle  325

13.10 管理未命名对象  328

13.11 Text  329

13.12 Circle  331

13.13 Ellipse  332

13.14 Marked_polyline  334

13.15 Marks  335

13.16 Mark  336

13.17 Images  337

操作题  340

回顾  340

术语  341

练习题  341

附言  342

第14章 设计图形类  343

14.1 设计原则  344

14.2 Shape类  347

14.3 基类和派生类  355

14.4 面向对象程序设计的好处  360

操作题  361

回顾  362

术语  362

练习题  363

附言  364

第15章 绘制函数图和数据图  365

15.1 介绍  366

15.2 绘制简单函数图  366

15.3 Function类  369

15.4 Axis类  373

15.5 近似  375

15.6 绘制数据图  379

操作题  385

回顾  385

术语  386

练习题  386

附言  387

第16章 图形用户界面  388

16.1 用户界面的选择  389

16.2 Next按钮  389

16.3 一个简单的窗口  390

16.4 Button和其他Widget  395

16.5 一个实例  398

16.6 控制流的反转  400

16.7 添加菜单  401

16.8 调试GUI代码  405

操作题  407

回顾  407

术语  407

练习题  408

附言  408

第三部分 数据结构和算法  409

第17章 向量容器和自由存储区  410

17.1 介绍  411

17.2 vector的基础知识  412

17.3 内存、地址和指针  413

17.4 自由存储区和指针  416

17.5 析构函数  422

17.6 访问元素  425

17.7 指向类对象的指针  426

17.8 类型混合:无类型指针和指针类型转换  427

17.9 指针和引用  428

17.10 this指针  434

操作题  437

回顾  438

术语  438

练习题  438

附言  439

第18章 向量容器和数组  440

18.1 介绍  441

18.2 初始化  442

18.3 拷贝  443

18.4 必要的操作  450

18.5 访问vector的元素  453

18.6 数组  455

18.7 示例:回文  462

操作题  465

回顾  466

术语  467

练习题  467

附言  468

第19章 向量容器、模板和异常  469

19.1 问题  470

19.2 改变向量容器大小  472

19.3 模板  477

19.4 范围检查和异常  487

19.5 资源和异常  490

操作题  497

回顾  498

术语  498

练习题  499

附言  500

第20章 容器和迭代器  501

20.1 存储和处理数据  502

20.2 STL理想设计  505

20.3 序列和迭代器  508

20.4 链表  511

20.5 再次泛化vector  514

20.6 示例:一个简单的文本编辑器  517

20.7 vector、list和string  522

20.8 使我们的vector适配STL  525

20.9 使内置数组适配STL  526

20.10 容器概述  527

操作题  530

回顾  530

术语  531

练习题  531

附言  532

第21章 算法和映射容器(map)  533

21.1 标准库算法  534

21.2 最简单的算法:find( )  535

21.3 通用查找算法:find_if( )  537

21.4 函数对象  539

21.5 数值算法  542

21.6 关联容器  547

21.7 拷贝操作  555

21.8 排序和查找  559

21.9 容器算法  561

操作题  562

回顾  562

术语  563

练习题  563

附言  564

第四部分 拓宽眼界  565

第22章 理念与历史  566

22.1 历史、理念和专业水平  567

22.2 程序设计语言历史概览  575

回顾  589

术语  590

练习题  591

附言  592

第23章 文本处理  593

23.1 文本  594

23.2 字符串  594

23.3 I/O流  597

23.4 映射容器  598

23.5 一个问题  604

23.6 正则表达式的思想  605

23.7 使用正则表达式进行查找  607

23.8 正则表达式语法  609

23.9 与正则表达式进行模式匹配  616

操作题  619

回顾  620

术语  620

练习题  621

附言  621

第24章 数值计算  622

24.1 介绍  623

24.2 大小、精度和溢出  623

24.3 数组  626

24.4 C风格的多维数组  627

24.5 Matrix库  628

24.6 示例:求解线性方程组  636

24.7 随机数  640

24.8 标准数学函数  642

24.9 复数  644

操作题  645

回顾  645

术语  646

练习题  646

附言  647

第25章 嵌入式系统程序设计  648

25.1 嵌入式系统  649

25.2 基本概念  651

25.3 内存管理  655

25.4 地址、指针和数组  660

25.5 位、字节和字  668

25.6 编码规范  683

操作题  688

回顾  689

术语  690

练习题  691

附言  692

第26章 测试  693

26.1 我们想要什么  694

26.2 证明  695

26.3 测试相关技术  695

26.4 测试方案设计  709

26.5 调试  709

26.6 性能  710

操作题  712

回顾  713

术语  713

练习题  714

附言  714

第27章 C语言  715

27.1 C和C++:兄弟  716

27.2 函数  720

27.3 微小的语言差异  726

27.4 自由存储区  731

27.5 C风格的字符串  733

27.6 输入/输出:stdio  736

27.7 常量和宏  739

27.8 宏  740

27.9 示例:侵入式容器  743

操作题  748

回顾  748

术语  749

练习题  749

附言  750

第五部分 附录  751

附录A 语言摘要  752

A.1 概述  753

A.2 字面值常量  755

A.3 标识符  758

A.4 作用域、存储类别和生命周期  759

A.5 表达式  762

A.6 语句  769

A.7 声明  771

A.8 内置类型  772

A.9 函数  775

A.10 用户自定义类型  777

A.11 枚举  778

A.12 类  778

A.13 模板  788

A.14 异常  791

A.15 命名空间  792

A.16 别名  793

A.17 预处理指令  793

附录B 标准库概要  795

B.1 概述  796

B.2 错误处理  800

B.3 迭代器  801

B.4 容器  804

B.5 算法  811

B.6 STL工具  818

B.7 I/O流  823

B.8 字符串操作  827

B.9 数值  831

B.10 时间  835

B.11 C标准库函数  836

B.12 其他库  842

附录C Visual Studio快速入门  843

C.1 让程序“跑”起来  844

C.2 安装Visual Studio  844

C.3 创建和运行程序  844

C.4 后续学习  846

附录D 安装FLTK  847

D.1 介绍  848

D.2 下载FLTK  848

D.3 安装FLTK  848

D.4 在Visual Studio中使用FLTK  849

D.5 测试是否正常工作  849

附录E GUI实现  851

E.1 回调实现  852

E.2 Widget实现  853

E.3 Window实现  854

E.4 Vector_ref  855

E.5 一个示例:操作Widget  855

术语表  859