C 之父BjarneStroustrup經典著作《C 程序設計:原理與實踐(原書第2版)》基于新的C 11和C 14,廣泛地介紹了程序設計的基本概念和技術,包括類型系統、算術運算、控制結構、錯誤處理等;介紹了從鍵盤和文件獲取數值和文本數據的方法以及以圖形化方式表示數值數據、文本和幾何圖形;介紹了C 標準庫中的容器(如向量、列表、映射)和算法(如排序、查找和內積)的設計和使用。同時還對C 思想和歷史進行了詳細的討論,很好地拓寬了讀者的視野。為方便讀者循序漸進學習,加上篇幅所限,《C 程序設計:原理與實踐(原書第2版)》分為基礎篇和進階篇兩冊出版,基礎篇包括第0~11章、第17~19章和附錄A、C,進階篇包括第12~16章、第20~27章和附錄B、D、E。本書是進階篇。本書通俗易懂、實例豐富,可作為大學計算機、電子工程、信息科學等相關專業的教材,也可供相關專業人員參考。
作者簡介Programming: Principles and Practice Using C , Second Edition你也許有理由問:“是一些什么人想要教我程序設計?”那么,下面給出作者的一些生平信息。Bjarne Stroustrup和Lawrence“Pete”Petersen合著了本書。Stroustrup還設計并講授了面向大學一年級學生的課程,這門課程是與本書同步發展起來的,以本書的初稿作為教材。
Bjarne Stroustrup我是C 語言的設計者和初的實現者。在過去大約40年間,我使用C 和許多其他程序設計語言進行過各種各樣的編程工作。我喜歡那些用在富有挑戰性的應用(如機器人控制、繪圖、游戲、文本分析以及網絡應用)中的優美而又高效的代碼。我教過能力和興趣各異的人設計、編程和C 語言。我是ISO標準組織C 委員會的創建者,現在是該委員會語言演化工作組的主席。
這是我及時本入門性的書。我編著的其他書籍如《The C Pro-gramming Language》和《The Design and Evolution of C 》都是面向有經驗的程序員的。
我生于丹麥奧爾胡斯一個藍領(工人階級)家庭,在家鄉的大學獲得了數學與計算機科學碩士學位。我的計算機科學博士學位是在英國劍橋大學獲得的。我為AT&T工作了大約25年,初在著名的貝爾實驗室的計算機科學研究中心——Unix、C、C 及其他很多東西的發明地,后來在AT&T實驗室研究中心。
我現在是美國國家工程院的院士,ACM會士(Fellow)和IEEE會士。我獲得了2005年度Sigma Xi(科學研究協會)的科學成就William Procter獎,我是首位獲得此獎的計算機科學家。2010年,我獲得了丹麥奧爾胡斯大學古老也富聲望的獎項Rigmor og Carl Holst-Knudsens Videnskapspris,該獎項頒發給為科學做出貢獻的與該校有關的人士。2013年,我被位于俄羅斯圣彼得堡的信息技術、力學和光學(ITMO)國立研究大學授予計算機科學榮譽博士學位。
至于工作之外的生活,我已婚,有兩個孩子,一個是醫學博士,另一個在進行博士后研究。我喜歡閱讀(包括歷史、科幻、犯罪及時事等各類書籍),還喜歡各種音樂(包括古典音樂、搖滾、藍調和鄉村音樂)。和朋友一起享受美食是我生活中必不可少的一部分,我還喜歡參觀世界各地有趣的地方。為了能夠享受美食,我還堅持跑步。
關于我的更多信息,請見我的網站www.stroustrup.com。特別是,你可以在那里找到我名字的正確發音。
Lawrence“Pete”Petersen2006年年末,Pete如此介紹他自己:“我是一名教師。近20年來,我一直在德州農工大學講授程序設計語言。我已5次被學生選為教師,并于1996年被工程學院的校友會選為杰出教師。我是Wakonse教師計劃的委員和教師發展研究院院士。
作為一名陸軍軍官的兒子,我的童年是在不斷遷移中度過的。在華盛頓大學獲得哲學學位后,我作為野戰炮兵官員和操作測試研究分析員在軍隊服役了22年。1971年至1973年期間,我在俄克拉荷馬希爾堡講授野戰炮兵軍官的高級課程。1979年,我幫助創建了測試軍官的訓練課程,并在1978年至1981年及1985年至1989年期間在跨越美國的九個不同地方以首席教官的身份講授這門課程。
1991年我組建了一個小型的軟件公司,生產供大學院系使用的管理軟件,直至1999年。我的興趣在于講授、設計和實現供人們使用的實用軟件。我在喬治亞理工大學獲得了工業管理學碩士學位,在德州農工大學獲得了教育管理學碩士學位。我還從NTS獲得了微型計算機碩士學位。我在德州農工大學獲得了信息與運營管理學博士學位。
我和我的妻子Barbara都生于德州的布萊恩。我們喜歡旅行、園藝和招待朋友;我們花盡可能多的時間陪我們的兒子和他們的家庭,特別是我們的孫子和孫女Angelina、Carlos、Tess、Avery、Nicholas和Jordan。”
令人悲傷的是,Pete于2007年死于肺癌。如果沒有他,這門課程不會取得成功。
目 錄
Programming: Principles and Practice Using C , Second Edition
出版者的話
譯者序
前言
引言
作者簡介
第15章 容器和迭代器 1
15.1 存儲和處理數據 1
15.1.1 處理數據 1
15.1.2 泛化代碼 2
15.2 STL理念 4
15.3 序列和迭代器 7
15.3.1 回到實例 8
15.4 鏈表 9
15.4.1 鏈表操作 11
15.4.2 遍歷 12
15.5 再次泛化vector 13
15.5.1 遍歷容器 15
15.5.2 auto 15
15.6 實例:一個簡單的文本編輯器 16
15.6.1 處理行 18
15.6.2 遍歷 18
15.7 vector、list和string 21
15.7.1 insert和erase 22
15.8 調整vector類達到STL版本的功能 24
15.9 調整內置數組達到STL版本的功能 26
15.10 容器概覽 27
15.10.1 迭代器類別 28
簡單練習 29
思考題 30
術語 30
習題 31
附言 32
第16章 算法和映射 33
16.1 標準庫算法 33
16.2 最簡單的算法f?ind() 34
16.2.1 一些一般的應用 35
16.3 通用搜索算法f?ind_if() 36
16.4 函數對象 38
16.4.1 函數對象的抽象視圖 39
16.4.2 類成員上的斷言 39
16.4.3 lambda表達式 40
16.5 數值算法 41
16.5.1 累積 42
16.5.2 泛化accumulate() 43
16.5.3 內積 44
16.5.4 泛化inner_product() 45
16.6 關聯容器 45
16.6.1 map 46
16.6.2 map概覽 47
16.6.3 另一個map實例 50
16.6.4 unordered_map 51
16.6.5 set 53
16.7 拷貝 54
16.7.1 基本拷貝算法 55
16.7.2 流迭代器 55
16.7.3 使用set保持順序 57
16.7.4 copy_if 57
16.8 排序和搜索 58
16.9 容器算法 60
簡單練習 60
思考題 61
術語 62
習題 62
附言 63
第17章 一個顯示模型 64
17.1 為什么要使用圖形 64
17.2 一個基本顯示模型 65
17.3 及時個例子 66
17.4 使用GUI庫 68
17.5 坐標系 69
17.6 Shape 70
17.7 使用Shape類 70
17.7.1 圖形頭文件和主函數 70
17.7.2 一個幾乎空白的窗口 71
17.7.3 坐標軸 73
17.7.4 繪制函數圖 74
17.7.5 Polygon 75
17.7.6 Rectangle 76
17.7.7 填充 78
17.7.8 Text 78
17.7.9 Image 80
17.7.10 更多未討論的內容 81
17.8 讓圖形程序運行起來 81
17.8.1 源文件 82
簡單練習 83
思考題 83
術語 83
習題 84
附言 84
第18章 圖形類 85
18.1 圖形類概覽 85
18.2 Point和Line 87
18.3 Lines 88
18.4 Color 91
18.5 Line_style 93
18.6 Open_polyline 95
18.7 Closed_polyline 96
18.8 Polygon 97
18.9 Rectangle 99
18.10 管理未命名對象 102
18.11 Text 104
18.12 Circle 105
18.13 Ellipse 107
18.14 Marked_polyline 108
18.15 Marks 110
18.16 Mark 111
18.17 Image 112
簡單練習 114
思考題 115
術語 115
習題 116
附言 116
第19章 設計圖形類 117
19.1 設計原則 117
19.1.1 類型 117
19.1.2 操作 118
19.1.3 命名 119
19.1.4 可變性 120
19.2 Shape 121
19.2.1 一個抽象類 122
19.2.2 訪問控制 123
19.2.3 繪制形狀 125
19.2.4 拷貝和可變性 127
19.3 基類和派生類 128
19.3.1 對象布局 130
19.3.2 類的派生和虛函數的定義 131
19.3.3 覆蓋 131
19.3.4 訪問 133
19.3.5 純虛函數 134
19.4 面向對象程序設計的好處 135
簡單練習 136
思考題 136
術語 137
習題 137
附言 138
第20章 繪制函數圖和數據圖 139
20.1 簡介 139
20.2 繪制簡單函數圖 139
20.3 Function 143
20.3.1 默認參數 143
20.3.2 更多例子 144
20.3.3 lambda表達式 146
20.4 Axis 146
20.5 近似 148
20.6 繪制數據圖 152
20.6.1 讀取文件 153
20.6.2 一般布局 154
20.6.3 數據比例 155
20.6.4 構造數據圖 156
簡單練習 158
思考題 159
術語 159
習題 159
附言 160
第21章 圖形用戶界面 161
21.1 用戶界面的選擇 161
21.2 “Next”按鈕 162
21.3 一個簡單的窗口 163
21.3.1 回調函數 164
21.3.2 等待循環 166
21.3.3 lambda表達式作為回調函數 166
21.4 Button和其他Widget 167
21.4.1 Widget 167
21.4.2 Button 168
21.4.3 In_box和Out_box 169
21.4.4 Menu 170
21.5 一個實例 170
21.6 控制流反轉 173
21.7 添加菜單 174
21.8 調試GUI代碼 178
簡單練習 179
思考題 179
術語 180
習題 180
附言 181
第22章 理念和歷史 182
22.1 歷史、理念和專業水平 182
22.1.1 程序設計語言的目標和哲學 182
22.1.2 編程理念 183
22.1.3 風格/范型 188
22.2 程序設計語言歷史概覽 190
22.2.1 最早的程序設計語言 191
22.2.2 現代程序設計語言的起源 193
22.2.3 Algol家族 197
22.2.4 Simula 203
22.2.5 C 204
22.2.6 C 207
22.2.7 今天 209
22.2.8 參考資料 210
思考題 211
ok ok
質量不錯,好評!
這本書慢慢看
包裝有點破了書還行很好
很贊,書本包裝完美
一本好書,需要慢慢品味。
與《C++程序設計:原理與實踐(基礎篇)(原書第2版)》是一套的。