可视化计算
2013-1
清华大学出版社
程向前 陈建明
347
569
本书是一个新的计算机教育时代的产物,计算思维就是这个时代的名称。一般认为科学思维主要分为理论思维、实验思维和计算思维三大类,所以理论、实验和计算成为推动人类文明进步和科技发展的三大支柱。而计算思维的主要内容则包括了问题求解、系统设计和人类行为理解。 在高等院校的计算机教育领域,一直存在两种截然不同的教材:一种是面向计算机和信息专业领域的,众多成熟和系统性很强的教材并形成学科教育的基础;另一种则是面向所有专业的计算机基础教材,由于其中的内容大部分是面向计算机基本应用的,所以技术选择对平台工具具有一定的依赖性,而且随着技术的变换而不断变化。 由于计算机与网络技术的迅猛发展,技术和平台工具选择的相互依赖会导致大部分专业工作者在学校所接触到的信息技术和产品不久就成为“明日黄花”并为更新的技术和产品所替代,甚至一种计算工具尚未完全掌握,新一代的工具又产生了。这种状况往往令人目不暇接,以至于无所适从。另一方面,计算机科学的基础内容,那些在计算机科学课程系列中被认为极为重要的核心理念和基本方法,虽然变化缓慢,但由于其枯燥艰深,难以为广大的其他专业工作者所了解和掌握。 在这个新的计算机教育时代,大学计算机课程的重要任务之一是让学习者体验到计算原理的相互影响以及问题有效解决的思维方式,并从中获得计算的愉悦。 ……
本书是一个新的计算机教育时代的产物,计算思维就是这个时代的名称。一般认为科学思维主要分为理论思维、实验思维和计算思维三大类,所以理论、实验和计算成为推动人类文明进步和科技发展的三大支柱。而计算思维的主要内容则包括了问题求解、系统设计和人类行为理解。
在高等院校的计算机教育领域,一直存在两种截然不同的教材:
一种是面向计算机和信息专业领域的,众多成熟和系统性很强的教材并形成学科教育的基础;另一种则是面向所有专业的计算机基础教材,由于其中的内容大部分是面向计算机基本应用的,所以技术选择对平台工具具有一定的依赖性,而且随着技术的变换而不断变化。
由于计算机与网络技术的迅猛发展,技术和平台工具选择的相互依赖会导致大部分专业工作者在学校所接触到的信息技术和产品不久就成为“明日黄花”并为更新的技术和产品所替代,甚至一种计算工具尚未完全掌握,新一代的工具又产生了。这种状况往往令人目不暇接,以至于无所适从。另一方面,计算机科学的基础内容,那些在计算机科学课程系列中被认为极为重要的核心理念和基本方法,虽然变化缓慢,但由于其枯燥艰深,难以为广大的其他专业工作者所了解和掌握。
在这个新的计算机教育时代,大学计算机课程的重要任务之一是让学习者体验到计算原理的相互影响以及问题有效解决的思维方式,并从中获得计算的愉悦。
本书的目的就是朝着这个方向努力。希望在有限的时间里,将计算机科学的核心理念传播给非计算机专业的读者,并且,希望这些理念是可以观察、验证和投入实际应用的--即使这种应用水平还属于初级阶段,可能存在很多需要改进的地方。
进入21世纪,社会信息化不断向纵深发展,各行各业的信息化进程不断加速。我国的高等教育也进入了一个新的历史发展时期,尤其是高校的计算机基础教育,正在步入更加科学,更加合理,更加符合21世纪高校人才培养目标的新阶段。
为了进一步推动高校计算机基础教育的发展,教育部高等学校计算机科学与技术教学指导委员会近期发布了《关于进一步加强高等学校计算机基础教学的意见暨计算机基础课程教学基本要求》(以下简称《教学基本要求》)
.
《教学基本要求》针对计算机基础教学的现状与发展,提出了计算机基础教学改革的指导思想;按照分类、分层次组织教学的思路,《教学基本要求》提出了计算机基础课程教学内容的知识结构与课程设置。《教学基本要求》认为,计算机基础教学的典型核心课程包括大学计算机基础、计算机程序设计基础、计算机硬件技术基础(微机原理与接口、单片机原理与应用)、数据库技术及应用、多媒体技术及应用、计算机网络技术及应用。《教学基本要求》中介绍了上述六门核心课程的主要内容,这为今后的课程建设及教材编写提供了重要的依据。在下一步计算机课程规划工作中,建议各校采用“1+X”的方案,即“大学计算机基础”+
若干必修或选修课程。
教材是实现教学要求的重要保证。为了更好地促进高校计算机基础教育的改革,我们组织了国内部分高校教师进行了深入的讨论和研究,根据《教学基本要求》中的相关课程教学基本要求组织编写了这套“大学计算机基础教育规划教材”.
本套教材的特点如下:
(1) 体系完整,内容先进,符合大学非计算机专业学生的特点,注重应用,强调实践。
(2)
教材的作者来自全国各个高校,都是教育部高等学校计算机基础课程教学指导委员会推荐的专家、教授和教学骨干。
(3) 注重立体化教材的建设,
除主教材外,还配有多媒体电子教案、习题与实验指导,以及教学网站和教学资源库等。
(4) 注重案例教材和实验教材的建设,适应教师指导下的学生自主学习的教学模式。
(5) 及时更新版本,力图反映计算机技术的新发展。
本套教材将随着高校计算机基础教育的发展不断调整,希望各位专家、教师和读者不吝提出宝贵的意见和建议,我们将根据大家的意见不断改进本套教材的组织、编写工作,为我国的计算机基础教育的教材建设和人才培养做出更大的贡献。
“大学计算机基础教育规划教材”丛书主编
教育部高等学校计算机基础课程教学指导委员会副主任委员
程向前
生于1954年11月,男,管理信息理学硕士,高级工程师,西安交通大学计算机教学实验中心副主任。
教授课程:计算机网络技术与应用;管理信息系统;负责计算机教学实验中心的实验环境建设和日常运行;负责计算机网络,管理信息系统课程双语教学改革项目;“计算机网络”国家级精品课程的主要完成人之一。
合作出版教材及教辅资料10本,独立出版教材2本。其中,《计算机网络》2002年2月获国家级优秀教材一等奖(排名第四),《硬件技术基础》2002年2月获国家级优秀教材二等奖(排名第三)。
第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 计算问题求解的一般过程401.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 面向对象的程序设计与RAPTOR303
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
参考文献197
版权页: 插图: 他的论证是这样的:除了起点以外,每一次当一个人由一座桥进入一块陆地(或点)时,他(或她)必须由另一座桥离开此点。所以每行经一点时,需要两座桥(或线),从起点离开的线与最后回到始点的线也需要两座桥,因此每一个陆地与其他陆地连接的桥数必为偶数。因此,连通网络可一笔画的充要条件是它们是连通的,且奇顶点(通过此点的弧的条数是奇数)的个数为0或2。而7桥所成的图形中,没有一点含有偶数条弧,因此上述任务无法完成。 欧拉的这个考虑非常重要,也非常巧妙,它表明了数学家处理实际问题的独特之处——把一个实际问题抽象成合适的“数学模型”。这种研究方法就是“数学模型方法”。这并不需要运用多么深奥的理论,但想到这一点,却是解决难题的关键。 接下来,欧拉运用网络中的一笔画定理为判断准则,很快地就判断出要一次不重复走遍哥尼斯堡的7座桥是不可能的。也就是说,多少年来,人们费脑费力寻找的那种不重复的路线根本就不存在。一个曾难住了那么多人的问题,竟是这么一个出人意料的答案! 当年,欧拉在交给彼得堡科学院的《哥尼斯堡7座桥》的论文中阐述了他的解题方法。他的巧解,为后来的数学新分支——拓扑学的建立奠定了基础。 欧拉通过对7桥问题的研究,不仅圆满地回答了哥尼斯堡居民提出的问题,而且得到并证明了更为广泛的有关一笔画的3条结论,人们通常称为欧拉定理: (1)凡是由偶点组成的连通图,一定可以一笔画成。画时可以把任一偶点为起点,最后一定能以这个点为终点画完此图。 (2)凡是只有两个奇点的连通图(其余都为偶点),一定可以一笔画成。画时必须把一个奇点作为起点,另一个奇点作为终点。 (3)其他情况的图都不能一笔画出(奇点数除以2便可算出此图需几笔画成)。 对于一个连通图,通常把从某节点出发一笔画成所经过的路线叫做欧拉路,把一笔画成回到出发点的欧拉路叫做欧拉回路,把具有欧拉回路的图叫做欧拉图。 有关7桥问题的讨论,是计算机出现之前人的计算思维的出色表现,而在计算机出现后,计算机科学发展出利用计算机自动解决类似的问题的方法,于是就有了以下的问题求解过程。 7.1图的定义和常用术语 图7—2(a)、(b)、(c)均为图(graph),它有若干个不同的点,在其中一些点之间用直线或曲线连接。图中的这些点称为顶点(vertex)或节点,连接顶点的曲线或直线称为边(edge)。通常将这种由若干个顶点以及连接某些顶点的边所组成的图形称为图,顶点通常称为图中的数据元素。
希望该书成为计算思维领域最实用的学习工具,为我国计算机相关专业的发展作出应有的贡献。 ——广东工业大学 程良伦教授 该书将程序设计语言、算法、数据结构、图论等传统课程中基础性、应用性较强的知识融合在一起,可使得教学工作事半功倍。 ——肇庆学院 胡忠望教授 该书内容很全面,涉及计算学科所需相关知识和相应的工具。 ——福州大学 陈国龙教授 作者的工作非常有意义。这种完全可以理解和操作的“计算思维能力培养”具有很大的示范效应,可以推广到所有的学校和专业。 ——桂林电子科技大学 董荣胜教授 该书非常适合广大非计算机专业的学生使用,即使对于低年级的专业学生,也是很好的教材。 ——华东理工大学 陈志华副教授 We invented RAPTOR because our students here in the United States also are primarily visuallearners. We found that RAPTOR allowed them to be more successful in designing andimplementing small algorithms than using a traditional programming language. ——Dr. Martin C. Carlisle
《大学计算机基础教育规划教材:可视化计算》可以作为高校非计算机专业的主要介绍计算思维或计算原理的计算机基础类课程的教材,也可以作为非计算机专业的程序设计、数据结构和离散数学等课程的入门参考书。
希望该书成为计算思维领域最实用的学习工具,为我国计算机相关专业的发展作出应有的贡献。 ——广东工业大学 程良伦教授 该书将程序设计语言、算法、数据结构、图论等传统课程中基础性、应用性较强的知识融合在一起,可使得教学工作事半功倍。 ——肇庆学院 胡忠望教授 该书内容很全面,涉及计算学科所需相关知识和相应的工具。 ——福州文学 陈国龙教授 作者的工作非常有意义。这种完全可以理解和操作的“计算思维能力培养”具有很大的示范效应,可以推广到所有的学校和专业。 ——桂林电子科技大学 董荣胜教授 该书非常适合广大非计算机专业的学生使用,即使对于低年级的专业学生,也是很好的教材。 ——华东理工大学 陈志华副教授
书很好,送得很快,第二天就到了
还是正版印刷的书质量好些。
100-25,放弃高调的**
内容很不错,讲解得很透,有一定深度!!
难得的好书,创新性的深入到算法的本质上而不是强调语言的学习,十分适合算法初学者用来打下扎实的基础。印刷排版精美,图片制作详细清楚,所以也特别推荐自学者购买哦~