C++入門經典(第9版) ( 簡體 字) |
作者:(美)Walter Savitch著 周靖譯, | 類別:1. -> 程式設計 -> C++ -> C++ |
譯者: |
出版社:清華大學出版社 | 3dWoo書號: 41879 詢問書籍請說出此書號!【缺書】 NT售價: 640 元 |
出版日:6/10/2015 |
頁數:720 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787302402978 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: 前 言 本書適合C++程序設計和計算機科學入門課程使用。閱讀本書不要求讀者有任何編程經驗,也不要求掌握除了中學代數之外的其他任何數學知識。 本書前幾版的讀者請閱讀關于第9版修訂內容的小節,前言的其余內容可略過。新讀者請閱讀前言的全部內容以把握本書脈絡。 第9版修訂內容 第9版采用和第8版相同的編程體例。保留第8版全部內容,但進行以下修訂。 * 章末的編程作業現在劃分為“編程練習”和“編程項目”。編程練習幫助鞏固本章的知識點,程序一般都很小,適合課堂練習。編程項目則要求綜合運用多方面的知識來解決問題,程序一般比編程練習大,適合作為家庭作業。 * 在C++98的背景下介紹C++11,涉及的主題包括新整型、auto類型、原始字符串字面值、強枚舉、nullptr、以范圍為基礎的for循環、字符串和整數相互轉換、成員初始化列表和委托構造函數等。 * 提供了關于排序、安全編程(即溢出和數組越界)以及繼承的補充材料。 * 勘誤。 * 新增21個編程練習和10個編程項目。 * 本書配套網站新增10個視頻講解,使總數達到64個。這些視頻講解輔導學生解題和寫程序,有助于鞏固對關鍵編程概念的掌握。如果書中某個主題有對應的視頻講解,就會出現一個特殊的圖標。 用過第8版的教師可沿用以前的教案,幾乎不需要任何改動。 主題可以靈活排序 本書允許教師自由安排教學順序。為了演示這一靈活性,下面推薦了兩種順序。采用任何順序都不會影響學習的連貫性。為了在改變順序時確保這種連貫性,可能需要移動個別小節而不是全章。但是,只有較大的、位置便利的小節才需要移動。為了幫助您根據需要自定義一個教學/閱讀順序,圖P.1展示了一幅依賴圖。另外,每章都有“預備知識”小節,解釋了學習那一章的每一節之前需掌握的內容。 重新排序1:提前學習類 為了有效地設計類,學生需要掌握一些基本的工具,比如控制結構和函數定義。這些基礎知識在第1章∼第6章介紹。完成第6章的學習后,學生就可以開始寫自己的類了。如果想提前學習類的知識,可以像下面這樣重新安排各章的順序。 * 基礎知識 第1章、第2章、第3章、第4章、第5章和第6章。這6章全面介紹控制結構、函數定義和基本文件I/O。第3章介紹幾種額外的控制結構,如果希望盡早學習類,可以考慮推遲這一章的學習。 * 類和命名空間 第10章、第11章的11.1節和11.2節、第12章。這些章節全面介紹了如何定義類、友元、重載操作符和命名空間。 * 數組、字符串和向量 第7章和第8章。 * 指針和動態數組 第9章。 * 類類型的數組和數組作為類成員 第11章的11.3節和11.4節。 * 繼承 第15章。 * 遞歸 第14章(也可以推遲到更晚的時候學習)。 * 指針和鏈表 第13章。 可能還要用到以下各章的部分內容。 * 異常處理 第16章。 * 模板 第17章。 * 標準模板庫 第18章。 重新排序2:略微推遲類的學習 在“重新排序2”中,將先學完所有控制結構,再學習數組的基本知識,之后才開始學習類。雖然對類的接觸要比“重新排序1”晚,但還是比本書的默認順序略微提前一些。 * 基礎知識 第1章、第2章、第3章、第4章、第5章和第6章。這6章全面介紹了控制結構、函數定義和基本文件I/O。 * 數組和字符串 第7章、第8章的8.1節和8.2節。 * 類和命名空間 第10章、第11章的11.1節、11.2節和第12章。這些章節全面介紹了如何定義類、友元、重載操作符和命名空間。 * 指針和動態數組 第9章。 * 類類型的數組和數組作為類成員 第11章的11.3節和11.4節。 * 繼承 第15章。 * 遞歸 第14章(也可以推遲到更晚的時候學習)。 * 向量 8.3節。 * 指針和鏈表 第13章。 可能還要用到以下各章的部分內容。 * 異常處理 第16章。 * 模板 第17章。 * 標準模板庫 第18章。
依賴圖 如下所示的依賴圖展示了各個章節可能的排序方式。連接兩個框的實線表明上部的框必須先于下部的框完成。只要符合這個條件,采用任何閱讀順序都無損連貫性。如果一個框中包含小節編號,表明該框只代表那些小節,不代表全章。
面向學生的易用性 一本書必須按恰當的順序來講解恰當的主題,這是最起碼的要求。另外,在老師和其他有經驗的程序員看來,書的內容必須清晰而正確,這是另一個最起碼的要求。但是不是符合這兩項要求的書都是好書呢?答案是否定的。書中的內容必須采取有利于初學者使用的方式來編排。在這本入門教科書中,我盡力讓學生覺得清楚和友好。本書以前版本的大量學生反饋證明,這種寫作風格確實使內容更清晰,能使學生充分享受到學習的樂趣。
ANSI/ISO C++標準 本書完全兼容符合最新ANSI/ISO C++標準的編譯器。寫作時的最新標準是C++ 11。 高級主題 許多“高級主題”都已成為標準CS1課程的一部分。即使不是,以補充材料的形式提供也不錯。本書提供大量高級主題,它們既可集成到課程中,也可作為自學主題。本書全面講述了C++模板、繼承(包括虛函數)、異常處理和STL(Standard Template Library,標準模板庫)。雖然本書使用了庫,而且教給學生庫的重要性,但不要求任何非標準庫。本書只使用所有C++實現都有的庫。 小結框 每個要點都用一個有底紋的方框來小結,它們散布于各章。 自測題 每章都在重要位置提供大量自測題。答案在章末提供。 視頻講解 視頻講解(Video Note)旨在講解關鍵編程概念和技術,演示了從設計到編碼來解決問題的過程。視頻講解使學生能方便地自學感興趣的主題,支持選擇、播放、倒退、快進和暫停。每當看到“ 視頻講解”,都表明當前主題有對應的視頻講解。注意,由于是英文視頻,所以為了方便索引,書中保留了這些視頻的英文名稱。 支持材料 有一部分支持材料適用于本書所有讀者。其他僅適用于有資格的教師。 適用于本書所有讀者的支持材料 * 源代碼 * PowerPoint幻燈片 * 視頻講解 適用于有資格的教師的資源 * 教師資源指南(Instructor’s Resource Guide):包括每一章的教學要點、課堂測驗/答案和大量編程項目的參考答案。 * Test Bank和Test Generator:用于生成試卷。 * PowerPoint幻燈片:包括本書的程序和插圖。 * Lab Manual(實驗手冊)。
|
內容簡介:本書是深受師生歡迎的優秀C++入門教材。作者結合自己多年的教學經驗精心設計并編撰了本書內容。采用了很多便于鞏固所學知識的設計,例如各章開頭的小節總覽,書中隨處可見的小結框、編程提示和編程陷阱,各章結尾的小結、習題、編程練習和編程項目等。這些非常適合初學者掌握重要的編程概念。 全書共18章,8個附錄。在講解C++基礎知識之后,直接引導學生深入函數、I/O流、類、控制流程、命名空間、數組、字符串、指針和動態數組、遞歸、模板、指針和鏈表、派生類、異常以及標準模板庫。 |
目錄:第1章 計算機和C++編程入門 1 概述 2 1.1 計算機系統 2 硬件 2 軟件 5 高級語言 6 編譯器 7 1.2 編程和問題求解 9 算法 9 程序設計 10 面向對象編程 12 軟件生命周期 12 1.3 C++入門 13 C++語言的起源 13 一個C++示范程序 14 簡單C++程序的布局 17 編譯和運行C++程序 19 1.4 測試和調試 21 程序錯誤的分類 22 小結 24 自測題答案 24 編程練習 25 編程項目 26 第2章 C++基礎知識 29 概述 30 預備知識 30 2.1 變量和賦值 30 變量 30 名稱:標識符 32 變量聲明 33 賦值語句 34 2.2 輸入和輸出 37 使用cout進行輸出 37 include預編譯指令和命名空間 38 轉義序列 39 格式化帶小數點的數字 41 用cin進行輸入 42 設計輸入和輸出 43 2.3 數據類型和表達式 44 int類型和double類型 44 其他數值類型 45 C++11類型 46 char類型 47 bool類型 48 string類簡介 48 類型的兼容性 49 算術操作符和表達式 51 更多賦值語句 54 2.4 簡單控制流程 54 一個簡單的分支機制 54 復合語句 59 簡單的循環機制 61 遞增操作符和遞減操作符 63 2.5 程序風格 66 縮進 67 注釋 67 為常量命名 68 小結 71 自測題答案 71 編程練習 74 編程項目 76 第3章 更多的控制流程 79 概述 80 預備知識 80 3.1 使用布爾表達式 80 布爾表達式求值 80 枚舉類型(選讀) 85 3.2 多 路 分 支 86 嵌套語句 86 多路if-else語句 88 switch語句 92 為菜單使用switch語句 95 語句塊 96 3.3 C++循環語句詳解 99 while語句回顧 99 再論遞增操作符和遞減操作符 100 for語句 102 應該使用哪種循環 106 break語句 108 3.4 設計循環 109 求和與求乘積的循環 109 終止循環 111 嵌套循環 113 調試循環 114 小結 117 自測題答案 117 編程練習 121 編程項目 122 第4章 過程抽象和返回值的函數 125 概述 126 預備知識 126 4.1 自頂向下設計 126 4.2 預定義函數 126 使用預定義函數 127 隨機數生成 130 強制類型轉換 131 強制類型轉換的古老形式 133 4.3 程序員自定義函數 134 函數定義 134 返回布爾值的函數 138 另一種形式的函數聲明 138 函數定義語法小結 140 再論函數定義的位置 140 4.4 過程抽象 142 黑盒的比喻 142 4.5 作用域和局部變量 151 函數如同小程序 151 全局常量和全局變量 153 傳值形參是局部變量 155 塊作用域 156 再論命名空間 157 4.6 重載函數名稱 160 重載入門 160 自動類型轉換 164 小結 166 自測題答案 166 編程練習 169 編程項目 170 第5章 所有子任務的函數 173 概述 174 預備知識 174 5.1 void函數 174 void函數的定義 174 void函數中的return語句 177 5.2 傳引用參數 178 初探傳引用調用 179 傳引用調用詳解 180 混合的參數列表 185 5.3 使用過程抽象 188 在函數中調用其他函數 188 前條件和后條件 189 5.4 測試和調試函數 194 存根和驅動程序 194 5.5 常規調試技術 197 兼容并蓄,不抱偏見 198 檢查常見錯誤 198 定位錯誤 198 assert宏 200 小結 202 自測題答案 202 編程練習 205 編程項目 206 第6章 I/O流:對象和類入門 209 概述 210 預備知識 210 6.1 流和基本文件I/O 210 文件之于I/O的重要性 211 文件I/O 211 類與對象入門 214 文件I/O技術 218 追加到文件(選讀) 220 文件名作為輸入(選讀) 221 6.2 流I/O工具 224 用流函數格式化輸出 224 操縱元 227 流作為函數實參 228 命名空間的問題 231 6.3 字符I/O 233 成員函數get和put 233 putback成員函數(選讀) 236 函數的默認實參(選讀) 240 eof成員函數 243 預定義字符函數 246 小結 249 自測題答案 249 編程練習 254 編程項目 254 第7章 數組 259 概述 260 預備知識 260 7.1 數組入門 260 聲明和引用數組 260 數組在內存中的表示 263 初始化數組 265 7.2 函數中的數組 267 索引變量作為函數參數 267 整個數組作為函數參數 269 const參數修飾符 271 返回數組的函數 273 7.3 數組編程 282 部分填充數組 282 7.4 多維數組 292 多維數組基礎 292 多維數組參數 293 小結 298 自測題答案 298 編程練習 301 編程項目 302 第8章 字符串和向量 309 概述 310 預備知識 310 8.1 字符串的數組類型 310 C字符串值和C字符串變量 311 中的其他函數 315 C字符串輸入和輸出 318 C字符串到數值的轉換和可靠輸入 320 8.2 標準string類 324 標準類string簡介 324 string類的I/O 326 用string類進行字符串處理 330 string對象和C字符串之間的 轉換 335 字符串和數字之間的轉換 336 8.3 向量 336 向量基礎知識 336 效率問題 339 小結 341 自測題答案 341 編程練習 343 編程項目 343 第9章 指針和動態數組 349 概述 350 預備知識 350 9.1 指針 350 指針變量 351 基本內存管理 356 靜態變量和自動變量 356 9.2 動態數組 359 數組變量和指針變量 359 創建和使用動態數組 361 指針運算(選讀) 364 多維動態數組(選讀) 365 小結 367 自測題答案 367 編程練習 368 編程項目 368 第10章 定義類 373 概述 374 預備知識 374 10.1 結構 374 用于異種數據的結構 374 結構作為函數參數 378 對結構進行初始化 380 10.2 類 382 定義類和成員函數 382 公共成員和私有成員 386 總結類的一些特征 396 用于初始化的構造函數 397 10.3 抽象數據類型 405 用于生成抽象數據類型的類 405 10.4 繼承 411 派生類 412 定義派生類 413 小結 416 自測題答案 416 編程練習 420 編程項目 420 第11章 類中的友元函數、重載 操作符和數組 425 概述 426 預備知識 426 11.1 友元函數 426 友元函數 428 實現digit_to_int(選讀) 435 const參數修飾符 437 11.2 重載操作符 441 重載操作符 442 用于自動類型轉換的構造函數 444 重載一元操作符 445 重載>>和<< 446 11.3 數組和類 452 類數組 452 數組作為類成員 455 11.4 類和動態數組 458 析構函數 460 拷貝構造函數 463 重載賦值操作符 467 小結 470 自測題答案 470 編程練習 476 編程項目 477 第12章 獨立編譯和命名空間 483 概述 484 預備知識 484 12.1 獨立編譯 484 ADT回顧 484 使用#ifndef 492 12.2 命名空間 495 命名空間和using預編譯指令 495 創建命名空間 496 限定名稱 498 命名空間的微妙之處(選讀) 499 無名命名空間 500 小結 505 自測題答案 505 編程練習 506 編程項目 508 第13章 指針和鏈表 509 概述 510 預備知識 510 13.1 節點和鏈表 510 節點 511 nullptr 513 鏈表 514 在表頭插入節點 515 搜索鏈表 518 指針作為迭代器 520 在列表中插入和刪除節點 521 鏈表的變體 524 類構成的鏈表 526 13.2 棧和隊列 528 棧 528 隊列 532 小結 536 自測題答案 536 編程練習 538 編程項目 538 第14章 遞歸 545 概述 546 預備知識 546 14.1 面向任務的遞歸函數 546 深入遞歸 552 用于遞歸的棧 554 遞歸與迭代 555 14.2 面向值的遞歸函數 556 要返回值的遞歸函數的常規形式 556 14.3 遞歸思想 560 遞歸設計技術 560 小結 570 自測題答案 570 編程練習 573 編程項目 573 第15章 繼承 577 概述 578 預備知識 578 15.1 繼承基礎 578 派生類 580 派生類中的構造函數 585 protected限定符 588 重定義成員函數 590 重定義與重載的比較 592 訪問重定義的基函數 593 15.2 繼承細節 594 不繼承的函數 594 派生類中的賦值操作符和拷貝 構造函數 595 派生類中的析構函數 595 15.3 多態性 596 晚期綁定 597 C++虛函數 597 虛函數和擴展類型兼容性 601 小結 607 自測題答案 607 編程練習 610 編程項目 612 第16章 異常處理 617 概述 618 預備知識 618 16.1 異常處理基礎 618 異常處理的簡單例子 619 定義自己的異常類 625 多個throw塊和catch塊 626 在函數中拋出異常 629 異常規范 630 16.2 用于異常處理的編程技術 632 拋出異常的時機 632 異常類層次結構 634 測試可用內存 634 重新拋出異常 635 小結 636 自測題答案 636 編程練習 637 編程項目 638 第17章 模板 641 概述 642 預備知識 642 17.1 用于算法抽象的模板 642 函數模板 643 17.2 用于數據抽象的模板 651 類模板的語法 651 小結 657 自測題答案 657 編程練習 659 編程項目 659 第18章 標準模板庫 663 概述 664 預備知識 664 18.1 迭代器 664 using聲明 665 迭代器基礎 665 迭代器的種類 670 常量和可變迭代器 673 逆向迭代器 673 其他種類的迭代器 675 18.2 容器 675 順序容器 676 容器配接器stack和queue 679 關聯容器set和map 682 效率問題 687 18.3 泛型算法 688 運行時間和大O表示法 689 容器訪問運行時間 691 不修改容器的算法 692 會修改容器的算法 695 set算法 696 排序算法 697 小結 698 自測題答案 698 編程練習 699 編程項目 700 附錄1 C++關鍵字 705 附錄2 操作符的優先級 706 附錄3 ASCII字符集 707 附錄4 部分庫函數 708 附錄5 內聯函數 712 附錄6 重載數組索引方括號 713 附錄7 this指針 714 附錄8 將操作符重載為成員操作符 716 |
序: |