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