內容介紹
電腦程式設計課程往往是枯燥乏味的,而本書根據教育理論,開發了一種新的教學方法,介紹如何通過多媒體編程來學習電腦程式設計,將趣味性和實用性融於枯燥的編程課程的教學當中。本書方法獨特新穎,實例通俗易懂,可幫助讀者快速入門並深入掌握編程技能,是一本理論聯繫實際的程式設計教程。本書使用的程式語言是Python,這是因為Python強大實用(比如網站開發)、易於入門,計算機科學專業和非專業人士都可以學習。本書以Python數字多媒體編程為主線,從圖像、聲音、文本和電影這些學生已經熟知的內容開始,講解它們的處理方法,其中穿插介紹計算機科學與程式設計的基礎知識。在講解知識點的時候也獨具匠心,先介紹容易理解的基本概念,如賦值、順序操作、疊代、條件式、函式定義等,逐步涉及抽象內容,如算法複雜度、程式效率、計算機組成、層次式分解、遞歸、面向對象等。本書還提供了大量例題和習題,方便教學。
作者介紹
Mark Guzdial 是喬治亞理工學院計算機學院互動式計算專業的教授。他是ACM國際計算機教育研究系列研討會的創立者之一,ACM教育委員會副主席,“Journal of the Learning Sciences”和“Communications of the ACM”編委會委員。Guzdial博士主要關注計算機教育方面的研究。他的第一本著作論述Squeak語言及其在教育中的套用。他是Swiki(Squeak Wiki)的早期開發者,Swiki是第一個專門用於學校的wiki。他出版了多本關於利用多媒體編程環境學習計算機編程的著作,影響了世界各地的計算機本科生教學。Barbara Ericson 是喬治亞理工學院計算機學院“計算機普及”課程的主管和研究人員。她從2004年開始就致力於改善計算機基礎教育,現在是計算機科學教師協會的師範教育代表,美國女性信息技術中心K-12聯盟的合作主席,計算機科學AP考試開發委員會成員。她的研究興趣涉及計算機圖形學、人工智慧和面向對象編程等多個領域。
作品目錄
出版者的話譯者序
第2版前言
第1版前言
第一部分 導 論
第1章 計算機科學與媒體計算導論 2
1.1 計算機科學是關於什麼的 2
1.2 程式語言 4
1.3 計算機理解什麼 5
1.4 媒體計算:為什麼要把媒體數位化 7
1.5 大眾的計算機科學 8
1.5.1 計算機科學與交流有關 8
1.5.2 計算機科學與過程有關 9
習題 9
第2章 編程導論 11
2.1 編程與命名有關 11
2.2 python編程 13
2.3 jes編程 13
2.4 jes媒體計算 15
.2.4.1 顯示圖片 18
2.4.2 播放聲音 19
2.4.3 數值命名 20
2.5 構建程式 22
習題 27
第3章 使用循環修改圖片 30
3.1 圖片的編碼 30
3.2 處理圖片 35
3.3 改變顏色值 40
3.3.1 在圖片上運用循環 40
3.3.2 增/減紅(綠、藍) 42
3.3.3 測試程式:它真的能運行嗎 45
3.3.4 一次修改一種顏色 46
3.4 製作日落效果 47
3.5 亮化和暗化 51
3.6 製作底片 52
3.7 轉換到灰度 53
習題 55
第4章 修改區域中的像素 58
4.1 複製像素 58
4.2 圖片鏡像 60
4.3 複製和轉換圖片 66
4.3.1 複製 66
4.3.2 製作拼貼圖 72
4.3.3 通用複製 74
4.3.4 鏇轉 75
4.3.5 縮放 77
習題 81
第5章 高級圖片技術 84
5.1 顏色替換:消除紅眼、深褐色調和
色調分離 84
5.1.1 消除紅眼 86
5.1.2 深褐色調和色調分離:使用條件式
選擇顏色 88
5.2 合併像素:圖片模糊化 92
5.3 比較像素:邊緣檢測 93
5.4 圖片融合 94
5.5 背景消減 96
5.6 色鍵 98
5.7 在圖像上繪圖 101
5.7.1 使用繪圖命令 102
5.7.2 向量和點陣圖表示 104
5.8 指定繪圖過程的程式 105
習題 107
第二部分 聲 音
第6章 使用循環修改聲音 110
6.1 聲音是如何編碼的 110
6.1.1 聲音的物理學 110
6.1.2 探索聲音的樣子 113
6.1.3 聲音編碼 115
6.1.4 二進制數和二進制補碼 116
6.1.5 存儲數位化的聲音 117
6.2 處理聲音 118
6.2.1 打開聲音並處理樣本數據 118
6.2.2 使用jes媒體工具 121
6.2.3 循環 123
6.3 改變音量 123
6.3.1 增大音量 123
6.3.2 真的行嗎 124
6.3.3 減小音量 127
6.3.4 理解聲音函式 128
6.4 聲音規格化 128
習題 131
第7章 修改一段樣本區域 133
7.1 用不同方法處理不同聲音片段 133
7.2 剪接聲音 135
7.3 通用剪輯和複製 140
7.4 聲音倒置 142
7.5 鏡像 143
習題 144
第8章 通過合併片段製作聲音 146
8.1 用加法組合聲音 146
8.2 混合聲音 147
8.3 製造回聲 148
8.3.1 製造多重回聲 149
8.3.2 製作和弦 149
8.4 採樣鍵盤工作原理 150
8.5 加法合成 153
8.5.1 製作正弦波 153
8.5.2 把正弦波疊加起來 155
8.5.3 檢查結果 156
8.5.4 方波 157
8.5.5 三角波 158
8.6 現代音樂合成 160
8.6.1 mp3 161
8.6.2 midi 161
習題 162
第9章 構建更大的程式 164
9.1 自頂向下設計程式 164
9.1.1 自頂向下設計示例 165
9.1.2 設計頂層函式 166
9.1.3 編寫子函式 168
9.2 自底向上設計程式 171
9.3 測試程式 172
9.4 調試技巧 174
9.4.1 找出擔心的語句 174
9.4.2 查看變數 175
9.4.3 調試冒險遊戲 176
9.5 算法和設計 179
9.6 在jes之外運行程式 180
習題 181
第三部分 文本、檔案、網路、
資料庫和單媒體
第10章 創建和修改文本 186
10.1 文本作為單媒體 186
10.2 字元串:構造和處理字元串 187
10.3 處理部分字元串 189
10.3.1 字元串方法:對象和點號語法
簡介 190
10.3.2 列表:強大的結構化文本 191
10.3.3 字元串沒有字型 194
10.4 檔案:存放字元串和其他數據的
地方 194
10.4.1 打開檔案和操作檔案 195
10.4.2 製作套用信函 197
10.4.3 編寫程式 197
10.5 python標準庫 201
10.5.1 再談導入和私有模組 202
10.5.2 另一個有趣模組:random 202
10.5.3 python標準庫的例子 204
習題 205
第11章 高級文本技術:web和信息 208
11.1 網路:從web獲取文本 208
11.2 通過文本轉換不同媒體 211
11.3 在圖片中隱藏信息 216
習題 219
第12章 產生web文本 221
12.1 html:web的表示方法 221
12.2 編寫程式產生html 225
12.3 資料庫:存放文本的地方 229
12.3.1 關係型資料庫 231
12.3.2 基於散列表的關係型資料庫示例 231
12.3.3 使用sql 234
12.3.4 使用資料庫構建web頁面 236
習題 237
第四部分 電 影
第13章 製作和修改電影 240
13.1 產生動畫 241
13.2 使用視頻源 247
13.3 自底向上製作視頻效果 250
習題 254
第五部分 計算機科學議題
第14章 速度 258
14.1 關注計算機科學 258
14.2 什麼使程式速度更快 258
14.2.1 什麼是計算機真正理解的 258
14.2.2 編譯器和解釋器 259
14.2.3 什麼限制了計算機的速度 263
14.2.4 讓查找更快 265
14.2.5 永不終止和無法編寫出的算法 266
14.2.6 為什麼photoshop比jes更快 268
14.3 什麼使計算機速度更快 268
14.3.1 時鐘頻率和實際的計算 268
14.3.2 存儲:什麼使計算機速度慢 269
14.3.3 顯示 270
習題 270
第15章 函式式編程 272
15.1 使用函式簡化編程 272
15.2 使用map和reduce進行函式式編程 275
15.3 針對媒體的函式式編程 277
15.4 遞歸:一種強大的思想 279
15.4.1 遞歸式目錄遍歷 284
15.4.2 遞歸式媒體函式 286
習題 287
第16章 面向對象編程 289
16.1 對象的歷史 289
16.2 使用“小海龜” 290
16.2.1 類和對象 290
16.2.2 創建對象 290
16.2.3 向對象傳送訊息 291
16.2.4 對象控制自己的狀態 292
16.2.5 小海龜的其他函式 293
16.3 教小海龜新的技藝 295
16.4 面向對象的幻燈片 297
16.4.1 joe the box 300
16.4.2 面向對象的媒體 302
16.4.3 為什麼使用對象 306
習題 307
附錄a python快速參考 309
參考文獻 313