21世紀高等學校計算機規(guī)劃教材:C++教程
定 價:36 元
- 作者:鄭莉 ,李寧 著
- 出版時間:2010/5/1
- ISBN:9787115226648
- 出 版 社:人民郵電出版社
- 中圖法分類:TP312C
- 頁碼:354
- 紙張:膠版紙
- 版次:1
- 開本:16開
《C++教程》的內容涵蓋了C++語言的基本語法、面向對象的概念和程序設計方法、數據結構基礎、模板和泛型程序設計簡介。對于每一個知識點,都是先給出一個簡要的綜述,然后通過例題來講解。全書一共有174個例題,每個例題包括題目、主要知識點、源程序、運行結果、思考與提示幾個部分。
《C++教程》是面向沒有程序設計基礎的讀者編寫的入門教材,特點是問題驅動、案例教學,適用于大學的C++程序設計課程,也可用于自學。
《C++教程》是針對零起點的讀者編寫的計算機程序設計入門教材,基于作者在清華大學18年的程序設計課程教學經驗和教學成果,是國家精品課“面向對象的程序設計”建設成果之一 書中對于每一個知識點,都是先給出一個簡要的綜述,然后通過例題來講解每個例題包括題目、主要知識點、源程序、運行結果、思考與提示幾個部分書中的習題包含了很多“國家計算機等級考試二級(C++)筆試”的真題,對于檢驗學生的學習情況和準備相關的考試都有裨益。
C++語言是目前廣泛使用的一種程序設計語言。它支持面向過程、面向對象和泛型程序設計,主要應用于面向對象的程序設計。C++語言課程是在大學里普遍開設的程序設計基礎類課程。學習c++的途徑大致有兩種,一種是首先學習一種面向過程的語言(通常是c語言),熟悉程序設計的基礎知識,然后再學習c++;另一種是,直接以c++作為程序設計的入門課程。這兩種途徑各有優(yōu)點。
本書是面向沒有程序設計基礎的讀者編寫的入門教材,適用于大學的c++程序設計課程,也可用于自學。
從1999年開始,我在清華大學講授c++課程,以前也出版過c++教材,還算是受歡迎的書。這些年來與各個學校的同行有過很多交流、探討。除了我自己教的學生,還收到過大量讀者的來信。師生們在教學過程中,對教材有著多種不同的需求。其中有一些教師,會抱怨講大課的時候學生坐不下、聽不進;有一些學生會抱怨老師講得沒意思、聽不懂。雖然我自己授課的時候沒遇到這樣的情況,但是這樣的情況確實是存在的。我理解不同學校的學生,學習習慣和學習興趣可能有所差別,所以教材的編寫思路和講述形式也需要多樣化,以適應不同的需求。
本書的內容涵蓋了C++語言的基本語法、面向對象的概念和程序設計方法、數據結構基礎、模板和泛型程序設計簡介。對于每一個知識點,都是先給出一個簡要的綜述,然后通過例題來講解。全書一共有174個例題,每個例題包括:題目、主要知識點、源程序、運行結果、思考與提示幾個部分。書中的習題主要是選擇題和填空題。這些習題中包含了很多“國家計算機等級考試二級(C++)筆試”的真題,對于檢驗學生的學習情況和準備相關的考試都有裨益。學生編程能力的訓練主要是通過實驗來完成的,本書另外配有實驗指導書。
我寫這本書的初衷,就是想給師生們提供一本容易教、容易學的教材:沒有長篇大論的理論,以問題驅動,將概念和語法都融在例題之中;還有很多知識點是以啟發(fā)式的方法,出現在例題的“思考與練習”中。這樣,老師講的時候就可以很生動,先提出問題,再介紹解決這個問題需要的概念和語法,然后講解源程序、演示運行結果,最后對運行時的現象進行分析,鞏固概念和語法,并對學生的進一步思考和練習給出提示;也可以針對“思考與練習”中的問題組織課內外的討論。
鄭莉,清華大學計算機科學與技術系副教授。本科及研究生畢業(yè)于清華大學計算機系,國家級教學團隊骨干,ISO/IEC JTC1 SC36國際標準組織專家及聯合編輯。教育部教育信息化技術標準委員會副秘書長;從事計算機基礎課教學及軟件工程、網絡教育技術研究;創(chuàng)建了國家精品課“面向對象的程序設計”,主持863重點項目課題,作為主要起草人起草了多部信息技術國家標準。作為聯合編輯起草了國際標準草案;獲國家級教學成果二等獎、北京市教學成果一等獎、教育部中國高校科學技術獎一自然科學二等獎;主編了多本計算機程序設計的暢銷教材。
第1章 緒論 1
1.1 C++語言的特點 1
1.2 面向對象程序設計 1
1.3 C++語言的基本符號 2
1.4 C++語言的詞匯 3
1.4.1 關鍵字 3
1.4.2 標識符 3
1.4.3 常量 3
1.4.4 運算符 3
1.5 最簡單的C++程序 4
小結 5
習題 5
第2章 簡單數據及運算 7
2.1 程序中的數據 7
2.2 基本數據類型 11
2.2.1 整數類型 11
2.2.2 浮點數類型 15
2.2.3 字符類型 16
2.2.4 字符串類型 17
2.2.5 布爾類型 18
2.3 簡單運算 19
2.3.1 算術運算 19
2.3.2 賦值運算 21
2.3.3 逗號運算 23
2.3.4 關系運算 23
2.3.5 邏輯運算 24
2.3.6 sizeof運算 25
2.3.7 位運算 26
2.4 語句 27
2.4.1 聲明語句 28
2.4.2 表達式語句 28
2.4.3 復合語句 28
小結 28
習題 28
第3章 流程控制 30
3.1 分支結構 30
3.1.1 用if語句實現選擇結構 30
3.1.2 switch語句 34
3.2 循環(huán)語句 36
3.2.1 while語句 36
3.2.2 do while語句 37
3.2.3 for語句 38
3.3 循環(huán)與選擇結構的嵌套 40
3.4 break & continue語句 41
3.5 goto語句 43
小結 44
習題 44
第4章 復雜數據及運算 47
4.1 數組 47
4.1.1 一維數組的聲明與使用 48
4.1.2 多維數組的聲明與使用 50
4.2 指針 52
4.2.1 數據在內存中的地址 53
4.2.2 指針及指針運算 56
4.3 字符串 61
4.3.1 以數組存放C風格的字符串 61
4.3.2 string類型字符串 63
4.4 枚舉類型 67
4.5 運算優(yōu)先級與類型轉換 68
4.5.1 運算優(yōu)先級 68
4.5.2 類型轉換 70
小結 71
習題 71
第5章 抽象與分類 74
5.1 面向過程的功能抽象——函數 74
5.1.1 函數的定義與調用 74
5.1.2 函數參數的單向傳遞 77
5.1.3 引用類型的參數 78
5.1.4 指針類型的參數 81
5.1.5 數組類型的參數 81
5.1.6 缺省參數值 84
5.1.7 省略參數 85
5.1.8 嵌套與遞歸調用 85
5.1.9 內聯函數 87
5.1.10 函數指針 88
5.1.11 函數的重載 89
5.2 類與對象的概念 91
5.2.1 分類與抽象的思想 91
5.2.2 對象的屬性與行為 91
5.3 程序中類的設計 91
5.3.1 對象屬性的抽象 92
5.3.2 對象功能與行為的抽象 93
5.4 類的對象 94
5.4.1 對象的定義與初始化 94
5.4.2 對象的析構 99
5.4.3 對象數組 100
5.4.4 通過指針訪問對象 103
5.4.5 以對象作為函數的參數 106
5.5 特殊的類 106
5.5.1 結構體 107
5.5.2 聯合體 109
5.6 友元 111
5.6.1 友元函數 111
5.6.2 友元類 112
小結 113
習題 113
第6章 自定義類型的運算 121
6.1 用函數實現對象的運算 121
6.2 運算符重載函數 124
6.2.1 運算符重載為成員函數 125
6.2.2 運算符重載為非成員函數 127
6.3 典型運算符的重載 129
6.3.1 重載乘法運算符 129
6.3.2 重載求相反數運算符 131
6.3.3 重載相等比較運算符 133
6.3.4 重載++運算符 135
6.3.5 重載賦值運算符 138
6.3.6 重載類型轉換符 142
6.3.7 重載下標訪問運算符 144
小結 145
習題 145
第7章 多文件工程和編譯預處理命令 150
7.1 多文件工程 150
7.2 外部變量與外部函數 152
7.3 標準C++庫和命名空間 154
7.3.1 標準C++庫 154
7.3.2 什么是命名空間 155
7.3.3 命名空間的定義 155
7.3.4 命名空間的使用 157
7.3.5 命名空間的嵌套 161
7.4 編譯預處理 162
7.4.1 在程序中包含頭文件 163
7.4.2 程序中的置換 163
7.4.3 條件預編譯 165
小結 168
習題 169
第8章 類的重用 171
8.1 類的組合 171
8.1.1 類的組合的含義 171
8.1.2 類的組合實現 172
8.1.3 前向引用聲明 175
8.2 類的繼承 176
8.2.1 什么是繼承 176
8.2.2 派生類的定義 177
8.2.3 繼承成員的訪問控制 179
8.2.4 派生類的構造函數和析構函數 182
8.2.5 向上轉型 185
8.3 多繼承與虛基類 187
8.3.1 多繼承中同名隱藏和二義性問題 187
8.3.2 重復繼承與虛基類 188
小結 190
習題 191
第9章 數據的共享與保護 195
9.1 變量的生存期與作用域 195
9.1.1 對象的生存期 195
9.1.2 作用域及可見性 196
9.2 同類對象間的數據共享——靜態(tài)成員 199
9.2.1 靜態(tài)數據成員 199
9.2.2 靜態(tài)函數成員 200
9.3 共享數據的保護 202
9.3.1 常引用 202
9.3.2 常成員 203
9.3.3 常對象 206
小結 208
習題 208
第10章 多態(tài)性 213
10.1 多態(tài)性概述 213
10.2 虛函數 214
10.2.1 函數的覆蓋 214
10.2.2 虛函數成員 215
10.2.3 虛析構函數 219
10.3 抽象類 221
小結 223
習題 223
第11章 輸入/輸出流 230
11.1 C++輸入/輸出流的概念 230
11.1.1 什么是輸入/輸出流 230
11.1.2 流類庫的頭文件 231
11.1.3 預定義流對象 231
11.1.4 I/O流庫的類體系 231
11.1.5 輸出流舉例 232
11.1.6 輸入流舉例 233
11.2 無格式的輸入/輸出 234
11.2.1 無格式輸入 235
11.2.2 無格式輸出 236
11.3 有格式輸入/輸出 236
11.3.1 默認的輸入/輸出格式 236
11.3.2 格式標志的設置 237
11.3.3 格式控制操縱符 238
11.4 I/O流的狀態(tài) 248
11.5 文件流 249
11.5.1 文件的概念 250
11.5.2 文件流的建立 250
11.5.3 文件流的關閉 251
11.5.4 兩種特殊的文件流 251
11.6 字符串流 253
11.6.1 字符串流的建立 253
11.6.2 字符串流的緩沖區(qū)操作 254
11.7 針對自定義類型重載和 255
小結 257
習題 257
第12章 容錯及異常處理基礎 260
12.1 異常處理的基本思想 260
12.2 拋出異常 261
12.3 捕獲異常 263
12.4 異常對象 266
12.5 標準程序庫異常處理 267
12.6 異常規(guī)范 269
小結 270
習題 270
第13章 數據結構簡介 273
13.1 線性群體 273
13.1.1 線性群體的概念 273
13.1.2 直接存取群體——數組 274
13.1.3 順序存取群體——鏈表 277
13.1.4 棧 286
13.1.5 隊列 288
13.2 群體數據的組織 290
13.2.1 順序查找 290
13.2.2 折半查找 291
13.2.3 插入排序 293
13.2.4 選擇排序 294
13.2.5 交換排序 295
小結 297
習題 297
第14章 模板簡介 301
14.1 函數模板 301
14.1.1 函數模板的定義和實例化 301
14.1.2 模板實參的使用 304
14.1.3 模板的常規(guī)參數 306
14.2 類模板 307
14.3 類模板與繼承 310
小結 312
習題 312
第15章 泛型程序設計與C++ STL簡介 319
15.1 泛型程序設計的概念和術語 319
15.1.1 泛型程序設計 319
15.1.2 STL的相關概念和術語 320
15.2 C++ STL中的容器 322
15.2.1 順序容器 322
15.2.2 關聯容器 333
15.2.3 容器適配器 335
15.3 迭代器 338
15.3.1 迭代器的分類 339
15.3.2 迭代器適配器 341
15.3.3 迭代器相關的輔助函數 341
15.4 標準C++庫中的算法簡介 342
15.4.1 非可變序列算法 343
15.4.2 可變序列算法 345
15.4.3 排序及相關算法 348
15.4.4 數值算法 350
15.5 函數對象 351
15.5.1 函數對象 351
15.5.2 函數適配器 351
小結 352
習題 352
本節(jié)的例題以數值型(整數、實數)的數據為例,介紹了常量與變量的概念和使用方法。這樣的概念和使用方法也同樣適用于其他類型的數據,比如字符數據。其實程序中的“Please enter theradius!\n”就是字符串常量。2.2節(jié)將詳細介紹各種不同的數據類型。
2.2 基本數據類型
程序需要處理的數據,具有很多不同的類型,有簡單的,也有復雜的。不同類型的數據在內存中的存放形式也不一樣,那么在程序中如何規(guī)范地存放和使用數據呢?這就是對數據類型的規(guī)定。程序中的數據類型,是對現實世界中的數據類型的一種模擬。例如,整數、實數、字符這些數據類型,在c++程序中都有對應的類型。對于這些比較簡單的數據類型,c++語言通過基本數據類型來模擬。這些基本類型在內存中的存儲形式以及它們的運算規(guī)則,是c++語言預定義的,我們在程序中可以直接使用。一些稍微復雜的數據,可以由基本類型簡單復合而成。而對于各種對象的模擬,就不僅需要詳細定義其數據,還需要定義處理數據的方法。
在這一章里,我們僅僅介紹c++的基本數據類型,第4章將介紹復雜數據類型,第5章將介紹類的定義。
數據可以依其本身的特點進行分類。C++預定義的基本數據類型可以用來表示整數(如int)、浮點數(如double)、字符(如char)和布爾類型(bool)。
2.2.1整數類型
c++的整數類型有多種形式,讀者可以根據數據的特點選擇最合適的形式使用。基本整數類型是int類型,按符號可以分為有符號的(signed)和無符號的(unsigned)兩類;按照數據范圍大小,又可以分成短整數(short)和長整數(10ng),用于存放字符數據的char類型實質上也是整數類型。