圖書簡介
通過採用經典的軟體開發方法,本書第6版在強調軟體工程原理和使用C++語言實現面向對象編成的同時,提供了堅實的程式設計基礎。它十分清晰地闡述了C++程式設計。本書首先從簡單的、易於理解的過程編程開始,逐漸拓展加深,直到最終完成動態數據結構的介紹為止。
本書的兩位
作者都是Temple大學計算機與信息科學教授。Elliot B. Koffman是美國最著名的計算機科學教育家之一,也是ACM任務組初級程式設計方法課程的前主席。他與其他作者合著了多部問題求教與面向對象方面的著作。Frank L. Friedman同時也是Temple大學計算機與信息科學系的主任。除了合著本書之外,他還編著了使用FORTRAN和BASIC編程的其他教材。他當前的研究方向是軟體工程。
本書的編寫目標是教材。全書由14章組成,它們對於學生學習和掌握軟體編程的思路、方法、技巧提供了有效的幫助。
本書結構清晰,取捨得當,讀者易於使用本書給出的示例體驗和體會數據結構的概念與實現技巧,更深入地掌握C++的核心內容。
圖書目錄
第0章 作為一種職業途徑的計算機科學 1
概述 2
0.1 為什麼計算機科學或許是適合你的正確領域 2
0.1.1 選擇計算機科學專業的理由 2
0.1.2 計算機科學家的特質 3
0.2 大學經驗:可選擇的計算機學科和專業 4
0.2.1 計算機科學 4
0.2.2 計算機工程 5
0.2.2 信息系統 5
0.2.3 信息技術 5
0.2.4 軟體工程 6
0.2.5 多學科專業 6
0.3 工作機會 7
0.3.1 在美國和世界上的需求 8
0.3.2 對代表性不足群體的需求 8
0.3.3 依然在地平線上的新職業 8
第1章 計算機、問題求解和編程引論 10
1.1 計算機概述 11
1.1.1 早期的計算機 11
1.1.2 計算機分類 12
1.1.3 共享計算機資源 12
本節練習 13
1.2 計算機硬體 13
1.2.1 存儲器 14
1.2.2 主存儲器 15
1.2.5 輸入/輸出設備 17
1.2.6 計算機網路 17
1.2.7 全球資訊網 18
本節練習 19
1.3 計算機軟體 19
1.3.1 作業系統 19
1.3.2 套用軟體 21
1.3.3 程式語言 21
1.3.4 面向對象編程 22
本節練習 23
編程項目 77
快速自測練習答案 80
第3章 使用函式和類做自頂
向下設計 81
3.1 依據現有信息構造程式 82
案例研究——計算圓的面積和
周長 83
案例研究——計算一批平面墊圈的
重量 85
本節練習 88
3.2 庫函式 89
C++ 庫函式 90
展望未來 92
本節練習 92
3.3 自頂向下設計和結構圖 93
案例研究——畫簡單圖形 93
本節練習 94
3.4 無參數函式 94
3.4.1 函式原型 95
3.4.2 函式定義 96
3.4.3 程式中函式的位置 97
3.4.4 函式執行順序 97
3.4.5 使用函式子程式的優點 99
本節練習 100
3.5 帶輸入參數的函式 101
3.5.1 帶輸入參數的無返回值
函式 102
3.5.2 帶輸入參數和單返回值的
函式 103
3.5.3 帶有多個參數的函式 106
3.5.4 參數/參量列表對應關係 107
3.5.5 函式數據區 107
3.5.6 使用驅動模組測試函式 108
本節練習 108
3.6 名稱的作用域 109
本節練習 110
3.7 藉助類擴展C++:使用類string 111
3.7.1 string類 111
3.7.2 聲明string對象 112
3.7.3 讀取和顯示string對象 112
3.7.4 字元串賦值和拼接 113
3.7.6 點表示法:調用函式
length和at 113
3.7.7 用於單詞處理操作的
成員函式 114
3.7.8 將子字元串賦值給string
對象 114
本節練習 115
3.8 計算機圖形簡介(選讀) 116
3.8.1 視窗的組成 116
3.8.2 繪製矩形 119
3.8.3 繪製圓、橢圓和弧線 120
3.8.4 餅圖和填充橢圓 124
3.8.5 在繪圖上添加文本 126
本節練習 127
3.9 常見編程錯誤 127
分別測試函式子程式 129
本章複習 129
快速自測練習 131
複習題 131
編程項目 132
快速自測練習答案 135
第4章 選擇結構:if和switch
語句 137
本節練習 192
5.3 for語句 193
5.3.1 增量和減量操作符 195
5.3.2 異於一的增量和減量 197
5.3.3 顯示值表 198
本節練習 198
5.4 條件循環 200
5.4.1 使用減量控制變數的
循環 200
案例研究——監視石油供應 201
5.4.2 零疊代循環 203
5.4.3 更通用的條件循環 204
本節練習 205
5.5 循環設計和循環模式 205
5.5.1 哨兵控制循環 206
5.5.2 計算平均值 209
5.5.3 標誌控制循環 209
本節練習 210
5.6 do-while語句 211
本節練習 214
5.7 while、for、do-while循環複習 215
本節練習 216
5.8 嵌套循環 217
本節練習 218
5.9 調試和測試程式 220
5.9.1 使用調試器 221
5.9.2 無調試器的調試 221
5.9.3 差一錯誤 222
5.9.4 測試 222
本節練習 222
5.10 圖形程式中的循環(選讀) 223
5.10.1 動畫 224
本節練習 227
5.11 常見編程錯誤 227
本章複習 229
快速自測練習 232
複習題 233
編程項目 234
快速自測練習答案 239
第6章 模組化編程 240
6.1 值參和引用參數 241
6.1.1 傳值調用和引用調用參數 243
6.1.2 void函式能夠返回結果 244
6.1.3 什麼時候使用引用參數或
值參 244
6.1.4 值參與引用參數的對比 245
6.1.5 值參提供的保護 245
6.1.6 再談參量/參數列表的
對應關係 245
本節練習 247
6.2 使用輸出和輸入參數的函式 248
本節練習 253
6.3 函式的逐步設計 254
案例研究——通用和與
平均值問題 254
6.3.1 程式中標識符的多次聲明 260
本節練習 261
6.4 與函式一起使用對象 261
本節練習 263
6.5 調試和測試程式系統 263
6.5.1 自頂向下測試和樁模組 263
6.5.2 自底向上測試和驅動程式 263
6.5.3 程式系統調試技巧 264
6.5.4 標識符作用域和觀察
視窗變數 265
本節練習 387
9.11 作為字元數組的字元串
(選讀) 388
9.11.1 聲明和初始化字元數組 388
9.11.2 讀取和寫入字元數組 388
9.11.3 用於字元數組的一些
有用函式 389
本節練習 390
9.12 使用數組的圖形程式(選讀) 390
9.12.1 繪製多邊形 390
9.12.2 繪製格線 392
本節練習 395
9.13 常見編程錯誤 396
本章複習 397
快速自測練習 398
複習題 399
編程項目 401
快速自測練習答案 405
第10章 用戶自定義類 408
10.1 類定義和使用 409
10.1.1 counter類 409
10.1.2 counter類的類定義 410
10.1.3 檔案counter.h 中的
編譯器指令 412
10.1.4 使用counter類 412
10.1.5 檔案CounterTest.cpp中的
編譯器指令 413
本節練習 414
10.2 類的實現 415
10.2.1 構造函式 416
10.2.2 訪問器和修改器函式 416
10.2.3 檔案counter.cpp中的
編譯器指令 417
本節練習 417
10.3 類和對象使用規則小結 418
10.3.1 對象是類的實例 418
10.3.2 公有與私有訪問的對比 418
10.3.3 類和成員函式定義語法 418
10.3.4 結構和類的比較 420
10.3.5 項目檔案和單獨編譯 420
10.3.6 數據、結構和類的結合 421
10.3.7 函式重載和多態 421
本節練習 421
10.4 類用作運算元和參數 422
本節練習 423
10.5 分數類 424
10.5.1 fraction類的設計 424
10.5.2 使用類fraction 425
10.5.3 類fraction的實現檔案 426
本節練習 428
10.6 circle 類 429
10.6.1 設計circle類 429
10.6.2 使用circle類 431
10.6.3 類circle 的實現檔案 431
本節練習 433
10.7 一個簡單的字元串類 433
10.7.1 類simpleString的設計 433
10.7.2 類simpleString 的定義 434
10.7.3 測試類simpleString的
成員函式 435
10.7.4 類simpleString的
實現檔案 436
本節練習 438
10.8 一個存款賬戶類 439
案例研究——使用存款賬戶類 439
本節練習 444
10.9 常見編程錯誤 444
本章複習 446
快速自測練習 447
習題 447
編程項目 448
快速自測練習答案 451
第11章 數據抽象與面向對象設計 452
11.1 模版類 453
11.1.1 模版類的定義 453
11.1.2 模版類的實現 456
11.1.3 支持單獨編譯的編譯器
指令 458
本節練習 458
11.2 索引列表 458
11.2.1 索引列表類的需要 458
11.2.2 索引列表類的分析與
設計 459
11.2.3 使用indexList類 461
本節練習 463
11.3 實現索引列表類 464
本節練習 468
11.4 面向對象設計 469
11.4.1 面向對象設計方法論 469
案例研究——E-mail提供商的
地址簿 469
本節練習 480
11.5 操作符重載與友元 481
11.5.2 友元 482
本節練習 483
11.6 vector類 484
11.6.1 向量與數組 485
11.6.2 向量函式 485
11.6.3 通過疊代器訪問向量 486
11.6.4 標準算法 487
11.6.5 在E-mail地址簿案例中
使用向量 487
本節練習 490
11.7 常見編程錯誤 491
本章複習 492
快速自測練習 492
複習題 493
編程項目 494
快速自測練習答案 497
第12章 遞歸 499
12.1 遞歸的本質 500
12.1.1 遞歸問題與解答的
性質 501
本節練習 501
12.2 跟蹤遞歸函式 502
12.2.1 跟蹤一個遞歸函式 502
12.2.2 以反序顯示字元 503