C++程序設計:原理與實踐(原書第2版) Programming: Principles and Practice Using C++, 2/e

[美]本賈尼·斯特勞斯特魯普(Bjarne Stroustrup) 著 張興 蔡樂 趙林濤 譯

  • 出版商: 清華大學
  • 出版日期: 2024-07-01
  • 定價: $1,374
  • 售價: 8.5$1,168
  • 語言: 簡體中文
  • ISBN: 7302666938
  • ISBN-13: 9787302666936
  • 相關分類: C++ 程式語言
  • 下單後立即進貨 (約4週~6週)

  • C++程序設計:原理與實踐(原書第2版)-preview-1
  • C++程序設計:原理與實踐(原書第2版)-preview-2
  • C++程序設計:原理與實踐(原書第2版)-preview-3
C++程序設計:原理與實踐(原書第2版)-preview-1

商品描述

"本書內容涵蓋了程序設計的基本概念和技術,通過對 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