編輯推薦
《C++程序設計——思想與方法(第3版)》一書是上海交通大學資深教學型老師的傾力之作,為解決讀者在學習程序設計時遇到的諸多問題,作者將多年的教學經驗,以及程序設計的思想和方法總結在本書中,並將書中的重點、難度、案例操作錄製瞭教學視頻,讀者在學習過程中,可掃描二維碼打開視頻,暢想名師的講解。
內容簡介
本書主要內容包括:程序的基本組成,分支程序設計,循環程序設計,批量數據處理——數組,過程封裝——函數,間接訪問——指針,數據封裝——結構體,模塊化開發,創建新的類型,運算符重載,組閤與繼承,泛型機製——模闆,輸入輸齣與文件,異常處理,容器與迭代器。
作者簡介
翁惠玉 博士, 現為上海交通大學副教授,從事計算機網絡和信息係統的研究,並長期擔任上海交通大學ACM試點班的程序設計、數據結構和計算機網絡等課程的主講教師。程序設計2004年被評為上海市精品課程。在教學方麵,翁老師曾多次獲***和上海市的教學成果奬,還多次獲得上海交通大學的優秀教學奬。
俞勇,上海交通大學教授、博士生導師,國務院特殊津貼獲得者、全國模範教師。先後主持教育部教育教學改革項目2項、獲得***和上海市教學成果奬8項、上海市優秀教材奬2項,並3次率隊奪得ACM國際大學生程序設計競賽全球總冠軍。
目錄
第1章 緒論 1
1.1 程序設計概述 1
1.2 計算機組成 1
1.2.1 計算機硬件 2
1.2.2 計算機軟件 3
1.3 程序設計語言 3
1.3.1 機器語言 3
1.3.2 匯編語言 4
1.3.3 高級語言 4
1.3.4 C++語言 5
1.4 程序設計過程 5
1.4.1 算法設計 5
1.4.2 編碼 8
1.4.3 編譯和鏈接 8
1.4.4 調試與維護 8
1.5 小結 9
1.6 習題 9
第2章 程序的基本組成 11
2.1 程序的基本結構 11
2.1.1 注釋 12
2.1.2 預編譯 12
2.1.3 名字空間 13
2.1.4 主程序 13
2.2 常量與變量 14
2.2.1 變量定義 14
2.2.2 數據類型 16
2.2.3 常量與符號常量 21
*2.2.4 C++11的擴展 24
2.3 數據的輸入/輸齣 25
2.3.1 數據的輸入 25
2.3.2 數據的輸齣 26
2.4 算術運算 27
2.4.1 算術錶達式 27
2.4.2 各種類型的數值間的混閤運算 27
2.4.3 強製類型轉換 27
2.4.4 數學函數庫 28
*2.4.5 C++11的擴展 29
2.5 賦值運算 29
2.5.1 賦值錶達式 29
2.5.2 賦值的嵌套 30
2.5.3 復閤賦值運算 31
2.5.4 自增和自減運算符 32
2.6 程序規範及常見錯誤 33
2.7 小結 34
2.8 習題 34
第3章 分支程序設計 37
3.1 關係錶達式 37
3.2 邏輯錶達式 38
3.3 if語句 39
3.3.1 if語句的格式 39
3.3.2 if語句的嵌套 43
3.3.3 條件錶達式 44
3.4 switch語句及其應用 46
3.5 編程規範及常見錯誤 52
3.6 小結 52
3.7 習題 53
第4章 循環程序設計 56
4.1 計數循環 56
4.1.1 for語句 56
4.1.2 for語句的進一步討論 61
4.1.3 for循環的嵌套 61
*4.1.4 C++11的擴展 62
4.2 break和continue語句 62
4.3 基於哨兵的循環 64
4.3.1 while語句 64
4.3.2 do-while語句 68
4.4 循環的中途退齣 69
*4.5 枚舉法 70
*4.6 貪婪法 73
4.7 編程規範及常見錯誤 75
4.8 小結 75
4.9 習題 75
第5章 批量數據處理——數組 79
5.1 一維數組 79
5.1.1 一維數組的定義 79
5.1.2 一維數組元素的引用 80
5.1.3 一維數組的內存映像 81
5.1.4 一維數組的應用 81
*5.1.5 C++11的擴展 83
5.2 查找 84
5.2.1 順序查找 84
5.2.2 二分查找 85
5.3 排序 87
5.3.1 直接選擇排序法 87
5.3.2 冒泡排序法 89
5.4 二維數組 90
5.4.1 二維數組的定義 91
5.4.2 二維數組元素的引用 91
5.4.3 二維數組的內存映像 92
5.4.4 二維數組的應用 92
5.5 字符串 96
5.5.1 字符串的存儲及初始化 96
5.5.2 字符串的輸入/輸齣 97
5.5.3 字符串處理函數 97
5.5.4 字符串的應用 98
5.6 編程規範及常見錯誤 100
5.7 小結 101
5.8 習題 101
第6章 過程封裝——函數 104
6.1 函數定義 105
6.1.1 函數的基本結構 105
6.1.2 return語句 105
6.1.3 函數示例 105
6.2 函數的使用 108
6.2.1 函數原型的聲明 108
6.2.2 函數調用 109
6.2.3 將函數與主程序放在一起 109
6.2.4 函數調用過程 110
6.3 變量的作用域 113
6.4 變量的存儲類彆 115
6.4.1 自動變量 115
6.4.2 靜態變量 115
6.4.3 寄存器變量 117
6.4.4 外部變量 117
6.5 數組作為函數參數 119
6.6 帶默認值的函數 124
6.7 內聯函數 125
6.8 重載函數 126
6.9 函數模闆 128
6.10 遞歸函數 129
6.10.1 遞歸函數的基本概念 129
6.10.2 遞歸函數的應用 131
*6.11 基於遞歸的算法 136
6.11.1 迴溯法 136
6.11.2 分治法 140
6.11.3 動態規劃 143
*6.12 C++11的擴展 146
6.12.1 constexpr函數 146
6.12.2 尾置返迴類型 146
6.13 編程規範及常見錯誤 147
6.14 小結 147
6.15 習題 148
第7章 間接訪問——指針 151
7.1 指針的概念 151
7.1.1 指針與間接訪問 151
7.1.2 指針變量的定義 151
7.1.3 指針的基本操作 152
*7.1.4 C++11的擴展 155
7.2 指針運算與數組 155
7.2.1 指針運算 155
7.2.2 用指針訪問數組 156
7.3 動態內存分配 156
7.3.1 動態變量 156
7.3.2 動態變量的創建 157
7.3.3 動態變量的消亡 158
7.3.4 內存泄漏 158
7.3.5 查找new操作的失誤 158
7.3.6 動態變量應用 159
*7.3.7 C++11的擴展 160
7.4 字符串再討論 161
7.5 指針與函數 161
7.5.1 指針作為形式參數 161
7.5.2 數組作為函數參數再討論 164
7.5.3 字符串作為函數的參數 166
7.5.4 返迴指針的函數 166
7.6 引用類型與函數 167
7.6.1 引用類型 167
7.6.2 引用傳遞 169
7.6.3 返迴引用的函數 171
*7.6.4 C++11的擴展 171
7.7 指針數組與多級指針 172
7.7.1 指針數組 172
*7.7.2 main函數的參數 173
*7.7.3 多級指針 175
*7.7.4 動態二維數組 176
7.8 函數指針 177
7.8.1 指嚮函數的指針 177
7.8.2 函數指針作為函數參數 178
7.8.3 用於菜單選擇 180
*7.8.4 C++11的擴展 181
7.9 編程規範及常見錯誤 183
7.10 小結 183
7.11 習題 184
第8章 數據封裝——結構體 186
8.1 記錄的概念 186
8.2 記錄的使用 187
8.2.1 結構體類型的定義 187
8.2.2 結構體類型的變量的定義 188
8.2.3 結構體類型的變量的使用 189
8.3 結構體作為函數的參數 190
8.4 鏈錶 192
8.4.1 鏈錶的概念 192
8.4.2 單鏈錶的存儲 193
8.4.3 單鏈錶的操作 193
8.5 編程規範及常見錯誤 198
8.6 小結 198
8.7 習題 198
第9章 模塊化開發 200
9.1 結構化程序設計 200
9.2 自頂嚮下分解 200
9.2.1 頂層分解 201
9.2.2 prn_instruction的實現 201
9.2.3 play函數的實現 201
9.2.4 get_call_from_user的實現 202
9.3 模塊劃分 203
9.4 設計自己的庫 209
9.5 編程規範及常見錯誤 214
9.6 小結 214
9.7 習題 214
第10章 創建新的類型 216
10.1 麵嚮對象程序設計 216
10.1.1 抽象的過程 216
10.1.2 麵嚮對象程序設計的特點 217
10.1.3 庫和類 218
10.2 類的定義 224
10.3 對象的使用 228
10.3.1 對象的定義 228
10.3.2 對象的操作 228
10.3.3 this指針 230
10.4 對象的構造與析構 231
10.4.1 對象的構造 231
10.4.2 對象的析構 235
10.4.3 類與對象應用實例 237
*10.4.4 C++11的擴展 240
10.5 const與類 242
10.5.1 常量數據成員 242
10.5.2 常量對象 243
10.5.3 常量成員函數 243
10.6 靜態成員 244
10.6.1 靜態數據成員 244
10.6.2 靜態成員函數 245
10.6.3 靜態常量成員 247
10.7 友元 248
10.8 編程規範及常見錯誤 250
10.9 小結 250
10.10 習題 251
第11章 運算符重載 254
11.1 運算符重載的意義 254
11.2 運算符重載的方法 255
11.3 5個特殊運算符的重載 259
11.3.1 賦值運算符的重載 259
11.3.2 下標運算符的重載 260
11.3.3 函數調用運算符的重載 261
11.3.4 ++和--運算符的重載 262
11.3.5 輸入/輸齣運算符的重載 265
*11.3.6 C++11的擴展 267
11.4 自定義類型轉換函數 267
11.4.1 內置類型到類類型的轉換 268
11.4.2 類類型到其他類型的轉換 268
*11.4.3 C++11的擴展 269
11.5 運算符重載的應用 269
11.5.1 完整的Rational類的定義和使用 269
11.5.2 完整的DoubleArray類的定義和使用 272
11.6 編程規範及常見錯誤 275
11.7 小結 276
11.8 習題 276
第12章 組閤與繼承 279
12.1 組閤 279
12.2 繼承 284
12.2.1 派生類的定義 285
12.2.2 繼承的應用 288
12.2.3 重定義基類的函數 292
12.2.4 派生類對象的賦值 293
12.2.5 派生類作為基類 294
12.3 運行時的多態性 295
12.3.1 將派生類對象隱式轉換為基類對象 295
12.3.2 多態性與虛函數 297
12.3.3 虛析構函數 300
*12.3.4 C++11的擴展 300
12.4 純虛函數和抽象類 301
12.4.1 純虛函數 301
12.4.2 抽象類 301
12.5 編程規範及常見錯誤 302
12.6 小結 302
12.7 習題 302
第13章 泛型機製——模闆 305
13.1 類模闆的定義 305
13.2 類模闆的實例化 307
13.3 模闆的編譯 308
13.4 非類型參數和參數的默認值 308
13.5 類模闆的友元 309
13.5.1 普通友元 309
13.5.2 模闆的特定實例的友元 310
13.6 類模闆作為基類 314
13.7 編程規範及常見錯誤 314
13.8 小結 315
13.9 習題 315
第14章 輸入/輸齣與文件 316
14.1 流與標準庫 316
14.2 輸入/輸齣緩衝 317
14.3 基於控製颱的輸入/輸齣 318
14.3.1 輸齣流 318
14.3.2 輸入流 320
14.3.3 格式化的輸入/輸齣 323
14.4 基於文件的輸入/輸齣 326
14.4.1 文件的概念 326
14.4.2 文件和流 327
14.4.3 文件的順序訪問 329
14.4.4 文件的隨機訪問 331
14.4.5 用流式文件處理含有記錄的文件 333
14.5 基於字符串的輸入/輸齣 339
14.6 編程規範及常見錯誤 340
14.7 小結 340
14.8 習題 340
第15章 異常處理 343
15.1 傳統的異常處理方法 343
15.2 異常處理機製 343
15.2.1 異常拋齣 344
15.2.2 異常捕獲 345
15.3 異常規格說明 350
15.4 編程規範及常見錯誤 351
15.5 小結 351
15.6 習題 351
第16章 容器和迭代器 353
16.1 容器 353
16.2 迭代器 353
16.3 容器和迭代器的設計示例 354
16.3.1 用數組實現的容器 354
16.3.2 用鏈錶實現的容器 357
16.4 小結 359
16.5 習題 360
參考文獻 361
C++程序設計——思想與方法 慕課版(第3版) 下載 mobi epub pdf txt 電子書