如何设计程序
对计算与程序设计的介绍
Matthias Felleisen
Robert Bruce Findler
Matthew Flatt
Shriram Krishnamurthi
The MIT Press
Cambridge,Massachusetts
London,England
内容描述
本书通过介绍编程把计算机科学放进文科教育的核心。不像其它入门书,它着重于程序的设计过程。这种方法培育各种技能——
批判性阅读,分析思考,创造性的合成,并注重细节——这对任何人都是重要的,不只是未来的计算机程序员。
本书展示给读者两个截然不同的新思路。首先,它提出了程序设计指导方针,展示了读者如何分析问题的声明;如何制定简明
的目标;如何产生示例;如何开发一个基于分析的解决方案大纲;如何完成程序;以及如何测试它;每一步产生一个明确的中
间产品。二,本书附带了一个新的编程环境,第一个明确专为初学者设计的环境。随着本书读者掌握的材料,环境随之增强,
直到它成为支持全面的程序设计任务的正式语言。
本书所有的支持材料都可通过网站免费获得。网站上包括编程环境,教师指导,所有级别的练习,解决方案和附加项目。
内容表
前言
为什么每个人都要学习编程
设计方法
为何选择Scheme和DrSheme
本书部分
感谢
I 处理简单形式的数据
1 学生,教师和计算机
2 数字,表达式和简单程序
2.1 数字和算术
2.2 变量和程序
2.3 文字处理问题
2.4 错误
2.5 设计程序
3 程序就是函数加上变量定义
3.1 复合函数
3.2 变量定义
3.3 函数复合练习
4 条件表达式和函数
4.1 布尔类型和关系
4.2 条件测试和函数
4.3 条件和条件函数
4.4 设计条件函数
5 符号信息
5.1 使用符号的查找练习
6 复合数据之一:结构体
6.1 结构体
6.2 补充练习:简单绘图
6.3 结构体定义
6.4 数据定义
6.5 设计处理复合数据的函数
6.6 补充练习:移动圆和矩形
6.7 补充练习:刽子手游戏
7 数据的多样性
7.1 混合和区分数据
7.2 设计处理混合数据的函数
7.3 再论复合函数
7.4 补充练习:移动图形
7.5 输入错误
8 附录 1: 语法和语义
8.1 Scheme语言的词汇
8.2 Scheme语言的语法
8.3 Scheme的含义
8.4 错误
8.5 布尔表达式
8.6 变量定义
8.7 结构定义
II 处理任意大的数据
9 组合数据,第二部分:列表
9.1 列表
9.2 定义任意长数据列表
9.3 处理任意长的列表
9.4 为自引用数据定义设计函数
9.5 处理简单列表
10 处理列表
10.1 生成列表的函数
10.2 包含结构的列表
10.3 扩展练习:移动图像
11 自然数
11.1 定义自然数
11.2 处理任意大的自然数
11.3 扩展练习:建立列表,测试函数
11.4 自然数的非正式数据定义
11.5 更多自然数的性质
12 编写函数,再次回顾
12.1 设计复杂程序
12.2 辅助递归函数
12.3 归纳问题,归纳函数
12.4 扩展练习:重排文字
13 附录 2:列表缩写
III 进一步处理任意大数据
14 自引用数据定义进阶
14.1 结构中的结构
14.2 扩展联系:二叉搜索树
14.3 列表中的列表
14.4 扩展练习:Scheme求值
15 互引用的数据定义
15.1 结构的列表与结构中的列表
15.2 为互引用定义设计结构
15.3 扩展练习:网页上的更多内容
16 反复迭代式的开发
16.1 数据分析
16.2 定义数据类然后精炼它们
16.3 精炼函数和程序
17 处理两个复合数据
17.1 同时处理两个列表:案例1
17.2 同时处理两个列表:案例2
17.3 同时处理两个列表:案例3
17.4 功能简化
17.5 设计读入两个复杂输入的函数
17.6 练习处理两个复杂输入
17.7 扩展练习:Scheme求值,第二部分
17.8 等式和测试
18 附录 3:局部定义和词汇范围
18.1 通过局部组织程序
18.2 词汇范围和块结构
IV 抽象设计
19 定义中的相似
19.1 函数中的相似
19.2 数据定义中的相似
20 函数是值
20.1 句法和语义
20.2 承建抽象和多态函数
21 设计来自例子的抽象
21.1 来自例子的抽象
21.2 查找练习通过抽象列表函数
21.3 抽象和简单控制点
21.4 扩展练习:再次移动图像
21.5 注记:从模板设计抽象
22 通过第一类函数设计抽象
22.1 产生函数的函数
22.2 通过把函数作为值来设计抽象
22.3 图形用户接口一瞥
23 数学例子
23.1 数列和级数
23.2 算术数列和算术级数
23.3 几何数列和几何级数
23.4 函数曲线下的面积
23.5 函数的斜率
24 附录 4:在飞行中定义函数
V 产生式递归
25 新的递归形式
25.1 为桌子上的球建模
25.2 快速排序
26 设计算法
26.1 终止
26.2 结构化与产生式递归
26.3 做选择
27 Scheme变种
27.1 分形
27.2 从文件到行,从列表到列表的列表
27.3 二分查找
27.4 牛顿方法
27.5 扩展练习:高斯消去法
28 回溯算法
28.1 遍历图
28.2 补充练习:八皇后问题
29 附录 5:计算的代价和向量
29.1 具体时间,抽象时间
29.2 "阶"的定义
29.3 向量一瞥
VI 知识积累
30 知识的丧失
30.1 结构处理问题
30.2 生成递归问题
31 设计聚集类型函数
31.1 了解对聚集的需求
31.2 聚集类型函数
31.3 转换函数到聚集类型
32 聚集的更多使用
32.1 补充练习:树上的聚集
32.2 补充练习:传教士和食人族
32.3 补充练习:纸牌
33 附录 6:不精确数的性质
33.1 定点数算术
33.2 上溢
33.3 下溢
33.4 DrScheme中的数
VII 改变变量的状态
34 函数的记忆
35 给变量赋值
35.1 简单赋值
35.2 顺序表达式求值
35.3 赋值和函数
35.4 第一个有用的例子
36 设计有记忆的函数
36.1 对记忆的需要
36.2 记忆和状态变量
36.3 初始化存储的函数
36.4 改变存储的函数
37 存储使用示例
37.1 初始化状态
37.2 来自用户交互的状态改变
37.3 来自递归的状态改变
37.4 状态改变练习
37.5 扩展联系:探索空间
38 附录 7:最终句法和语义
38.1 高级Scheme词汇
38.2 高级Scheme语法
38.3 高级Scheme语义
38.4 高级Scheme中的错误
VIII 改变复合值
39 包装
39.1 状态变量抽象
39.2 包装练习
40 易变结构
40.1 来自函数的结构
40.2 易变函数结构
40.3 易变结构
40.4 易变向量
40.5 改变变量,改变结构
41 设计改变结构的函数
41.1 为什么要改变结构体
41.2 结构设计诀窍和变通,第一部分
41.3 结构设计诀窍和变通,第二部分
41.4 补充练习:最后一次移动图片
42 相等
42.1 外延相等
42.2 内涵相等
43 改变结构体,向量和对象
43.1 更多向量实践
43.2 循环结构体集合
43.3 状态回溯
后记
计算
程序设计
继续前进
索引
分享到:
相关推荐
HTDP指的是“如何设计程序”(How to Design Programs),这是一本经典的计算机科学教育书籍,由Matthias Felleisen等人撰写,主要教授基于Scheme语言的程序设计技术。这本书强调的是一种设计方法,即编程设计食谱...
《How to Design Programs》是一本深受编程初学者欢迎的书籍,它详细介绍了程序设计的方法和理念,旨在引导读者从零开始掌握编程技能。这本书的独特之处在于它的中英合集,既方便了中国读者理解,也提供了原汁原味的...
How to design programs -- An Introduction to Computing and Programming!从官网上抓取下来的网页,差不多整个www.htdp.org都抓取下来了,所以到这里共享给各位! 该书的中文译本是如何设计程序,很好的一本书。
To keep readers up-to-date with leading-edge computing technologies, the Tenth Edition conforms to the C++11 standard and the new C++14 standard. 1Introduction to Computers and C++ 2 Introduction to ...
MIT.Press.-.How.to.Design.Programs.-.An.Introduction.to.Programming.and.Computing,.Revised.Edition.-.2003
《如何设计程序》是一本备受推崇的编程教材,它深入浅出地介绍了程序设计的方法和思维方式,对于初学者和有经验的程序员来说都是极好的学习资源。这本书的核心目标是教会读者如何系统化、结构化地思考和构建软件,...
CHM版本.据说此书很经典.但目前网上似乎没有离线版.今天终于全部爬完.暂时没发现和原版有什么区别.
与其他介绍性书籍不同,本书聚焦于程序设计的过程,旨在培养读者多方面的能力,如批判性阅读、分析思考、创造性综合以及对细节的关注等,这些能力不仅对于未来的程序员至关重要,同样适用于所有学习者。 #### 重点...
国外2B市场很早就成熟了,有一批专业人士一辈子都在研究数据管理及治理,有很多专业...John Ladley-Data Governance_ How to Design, Deploy and Sustain an Effective Data Governance Program-Morgan Kaufmann (2012)
The book starts with a brief introduction to Go programming essentials and quickly moves on to explain the idea behind the creation of design patterns and how they appeared in the 90's as a common ...
Title: C++ Programming: From Problem Analysis to Program Design, 7th Edition Author: D. S. Malik Length: 1488 pages Edition: 7 Language: English Publisher: Course Technology Publication Date: 2014-02-...
When working on the program design, we mainly consider how to manufacture the software system, but not to specify what this software system is. A software system has been designed hopefully to be an ...
We’ll also talk about reading code, what makes a program readable, and how to review code that others have written with an eye to making it better. Can good, readable code replace documentation? How...
滤波器设计软件FilterLab v2.0 Release Notes for FilterLab v2.0 ----------------------------------------------------------------- Table of Contents ---------------------------------------------------...
C++ Programming: Program Design Including Data Structures (7th Revised edition) By D. S. Malik 2015 | 1680 Pages | ISBN: 1285852753 | PDF | 25 MB C++ PROGRAMMING: PROGRAM DESIGN INCLUDING DATA ...
This book fills a void between the many syntax-oriented programming texts that teach readers how to program in C++ with standard I/O (e.g., Deitel) and the relatively few books that assume a knowledge...
This book actually guides you step by step in a lucid and simple way how to design a compiler ultimately. I am guessing you have compiled a high-level program some time or the other or rather, you do...