作者簡介
陳家駿,男,1963年生。獲南京大學博士學位,現為南京大學計算機科學與技術系教授,博士生導師。主要從事自然語言處理和軟體工程領域的研究工作,曾多次主持國家及省級科研項目的研究與開發,其中包括:863“基於語義和多策略融合的日漢機器翻譯關鍵技術研究”、國家自然科學基金“基於統計關係學習的漢語指代消解研究”以及江蘇省自然科學基金“基於條件隨機場和核集成的自適應中文信息抽取技術研究”等項目,研究成果多次獲得省部級科研獎勵。具有多年的軟體開發和程式設計課程教學的經歷。
鄭滔,男,1966年生。獲南京大學碩士學位,現為南京大學軟體學院教授。主要從事軟體工程和嵌入式系統領域的研究工作。曾多次參加國家/省科技攻關項目、國家/省自然科學基金項目和國家863高科技項目的研究與開發,研究成果兩次獲得部級科技成果二等獎。具有多年軟體開發和程式設計以及編譯技術課程教學的經歷。
內容簡介
《程式設計教程:用C++語言編程(第2版)》是以C++作為實現語言的第一門程式設計課程的教材。全書共12章,主要內容包括:數據類型、表達式、流程控制、子程式、遞歸、類/對象、繼承、類屬(泛型)、輸入/輸出以及異常處理等。內容相對完整,概念力求精確。
《程式設計教程:用C++語言編程(第2版)》在第1版的基礎上,相應地增加了例子、代碼注釋和習題,便於讀者輕鬆且牢固地掌握程式設計的技巧。可作為高等院校本科生第一門程式設計課程的教材,也可供程式設計的初學者參考。
目錄
第2版前言
第1版前言
作者簡介
教學建議
第1章 概述
1.1 計算機的工作模型
1.1.1 硬體
1.1.2 軟體
1.1.3 機內信息表示
1.2 程式設計
1.2.1 程式設計范型
1.2.2 程式設計步驟
1.2.3 程式設計語言
1.3 C++語言
1.3.1 C++語言概述
1.3.2 C++程式的構成
1.3.3 C++程式的運行步驟
1.3.4 C++語言的詞法
1.4 小結
1.5 習題
第2章 數據描述(Ⅰ)——基本數據類型和表達式
2.1 數據類型概述
2.2 基本數據類型
2.2.1 整數類型
2.2.2 實數類型
2.2.3 字元類型
2.2.4 邏輯類型
2.3 數據的表現形式
2.3.1 常量
2.3.2 變數
2.3.3 變數值的輸入
2.4 操作符(運算符)
2.4.1 算術操作符
2.4.2 關係與邏輯操作符
2.4.3 位操作符
2.4.4 賦值操作符
2.4.5 其他操作符
2.4.6 運算元的類型轉換
2.5 表達式
2.5.1 表達式的構成與分類
2.5.2 操作符的優先權和結合性
2.5.3 表達式中運算元的類型轉換
2.5.4 表達式結果的輸出
2.5.5 表達式的副作用
2.6 小結
2.7 習題
第3章 流程控制——語句
3.1 程式流程控制概述
3.2 順序控制
3.2.1 表達式語句
3.2.2 複合語句
3.2.3 空語句
3.3 選擇控制
3.3.1 if語句
3.3.2 switch語句
3.4 循環(重複)控制
3.4.1 while語句
3.4.2 do.while語句
3.4.3 for語句
3.4.4 計數循環和事件循環
3.4.5 循環程式設計實例
3.5 無條件轉移控制
3.5.1 goto語句
3.5.2 break語句
3.5.3 continue語句
3.6 程式設計風格
3.6.1 結構化程式設計
3.6.2 關於goto語句
3.7 小結
3.8 習題
第4章 過程抽象——函式
4.1 基於過程抽象的程式設計
4.1.1 功能分解與複合
4.1.2 子程式
4.1.3 子程式間的數據傳遞
4.2 C++函式
4.2.1 函式的定義
4.2.2 函式的調用
4.2.3 值作為參數傳遞
4.2.4 基於函式的過程式程式設計
4.3 標識符的作用域與變數的生存期
4.3.1 變數的局部性——局部變數與全局變數
4.3.2 C++程式的多模組結構
4.3.3 標識符的作用域
4.3.4 名空間
4.3.5 變數的生存期(存儲分配)
4.3.6 基於棧的函式調用的實現
4.4 遞歸函式
4.4.1 什麼是遞歸函式
4.4.2 “分而治之”的程式設計
4.4.3 遞歸與循環的選擇
4.4.4 遞歸函式套用實例
4.5 函式的進一步討論
4.5.1 內聯函式
4.5.2 帶默認值的形式參數
4.5.3 函式名重載
4.6 C++標準函式館
4.7 C++的條件編譯
4.7.1 條件編譯命令
4.7.2 基於多環境的程式編制
4.7.3 程式調試
4.8 小結
4.9 習題
第5章 數據描述(Ⅱ)——構造數據類型
5.1 枚舉類型
5.2 數組類型
5.2.1 一維數組的定義與操作
5.2.2 字元串類型的一種實現——一維字元數組
5.2.3 二維數組的定義與操作
5.2.4 數組類型的套用
5.3 結構類型
5.3.1 結構類型的定義與操作
5.3.2 結構類型的套用
5.4 聯合類型
5.5 指針類型
5.5.1 指針類型的定義
5.5.2 指針類型的基本操作
5.5.3 指針作為參數傳遞
5.5.4 指針與動態變數
5.5.5 函式指針
5.5.6 指針與數組
5.5.7 多級指針
5.6 引用類型
5.6.1 引用類型的定義
5.6.2 引用作為參數傳遞
5.6.3 引用類型與指針類型的區別
5.7 小結
5.8 習題
第6章 數據抽象——對象與類
6.1 基於數據抽象的程式設計
6.1.1 什麼是面向對象程式設計
6.1.2 為什麼要面向對象
6.1.3 面向對象程式設計的基本內容
6.2 類
6.2.1 數據成員
6.2.2 成員函式
6.2.3 成員的訪問控制——信息隱藏
6.3 對象
6.3.1 對象的創建和標識
6.3.2 對象的操作
6.3.3 this指針
6.4 對象的初始化和消亡前處理
6.4.1 構造函式與析構函式
6.4.2 成員對象的初始化
6.4.3 拷貝構造函式
6.5 對象與類的進一步討論
6.5.1 對常量對象的訪問——常成員函式
6.5.2 對象之間的數據共享靜態數據成員
6.5.3 提高對對象私有數據成員的訪問效率——友元
6.6 類作為模組
6.6.1 類模組的組成
6.6.2 Demeter法則
6.7 小結
6.8 習題
第7章 操作符重載
7.1 操作符重載概述
7.1.1 操作符重載的必要性
7.1.2 操作符重載的方式
7.1.3 操作符重載的基本原則
7.2 操作符重載的實現
7.2.1 雙目操作符重載
7.2.2 單目操作符重載
7.3 C++中幾個特殊操作符的重載
7.3.1 賦值操作符
7.3.2 數組元素訪問操作符(下標操作符)
7.3.3 類成員訪問操作符
7.3.4 動態存儲分配與去配操作符
7.3.5 自定義類型轉換操作符
7.3.6 函式調用操作符
7.4 操作符重載的實例——字元串類String的一種實現
7.5 小結
7.6 習題
第8章 類的繼承——派生類
8.1 類之間的繼承關係——基類與派生類
8.2 單繼承
8.2.1 單繼承的定義
8.2.2 在派生類中訪問基類成員——protected訪問控制
8.2.3 派生類對基類成員的訪問控制繼承方式
8.2.4 派生類對象的初始化和賦值操作
8.2.5 單繼承的套用實例
8.2.6 類之間的聚集關係
8.3 訊息(成員函式調用)的動態綁定
8.3.1 訊息的多態性
8.3.2 虛函式與訊息的動態綁定
8.3.3 純虛函式和抽象類
8.3.4 虛函式動態綁定的一種實現
8.4 多繼承
8.4.1 多繼承的必要性
8.4.2 多繼承的定義
8.4.3 名衝突
8.4.4 重複繼承——虛基類
8.5 小結
8.6 習題
第9章 類屬(泛型)機制——模板
9.1 類屬(泛型)程式設計
9.2 模板
9.2.1 函式模板
9.2.2 類模板
9.2.3 模板的復用
9.3 C++標準模板庫
9.3.1 概述
9.3.2 容器
9.3.3 疊代器
9.3.4 算法
9.4 小結
9.5 習題
第10章輸入/輸出
10.1 輸入/輸出概述
10.2 面向控制台的輸入/輸出
10.2.1 基於函式館的控制台I/O
10.2.2 基於類庫的控制台。I/O
10.2.3 抽取/插入操作符“>>”和“<<”的重載
10.3 面向檔案的輸入/輸出
10.3.1 基於函式館的檔案I/O
10.3.2 基於類庫的檔案I/O
10.4 面向字元串變數的輸入/輸出
10.5 小結
10.6 習題
第11章 異常處理
11.1 異常處理概述
11.1.1 什麼是異常
11.1.2 異常處理的基本手段
11.2 C++異常處理機制
11.2.1 try、throw以及catch語句
11.2.2 異常處理的嵌套
11.3 小結
11.4 習題
第12章 實例——面向對象的Windows應用程式框架
12.1 Windows應用程式的基本結構
12.1.1 應用程式的用戶界面
12.1 12訊息驅動的程式結構
12.2 面向對象的Windows應用程式結構
12.2.1 Windows應用程式中的對象
12.2.2 MFC對面向對象Windows應用程式開發的支持
12.2.3 VisualC++的套用嚮導和類嚮導
12.3 小結
12.4 習題
附錄AASCII字元集及其編碼
附錄BIEEE浮點數的內部表示
參考文獻