《計算機科學叢書:C++程序設計(原書第3版)》采用“問題驅動”、“基礎先行”和“實例和實踐相結合”的方式,闡明了基本的C++特性!队嬎銠C科學叢書:C++程序設計(原書第3版)》共分為三部分,第一部分介紹C++程序設計的基本概念,第二部分介紹面向對象程序設計方法,第三部分介紹算法與數據結構方面的內容。為了幫助學生更好地掌握相關知識,《計算機科學叢書:C++程序設計(原書第3版)》每章都包括以下模塊:目標,引言,關鍵點,檢查點,問題和實例研究,本章小結,在線測驗,程序設計練習,提示、小竅門、警示和教學提示。
《計算機科學叢書:C++程序設計(原書第3版)》可以作為高等院校計算機及相關專業(yè)C++程序設計課程的教材,也可以作為C++程序設計的自學參考書。
《計算機科學叢書:C++程序設計(原書第3版)》保持了Liang博士系列叢書中一貫的標志性的教與學的哲學:以實例教,由實踐學。通過使用他所提出的已經經過實踐檢驗的“基礎先行”的方法,Liang博士在本書中通過大量實例闡明了基本的C++特性,使得學生可以通過實踐來更有效地進行學習。
《計算機科學叢書:C++程序設計(原書第3版)》首先幫助學生循序漸進地學習所有必需和重要的基本概念,然后再進入面向對象程序設計方法的學習,最終掌握構建具有異常處理和輸入輸出功能的有意義的應用程序的方法。基本概念都是使用簡短且吸引人的實例來進行闡述的。他還在實例研究中給出了一些較大規(guī)模的實例,并附以整體的分析討論和詳細的逐行注解。貫穿全書的實例和練習都以問題求解為中心,力圖培養(yǎng)學生開發(fā)可重用組件并用之創(chuàng)建實際項目的意識。
與第2版相比,第3版在文字表達、內容組織、課后練習和附加材料方面都得到了顯著改善。
第3版有以下創(chuàng)新特色:
按照邏輯順序,重新組織了各章的內容和主題,增加了許多有趣的實例,以及引人入勝的課后練習。
在每一節(jié)的開始,以“關鍵點”的形式說明重要的概念和內容;在每一節(jié)的結束,以“檢查點”的形式檢查學生對于內容的掌握程度。
第4章就介紹了string類型,以便學生能夠盡早使用該類型編寫程序。
列出常見的編程錯誤和陷阱,讓學生避免犯這些錯誤。
Y. Daniel Liang,普度大學終身教授,阿姆斯特朗亞特蘭大州立大學計算機科學系教授。他所編寫的Java教程在美國大學Java課程中采用率最高,同時他還兼任Prentice Hall Java系列叢書的編輯。
出版者的話
譯者序
前言
致讀者
第一部分 編程基礎
第1章 計算機、程序和C++語言簡介
1.1 引言
1.2 什么是計算機
1.2.1 CPU
1.2.2 位和字節(jié)
1.2.3 內存
1.2.4 存儲設備
1.2.5 輸入輸出設備
1.2.6 通信設備
1.3 編程語言
1.3.1 機器語言
1.3.2 匯編語言
1.3.3 高級語言
1.4 操作系統(tǒng)
1.4.1 控制和監(jiān)視系統(tǒng)活動
1.4.2 分配和指派系統(tǒng)資源
1.4.3 任務調度
1.5 C++語言的歷史
1.6 一個簡單的C++程序
1.7 C++程序開發(fā)周期
1.8 程序風格和文檔
1.8.1 適當的注釋和注釋風格
1.8.2 正確的縮進和間距
1.9 編程錯誤
1.9.1 語法錯誤
1.9.2 運行時錯誤
1.9.3 邏輯錯誤
1.9.4 常見錯誤
關鍵術語
本章小結
在線測驗
程序設計練習
第2章 程序設計基礎
2.1 引言
2.2 編寫簡單的程序
2.3 從鍵盤讀取輸入
2.4 標識符
2.5 變量
2.6 賦值語句和賦值表達式
2.7 命名常量
2.8 數值數據類型及其運算
2.8.1 數值類型
2.8.2 數值文字常量
2.8.3 數值運算符
2.8.4 指數運算符
2.9 算術表達式和運算符優(yōu)先級
2.10 實例研究:顯示當前時間
2.11 簡寫運算符
2.12 自增、自減運算符
2.13 數值類型轉換
2.14 軟件開發(fā)流程
2.15 實例研究:計算給定金額的貨幣數量
2.16 常見錯誤
關鍵術語
本章小結
在線測驗
程序設計練習
第3章 分支語句
3.1 引言
3.2 bool數據類型
3.3 if語句
3.4 雙分支的if-else語句
3.5 嵌套的if語句和多分支的if-else語句
3.6 常見錯誤和陷阱
3.7 實例研究:計算身體質量指數
3.8 實例研究:計算稅款
3.9 生成隨機數
3.10 邏輯運算符
3.11 實例研究:確定閏年
3.12 實例研究:彩票
3.13 switch語句
3.14 條件表達式
3.15 運算符優(yōu)先級和結合律
3.16 調試
關鍵術語
本章小結
在線測驗
程序設計練習
第4章 數學函數、字符和字符串
4.1 引言
4.2 數學函數
4.2.1 三角函數
4.2.2 指數函數
4.2.3 近似函數
4.2.4 min、max和abs函數
4.2.5 實例研究:計算三角形的角
4.3 字符數據類型和操作符
4.3.1 ASCII碼
4.3.2 從鍵盤讀取一個字符
4.3.3 特殊字符的轉義序列
4.3.4 數值類型和字符類型之間的相互轉換
4.3.5 比較和測試字符
4.4 實例研究:生成隨機字符
4.5 實例研究:猜生日
4.6 字符函數
4.7 實例研究:十六進制轉換為十進制
4.8 字符串類型
4.8.1 字符串索引和下標操作符
4.8.2 連接字符串
4.8.3 比較字符串
4.8.4 讀字符串
4.9 實例研究:使用字符串修改彩票程序
4.10 格式化控制臺輸出
4.10.1 setprecision(n)操作
4.10.2 修改操作
4.10.3 showpoint操作
4.10.4 setw(width)操作
4.10.5 left和right操作
4.11 簡單的文件輸入輸出
4.11.1 寫入文件
4.11.2 讀取一個文件
關鍵術語
本章小結
在線測驗
程序設計練習
第5章 循環(huán)
5.1 引言
5.2 while循環(huán)
5.2.1 實例研究:猜數字
5.2.2 循環(huán)設計策略
5.2.3 實例研究:多道減法測試
5.2.4 使用用戶的確認控制循環(huán)
5.2.5 使用標記值控制循環(huán)
5.2.6 輸入和輸出重定向
5.2.7 從一個文件中讀取所有的數據
5.3 do-while循環(huán)
5.4 for循環(huán)
5.5 使用哪種循環(huán)
5.6 嵌套循環(huán)
5.7 最小化數字錯誤
5.8 實例研究
5.8.1 求最大公約數
5.8.2 預測未來的學費
5.8.3 蒙特卡羅模擬
5.8.4 十進制轉換為十六進制
5.9 關鍵字break和continue
5.10 實例研究:檢查回文
5.11 實例研究:輸出素數
關鍵術語
本章小結
在線測驗
程序設計練習
第6章 函數
6.1 引言
6.2 函數定義
6.3 函數調用
6.4 無返回值函數
6.5 以傳值方式傳遞參數
6.6 模塊化代碼
6.7 函數的重載
6.8 函數原型
6.9 缺省參數
6.10 內聯(lián)函數
6.11 局部、全局和靜態(tài)局部變量
6.11.1 for循環(huán)中變量的作用域
6.11.2 靜態(tài)局部變量
6.12 以引用方式傳遞參數
6.13 常量引用參數
6.14 實例研究:十六進制轉換為十進制
6.15 函數抽象和逐步求精
6.15.1 自頂向下設計
6.15.2 自頂向下或自底向上實現
6.15.3 實現細節(jié)
6.15.4 逐步求精的好處
關鍵術語
本章小結
在線測驗
程序設計練習
第7章 一維數組和C字符串
7.1 引言
7.2 數組基礎
7.2.1 聲明數組
7.2.2 訪問數組元素
7.2.3 數組初始化語句
7.2.4 處理數組
7.3 問題:彩票號碼
7.4 問題:一副紙牌
7.5 數組作為函數參數
7.6 防止函數修改傳遞參數的數組
7.7 數組作為函數值返回
7.8 問題:計算每個字符的出現次數
7.9 搜索數組
7.9.1 順序搜索方法
7.9.2 二分搜索方法
7.10 排序數組
7.11 C字符串
7.11.1 輸入和輸出C字符串
7.11.2 C字符串函數
7.11.3 使用strcpy和strncpy函數復制字符串
7.11.4 使用strcat和strncat函數拼接字符串
7.11.5 使用strcmp函數比較字符串
7.11.6 字符串和數字之間的轉換
關鍵術語
本章小結
在線測驗
程序設計練習
第8章 多維數組
8.1 引言
8.2 聲明二維數組
8.3 操作二維數組
8.4 二維數組作為函數參數
8.5 問題:評定多項選擇測試的成績
8.6 問題:找最近鄰點對
8.7 問題:數獨
8.8 多維數組
8.8.1 問題:每日溫度與濕度
8.8.2 問題:猜生日
本章小結
在線測驗
程序設計練習
第二部分 面向對象編程
第9章 對象和類
9.1 引言
9.2 聲明類
9.3 例:定義類和創(chuàng)建對象
9.4 構造函數
9.5 創(chuàng)建及使用對象
9.6 類定義和類實現的分離
9.7 避免多次包含
9.8 類中的內聯(lián)函數
9.9 數據域封裝
9.10 變量作用域
9.11 類抽象和封裝
關鍵術語
本章小結
在線測驗
程序設計練習
第10章 面向對象思想
10.1 引言
10.2 string類
10.2.1 構造一個字符串
10.2.2 追加字符串
10.2.3 字符串賦值
10.2.4 函數at、clear、erase及empty
10.2.5 函數length、size、capacity和c_str()
10.2.6 字符串比較
10.2.7 獲取子串
10.2.8 字符串搜索
10.2.9 字符串插入和替換
10.2.10 字符串運算符
10.2.11 把數字轉換為字符串
10.2.12 字符串分割
10.2.13 實例研究:字符串替換
10.3 對象作為函數參數
10.4 對象數組
10.5 實例成員和靜態(tài)成員
10.6 只讀成員函數
10.7 從對象的角度思考
10.8 對象合成
10.9 實例研究:StackOfIntegers類
10.10 類設計準則
10.10.1 內聚
10.10.2 一致
10.10.3 封裝
10.10.4 清晰
10.10.5 完整
10.10.6 實例與靜態(tài)
關鍵術語
本章小結
在線測驗
程序設計練習
第11章 指針及動態(tài)內存管理
11.1 引言
11.2 指針基礎
11.3 用typedef定義同義類型
11.4 常量指針
11.5 數組和指針
11.6 函數調用時傳遞指針參數
11.7 從函數中返回指針
11.8 有用的數組函數
11.9 動態(tài)持久內存分配
11.10 創(chuàng)建及訪問動態(tài)對象
11.11 this指針
11.12 析構函數
11.13 實例研究:Course類
11.14 拷貝構造函數
11.15 自定義拷貝構造函數
關鍵術語
本章小結
在線測驗
程序設計練習
第12章 模板、向量和棧
12.1 引言
12.2 模板基礎
12.3 例:一個通用排序函數
12.4 模板類
12.5 改進Stack類
12.6 C++向量類
12.7 用vector類替換數組
12.8 實例研究:表達式計算
關鍵術語
本章小結
在線測驗
程序設計練習
第13章 文件輸入輸出
13.1 引言
13.2 文本輸入輸出
13.2.1 向文件中寫入數據
13.2.2 從文件中讀取數據
13.2.3 檢測文件是否存在
13.2.4 檢測文件結束
13.2.5 讓用戶輸入文件名
13.3 格式化輸出
13.4 函數:getline、get和put
13.5 fstream和文件打開模式
13.6 檢測流狀態(tài)
13.7 二進制輸入輸出
13.7.1 write函數
13.7.2 read函數
13.7.3 例:二進制數組I/O
13.7.4 例:二進制對象I/O
13.8 隨機訪問文件
13.9 更新文件
關鍵術語
本章小結
在線測驗
程序設計練習
第14章 運算符重載
14.1 引言
14.2 Rational類
14.3 運算符函數
14.4 重載[]運算符
14.5 重載簡寫運算符
14.6 重載一元運算符
14.7 重載++和——運算符
14.8 友元函數和友元類
14.9 重載<<和>>運算符
14.10 自動類型轉換
14.10.1 轉換為基本數據類型
14.10.2 轉換為對象類型
14.11 定義重載運算符的非成員函數
14.12 帶有重載運算符函數的Rational類
14.13 重載賦值運算符
關鍵術語
本章小結
在線測驗
程序設計練習
第15章 繼承和多態(tài)
15.1 引言
15.2 基類和派生類
15.3 泛型程序設計
15.4 構造函數和析構函數
15.4.1 調用基類構造函數
15.4.2 構造函數鏈和析構函數鏈
15.5 函數重定義
15.6 多態(tài)
15.7 虛函數和動態(tài)綁定
15.8 關鍵字protected
15.9 抽象類和純虛函數
15.10 類型轉換:static_cast 和 dynamic_cast
關鍵術語
本章小結
在線測驗
程序設計練習
第16章 異常處理
16.1 引言
16.2 異常處理概述
16.3 異常處理機制的優(yōu)點
16.4 異常類
16.5 自定義異常類
16.6 多重異常捕獲
16.7 異常的傳播
16.8 重拋出異常
16.9 異常說明
16.10 何時使用異常機制
關鍵術語
本章小結
在線測驗
程序設計練習
第三部分 算法和數據結構
第17章 遞歸
17.1 引言
17.2 例:階乘
17.3 實例研究:斐波那契數
17.4 用遞歸方法求解問題
17.5 遞歸輔助函數
17.5.1 選擇排序
17.5.2 二分搜索
17.6 漢諾塔
17.7 八皇后問題
17.8 遞歸與循環(huán)
17.9 尾遞歸
關鍵術語
本章小結
在線測驗
程序設計練習
第18章 開發(fā)高效的算法
第19章 排序
第20章 鏈表、隊列和優(yōu)先隊列
第21章 二分搜索樹
第22章 STL容器
第23章 STL算法
第24章 圖及其應用
第25章 加權圖及其應用
第26章 平衡二叉樹和伸展樹
附錄
附錄A C++關鍵字
附錄B ASCII字符集
附錄C 運算符優(yōu)先級表
附錄D 數字系統(tǒng)
附錄E 位運算