C++程序設計:原理與實踐(原書第2版) Programming: Principles and Practice Using C++, 2/e
[美]本賈尼·斯特勞斯特魯普(Bjarne Stroustrup) 著 張興 蔡樂 趙林濤 譯
相關主題
商品描述
"本書內容涵蓋了程序設計的基本概念和技術,通過對 C++ 語言進行全面介紹,幫助讀者理解程序設計的原 理,並掌握實踐知識。本書共分為五部分,第一部分(第 2 ~ 9 章)介紹了程序設計的基礎知識;第二部分(第 10 ~ 16 章)介紹了輸入輸出相關知識,包括從鍵盤和文件獲取數值與文本數據的方法,以及以圖形化方 式表示數值數據、文本和幾何圖形;第三部分(第 17 ~21 章)介紹了算法和數據結構相關知識,包括向量容器、 鏈表和映射容器;第四部分(第 22 ~ 27 章)對 C++ 語言思想進行了更有廣度的介紹;第五部分(附錄 A ~附 錄 E)是對書中正文的補充。 本書可作為高等院校電腦、電子信息及相關專業的本科生或研究生教材,也可供對程序設計感興趣的研 究人員和工程技術人員閱讀參考。 "
目錄大綱
目 錄
引言 致讀者 1
本書結構 2
講授和學習本書的方法 5
程序設計和電腦科學 8
創造性和問題求解 9
反饋方法 9
作者簡介 9
附言 11
第1章 計算、人和程序設計 12
1.1 介紹 13
1.2 軟件 13
1.3 人 15
1.4 電腦科學 17
1.5 電腦無處不在 17
1.6 程序員的理想 23
回顧 25
術語 26
練習題 26
附言 27
第一部分 基 礎 29
第2章 Hello, World! 30
2.1 程序 31
2.2 經典的第一個程序 31
2.3 編譯 33
2.4 鏈接 35
2.5 程序設計環境 36
操作題 36
回顧 38
術語 38
練習題 38
附言 39
第3章 對象、類型和值 40
3.1 輸入 41
3.2 變量 42
3.3 輸入和類型 43
3.4 運算和運算符 45
3.5 賦值和初始化 47
3.6 復合賦值運算符 50
3.7 命名 52
3.8 類型和對象 53
3.9 類型安全 55
操作題 58
回顧 59
術語 59
練習題 60
附言 61
第4章 計算 62
4.1 計算的定義 63
4.2 目標和工具 64
4.3 表達式 65
4.4 語句 69
4.5 函數 79
4.6 向量容器 82
4.7 語言特性 87
操作題 87
回顧 88
術語 89
習題 89
附言 91
第5章 錯誤 92
5.1 介紹 93
5.2 錯誤的來源 94
5.3 編譯時錯誤 95
5.4 鏈接時錯誤 97
5.5 運行時錯誤 97
5.6 異常 101
5.7 邏輯錯誤 107
5.8 估算 109
5.9 調試 110
5.10 前置條件和後置條件 113
5.11 測試 115
操作題 116
回顧 117
術語 118
練習題 118
附言 119
第6章 編寫一個程序 120
6.1 一個問題 121
6.2 對問題的思考 122
6.3 回到計算器問題 124
6.4 語法 130
6.5 將語法轉化為程序 135
6.6 嘗試第一個版本 141
6.7 試驗第二個版本 145
6.8 單詞流 146
6.9 程序結構 150
操作題 151
回顧 151
術語 152
練習題 152
附言 153
第7章 完成一個程序 154
7.1 介紹 155
7.2 輸入和輸出 155
7.3 錯誤處理 157
7.4 負數 160
7.5 模運算:% 161
7.6 清理代碼 162
7.7 錯誤恢復 168
7.8 變量 170
操作題 177
回顧 178
術語 178
練習題 178
附言 179
第8章 函數相關的技術細節 180
8.1 技術細節 181
8.2 聲明和定義 182
8.3 頭文件 186
8.4 作用域 188
8.5 函數調用和返回 192
8.6 求值順序 205
8.7 命名空間 207
操作題 210
回顧 211
術語 212
練習題 212
附言 213
第9章 類相關的技術細節 214
9.1 用戶自定義類型 215
9.2 類和成員 216
9.3 接口和實現 216
9.4 演化一個類 218
9.5 枚舉類型 225
9.6 運算符重載 227
9.7 類接口 228
9.8 Date類 236
操作題 240
回顧 240
術語 240
練習題 241
附言 242
第二部分 輸入和輸出 243
第10章 輸入和輸出流 244
10.1 輸入和輸出的簡介 245
10.2 I/O流模型 246
10.3 文件 247
10.4 打開文件 248
10.5 讀寫文件 249
10.6 I/O錯誤處理 251
10.7 讀取單個值 253
10.8 用戶自定義輸出運算符 258
10.9 用戶自定義輸入運算符 259
10.10 一個標準的輸入循環 259
10.11 讀取結構化的文件 261
操作題 267
回顧 267
術語 268
練習題 268
附言 269
第11章 自定義輸入與輸出 270
11.1 有規律的和無規律的輸入和輸出 271
11.2 格式化輸出 271
11.3 文件打開和定位 276
11.4 字符串流 280
11.5 面向行的輸入 281
11.6 字符分類 282
11.7 使用非標準分隔符 284
11.8 還有很多未討論的內容 289
操作題 290
回顧 290
術語 291
練習題 291
附言 292
第12章 一個顯示模型 293
12.1 為什麽要使用圖形用戶界面 294
12.2 一個顯示模型:GUI庫 295
12.3 第一個例子 296
12.4 使用GUI庫 298
12.5 坐標系 299
12.6 Shape 299
12.7 使用形狀類 300
12.8 讓圖形運行起來 308
操作題 309
回顧 309
術語 310
練習題 310
附言 311
第13章 圖形類 312
13.1 圖形類概覽 313
13.2 Point和Line 315
13.3 Lines 316
13.4 Color 318
13.5 Line_style 320
13.6 Open_polyline 322
13.7 Closed_polyline 323
13.8 Polygon 324
13.9 Rectangle 325
13.10 管理未命名對象 328
13.11 Text 329
13.12 Circle 331
13.13 Ellipse 332
13.14 Marked_polyline 334
13.15 Marks 335
13.16 Mark 336
13.17 Images 337
操作題 340
回顧 340
術語 341
練習題 341
附言 342
第14章 設計圖形類 343
14.1 設計原則 344
14.2 Shape類 347
14.3 基類和派生類 355
14.4 面向對象程序設計的好處 360
操作題 361
回顧 362
術語 362
練習題 363
附言 364
第15章 繪制函數圖和數據圖 365
15.1 介紹 366
15.2 繪制簡單函數圖 366
15.3 Function類 369
15.4 Axis類 373
15.5 近似 375
15.6 繪制數據圖 379
操作題 385
回顧 385
術語 386
練習題 386
附言 387
第16章 圖形用戶界面 388
16.1 用戶界面的選擇 389
16.2 Next按鈕 389
16.3 一個簡單的窗口 390
16.4 Button和其他Widget 395
16.5 一個實例 398
16.6 控制流的反轉 400
16.7 添加菜單 401
16.8 調試GUI代碼 405
操作題 407
回顧 407
術語 407
練習題 408
附言 408
第三部分 數據結構和算法 409
第17章 向量容器和自由存儲區 410
17.1 介紹 411
17.2 vector的基礎知識 412
17.3 內存、地址和指針 413
17.4 自由存儲區和指針 416
17.5 析構函數 422
17.6 訪問元素 425
17.7 指向類對象的指針 426
17.8 類型混合:無類型指針和指針類型轉換 427
17.9 指針和引用 428
17.10 this指針 434
操作題 437
回顧 438
術語 438
練習題 438
附言 439
第18章 向量容器和數組 440
18.1 介紹 441
18.2 初始化 442
18.3 拷貝 443
18.4 必要的操作 450
18.5 訪問vector的元素 453
18.6 數組 455
18.7 示例:迴文 462
操作題 465
回顧 466
術語 467
練習題 467
附言 468
第19章 向量容器、模板和異常 469
19.1 問題 470
19.2 改變向量容器大小 472
19.3 模板 477
19.4 範圍檢查和異常 487
19.5 資源和異常 490
操作題 497
回顧 498
術語 498
練習題 499
附言 500
第20章 容器和迭代器 501
20.1 存儲和處理數據 502
20.2 STL理想設計 505
20.3 序列和迭代器 508
20.4 鏈表 511
20.5 再次泛化vector 514
20.6 示例:一個簡單的文本編輯器 517
20.7 vector、list和string 522
20.8 使我們的vector適配STL 525
20.9 使內置數組適配STL 526
20.10 容器概述 527
操作題 530
回顧 530
術語 531
練習題 531
附言 532
第21章 算法和映射容器(map) 533
21.1 標準庫算法 534
21.2 最簡單的算法:find( ) 535
21.3 通用查找算法:find_if( ) 537
21.4 函數對象 539
21.5 數值算法 542
21.6 關聯容器 547
21.7 拷貝操作 555
21.8 排序和查找 559
21.9 容器算法 561
操作題 562
回顧 562
術語 563
練習題 563
附言 564
第四部分 拓寬眼界 565
第22章 理念與歷史 566
22.1 歷史、理念和專業水平 567
22.2 程序設計語言歷史概覽 575
回顧 589
術語 590
練習題 591
附言 592
第23章 文本處理 593
23.1 文本 594
23.2 字符串 594
23.3 I/O流 597
23.4 映射容器 598
23.5 一個問題 604
23.6 正則表達式的思想 605
23.7 使用正則表達式進行查找 607
23.8 正則表達式語法 609
23.9 與正則表達式進行模式匹配 616
操作題 619
回顧 620
術語 620
練習題 621
附言 621
第24章 數值計算 622
24.1 介紹 623
24.2 大小、精度和溢出 623
24.3 數組 626
24.4 C風格的多維數組 627
24.5 Matrix庫 628
24.6 示例:求解線性方程組 636
24.7 隨機數 640
24.8 標準數學函數 642
24.9 復數 644
操作題 645
回顧 645
術語 646
練習題 646
附言 647
第25章 嵌入式系統程序設計 648
25.1 嵌入式系統 649
25.2 基本概念 651
25.3 內存管理 655
25.4 地址、指針和數組 660
25.5 位、字節和字 668
25.6 編碼規範 683
操作題 688
回顧 689
術語 690
練習題 691
附言 692
第26章 測試 693
26.1 我們想要什麽 694
26.2 證明 695
26.3 測試相關技術 695
26.4 測試方案設計 709
26.5 調試 709
26.6 性能 710
操作題 712
回顧 713
術語 713
練習題 714
附言 714
第27章 C語言 715
27.1 C和C++:兄弟 716
27.2 函數 720
27.3 微小的語言差異 726
27.4 自由存儲區 731
27.5 C風格的字符串 733
27.6 輸入/輸出:stdio 736
27.7 常量和宏 739
27.8 宏 740
27.9 示例:侵入式容器 743
操作題 748
回顧 748
術語 749
練習題 749
附言 750
第五部分 附錄 751
附錄A 語言摘要 752
A.1 概述 753
A.2 字面值常量 755
A.3 標識符 758
A.4 作用域、存儲類別和生命周期 759
A.5 表達式 762
A.6 語句 769
A.7 聲明 771
A.8 內置類型 772
A.9 函數 775
A.10 用戶自定義類型 777
A.11 枚舉 778
A.12 類 778
A.13 模板 788
A.14 異常 791
A.15 命名空間 792
A.16 別名 793
A.17 預處理指令 793
附錄B 標準庫概要 795
B.1 概述 796
B.2 錯誤處理 800
B.3 迭代器 801
B.4 容器 804
B.5 算法 811
B.6 STL工具 818
B.7 I/O流 823
B.8 字符串操作 827
B.9 數值 831
B.10 時間 835
B.11 C標準庫函數 836
B.12 其他庫 842
附錄C Visual Studio快速入門 843
C.1 讓程序“跑”起來 844
C.2 安裝Visual Studio 844
C.3 創建和運行程序 844
C.4 後續學習 846
附錄D 安裝FLTK 847
D.1 介紹 848
D.2 下載FLTK 848
D.3 安裝FLTK 848
D.4 在Visual Studio中使用FLTK 849
D.5 測試是否正常工作 849
附錄E GUI實現 851
E.1 回調實現 852
E.2 Widget實現 853
E.3 Window實現 854
E.4 Vector_ref 855
E.5 一個示例:操作Widget 855
術語表 859