《可视化计算》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:程向前,陈建明编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2013
  • ISBN:9787302304739
  • 页数:349 页
图书介绍:本书设计的目的是希望为非计算机专业理工科学生使用新的模式进行算法基础的学习提供手段,本书着重于阐述计算机科学如何通过设计计算过程来分析算法的正确性和效率,以及一般学科使用计算进行研究的基本计算框架。

第1章 RAPTOR程序设计基础 1

1.1 程序与算法的基本概念 1

1.1.1 为什么要学习程序设计 1

1.1.2 程序设计的发展阶段 2

1.1.3 为什么要使用RAPTOR可视化程序设计环境 6

1.1.4 程序设计语言的基本概念 8

1.1.5 RAPTOR的特点 10

1.2 RAPTOR基本程序环境 10

1.2.1 基本符号 10

1.2.2 变量 11

1.2.3 常量 15

1.2.4 输入语句 15

1.2.5 数据处理语句 16

1.2.6 过程调用语句 19

1.2.7 输出语句 20

1.2.8 注释 21

1.3 RAPTOR控制结构 23

1.3.1 顺序控制 23

1.3.2 选择控制 23

1.3.3 决策表达式 24

1.3.4 循环控制 27

1.4 RAPTOR数组变量 31

1.4.1 一维数组的创建 32

1.4.2 二维数组的创建 33

1.4.3 数组的运算 34

1.4.4 如何使用数组变量 34

1.4.5 平行数组 35

1.4.6 数组应用中的注意事项 35

1.5 RAPTOR子程序和子图的定义及调用 35

1.6 计算问题求解的一般过程 40

1.6.1 理解问题 40

1.6.2 制定计划 41

1.6.3 执行计划 42

1.6.4 回顾与总结 42

1.6.5 使用计算机进行问题求解:程序开发周期 43

1.7 小结与回顾 44

习题 44

第2章 算法设计与可视化 46

2.1 算法初步 46

2.1.1 算法的由来与定义 46

2.1.2 算法的特性 49

2.1.3 算法设计的要求 49

2.2 算法效率的度量 51

2.2.1 算法效率的基本估算方法 51

2.2.2 实验验证方法 53

2.3 算法复杂度 53

2.3.1 函数的渐近增长 54

2.3.2 算法时间复杂度定义 54

2.3.3 推算大O阶方法 55

2.4 计算的可视化问题 57

2.4.1 算法设计的可视化 57

2.4.2 计算过程的可视化 58

2.4.3 计算问题和结果的可视化 60

2.4.4 RAPTOR与流程图规范之间的关系与差别 61

2.5 RAPTOR算法设计常用子程序 63

2.5.1 随机数的产生与存储 63

2.5.2 将计算结果存储到文件 64

2.5.3 从文件中读入基础数据 65

2.5.4 RAPTOR图形输出 67

2.5.5 RAPTOR图形窗口中的用户交互 74

2.5.6 图形输出案例:随机漫步的模拟模型 75

2.6 小结与回顾 81

习题 81

第3章 基本算法和策略 83

3.1 基本算法 83

3.1.1 蛮力法 83

3.1.2 分段函数 84

3.1.3 递推法 86

3.1.4 模运算 89

3.1.5 字符和字符串运算 89

3.1.6 递归 93

3.1.7 数论问题 98

3.1.8 组合计算 102

3.1.9 迭代法 105

3.2 基本策略 108

3.2.1 贪心策略 108

3.2.2 分治策略 110

3.2.3 回溯策略 111

3.2.4 动态规划 114

3.2.5 将递归算法转化为非递归的实现 117

3.2.6 基本算法策略的讨论 119

3.3 小结与回顾 121

习题 121

第4章 模型化 124

4.1 从有限状态机到图灵机 124

4.1.1 什么是模型 125

4.1.2 如何建立模型 126

4.1.3 什么是有限状态机 126

4.1.4 如何设计和应用有限状态机 129

4.1.5 可视化有限状态机的实现案例:电子宠物游戏 130

4.1.6 什么是图灵机 136

4.1.7 如何使用RAPTOR模拟图灵机 139

4.1.8 有限状态机与图灵机的比较 148

4.2 使用RAPTOR实现抽象数据类型 149

4.2.1 对现实世界中的问题进行数据抽象 149

4.2.2 使用RAPTOR实现线性表 151

4.2.3 使用RAPTOR实现树 155

4.3 小结与回顾 164

习题 164

第5章 排序与查找 166

5.1 排序 166

5.1.1 计算机如何进行排序 167

5.1.2 直接插入排序 169

5.1.3 桶排序 172

5.1.4 冒泡排序 172

5.1.5 快速排序 176

5.1.6 归并排序 178

5.1.7 排序算法的分析 178

5.2 查找 180

5.2.1 顺序查找 180

5.2.2 二分查找 181

5.2.3 分块查找 182

5.2.4 哈希查找 188

5.2.5 查找算法的分析 198

5.3 小结与回顾 199

习题 199

第6章 信息论、哈夫曼编码与二叉树 201

6.1 问题的引入 201

6.1.1 信息表达 203

6.1.2 数字表达 204

6.1.3 字符表达 205

6.2 信息论基础 207

6.2.1 什么是信息 207

6.2.2 信息的量化 208

6.3 哈夫曼编码 212

6.3.1 哈夫曼编码原理 213

6.3.2 使用RAPTOR实现哈夫曼编码的算法 215

6.4 二叉树 220

6.4.1 二叉树的遍历 224

6.4.2 堆排序 227

6.4.3 二叉搜索树 228

6.4.4 平衡二叉树 236

6.5 小结和回顾 240

习题 241

第7章 图论基础与应用 243

7.1 图的定义和常用术语 244

7.2 图的存储 246

7.2.1 邻接矩阵存储原理 246

7.2.2 使用RAPTOR建立已知图的邻接矩阵 248

7.2.3 邻接表存储原理 249

7.2.4 使用RAPTOR建立已知图的邻接表 252

7.3 图的遍历 253

7.3.1 深度优先搜索 254

7.3.2 广度优先搜索 255

7.3.3 求图的连通分量 256

7.4 图算法的应用 258

7.4.1 最小网络建设成本 258

7.4.2 最短的旅行路线 260

7.4.3 地图着色问题 266

7.4.4 商业网点的最省布点方案 269

7.5 在RAPTOR中实现图算法的可视化 271

7.5.1 图类算法的问题可视化 271

7.5.2 真实的地图与抽象图的叠加 274

7.5.3 棋类游戏的实现 276

7.6 小结与回顾 279

习题 279

第8章 计算工具的评估和选择 281

8.1 计算工具的精度评估 281

8.1.1 误差的来源 282

8.1.2 绝对误差、相对误差和有效数字 283

8.1.3 计算工具的精度设计与误差 284

8.1.4 误差分析与实践 289

8.2 从RAPTOR到C++的算法环境转换 290

8.2.1 递归程序 290

8.2.2 文件输入输出 292

8.2.3 图形问题 294

8.2.4 RAPTOR的转换和编译问题 297

8.2.5 RAPTOR与C/C++的比较与选择 300

8.3 面向对象的程序设计与RAPTOR 303

8.3.1 OOP的基本概念 304

8.3.2 封装 304

8.3.3 继承 305

8.3.4 多态性 305

8.3.5 典型的面向对象的程序语言 306

8.3.6 RAPTOR对OOP的支持 306

8.4 逆向工程:从代码到流程图 312

8.4.1 CVF介绍 312

8.4.2 CVF流程图与RAPTOR的比较 315

8.4.3 AutoFlowchart介绍 315

8.5 电子表格软件与数值计算 316

8.6 小结与回顾 320

习题 320

附录A RAPTOR图形操作指南 322

A.1 RAPTOR图形坐标 322

A.2 色彩 322

A.2.1 设置颜色 323

A.2.2 生成随机色彩 323

A.3 绘图操作 323

A.3.1 清理窗口 324

A.3.2 画弧 324

A.3.3 画圆 325

A.3.4 画椭圆 325

A.3.5 绘制可以旋转角度的椭圆 326

A.3.6 绘制位图 326

A.3.7 装载位图 327

A.3.8 画线 327

A.3.9 填色 327

A.3.10 取得像素的色彩 328

A.3.11 设置像素的色彩 328

A.4 键盘操作 328

A.4.1 取键值 329

A.4.2 取键字符串 329

A.4.3 判断某个键是否处于按下状态 330

A.4.4 判断某个击键动作是否已经发生过 330

A.4.5 等待键入 331

A.5 鼠标操作 331

A.5.1 取得鼠标按键与指针位置 331

A.5.2 取得鼠标指针的X值 331

A.5.3 取得鼠标指针的Y值 332

A.5.4 判断鼠标键是否处于按下状态 332

A.5.5 判断鼠标键是否被按下过 332

A.5.6 判断鼠标键是否已经释放 333

A.5.7 等待某个鼠标按键动作 333

A.6 文本操作 333

A.6.1 显示数字 334

A.6.2 显示文本 334

A.6.3 取得字模的高度 334

A.6.4 取得字模的宽度 335

A.6.5 设置字号 335

A.7 窗口操作 335

A.7.1 关闭窗口 335

A.7.2 取得窗口的最大高度 336

A.7.3 取得窗口的最大宽度 336

A.7.4 判断图形窗口是否打开 336

A.7.5 打开图形窗口 337

A.7.6 设置窗口的标题栏 337

A.7.7 平滑动画显示效果 337

术语对照表 339

参考文献 348

参考网站 349