第一部分 簡單數(shù)據(jù)的處理
第1章 學生.教師和計算機 3
第2章 數(shù).表達式和簡單程序 5
2.1 數(shù)和算術運算 5
2.2 變量和程序 6
2.3 字處理問題 9
2.4 錯誤 10
2.5 設計程序 12
第3章 程序就是函數(shù)加上變量定義 15
3.1 函數(shù)復合 15
3.2 變量定義 17
3.3 函數(shù)復合練習 18
第4章 條件表達式和函數(shù) 20
4.1 布爾類型和關系 20
4.2 函數(shù)和條件測試 22
4.3 條件和條件函數(shù) 25
4.4 條件函數(shù)的設計 27
第5章 符號信息 31
第6章 復合數(shù)據(jù)之一:結構體 34
6.1 結構體 34
6.2 補充練習:繪制簡單圖形 36
6.3 結構體定義 38
6.4 數(shù)據(jù)定義 41
6.5 設計處理復合數(shù)據(jù)的函數(shù) 43
6.6 補充練習:圓和長方形的移動 46
6.7 補充練習:劊子手游戲 49
第7章 數(shù)據(jù)的多樣性 52
7.1 數(shù)據(jù)混合與區(qū)分 52
7.2 設計處理混合數(shù)據(jù)的函數(shù) 55
7.3 再論函數(shù)復合 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
第二部分 任意數(shù)目數(shù)據(jù)的處理
第9章 復合數(shù)據(jù)類型之二:表 77
9.1 表 77
9.2 任意長的表的數(shù)據(jù)定義 80
9.3 處理任意長的表 82
9.4 設計自引用數(shù)據(jù)定義的函數(shù) 84
9.5 更多關于簡單表的例子 86
第10章 表的進一步處理 90
10.1 返回表的函數(shù) 90
10.2 包含結構體的表 93
10.3 補充練習:移動圖片 98
第11章 自然數(shù) 100
11.1 定義自然數(shù) 100
11.2 處理任意大的自然數(shù) 101
11.3 補充練習:創(chuàng)建表, 測試函數(shù) 103
11.4 自然數(shù)的另一種數(shù)據(jù)定義 104
11.5 更多與自然數(shù)有關的性質 108
第12章 三論函數(shù)復合 110
12.1 設計復雜的程序 110
12.2 遞歸的輔助函數(shù) 111
12.3 問題泛化與函數(shù)泛化 114
12.4 補充練習:字母的重新排列 117
第13章 用list構造表 119
第三部分 再論任意大數(shù)據(jù)的處理
第14章 再論自引用數(shù)據(jù)定義 125
14.1 結構體中的結構體 125
14.2 補充練習:二叉搜索樹 131
14.3 表中的表 135
14.4 補充練習:Scheme求值 137
第15章 相互引用的數(shù)據(jù)定義 139
15.1 由結構體組成的表與結構體中的表 139
15.2 為相互引用的定義設計函數(shù) 144
15.3 補充練習:網頁再談 145
第16章 反復精化設計 147
16.1 數(shù)據(jù)分析 147
16.2 定義數(shù)據(jù)類型, 再改進它們 148
16.3 改進函數(shù)和程序 150
第17章 處理兩種復雜數(shù)據(jù)片段 152
17.1 同時處理兩個表:第一種情況 152
17.2 同時處理兩個表:第二種情況 154
17.3 同時處理兩個表:第三種情況 156
17.4 函數(shù)的簡化 159
17.5 設計讀入兩個復雜輸入的函數(shù) 160
17.6 處理兩個復雜輸入的練習 161
17.7 補充練習:Scheme求值之二 164
17.8 相等與測試 165
第18章 局部定義和轄域 172
18.1 用local組織程序 172
18.2 轄域和塊結構 183
第四部分 抽 象 設 計
第19章 定義的相似性 189
19.1 函數(shù)的類似之處 189
19.2 數(shù)據(jù)定義的類似之處 195
第20章 函數(shù)也是值 199
20.1 語法和語義 199
20.2 抽象函數(shù)和多態(tài)函數(shù)的合約 200
第21章 抽象設計的例子 204
21.1 從實例中抽象 204
21.2 抽象表處理函數(shù)的練習 208
21.3 抽象與惟一控制點 209
21.4 補充練習:再論圖片移動 210
21.5 注意:由模板設計抽象 211
第22章 使用函數(shù)進行抽象設計 213
22.1 返回函數(shù)的函數(shù) 213
22.2 把函數(shù)當成值來進行抽象設計 214
22.3 圖形用戶界面初探 216
第23章 數(shù)學方面的例子 223
23.1 數(shù)列和級數(shù) 223
23.2 等差數(shù)列和等差級數(shù) 225
23.3 等比數(shù)列和等比級數(shù) 225
23.4 函數(shù)曲線下方的面積 228
23.5 函數(shù)的斜率 229
第24章 定義匿名函數(shù) 234
24.1 lambda表達式的語法 234
24.2 lambda表達式的轄域和語義 235
24.3 lambda表達式的語用 237
第五部分 生 成 遞 歸
第25章 一種新的遞歸形式 241
25.1 為桌上的一個球建立模型 242
25.2 快速排序 244
第26章 設計算法 248
26.1 終止 249
26.2 結構遞歸與生成遞歸的比較 251
26.3 做出選擇 252
第27章 主題的變更 256
27.1 分形 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章 知識的丟失 297
30.1 一個與結構處理相關的問題 297
30.2 一個關于生成遞歸的問題 300
第31章 設計帶累積器的函數(shù) 304
31.1 認識累積器的必要性 304
31.2 帶累積器的函數(shù) 305
31.3 把函數(shù)轉換成帶累積器的變體 306
第32章 使用累積器的更多例子 315
32.1 補充練習:有關樹的累積器 315
32.2 補充練習:傳教士和食人者問題 319
32.3 補充練習:單人跳棋 321
第33章 非精確數(shù)的本質 323
33.1 固定長度的數(shù)的算術運算 323
33.2 上溢出 327
33.3 下溢出 328
33.4 DrScheme數(shù) 328
第七部分 改變變量的狀態(tài)
第34章 函數(shù)的記憶 333
第35章 對變量賦值 337
35.1 簡單的.能工作的賦值 337
35.2 順序計算表達式 339
35.3 賦值和函數(shù) 340
35.4 第一個有用的例子 342
第36章 設計有記憶的函數(shù) 346
36.1 對記憶的需求 346
36.2 記憶與狀態(tài)變量 347
36.3 初始化記憶的函數(shù) 348
36.4 改變記憶的函數(shù) 349
第37章 使用記憶的例子 354
37.1 狀態(tài)的初始化 354
37.2 與用戶交互并改變狀態(tài) 356
37.3 在遞歸中改變狀態(tài) 362
37.4 狀態(tài)變量的練習 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章 封裝 389
39.1 狀態(tài)變量的抽象 389
39.2 封裝練習 397
第40章 可改變的結構體 399
40.1 由函數(shù)得出結構體 399
40.2 可變的函數(shù)結構體 401
40.3 可變的結構體 403
40.4 可變的向量 409
40.5 改變變量與改變結構體 410
第41章 設計改變結構體的函數(shù) 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 帶循環(huán)的結構體集合 448
43.3 狀態(tài)的回溯 455
結束語 458
計算 458
程序設計 458
繼續(xù)學習 459