-
程序设计方法.[美]Matthias Felleisen(带书签文字版).pdf下载
资源介绍
国外著名高等院校信息科学与技术优秀教材:本书以Scheme语言为基础介,绍计算和程序设计的一般理论,具体讨论了程序设计、基于数据驱动的程序设计基础、程序设计中的抽象问题等。
第一部分 简单数据的处理 18
第1章 学生,教师和计算机 18
第2章 数、表达式和简单程序 19
2.1 数和算术运算 19
2.2 变量和程序 20
2.3 字处理问题 23
2.4 错误 23
2.5 设计程序 25
第3章 程序就是函数加上变量定义 27
3.1 函数复合 28
3.2 变量定义 30
3.3 复合函数练习 31
第4章 条件表达式和函数 32
4.1 布尔类型和关系 32
4.2 函数和测试条件 34
4.3 条件和条件函数 37
4.4 条件函数的设计 39
第5章 非数值信息 42
5.1 符号的手工练习 44
第6章 复合数据之一,结构体 45
6.1 结构体 结构体 45
6.2 补充练习:绘制简单图形 47
6.3 结构体定义 49
6.4 数据定义 52
6.5 设计处理复合数据的函数 53
6.6 补充练习: 圆和长方形的移动 57
6.7 补充练习:刽子手游戏 61
第7章 数据的多样性 62
7.1 数据混合与区分 63
7.2 设计处理混合数据的函数 66
7.3 再论函数复合 69
7.4 补充练习:图形的移动 72
7.5 输入错误 72
第8章 语法和语义 74
8.1 Scheme 的词汇 74
8.2 Scheme 的文法 75
8.3 Scheme 的含义 76
8.4 错误 79
8.5 布尔值表达式 81
8.6 变量定义 82
8.7 结构体的定义 83
第二部分 任意数目数据的处理 86
第9章 复合数据类型之二:表 86
9.1 表 86
9.2 任意长的表的数据定义 89
9.3 处理任意长的表 90
9.4 处理自引用数据的函数 92
9.5 更多关于简单表的例子 94
第10章 表的进一步处理 97
10.1 返回表的函数 97
10.2 包含结构体的表 101
10.3 补充练习:移动图像 105
第11章 自然数 106
11.1 定义自然数 107
11.2 处理任意大的自然数 108
11.3 补充练习:创建表,测试函数 110
11.4 自然数的另一种数据定义 111
11.5 更多与自然数有关的性质 115
第12章 三论函数复合 116
12.1 设计复杂的程序 116
12.2 递归的辅助函数 117
12.3 问题泛化与函数泛化 120
12.4 补充练习:字母的重新排列 123
第13章 用 list 构造表 125
第三部分 再论任意大数据的处理 129
第14章 再论自引用数据定义 129
14.1 结构体中的结构体 129
14.2 补充练习: 二叉搜索树 135
14.3 表中的表 138
14.4 补充练习: Scheme 求值 140
第15章 相互引用的数据定义 141
15.1 由结构体组成的表,结构体中的表 142
15.2 为相互引用的定义设计函数 146
15.3 补充练习:网页再谈 148
第16章 反复精化设计 148
16.1 数据分析 149
16.2 定义数据类型,再改进它们 150
16.3 改进函数和程序 152
第17章 处理两种复杂数据 153
17.1 同时处理两个表:第一种情况 153
17.2 同时处理两个表:第二种情况 155
17.3 同时处理两个表:第三种情况 157
17.4 函数的简化 160
17.5 设计读入两个复杂输入的函数 161
17.6 处理两个复杂输入的练习 162
17.7 补充练习: Scheme 求值之二 165
17.8 相等与测试 166
第18章 局部定义和词汇的范围 172
18.1 用 local 组织程序 172
18.2 辖域和块结构 183
第四部分 抽象设计 187
第19章 定义的相似性 187
19.1 函数的类似之处 187
19.2 数据定义的类似之处 193
第20章 函数也是值 196
20.1 语法和语义 197
20.2 抽象和多态函数的合约 198
第21章 抽象设计的例子 201
21.1 从实例中抽象 201
21.2 抽象表处理函数的练习 205
21.3 抽象与唯一控制点 206
21.4 补充练习:再论移动图像 207
21.5 注意:由模板设计抽象 208
第22章 使用函数设计抽象 209
22.1 返回函数的函数 210
22.2 把函数当成值来设计抽象 211
22.3 图形用户界面初探 213
第23章 数学方面的例子 218
23.1 数列和级数 219
23.2 等差数列和等差级数 220
23.3 等比数列和等比级数 221
23.4 函数曲线下方的面积 223
23.5 函数的斜率 225
第24章 定义匿名函数 229
24.1 lambda 表达式的语法 229
24.2 lambda 表达式的辖域和语义 230
24.3 lambda 表达式的语用 232
第五部分 生成递归 233
第25章 一种新的递归形式 233
25.1 为桌上的一个球建立模型 233
25.2 快速排序 236
第26章 设计算法 239
26.1 终止 240
26.2 结构递归和生成递归的比较 243
26.3 做出选择 243
第27章 主题的变更 246
27.1 分形 247
27.2 从文件到行,从表到表的表 251
27.3 二分查找 254
27.4 牛顿法 258
27.5 补充练习: 高斯消去法 259
第28章 回溯算法 263
28.1 图的遍历 263
28.2 补充练习: 皇后之间的相互阻碍 267
第29章 计算的代价、向量 268
29.1 具体的时间和抽象的时间 269
29.2 “阶”的定义 272
29.3 向量初探 274
第六部分 知识累积 283
第30章 知识的丢失 283
30.1 一个关于结构处理的问题 283
30.2 一个关于生成递归的问题 286
第31章 设计带累积器的函数 288
31.1 认识累积器的必要性 289
31.2 带累积器的函数 289
31.3 把函数转换成带累积器的变体 291
第32章 使用累积器的更多例子 298
32.1 补充练习:有关树的累积器 298
32.2 补充练习:传教士和食人者问题 302
32.3 补充练习:单人跳棋 304
第33章 非精确数的本质 305
33.1 固定长度的数的算术运算 305
33.2 上溢出 309
33.3 下溢出 309
33.4 DrScheme 数 310
第七部分 改变变量的状态 312
第34章 函数的记忆 312
第35章 对变量赋值 315
35.1 简单的、能工作的赋值 315
35.2 顺序计算表达式 316
35.3 赋值和函数 318
35.4 第一个有用的例子 320
第36章 设计有记忆的函数 322
36.1 对记忆的需求 322
36.2 记忆与状态变量 323
36.3 初始化记忆的函数 324
36.4 改变记忆的函数 325
第37章 使用记忆的例子 329
37.1 状态的初始化 329
37.2 与用户交互并改变状态 331
37.3 在递归中改变状态 338
37.4 状态变量的练习 342
37.5 补充练习:探索 343
第38章 最终的语法和语义 345
38.1 Advanced Scheme 的词汇 345
38.2 Advanced Scheme 的语法 345
38.3 Advanced Scheme 的含义 347
38.4 Advanced Scheme 中的错误 357
第八部分 复合值的改变 361
第39章 封装 361
39.1 状态变量的抽象 361
39.2 封装练习 368
第40章 可改变的结构体 369
40.1 由函数得出结构体 370
40.2 可变泛函结构体 372
40.3 可变的结构体 374
40.4 可变的向量 379
40.5 改变变量,改变结构体 380
第41章 设计改变结构体的函数 383
41.1 为什么改变结构体 383
41.2 结构体的设计诀窍与变化器之一 384
41.3 结构体的设计诀窍与变化器之二 392
41.4 补充练习:最后一次移动图像 401
第42章 相等 401
42.1 外延相等 401
42.2 内涵相等 402
第43章 修改结构体、向量和对象 404
43.1 关于向量的更多练习 404
43.2 循环结构体的收集 415
43.3 状态的回溯 423
结语 425
计算 425
程序设计 425
与时俱进 426