C++程序設計 第3版
內容描述
本書是以C++編程語言來講解計算基礎知識和技能的實用教程。全書共13 章。本書首先介紹了通過程序設計解決問題的思路和步驟,然後依次介紹了C++基礎知識、函數的運用和實現、消息機制、成員函數、條件、循環、文件流、vector 類、泛型容器和二維數組等技術及其C++編程實現技巧。每一章中以及每章的最後,分別給出了自測題、練習題、編程技巧、編程項目等內容。附錄部分給出了所有自測題的解答,供讀者學習參考。
本書適合作為高等院校電腦專業程序設計、編程基礎等課程的教材,也適合專業程序員和想要學習C++編程的讀者閱讀參考。
目錄大綱
第1章用C++來解決問題1
1.1解決問題1
1.1.1分析(提問、考察、研究) 1
1.1.2設計(模型、思考、計劃、策劃、模式、綱要) 4
1.1.3算法模式5
1.1 .4算法設計示例6
1.1.5實現(完成、操作、使用) 7
1.1.6一段C++程序7
1.1.7測試8
1.2對象、類型與變量9
本章小結11
練習題12
解決問題:請編寫一個算法12
第2章C++基礎14
2.1 C++程序的組成部分14
2.1.1標記:一個程序的最小零件16
2.1.2特殊符號17
2.1.3標識符17
2.1.4關鍵字18
2.1.5註釋18
2.1. 6 C++字面常量19
2.2語句21
2.2.1 cout輸出語句22
2.2.2賦值與類型轉換22
2.2.3 cin輸入語句24
2.3算術表達式25
2.3.1整數算術運算27
2.3.2整數與浮點數的混合運算28
2.3.3 const對象29
2.4先提示再輸入30
2.5程序實現中的錯誤與警告32
2.5.1在編譯時被檢測到的錯誤與警告33
2.5.2編譯時的警告信息35
2.5.3連接時錯誤36
2.5.4運行時錯誤37
2.5.5意向性錯誤37
2.5.6當軟件的設計與問題說明不相符時38
本章小結39
練習題40
編程技巧43
編程項目44
第3章自由函數的運用48
3.1 cmath函數48
3.2使用cmath函數解決問題50
3.2.1分析50
3.2.2設計50
3.2.3實現52
3.3調用已被文檔化的函數53
3.3.1前置條件與後置條件53
3.3.2函數頭信息54
3.3.3實參與形參的關聯56
3.3.4面向int、char和bool這些類型的一些函數58
本章小結61
練習題61
編程技巧63
編程項目63
第4章自由函數的實現66
4.1實現屬於自己的函數66
4.1. 1測試驅動器69
4.1.2只有一條返回語句的函數70
4.2分析、設計與實現71
4.2.1分析71
4.2.2設計72
4.2.3實現72
4.2.4測試74
4.2.5標識符的域74
4.2.6函數名的域76
4.2.7全局標識符76
4.3 void函數與引用型形參77
4.4 const的引用型形參80
本章小結82
練習題83
編程技巧84
編程項目85
第5章發送消息89
5.1為真實世界建模89
5.1.1 BankAccount對象90
5.1. 2類與對象的圖解92
5.2發送消息93
5.3 string對象95
5.3.1訪問性方法95
5.3.2修改性方法96
5.3.3為string對象本身定義的操作符97
5.4 ostream和istream的成員函數99
5.5另一個非標準類:Grid 103
5.5.1 Grid對象的其他操作105
5.5.2不滿足前置條件的情況108
5.5.3即使函數沒有任何實參也必須用()來調用109
5.6類和函數為何而存在109
本章小結111
練習題112
編程技巧114
編程項目116
第6章成員函數的實現120
6.1在頭文件中定義類120
6.2實現類的成員函數124
6.2.1實現構造函數124
6.2.2實現修改型的類成員函數125
6.2.3實現訪問型的成員函數126
6.3默認構造函數129
6.4狀態型對像模式131
6.4.1構造函數131
6.4.2修改型函數131
6.4.3訪問型函數132
6.4.4命名約定132
6.4.5 public還是private 133
6.4.6將接口從實現中分離133
6.5面向對象設計準則135
6.5.1類的內聚力136
6.5.2為什麼const只用來修飾訪問型函數,卻不用於修改型函數136
本章小結139
練習題140
編程技巧141
編程項目143
第7章選擇操作149
7.1實現選擇控制149
7.1.1保護性動作模式150
7.1.2 if語句150
7.2關係運算符152
7.3替代性動作模式153
7.4選擇操作結構中的語句塊157
7.5 bool對象158
7.5.1布爾運算160
7.5.2運算符優先規則160
7.5.3布爾運算符||與grid對象161
7.5.4短路式布爾評估163
7.6 bool成員函數164
7.7多重選擇操作166
7.7. 1另一個示例:字母等級評定168
7.7.2多路返回169
7.8測試多重選擇操作170
7.9 assert函數171
7.10 switch語句173
本章小結177
練習題177
編程技巧180
編程項目181
第8章重複操作188
8.1實現重複控制188
8.2算法模式:確定性循環189
8.2.1 for語句191
8.2.2賦值操作符與其他增量運算的結合192
8.2.3對Grid對象使用確定性循環194
8.3確定性循環模式的應用196
8.3.1分析196
8.3.2設計197
8.3.3實現198
8.3.4測試199
8.3.5檢測到錯誤時應該怎麼做200
8.4算法模式:不確定性循環201
8.4.1使用while語句實現確定性循環模式202
8.4.2對Grid對象使用不確定性循環203
8.4.3設置了崗哨的不確定性循環204
8.4.4用cin >>來充當循環測試204
8.4. 5無限循環206
8.5 do while語句208
8.6循環的選擇與設計210
8.6.1確定要使用的循環類型210
8.6.2確定循環測試部分211
8.6.3編寫要重複執行的語句211
8.6.4確保循環會越來越接近終止條件211
8.6.5在必要情況下做好相關對象的初始化操作211
本章小結212
練習題213
編程技巧216
編程項目218
第9章文件流224
9.1 ifstream對象224
9.2將確定性循環模式應用於磁盤文件227
9.2.1讓處理過程終止於文件結束符227
9.2.2讓用戶選擇文件名229
9.3使用不確定性循環處理更複雜的磁盤文件輸入229
9.3.1數字與字符串的混合231
9.3.2 getline函數231
9.4 ofstream對象234
本章小結234
練習題235
編程技巧235
編程項目236
第10章vector 238
10.1 C++標準庫中的vector類238
10.1.1訪問集合中的個別元素239
10.1.2用確定的for循環來處理vector 240
10.1.3處理vector中的前n個元素241
10.1.4檢查下標出界242
10.1.5 vector::capacity、vector::resize與操作符= 243
10.2順序搜索245
10.3發送消息給vector中的各對象247
10.4 vector的實參/形參關聯251
10.5排序253
10.6二分搜索法258
本章小結262
練習題262
編程技巧267
編程項目270
第11章泛型容器278
11.1容器類278
11.1.1傳遞類型實參279
11.1.2模板279
11.2 Set類282
11.2.1構造函數Set() 283
11.2.2 bool contains(Type const&value) const 283
11.2.3 void insert(Type const&element) 284
11.2.4 bool remove(Type const&removalCandidate) 284
11.3迭代器模式285
本章小結287
練習題288
編程技巧288
編程項目290
第12章指針與內存管理294
12.1內存因素考量294
12.1.1指針295
12.1.2指向對象300
12.2原生的C數組302
12.2.1原生數組與vector之間的差異303
12.2.2數組與指針的聯繫303
12.2.3傳遞原生數組實參304
12.3用new操作符分配內存305
12.4 delete操作符309
12.5用C的struct構建單向鏈接結構體310
12.5.1用單向鏈接數據結構實現list類312
12.5.2 add(std::string) 313
12.5.3 get(int index) 314
12.5.4 remove(stringremovalCandidate) 314
本章小結316
練習題317
編程技巧318
編程項目319
第13章存儲vector的vector 324
13.1存儲vector的vector 324
13.2 Matrix類325
13.2.1標量乘法328
13.2.2矩陣加法328
13.3原生的二維數組330
13.4擁有兩個以上下標的數組331
本章小結333
練習題333
編程技巧336
編程項目336
附錄自測題答案342
作者介紹
作者:[美]瑞克·莫瑟(Rick Mercer)譯者:凌傑
瑞克·莫瑟(Rick Mercer),美國亞利桑那大學計算機科學系講師,教授軟件開發、程序設計等多門課程,先後編著了6本計算機教材。