《程序设计方法 中文版》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:(美)Matthias Felleisen等著;黄林鹏,朱崇恺译
  • 出 版 社:北京市:人民邮电出版社
  • 出版年份:2003
  • ISBN:7115115567
  • 页数:460 页
图书介绍:本书以Scheme语言为基础介绍计算和程序设计的一般理论和实践。

目录 3

第一部分简单数据的处理 3

第1章学生、教师和计算机 3

第2章数、表达式和简单程序 5

2.1数和算术运算 5

2.2变量和程序 6

2.3字处理问题 9

2.4错误 10

2.5设计程序 12

第3章程序就是函数加上变量定义 15

3.1 函数复合 15

3.2变量定义 17

3.3 函数复合练习 18

第4章条件表达式和函数 20

4.1布尔类型和关系 20

4.2函数和条件测试 22

4.3条件和条件函数 25

4.4条件函数的设计 27

第5章符号信息 31

第6章复合数据之一:结构体 34

6.1 结构体 34

6.2补充练习:绘制简单图形 36

6.3结构体定义 38

6.4数据定义 41

6.5设计处理复合数据的函数 43

6.6补充练习:圆和长方形的移动 46

6.7补充练习:刽子手游戏 49

第7章数据的多样性 52

7.1数据混合与区分 52

7.2设计处理混合数据的函数 55

7.3再论函数复合 58

7.4补充练习:图形的移动 60

7.5输入错误 61

第8章语法和语义 63

8.1 Scheme的词汇 63

8.2 Scheme的文法 64

8.3 Scheme的含义 65

8.4错误 68

8.5布尔值表达式 70

8.6变量定义 71

8.7结构体的定义 72

第二部分任意数目数据的处理 77

第9章复合数据类型之二:表 77

9.1表 77

9.2任意长的表的数据定义 80

9.3处理任意长的表 82

9.4设计自引用数据定义的函数 84

9.5更多关于简单表的例子 86

第10章表的进一步处理 90

10.1返回表的函数 90

10.2包含结构体的表 93

10.3补充练习:移动图片 98

第11章自然数 100

11.1定义自然数 100

11.2处理任意大的自然数 101

11.3补充练习:创建表,测试函数 103

11.4 自然数的另一种数据定义 104

11.5更多与自然数有关的性质 108

第12章三论函数复合 110

12.1设计复杂的程序 110

12.2递归的辅助函数 111

12.3问题泛化与函数泛化 114

12.4补充练习:字母的重新排列 117

第13章用list构造表 119

第三部分再论任意大数据的处理 125

第14章再论自引用数据定义 125

14.1结构体中的结构体 125

14.2补充练习:二叉搜索树 131

14.3表中的表 135

14.4补充练习:Scheme求值 137

第15章相互引用的数据定义 139

15.1 由结构体组成的表与结构体中的表 139

15.2为相互引用的定义设计函数 144

15.3补充练习:网页再谈 145

16.1 数据分析 147

第16章反复精化设计 147

16.2定义数据类型,再改进它们 148

16.3改进函数和程序 150

第17章处理两种复杂数据片段 152

17.1 同时处理两个表:第一种情况 152

17.2同时处理两个表:第二种情况 154

17.3同时处理两个表:第三种情况 156

17.4函数的简化 159

17.5设计读入两个复杂输入的函数 160

17.6处理两个复杂输入的练习 161

17.7补充练习:Scheme求值之二 164

17.8相等与测试 165

18.1用local组织程序 172

第18章局部定义和辖域 172

18.2辖域和块结构 183

第四部分抽象设计 189

第19章定义的相似性 189

19.1 函数的类似之处 189

19.2数据定义的类似之处 195

第20章函数也是值 199

20.1语法和语义 199

20.2抽象函数和多态函数的合约 200

第21章抽象设计的例子 204

21.1从实例中抽象 204

21.2抽象表处理函数的练习 208

21.3抽象与惟一控制点 209

21.4补充练习:再论图片移动 210

21.5注意:由模板设计抽象 211

第22章使用函数进行抽象设计 213

22.1返回函数的函数 213

22.2把函数当成值来进行抽象设计 214

22.3图形用户界面初探 216

第23章数学方面的例子 223

23.1数列和级数 223

23.2等差数列和等差级数 225

23.3等比数列和等比级数 225

23.4函数曲线下方的面积 228

23.5函数的斜率 229

24.1 lambda表达式的语法 234

第24章定义匿名函数 234

24.2 lambda表达式的辖域和语义 235

24.3 lambda表达式的语用 237

第五部分生成递归 241

第25章一种新的递归形式 241

25.1 为桌上的一个球建立模型 242

25.2快速排序 244

第26章设计算法 248

26.1终止 249

26.2结构递归与生成递归的比较 251

26.3做出选择 252

27.1 分形 256

第27章主题的变更 256

27.2从文件到行,从表到表的表 260

27.3二分查找 263

27.4牛顿法 267

27.5补充练习:高斯消去法 269

第28章回溯算法 273

28.1 图的遍历 273

28.2补充练习:皇后之间的相互攻击 277

第29章计算的代价和向量 280

29.1具体的时间和抽象的时间 280

29.2 “阶”的定义 284

29.3向量初探 286

30.1一个与结构处理相关的问题 297

第六部分知识累积 297

第30章知识的丢失 297

30.2一个关于生成递归的问题 300

第31章设计带累积器的函数 304

31.1认识累积器的必要性 304

31.2带累积器的函数 305

31.3把函数转换成带累积器的变体 306

第32章使用累积器的更多例子 315

32.1补充练习:有关树的累积器 315

32.2补充练习:传教士和食人者问题 319

32.3补充练习:单人跳棋 321

第33章非精确数的本质 323

33.1 固定长度的数的算术运算 323

33.2上溢出 327

33.3下溢出 328

33.4 DrScheme数 328

第七部分改变变量的状态 333

第34章函数的记忆 333

第35章对变量赋值 337

35.1简单的、能工作的赋值 337

35.2顺序计算表达式 339

35.3赋值和函数 340

35.4第一个有用的例子 342

第36章设计有记忆的函数 346

36.1对记忆的需求 346

36.2记忆与状态变量 347

36.3初始化记忆的函数 348

36.4改变记忆的函数 349

第37章使用记忆的例子 354

37.1状态的初始化 354

37.2与用户交互并改变状态 356

37.3在递归中改变状态 362

37.4状态变量的练习 367

37.5补充练习:探险 368

第38章最终的语法和语义 371

38.1 Advanced Scheme的词汇 371

38.2 Advanced Scheme的文法 371

38.3 Advanced Scheme的含义 373

38.4 Advanced Scheme中的错误 383

39.1状态变量的抽象 389

第八部分复合值的改变 389

第39章封装 389

39.2封装练习 397

第40章可改变的结构体 399

40.1由函数得出结构体 399

40.2可变的函数结构体 401

40.3可变的结构体 403

40.4 可变的向量 409

40.5改变变量与改变结构体 410

第41章设计改变结构体的函数 414

41.1 为什么改变结构体 414

41.2结构体的设计诀窍与变化器之一 414

41.3结构体的设计诀窍与变化器之二 423

41.4补充练习:最后一次移动图片 431

第42章相等 433

42.1外延相等 433

42.2内涵相等 434

第43章修改结构体、向量和对象 437

43.1关于向量的更多练习 437

43.2带循环的结构体集合 448

43.3状态的回溯 455

结束语 458

计算 458

程序设计 458

继续学习 459