21世紀(jì)高等學(xué)校計(jì)算機(jī)規(guī)劃教材:C++教程
定 價:36 元
- 作者:鄭莉 ,李寧 著
- 出版時間:2010/5/1
- ISBN:9787115226648
- 出 版 社:人民郵電出版社
- 中圖法分類:TP312C
- 頁碼:354
- 紙張:膠版紙
- 版次:1
- 開本:16開
《C++教程》的內(nèi)容涵蓋了C++語言的基本語法、面向?qū)ο蟮母拍詈统绦蛟O(shè)計(jì)方法、數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)、模板和泛型程序設(shè)計(jì)簡介。對于每一個知識點(diǎn),都是先給出一個簡要的綜述,然后通過例題來講解。全書一共有174個例題,每個例題包括題目、主要知識點(diǎn)、源程序、運(yùn)行結(jié)果、思考與提示幾個部分。
《C++教程》是面向沒有程序設(shè)計(jì)基礎(chǔ)的讀者編寫的入門教材,特點(diǎn)是問題驅(qū)動、案例教學(xué),適用于大學(xué)的C++程序設(shè)計(jì)課程,也可用于自學(xué)。
《C++教程》是針對零起點(diǎn)的讀者編寫的計(jì)算機(jī)程序設(shè)計(jì)入門教材,基于作者在清華大學(xué)18年的程序設(shè)計(jì)課程教學(xué)經(jīng)驗(yàn)和教學(xué)成果,是國家精品課“面向?qū)ο蟮某绦蛟O(shè)計(jì)”建設(shè)成果之一 書中對于每一個知識點(diǎn),都是先給出一個簡要的綜述,然后通過例題來講解每個例題包括題目、主要知識點(diǎn)、源程序、運(yùn)行結(jié)果、思考與提示幾個部分書中的習(xí)題包含了很多“國家計(jì)算機(jī)等級考試二級(C++)筆試”的真題,對于檢驗(yàn)學(xué)生的學(xué)習(xí)情況和準(zhǔn)備相關(guān)的考試都有裨益。
C++語言是目前廣泛使用的一種程序設(shè)計(jì)語言。它支持面向過程、面向?qū)ο蠛头盒统绦蛟O(shè)計(jì),主要應(yīng)用于面向?qū)ο蟮某绦蛟O(shè)計(jì)。C++語言課程是在大學(xué)里普遍開設(shè)的程序設(shè)計(jì)基礎(chǔ)類課程。學(xué)習(xí)c++的途徑大致有兩種,一種是首先學(xué)習(xí)一種面向過程的語言(通常是c語言),熟悉程序設(shè)計(jì)的基礎(chǔ)知識,然后再學(xué)習(xí)c++;另一種是,直接以c++作為程序設(shè)計(jì)的入門課程。這兩種途徑各有優(yōu)點(diǎn)。
本書是面向沒有程序設(shè)計(jì)基礎(chǔ)的讀者編寫的入門教材,適用于大學(xué)的c++程序設(shè)計(jì)課程,也可用于自學(xué)。
從1999年開始,我在清華大學(xué)講授c++課程,以前也出版過c++教材,還算是受歡迎的書。這些年來與各個學(xué)校的同行有過很多交流、探討。除了我自己教的學(xué)生,還收到過大量讀者的來信。師生們在教學(xué)過程中,對教材有著多種不同的需求。其中有一些教師,會抱怨講大課的時候?qū)W生坐不下、聽不進(jìn);有一些學(xué)生會抱怨老師講得沒意思、聽不懂。雖然我自己授課的時候沒遇到這樣的情況,但是這樣的情況確實(shí)是存在的。我理解不同學(xué)校的學(xué)生,學(xué)習(xí)習(xí)慣和學(xué)習(xí)興趣可能有所差別,所以教材的編寫思路和講述形式也需要多樣化,以適應(yīng)不同的需求。
本書的內(nèi)容涵蓋了C++語言的基本語法、面向?qū)ο蟮母拍詈统绦蛟O(shè)計(jì)方法、數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)、模板和泛型程序設(shè)計(jì)簡介。對于每一個知識點(diǎn),都是先給出一個簡要的綜述,然后通過例題來講解。全書一共有174個例題,每個例題包括:題目、主要知識點(diǎn)、源程序、運(yùn)行結(jié)果、思考與提示幾個部分。書中的習(xí)題主要是選擇題和填空題。這些習(xí)題中包含了很多“國家計(jì)算機(jī)等級考試二級(C++)筆試”的真題,對于檢驗(yàn)學(xué)生的學(xué)習(xí)情況和準(zhǔn)備相關(guān)的考試都有裨益。學(xué)生編程能力的訓(xùn)練主要是通過實(shí)驗(yàn)來完成的,本書另外配有實(shí)驗(yàn)指導(dǎo)書。
我寫這本書的初衷,就是想給師生們提供一本容易教、容易學(xué)的教材:沒有長篇大論的理論,以問題驅(qū)動,將概念和語法都融在例題之中;還有很多知識點(diǎn)是以啟發(fā)式的方法,出現(xiàn)在例題的“思考與練習(xí)”中。這樣,老師講的時候就可以很生動,先提出問題,再介紹解決這個問題需要的概念和語法,然后講解源程序、演示運(yùn)行結(jié)果,最后對運(yùn)行時的現(xiàn)象進(jìn)行分析,鞏固概念和語法,并對學(xué)生的進(jìn)一步思考和練習(xí)給出提示;也可以針對“思考與練習(xí)”中的問題組織課內(nèi)外的討論。
鄭莉,清華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)系副教授。本科及研究生畢業(yè)于清華大學(xué)計(jì)算機(jī)系,國家級教學(xué)團(tuán)隊(duì)骨干,ISO/IEC JTC1 SC36國際標(biāo)準(zhǔn)組織專家及聯(lián)合編輯。教育部教育信息化技術(shù)標(biāo)準(zhǔn)委員會副秘書長;從事計(jì)算機(jī)基礎(chǔ)課教學(xué)及軟件工程、網(wǎng)絡(luò)教育技術(shù)研究;創(chuàng)建了國家精品課“面向?qū)ο蟮某绦蛟O(shè)計(jì)”,主持863重點(diǎn)項(xiàng)目課題,作為主要起草人起草了多部信息技術(shù)國家標(biāo)準(zhǔn)。作為聯(lián)合編輯起草了國際標(biāo)準(zhǔn)草案;獲國家級教學(xué)成果二等獎、北京市教學(xué)成果一等獎、教育部中國高校科學(xué)技術(shù)獎一自然科學(xué)二等獎;主編了多本計(jì)算機(jī)程序設(shè)計(jì)的暢銷教材。
第1章 緒論 1
1.1 C++語言的特點(diǎn) 1
1.2 面向?qū)ο蟪绦蛟O(shè)計(jì) 1
1.3 C++語言的基本符號 2
1.4 C++語言的詞匯 3
1.4.1 關(guān)鍵字 3
1.4.2 標(biāo)識符 3
1.4.3 常量 3
1.4.4 運(yùn)算符 3
1.5 最簡單的C++程序 4
小結(jié) 5
習(xí)題 5
第2章 簡單數(shù)據(jù)及運(yùn)算 7
2.1 程序中的數(shù)據(jù) 7
2.2 基本數(shù)據(jù)類型 11
2.2.1 整數(shù)類型 11
2.2.2 浮點(diǎn)數(shù)類型 15
2.2.3 字符類型 16
2.2.4 字符串類型 17
2.2.5 布爾類型 18
2.3 簡單運(yùn)算 19
2.3.1 算術(shù)運(yùn)算 19
2.3.2 賦值運(yùn)算 21
2.3.3 逗號運(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 語句 27
2.4.1 聲明語句 28
2.4.2 表達(dá)式語句 28
2.4.3 復(fù)合語句 28
小結(jié) 28
習(xí)題 28
第3章 流程控制 30
3.1 分支結(jié)構(gòu) 30
3.1.1 用if語句實(shí)現(xiàn)選擇結(jié)構(gòu) 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)與選擇結(jié)構(gòu)的嵌套 40
3.4 break & continue語句 41
3.5 goto語句 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類型字符串 63
4.4 枚舉類型 67
4.5 運(yùn)算優(yōu)先級與類型轉(zhuǎn)換 68
4.5.1 運(yùn)算優(yōu)先級 68
4.5.2 類型轉(zhuǎn)換 70
小結(jié) 71
習(xí)題 71
第5章 抽象與分類 74
5.1 面向過程的功能抽象——函數(shù) 74
5.1.1 函數(shù)的定義與調(diào)用 74
5.1.2 函數(shù)參數(shù)的單向傳遞 77
5.1.3 引用類型的參數(shù) 78
5.1.4 指針類型的參數(shù) 81
5.1.5 數(shù)組類型的參數(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 類與對象的概念 91
5.2.1 分類與抽象的思想 91
5.2.2 對象的屬性與行為 91
5.3 程序中類的設(shè)計(jì) 91
5.3.1 對象屬性的抽象 92
5.3.2 對象功能與行為的抽象 93
5.4 類的對象 94
5.4.1 對象的定義與初始化 94
5.4.2 對象的析構(gòu) 99
5.4.3 對象數(shù)組 100
5.4.4 通過指針訪問對象 103
5.4.5 以對象作為函數(shù)的參數(shù) 106
5.5 特殊的類 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 友元類 112
小結(jié) 113
習(xí)題 113
第6章 自定義類型的運(yùn)算 121
6.1 用函數(shù)實(shí)現(xiàn)對象的運(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 重載類型轉(zhuǎn)換符 142
6.3.7 重載下標(biāo)訪問運(yùn)算符 144
小結(jié) 145
習(xí)題 145
第7章 多文件工程和編譯預(yù)處理命令 150
7.1 多文件工程 150
7.2 外部變量與外部函數(shù) 152
7.3 標(biāo)準(zhǔn)C++庫和命名空間 154
7.3.1 標(biāo)準(zhǔn)C++庫 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章 類的重用 171
8.1 類的組合 171
8.1.1 類的組合的含義 171
8.1.2 類的組合實(shí)現(xiàn) 172
8.1.3 前向引用聲明 175
8.2 類的繼承 176
8.2.1 什么是繼承 176
8.2.2 派生類的定義 177
8.2.3 繼承成員的訪問控制 179
8.2.4 派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù) 182
8.2.5 向上轉(zhuǎn)型 185
8.3 多繼承與虛基類 187
8.3.1 多繼承中同名隱藏和二義性問題 187
8.3.2 重復(fù)繼承與虛基類 188
小結(jié) 190
習(xí)題 191
第9章 數(shù)據(jù)的共享與保護(hù) 195
9.1 變量的生存期與作用域 195
9.1.1 對象的生存期 195
9.1.2 作用域及可見性 196
9.2 同類對象間的數(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 常對象 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 抽象類 221
小結(jié) 223
習(xí)題 223
第11章 輸入/輸出流 230
11.1 C++輸入/輸出流的概念 230
11.1.1 什么是輸入/輸出流 230
11.1.2 流類庫的頭文件 231
11.1.3 預(yù)定義流對象 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 默認(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 針對自定義類型重載和 255
小結(jié) 257
習(xí)題 257
第12章 容錯及異常處理基礎(chǔ) 260
12.1 異常處理的基本思想 260
12.2 拋出異常 261
12.3 捕獲異常 263
12.4 異常對象 266
12.5 標(biāo)準(zhǔn)程序庫異常處理 267
12.6 異常規(guī)范 269
小結(jié) 270
習(xí)題 270
第13章 數(shù)據(jù)結(jié)構(gòu)簡介 273
13.1 線性群體 273
13.1.1 線性群體的概念 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章 模板簡介 301
14.1 函數(shù)模板 301
14.1.1 函數(shù)模板的定義和實(shí)例化 301
14.1.2 模板實(shí)參的使用 304
14.1.3 模板的常規(guī)參數(shù) 306
14.2 類模板 307
14.3 類模板與繼承 310
小結(jié) 312
習(xí)題 312
第15章 泛型程序設(shè)計(jì)與C++ STL簡介 319
15.1 泛型程序設(shè)計(jì)的概念和術(shù)語 319
15.1.1 泛型程序設(shè)計(jì) 319
15.1.2 STL的相關(guān)概念和術(shù)語 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 迭代器的分類 339
15.3.2 迭代器適配器 341
15.3.3 迭代器相關(guān)的輔助函數(shù) 341
15.4 標(biāo)準(zhǔn)C++庫中的算法簡介 342
15.4.1 非可變序列算法 343
15.4.2 可變序列算法 345
15.4.3 排序及相關(guān)算法 348
15.4.4 數(shù)值算法 350
15.5 函數(shù)對象 351
15.5.1 函數(shù)對象 351
15.5.2 函數(shù)適配器 351
小結(jié) 352
習(xí)題 352
本節(jié)的例題以數(shù)值型(整數(shù)、實(shí)數(shù))的數(shù)據(jù)為例,介紹了常量與變量的概念和使用方法。這樣的概念和使用方法也同樣適用于其他類型的數(shù)據(jù),比如字符數(shù)據(jù)。其實(shí)程序中的“Please enter theradius!\n”就是字符串常量。2.2節(jié)將詳細(xì)介紹各種不同的數(shù)據(jù)類型。
2.2 基本數(shù)據(jù)類型
程序需要處理的數(shù)據(jù),具有很多不同的類型,有簡單的,也有復(fù)雜的。不同類型的數(shù)據(jù)在內(nèi)存中的存放形式也不一樣,那么在程序中如何規(guī)范地存放和使用數(shù)據(jù)呢?這就是對數(shù)據(jù)類型的規(guī)定。程序中的數(shù)據(jù)類型,是對現(xiàn)實(shí)世界中的數(shù)據(jù)類型的一種模擬。例如,整數(shù)、實(shí)數(shù)、字符這些數(shù)據(jù)類型,在c++程序中都有對應(yīng)的類型。對于這些比較簡單的數(shù)據(jù)類型,c++語言通過基本數(shù)據(jù)類型來模擬。這些基本類型在內(nèi)存中的存儲形式以及它們的運(yùn)算規(guī)則,是c++語言預(yù)定義的,我們在程序中可以直接使用。一些稍微復(fù)雜的數(shù)據(jù),可以由基本類型簡單復(fù)合而成。而對于各種對象的模擬,就不僅需要詳細(xì)定義其數(shù)據(jù),還需要定義處理數(shù)據(jù)的方法。
在這一章里,我們僅僅介紹c++的基本數(shù)據(jù)類型,第4章將介紹復(fù)雜數(shù)據(jù)類型,第5章將介紹類的定義。
數(shù)據(jù)可以依其本身的特點(diǎn)進(jìn)行分類。C++預(yù)定義的基本數(shù)據(jù)類型可以用來表示整數(shù)(如int)、浮點(diǎn)數(shù)(如double)、字符(如char)和布爾類型(bool)。
2.2.1整數(shù)類型
c++的整數(shù)類型有多種形式,讀者可以根據(jù)數(shù)據(jù)的特點(diǎn)選擇最合適的形式使用;菊麛(shù)類型是int類型,按符號可以分為有符號的(signed)和無符號的(unsigned)兩類;按照數(shù)據(jù)范圍大小,又可以分成短整數(shù)(short)和長整數(shù)(10ng),用于存放字符數(shù)據(jù)的char類型實(shí)質(zhì)上也是整數(shù)類型。