C++權威教程(第6版) C++权威教程(第6版)

戴爾 (Nell Dale), 威姆斯 (Chip Weems)

  • 出版商: 人民郵電
  • 出版日期: 2016-01-01
  • 定價: $894
  • 售價: 8.5$760
  • 語言: 簡體中文
  • 頁數: 716
  • 裝訂: 平裝
  • ISBN: 7115407924
  • ISBN-13: 9787115407924
  • 相關分類: C++ 程式語言
  • 下單後立即進貨 (約4週~6週)

商品描述

<內容簡介>

 

本書是全面的C++教程,介紹C++編程知識及問題解決方式與方法。新增了編程練習,面向學生重新組織了書中容;從教育與傳播知識的角度考慮,其中涵蓋實際案例研究,並用高度相關的練習強化讀者對關鍵概念的理解,以及對關鍵技能的掌握; C++語言結構與理論並重。另外,本書還配有全套輔助資源(為學生和老師準備的完整源代碼,還有PowerPoint課程大綱,試題庫)

 

<作者簡介>

 

Nell Dale,計算機科學專業博士,近20本計算機技術書作者;自1975年起在美國得克薩斯大學奧斯汀校區執教,1994年夏退休,講授秋季學期課程,從事寫作。  Chip Weems,美國麻薩諸塞大學Amherst校區計算機系副教授,講授了程序設計導論、軟件工程、計算機體系結構和並行處理等課程。參與13本教材的寫作工作。主要從事計算機體系結構、編譯器、並行處理和編譯體系結構協作優化等方面的研究。

 

<目錄>

 

第1章程序設計與問題解決概述1 

1.1程序設計概述1 

1.1.1什麼是程序設計1 

1.1.2怎樣編寫程序2 

1.1.3什麼是算法3 

1.1.4什麼是程序設計語言4 

1.2計算機如何運行程序7 

1.2.1程序設計語言可以編寫的指令類型9 

1.2.2什麼是軟件維護11 

1.3計算機裡有什麼15 

1.4計算行業的行為準則與義務19 

1.4.1軟件盜版19 

1.4.2數據的保密19 

1.4.3計算機資源的使用19 

1.4.4軟件工程20 

1.5問題求解方法21 

1 .5.1提出問題21 

1.5.2尋找熟悉的內容21 

1.5.3類比解決22 

1.5.4方法-目標分析22 

1.5.5分而治之23 

1.5.6構建模塊方法23 

1.5.7合併解決方案24 

1.5.8心理障礙:對開始的恐懼24 

1.5.9用算法解決問題25 

1.6小結29 

第2章C++語法與語義及程序開發過程.31 

2.1 C++程序的組成元素31 

2.1.1 C++程序結構31 

2.1.2語法與語義33 

2.1.3語法模板34 

2.1.4為程序元素命名:標識符36 

2 .1.5數據和數據類型37 

2.1.6為元素命名:聲明38 

2.1.7 ​​採取行動:可執行語句42 

2.1.8超越最簡主義:向程序添加註釋46 

2.2程序構造47 

2.2.1程序塊(複合語句) 49 

2.2.2 C++預處理器50 

2.3再說“輸出” 55 

2.3.1生成空行55 

2.3.2在一行內插入空格56 

2.3.3特殊字符56 

2.4程序輸入、糾錯和執行57 

2.4.1輸入程序57 

2.4.2編譯和運行程序58 

2.5測試與調試61 

2.6小結62 

第3章數值類型、表達式和輸出63 

3.1 C++數據類型概述63 

3.2數值數據類型64 

3.2.1整型64 

3.2.2浮點類型65 

3.3數值類型的聲明66 

3.3.1命名常量聲明66 

3.3.2變量聲明67 

3.4簡單算術表達式67 

3.4.1算術運算符67 

3.4.2遞增和遞減運算符70 

3. 5複合算術表達式70 

3.5.1優先級規則70 

3.5.2隱式類型轉換和顯式類型轉換71 

3.6函數調用和庫函數75 

3.6.1返回值的函數75 

3 .6.2庫函數77 

3.6.3 void函數78 

3.7設置輸出格式78 

3.7.1整數和字符串79 

3.7.2浮點數81 

3.8其他string操作85 

3.8 .1 length和size函數85 

3.8.2 find函數86 

3.8.3 substr函數87 

3.8.4訪問字符串中的字符:at函數88 

3.8.5轉換為小寫和大寫88 

3 .9測試與調試92 

3.10小結93 

第4章程序輸入和軟件設計過程94 

4.1向程序輸入數據94 

4.1.1輸入流和提取運算符(>>) 95 

4.1.2讀取標記和換行符97 

4.1.3用get函數讀取字符數據98 

4.1.4用ignore函數跳過字符100 

4.1.5讀取字符串數據101 

4.2交互式輸入/輸出103 

4.3非交互式輸入/輸出105 

4.4文件輸入和輸出105 

4.4.1文件106 

4.4.2使用文件106 

4.4.3運行時輸入文件名​​111 

4.5輸入失敗113 

4.6軟件設計方法113 

4.7功能分解114 

4.7.1模塊116 

4.7.2實現設計116 

4.7.3有關設計的一種觀點119 

4.8測試與調試123 

4 .9小結124 

第5章條件、邏輯表達式和選擇控制結構126 

5.1控制流126 

5.2條件與邏輯表達式128 

5.2.1 bool數據類型128 

5.2.2邏輯表達式128 

5.3 If語句132 

5.3.1 If-Then-Else形式132 

5.3.2塊(複合語句) 134 

5.3.3 If-Then形式136 

5.3.4常見錯誤137 

5.4嵌套If語句140 

5.5邏輯運算符144 

5.5.1運算符的優先級148 

5.5.2與浮點類型一起使用的關係運算符150 

5.6判斷I/O流的狀態151 

5.7測試與調試157 

5.7.1問題求解階段的測試:算法演練157 

5.7.2實現階段的測試159 

5.7.3測試計劃162 

5.7.4在編譯和執行期間自動執行的測試163 

5.8小結165 

第6章循環166 

6.1 While語句166 

6.2循環的執行階段168 

6.3使用While語句的循環169 

6.3.1計數控制的循環169 

6.3 .2事件控制的循環171 

6.3.3循環子任務176 

6.4如何設計循環182 

6.4.1設計控制流182 

6.4.2設計循環中的過程183 

6.4.3循環退出184 

6.5嵌套邏輯184 

6.6測試與調試202 

6.6.1循環測試策略202 

6.6.2涉及循環的測試計劃202 

6.7小結204 

第7章更多控制結構205 

7. 1 Switch語句205 

7.2 Do-While語句210 

7.3 For語句214 

7.4 Break和Continue語句219 

7.5選擇循環語句的原則220 

7.6更多C++運算符221 

7.6.1賦值運算符和賦值表達式222 

7.6.2遞增和遞減運算符223 

7.6.3位運算符223 

7.6.4強制轉換操作224 

7.6.5 sizeof運算符224 

7.6.6 ?:運算符224 

7.6.7運算符優先級225 

7.6.8算術與關係表達式中的隱式類型轉換226 

7.7測試與調試231 

7.8小結232 

第8章函數233 

8 .1用void函數實現功能分解233 

8.1.1使用函數的時機234 

8.1.2模塊為什麼需要接口設計234 

8.1.3設計接口234 

8.1.4將模塊寫為void函數235 

8.2回顧用戶定義的函數239 

8.2.1函數調用中的控制流239 

8.2.2函數形參240 

8.3 void函數的語法與語義241 

8.3.1函數調用241 

8. 3.2函數聲明和定義242 

8.3.3局部變量243 

8.3.4 Return語句244 

8.4形參246 

8.4.1值參數​​246 

8.4.2引用參數247 

8.4. 3使用帶有形參的表達式253 

8.4.4關於實參列表和形參列表的最後一點提醒254 

8.4.5將斷言寫為函數文檔255 

8.5測試與調試265 

8.6小結267 

第9章作用域、生存期及函數268 

9.1標識符的作用域268 

9.1.1作用域規則270 

9.1.2變量聲明與定義272 

9.1.3命名空間273 

9. 2變量的生存期275 

9.3接口設計280 

9.3.1副作用280 

9.3.2全局常量282 

9.4返回值的函數284 

9.4.1完整示例286 

9.4.2布爾函數289 

9.4.3接口設計與副作用291 

9.4.4何時使用返回值的函數292 

9.5賦值、實參傳送、返回函數值中的類型轉換293 9.6測試與調試302 9 .7小結306 第10章用戶定義的數據類型308 10.1內置簡單類型308 10.1.1數值類型309 10.1.2字符310 10.2用戶定義的簡單類型311 10.2.1 Typedef語句312 10.2.2枚舉類型312 10.2.3命名與匿名數據類型319 10.3簡單數據類型與結構化數據類型320 10.4記錄(Struct) 321 10.4.1訪 ​​問各個組成項323 10.4.2對struct的聚合操作324 10.4.3再談struct聲明325 10.4.4綁定相似項目326 10.5分層記錄328 10.6 union 330 10.7指針331 10.7.1指針變量332 10.7.2指針表達式334 10.8引用類型335 10.9測試與調試342 10.9.1應對輸入錯誤342 10.9.2涉及指針的調試343 10 .10小結344 第11章數組346 11.1一維數組346 11.1.1聲明數組348 11.1.2訪問各個數組項349 11.1.3出界數組索引351 11.1.4在聲明中初始化數組352 11.1.5數組聚合操作(的缺乏) 352 11.1.6聲明和訪問數組的例子353 11.1.7在實參中傳送數組358 11.1.8數組的註釋360 11.1.9對數組使用typedef 363 11.1.10指針表達式和數組363 11.1.11 C風格的字符串364 11.1.12作為數組的字符串364 11.1.13 C字符串操作365 11.1.14將C字符串轉換為C++字符串366 11.1.15使用哪種字符串表示法366 11.2記錄的數組366 11.3特殊的數組處理370 11.3. 1子數組處理370 11.3.2具有語義內容的索引372 11.4二維數組372 11.5在實參中傳遞二維數組375 11.6處理二維數組377 11.6.1對行求和377 11.6.2修改後的對行求和378 11.6.3對列求和379 11.6.4初始化數組380 11.6.5打印數組380 11.7定義二維數組的另一種方法382 11.8多維數組384 11.9測試與調試398 11.9.1一維數組398 11.9.2複雜結構399 11.9.3多維數組400 11.10小結401 第12章類和抽象402 12.1抽像數據類型402 12.2 C++類405 12.2.1實現成員函數408 12.2.2類、對象和成員410 12.2.3對對象的內置操作411 12 .2.4類作用域412 12.3信息隱藏413 12.3.1用戶編寫的頭文件414 12.3.2規格說明文件和實現文件415 12.3.3編譯和鏈接多文件程序419 12 .4什麼是對象421 12.5類的設計原則423 12.5.1封裝423 12.5.2抽象425 12.5.3提高可修改性、可重用性的設計425 12.5.4可變性426 12.6 Name ADT 432 12.6.1 ADT的規格說明433 12.6.2實現文件434 12.7組合436 12.8 UML圖440 12.8.1繪製類的圖440 12.8 .2繪製類的組合關係圖441 12.9測試與調試446 12.10小結450 第13章基於數組的列表451 13.1什麼是列表451 13.2作為抽像數據類型的列表452 13.2. 1改進職責453 13.2.2數據表示454 13.2.3示例程序456 13.3 List ADT的實現459 13.3.1基本操作459 13.3.2插入和刪除460 13.3.3順序查找460 13.3.4迭代器461 13.4有序列表465 13.4.1基本操作466 13.4.2插入466 13.4.3順序查找468 13.4.4二分查找469 13 .4.5刪除472 13.5類的有序列表475 13.5.1 IsThere 476 13.5.2 Insert和Delete 477 13.6再說UML圖479 13.7測試與調試488 13.8小結488 第14章動態數據和鏈接列表489 14.1動態數據489 14.1.1分配動態數據489 14.1.2刪除動態數據491 14.1.3常量和動態數據494 14.2順序結構與鏈接結構495 14.3創建動態鏈接列表:練習示例496 14.4 ADT列表的動態實現501 14.4.1創建一個空鏈接列表502 14.4.2向鏈接列表中插入503 14.4.3鏈接列表的遍歷504 14.4.4從鏈接列表中刪除505 14.4.5復位列表507 14.4.6獲取下一項目507 14.4.7檢查鏈接列表是否已滿507 14.4.8搜索列表507 14.5析構函數和復制構造函數511 14.5.1析構函數511 14.5.2淺複製與深複製511 14.5.3複製構造函數513 14.6有序鏈接列表515 14.6.1插入(20) 516 14.6.2插入(60)(從循環處開始) 517 14.6.3插入(100) 518 14.6.4從鏈接列表中刪除519 14. 6.5刪除(30) 520 14.6.6刪除(50) 520 14.7測試和調試523 14.8小結524 第15章繼承、多態和麵向對象的設計.525 15.1面向對象的程序設計525 15.2繼承526 15.2.1類比527 15.2.2繼承和麵向對象的設計過程528 15.2.3由一個類派生另一個類529 15. 2.4 ExpandedEntry類的規格說明530 15.2.5 ExpandedEntry類的實現531 15.2.6構造函數執行順序535 15.3動態綁定和虛函數540 15.3.1切去問題540 15. 3.2虛函數542 15.4面向對象的設計543 15.4.1自由討論544 15.4.2篩選544 15.4.3情景探究545 15.4.4職責算法546 15.4.5結語546 15.5實現設計547 15.6測試與調試562 15.7小結563 第16章模板、運算符重載和異常564 16.1模板類564 16.1.1定義類模板565 16.1.2實例化類模板566 16.1.3實現輸入參數的另一種方式:const引用568 16.1.4程序代碼的組織568 16.1.5一句提醒573 16.2泛型函數574 16.2 .1函數重載574 16.2.2在類的外部定義函數模板575 16.2.3實例化函數模板575 16.3運算符重載576 16.4異常579 16.4.1 throw語句580 16. 4.2 try-catch語句581 16.4.3非局部異常處理程序583 16.4.4重新拋出異常585 16.4.5標準異常585 16.5測試與調試601 16.6小結602 第17章使用標準模板庫的數據結構簡介603 17.1抽像數據結構與實現603 17.2其他線性結構605 17.2.1棧606 17.2.2隊列607 17.2.3優先級隊列608 17.3雙向線性結構609 17.3.1雙向列表609 17.3.2雙端隊列609 17.4 STL簡介610 17.4.1迭代器611 17.4.2 vector模板612 17.4. 3 list模板616 17.4.4 stack模板618 17.4.5 queue模板620 17.4.6 priority_queue模板621 17.4.7 deque模板622 17.5非線性結構632 17.5.1二叉樹633 17.5.2散列表635 17.6關聯容器637 17.6.1 set模板637 17.6.2 map模板640 17.7測試與調試652 17.8小結652 第18章遞歸654 18.1什麼是遞歸654 18.2使用簡單變量的遞歸算法657 18.3漢諾塔659 18.4使用結構化變量的遞歸算法662 18.5使用指針變量的遞歸668 18.5.1按逆序輸出動態鏈接列表668 18.5.2複製動態鏈接列表670 18.6選擇遞歸還是迭代673 18.7測試與調試679 18.8小結680 附錄A保留字681 附錄B運算符優先級682 附錄C標準庫例程選編683 附錄D閱讀本書時使用標準化之前的C++版本692 附錄E字符集695 附錄F程序風格、格式設置和文檔697 附錄G浮點數補議702 附錄H使用C字符串709 附錄I C++ char常量715