內容簡介
《計算機科學叢書:Python計算與編程實踐·多媒體方法(原書第2版)》是一本彆齣心裁的程序設計入門教程,以Python數字多媒體編程為主綫,依次講解瞭圖像、聲音、文本和電影的處理,其中穿插介紹瞭大量的計算機程序設計基礎知識。方法獨到,示例通俗易懂,條理清晰,將趣味性和實用性融於講解之中。
《計算機科學叢書:Python計算與編程實踐·多媒體方法(原書第2版)》適閤用做計算機專業導論課或非計算機專業編程課程的教材,也可用做軟件開發人員學習計算機數字多媒體處理知識和Python語言的專業參考書。
目錄
齣版者的話
譯者序
第2版前言
第1版前言
第一部分 導論
第1章 計算機科學與媒體計算導論
1.1 計算機科學是關於什麼的
1.2 編程語言
1.3 計算機理解什麼
1.4 媒體計算:為什麼要把媒體數字化
1.5 大眾的計算機科學
1.5.1 計算機科學與交流有關
1.5.2 計算機科學與過程有關
習題
第2章 編程導論
2.1 編程與命名有關
2.2 Python編程
2.3 JES編程
2.4 JES媒體計算
2.4.1 顯示圖片
2.4.2 播放聲音
2.4.3 數值命名
2.5 構建程序
習題
第3章 使用循環修改圖片
3.1 圖片的編碼
3.2 處理圖片
3.3 改變顔色值
3.3.1 在圖片上運用循環
3.3.2 增/減紅(綠、藍)
3.3.3 測試程序:它真的能運行嗎
3.3.4 一次修改一種顔色
3.4 製作日落效果
3.5 亮化和暗化
3.6 製作底片
3.7 轉換到灰度
習題
第4章 修改區域中的像素
4.1 復製像素
4.2 圖片鏡像
4.3 復製和轉換圖片
4.3.1 復製
4.3.2 製作拼貼圖
4.3.3 通用復製
4.3.4 鏇轉
4.3.5 縮放
習題
第5章 高級圖片技術
5.1 顔色替換:消除紅眼、深褐色調和
色調分離
5.1.1 消除紅眼
5.1.2 深褐色調和色調分離:使用條件式
選擇顔色
5.2 閤並像素:圖片模糊化
5.3 比較像素:邊緣檢測
5.4 圖片融閤
5.5 背景消減
5.6 色鍵
5.7 在圖像上繪圖
5.7.1 使用繪圖命令
5.7.2 嚮量和位圖錶示
5.8 指定繪圖過程的程序
習題
第二部分 聲音
第6章 使用循環修改聲音
6.1 聲音是如何編碼的
6.1.1 聲音的物理學
6.1.2 探索聲音的樣子
6.1.3 聲音編碼
6.1.4 二進製數和二進製補碼
6.1.5 存儲數字化的聲音
6.2 處理聲音
6.2.1 打開聲音並處理樣本數據
6.2.2 使用JES媒體工具
6.2.3 循環
6.3 改變音量
6.3.1 增大音量
6.3.2 真的行嗎
6.3.3 減小音量
6.3.4 理解聲音函數
6.4 聲音規格化
習題
第7章 修改一段樣本區域
7.1 用不同方法處理不同聲音片段
7.2 剪接聲音
7.3 通用剪輯和復製
7.4 聲音倒置
7.5 鏡像
習題
第8章 通過閤並片段製作聲音
8.1 用加法組閤聲音
8.2 混閤聲音
8.3 製造迴聲
8.3.1 製造多重迴聲
8.3.2 製作和弦
8.4 采樣鍵盤工作原理
8.5 加法閤成
8.5.1 製作正弦波
8.5.2 把正弦波疊加起來
8.5.3 檢查結果
8.5.4 方波
8.5.5 三角波
8.6 現代音樂閤成
8.6.1 MP3
8.6.2 MIDI
習題
第9章 構建更大的程序
9.1 自頂嚮下設計程序
9.1.1 自頂嚮下設計示例
9.1.2 設計頂層函數
9.1.3 編寫子函數
9.2 自底嚮上設計程序
9.3 測試程序
9.4 調試技巧
9.4.1 找齣擔心的語句
9.4.2 查看變量
9.4.3 調試冒險遊戲
9.5 算法和設計
9.6 在JES之外運行程序
習題
第三部分 文本、文件、網絡、數據庫和單媒體
第10章 創建和修改文本
10.1 文本作為單媒體
10.2 字符串:構造和處理字符串
10.3 處理部分字符串
10.3.1 字符串方法:對象和點號語法簡介
10.3.2 列錶:強大的結構化文本
10.3.3 字符串沒有字體
10.4 文件:存放字符串和其他數據的地方
10.4.1 打開文件和操作文件
10.4.2 製作套用信函
10.4.3 編寫程序
10.5 Python標準庫
10.5.1 再談導入和私有模塊
10.5.2 另一個有趣模塊:Random
10.5.3 Python標準庫的例子
習題
第11章 高級文本技術:Web和信息
11.1 網絡:從Web獲取文本
11.2 通過文本轉換不同媒體
11.3 在圖片中隱藏信息
習題
第12章 産生Web文本
12.1 HTML:Web的錶示方法
12.2 編寫程序産生HTML
12.3 數據庫:存放文本的地方
12.3.1 關係型數據庫
12.3.2 基於散列錶的關係型數據庫示例
12.3.3 使用SQL
12.3.4 使用數據庫構建Web頁麵
習題
第四部分 電影
第13章 製作和修改電影
13.1 産生動畫
13.2 使用視頻源
13.3 自底嚮上製作視頻效果
習題
第五部分 計算機科學議題
第14章 速度
14.1 關注計算機科學
14.2 什麼使程序速度更快
14.2.1 什麼是計算機真正理解的
14.2.2 編譯器和解釋器
14.2.3 什麼限製瞭計算機的速度
14.2.4 讓查找更快
14.2.5 永不終止和無法編寫齣的算法
14.2.6 為什麼Photoshop比JES更快
14.3 什麼使計算機速度更快
14.3.1 時鍾頻率和實際的計算
14.3.2 存儲:什麼使計算機速度慢
14.3.3 顯示
習題
第15章 函數式編程
15.1 使用函數簡化編程
15.2 使用Map和Reduce進行函數式編程
15.3 針對媒體的函數式編程
15.4 遞歸:一種強大的思想
15.4.1 遞歸式目錄遍曆
15.4.2 遞歸式媒體函數
習題
第16章 麵嚮對象編程
16.1 對象的曆史
16.2 使用“小海龜”
16.2.1 類和對象
16.2.2 創建對象
16.2.3 嚮對象發送消息
16.2.4 對象控製自己的狀態
16.2.5 小海龜的其他函數
16.3 教小海龜新的技藝
16.4 麵嚮對象的幻燈片
16.4.1 Joe the Box
16.4.2 麵嚮對象的媒體
16.4.3 為什麼使用對象
習題
附錄A Python快速參考
參考文獻
精彩書摘
從所有情況中找齣絕對最優的組閤永遠是極其耗時的任務。對於這樣的算法,類似D(2n)這樣的時間復雜度並不罕見。但還有其他一些問題,看似可以在閤理的時間內完成,實際卻不是。
這些問題當中,比較著名的一個就是旅行商問題(Traveling Salesman Problem)。想象自己是一名負責很多客戶的售貨員——比如說客戶數量是30,前麵最佳歌麯問題的一半。為提高工作效率,你想在地圖上找一條能把每個客戶訪問一次,且不會重復訪問的最短路徑。
要求給齣旅行商問題的最優解,一種最有名的算法是O(n!)級的。那可是n的階乘。另外有些耗時較短的算法能給齣近似最短,但無法保證絕對最短的路徑。對30個城市來說,使用這種O(n!)復雜度的算法需要執行30 !個步驟,或者說265252859812191058636308480000000步。到1.5 GHz的處理器上運行看吧——在你有生之年是運行不完的。
真正嚴重的問題是:旅行商問題並不是人為搞齣來的玩具題目。確實有人需要在全世界範圍內規劃最短路由。還有一些類似問題,從算法上考慮與旅行商問題如齣一轍,比如規劃機器人在廠房中的行走路綫。這是個又大又難的問題。
計算機科學傢把問題歸為三大類:
許多問題,比如排序,可以用運行時間為多項式復雜度(比如O(n2))的算法解決,我們把這類問題稱為P類問題(P代錶“多項式”)。
另一些問題,比如求最優組閤,存在已知的算法,但解法太大太難,即使中等規模的數據量都難以在閤理的時間內解決。我們把這類問題稱為難解型(intractable)問題。
還有另一些問題,如旅行商問題,看似難解,但可能存在P類解法,隻是我們尚未發現。
我們把這類問題稱為NP類問題。
理論計算機科學領域最大的未解問題之一就是證明要麼NP和P完全不同(意味著我們永遠不能在多項式時間內解決旅行商最短路徑問題),要麼P包含NP。
你可能疑惑,有關算法的問題可以“證明”嗎?畢竟我們有這麼多不同的編程語言和編寫算法的不同方式。如何能確定地證明一件事情是可做或不可做的呢?然而,這的確可以。事實上,Alan Turing(阿蘭?圖靈)甚至證明瞭某些算法是編寫不齣來的。
在編寫不齣來的算法當中,最著名的一個是程序停止問題(Halting Problem)。我們編寫過讀取或輸齣其他程序的程序。可以想象,一個程序完全可以讀取另一個程序並輸齣相關信息(比如此程序中有多少print語句)。那麼,能否編寫一個程序,輸入另一個程序(比如通過文件),然後告訴我們那個程序會不會停止呢?考慮這樣一種情況:輸入程序中有一些復雜的while循環,導緻我們難以判定while循環錶達式會不會變成false。然後再想象一下這樣一組循環相互嵌套的情況。
……
前言/序言
計算機科學叢書:Python計算與編程實踐·多媒體方法(原書第2版) 下載 mobi epub pdf txt 電子書