清華大學(xué)計算機基礎(chǔ)教育課程系列教材:C++程序設(shè)計基礎(chǔ)教程
定 價:33 元
- 作者:鄭莉 ,董淵 著
- 出版時間:2010/8/1
- ISBN:9787302233619
- 出 版 社:清華大學(xué)出版社
- 中圖法分類:TP312C
- 頁碼:336
- 紙張:膠版紙
- 版次:1
- 開本:16開
《C++程序設(shè)計基礎(chǔ)教程》針對程序設(shè)計的初學(xué)者,以面向?qū)ο蟮某绦蛟O(shè)計思想為主線,以通俗易懂的方法介紹C++語言,引導(dǎo)讀者以最自然的方式,將人類習(xí)慣的面向?qū)ο蟮乃季S方法運用到程序設(shè)計中。主要內(nèi)容包括程序設(shè)計基礎(chǔ)知識、類與對象的基本概念、繼承與多態(tài)以及輸入輸出流。整套教材語言生動、流暢,深入淺出。適用于各類學(xué)校的C++語言程序設(shè)計課程。
《C++程序設(shè)計基礎(chǔ)教程》是《C++語言程序設(shè)計》系列教材之一,根據(jù)《C++語言程序設(shè)計(第3版)》修訂而成,針對程序設(shè)計的初學(xué)者,以面向?qū)ο蟮某绦蛟O(shè)計思想為主線,以通俗易懂的方法介紹C++語言,引導(dǎo)讀者以最自然的方式,將人類習(xí)慣的面向?qū)ο蟮乃季S方法運用到程序設(shè)計中。全書以面向?qū)ο蟮某绦蛟O(shè)計方法貫穿始終,每一章都是首先闡述面向?qū)ο蟮某绦蛟O(shè)計思想和方法,由實際問題入手,然后引出必要的語法知識,在講解語法時著重從程序設(shè)計方法學(xué)的角度講述其意義和用途!禖++程序設(shè)計基礎(chǔ)教程》的宗旨是,不僅要使讀者掌握C++語言本身,而且要能夠?qū)ΜF(xiàn)實世界中較簡單的問題及其解決方法用計算機語言進行描述。 《C++語言程序設(shè)計》系列教材提供了全面和細致的學(xué)習(xí)輔助資源,可以為不同讀者提供個性化的學(xué)習(xí)輔導(dǎo)。
一、 版本說明
本書是《C++語言程序設(shè)計(第4版)》的姊妹篇。《C++語言程序設(shè)計》第1版于1999年出版,第2版于2001年出版,第3版于2003年出版。在前三版基礎(chǔ)上,廣泛聽取了讀者和同行的建議,參考了最新的資料,并根據(jù)作者本人在授課過程中的經(jīng)驗,針對不同的教學(xué)要求,將這本書分成了兩個不同的版本: 《C++程序設(shè)計基礎(chǔ)教程》和《C++語言程序設(shè)計(第四版)》。本書適合用于程序設(shè)計課程學(xué)時較少的學(xué)校和專業(yè)。
與《C++語言程序設(shè)計(第3版)》相比,本書主要在以下方面作了修訂:
1. 去掉了原來的第9、10、12、13章。
2. 從第4章開始,每章編寫了新的綜合實例“個人銀行賬戶管理程序”.
3. 部分例題有更新。
與《C++語言程序設(shè)計(第4版)》相比,去年了第9、10、12章,去掉了每章的“深度探索”一節(jié)。
二、 本書的編寫背景
C++是從C語言發(fā)展演變而來的一種面向?qū)ο蟮某绦蛟O(shè)計語言。C++語言的主要特點表現(xiàn)在兩個方面: 一是兼容C,二是支持面向?qū)ο蟮姆椒ā?br />面向?qū)ο蟮某绦蛟O(shè)計(OOP)方法將數(shù)據(jù)及對數(shù)據(jù)的操作方法封裝在一起,作為一個相互依存、不可分離的整體--對象。對同類型對象抽象出其共性,形成類。類中的大多數(shù)數(shù)據(jù),只能用本類的方法進行處理。類通過一個簡單的外部接口,與外界發(fā)生關(guān)系,對象與對象之間通過消息進行通訊。這樣,程序模塊間的關(guān)系簡單,程序模塊的獨立性、數(shù)據(jù)的安全性具有良好的保障,通過繼承與多態(tài)性,使程序具有很高的可重用性,使得軟件的開發(fā)和維護都更為方便。
由于面向?qū)ο蠓椒ǖ耐怀鰞?yōu)點,目前它已經(jīng)成為開發(fā)大型軟件時所采用的主要方法。而C++語言是應(yīng)用最廣泛的面向?qū)ο蟮某绦蛟O(shè)計語言之一。
長期以來,C++語言被認為是較難使用的專業(yè)開發(fā)語言,特別是對于程序設(shè)計類課程學(xué)時較少的學(xué)校和專業(yè),很難開設(shè)C++程序設(shè)計課程。
實際上面向?qū)ο蠓椒ǖ某霈F(xiàn),是程序設(shè)計方法發(fā)展的一個返樸歸真過程。軟件開發(fā)從本質(zhì)上講,就是對軟件所要處理的問題域進行正確的認識,并把這種認識正確地描述出來。面向?qū)ο蠓椒ㄋ鶑娬{(diào)的基本原則,就是直接面對客觀存在的事物來進行軟件開發(fā),將人們在日常生活中習(xí)慣的思維方式和表達方式應(yīng)用在軟件開發(fā)中,使軟件開發(fā)從過分專業(yè)化的方法、規(guī)則和技巧中回到客觀世界,回到人們通常的思維。
雖然C++語言是從C語言發(fā)展而來的,但是學(xué)習(xí)C++可以不必從C語言開始,C++本身是一個完整的程序設(shè)計語言,是可以作為入門的程序設(shè)計語言來學(xué)習(xí)的。
本書就是針對初學(xué)者的入門教程,適合用于開設(shè)一門學(xué)時不多的C++課程。
三、 本書的特色
本書的特色是涵蓋了C++語言的主要語法、面向?qū)ο蟮某绦蛟O(shè)計方法,內(nèi)容深入淺出、立體配套。
全書以面向?qū)ο蟮某绦蛟O(shè)計方法貫穿始終,每一章都是首先闡述面向?qū)ο蟮某绦蛟O(shè)計思想和方法,由實際問題入手,然后引出必要的語法知識,在講解語法時著重從程序設(shè)計方法學(xué)的角度講述其意義和用途。本書的宗旨是,不僅要使讀者掌握C++語言本身,而且要能夠?qū)ΜF(xiàn)實世界中較簡單的問題及其解決方法用計算機語言進行描述。當然,要達到能夠描述較復(fù)雜的問題域還需要學(xué)習(xí)面向?qū)ο蟮能浖こ陶n等其他課程。
針對初學(xué)者和自學(xué)者的特點,本書力求做到深入淺出,將復(fù)雜的概念用簡潔淺顯的語言娓娓道來。
本書建議的講課學(xué)時數(shù)為24學(xué)時。建議講課學(xué)時數(shù)分配如下:
第1章2學(xué)時,第2章4學(xué)時,第3章2學(xué)時,第4章4學(xué)時,第5章2學(xué)時,第6章4學(xué)時,第7章2學(xué)時,第8章2學(xué)時,第9章2學(xué)時。
實驗學(xué)時數(shù)的分配請參考配套的《C++程序設(shè)計基礎(chǔ)教程學(xué)生用書》.
學(xué)生可以通過配套的《C++程序設(shè)計基礎(chǔ)教程學(xué)生用書》,在實踐中達到對內(nèi)容的深入理解和熟練掌握。為了方便教師備課,本書還配有電子教案(PPT文件).
四、 內(nèi)容摘要
第1章 緒論: 從發(fā)展的角度概要介紹了面向?qū)ο蟪绦蛟O(shè)計語言的產(chǎn)生和特點,面向?qū)ο蠓椒ǖ挠蓙砗椭饕幕靖拍,并簡單介紹了什么是面向?qū)ο蟮能浖こ獭W詈蠼榻B了信息在計算機中的表示和存儲以及程序的開發(fā)過程。
第2章 C++簡單程序設(shè)計: 講述C++程序設(shè)計的基礎(chǔ)知識。首先簡要介紹C++語言的發(fā)展歷史及其特點;接著學(xué)習(xí)構(gòu)成C++語句的基本部分,包括字符集、關(guān)鍵字、標識符、操作符等;還有C++的基本數(shù)據(jù)類型和自定義數(shù)據(jù)類型以及算法的控制結(jié)構(gòu),包括順序、選擇和循環(huán)結(jié)構(gòu)!吧疃忍剿鳌苯榻B變量的實現(xiàn)機制和C++表達式的執(zhí)行原理。
第3章 函數(shù): 講述C++語言的函數(shù)。在面向?qū)ο蟮某绦蛟O(shè)計中,函數(shù)對處理問題過程的基本抽象單元,是對功能的抽象。同時,使用函數(shù)也為代碼的重用提供了技術(shù)上的支持。我們主要從應(yīng)用的角度講述各種函數(shù)的定義和使用方法!吧疃忍剿鳌苯榻B運行棧與函數(shù)調(diào)用的執(zhí)行、函數(shù)聲明與類型安全。
第4章 類與對象: 首先介紹面向?qū)ο蟪绦蛟O(shè)計的基本思想及其主要特點,包括抽象、封裝、繼承和多態(tài);接著圍繞數(shù)據(jù)封裝這一特點,著重講解面向?qū)ο笤O(shè)計方法的核心概念-類,其中包括類的定義、實現(xiàn)以及如何利用類來解決具體問題;最后,簡單介紹了如何用UML語言描述類的特性!吧疃忍剿鳌苯榻B位域、用構(gòu)造函數(shù)定義類型轉(zhuǎn)換,以及對象作為函數(shù)參數(shù)和返回值的傳遞方式。
第5章 數(shù)據(jù)的共享與保護: 講述標識符的作用域和可見性及變量、對象的生存期;使用局部變量、全局變量、類的數(shù)據(jù)成員、類的靜態(tài)成員和友元來實現(xiàn)數(shù)據(jù)共享,共享數(shù)據(jù)的保護,以及使用多文件結(jié)構(gòu)來組織和編寫程序解決較為復(fù)雜的問題!吧疃忍剿鳌苯榻B常成員函數(shù)的聲明原則、代碼的編譯連接與執(zhí)行過程。
第6章 數(shù)組、指針與字符串: 討論數(shù)組、指針與字符串。數(shù)組和指針是C++語言中最常用的復(fù)合(構(gòu)造)類型數(shù)據(jù),是數(shù)據(jù)和對象組織、表示的最主要手段,也是組織運算的有力工具。本章首先介紹數(shù)組、指針的基本概念動態(tài)存儲分配以及動態(tài)數(shù)組對象。接著圍繞數(shù)據(jù)和對象組織這一問題,著重講解如何通過使用數(shù)組和指針解決數(shù)據(jù)、函數(shù)以及對象之間的聯(lián)系和協(xié)調(diào)。對于字符串及其處理,本章重點介紹string類!吧疃忍剿鳌苯榻B指針與引用的聯(lián)系、指針的安全性隱患及其應(yīng)對方案,以及const_cast的應(yīng)用。
第7章 繼承與派生: 講述類的繼承特性。圍繞派生過程,著重討論不同繼承方式下的基類成員的訪問控制問題、添加構(gòu)造函數(shù)和析構(gòu)函數(shù)。接著討論在較為復(fù)雜的繼承關(guān)系中,類成員的唯一標識和訪問問題!吧疃忍剿鳌苯榻B組合與繼承的區(qū)別與聯(lián)系、派生類對象的內(nèi)存布局,以及基類向派生類的轉(zhuǎn)換及其安全性問題。
第8章 多態(tài)性: 講述類的另一個重要特性-多態(tài)性。多態(tài)是指同樣的消息被不同類型的對象接收時導(dǎo)致完全不同的行為,是對類的特定成員函數(shù)的再抽象。C++語言支持的多態(tài)有多種類型,重載(包括函數(shù)重載和運算符重載)和虛函數(shù)是其中主要的方式!吧疃忍剿鳌苯榻B多態(tài)類型與非多態(tài)類型的區(qū)別、運行時類型識別機制,以及虛函數(shù)動態(tài)綁定的實現(xiàn)原理。
第9章 流類庫與輸入輸出: 講述流的概念,然后介紹流類庫的結(jié)構(gòu)和使用。就像C語言一樣,C++語言中也沒有輸入輸出語句。但C++編譯系統(tǒng)帶有一個面向?qū)ο蟮腎/O軟件包,它就是I/O流類庫。“深度探索”介紹寬字符、寬字符串與寬流,以及對象的串行化問題。
第10章 異常處理.
感謝讀者選擇使用本書,歡迎您對本書內(nèi)容提出意見和建議,我們將不勝感激。作者的電子郵件地址: zhengli@mail.tsinghua.edu.cn,來信標題請包含“C++book" .
作 者2010年5月于清華大學(xué)
第1章 緒論
1.1 計算機程序設(shè)計語言的發(fā)展
1.1.1 機器語言與匯編語言
1.1.2 高級語言
1.1.3 面向?qū)ο蟮恼Z言
1.2 面向?qū)ο蟮姆椒?br>1.2.1 面向?qū)ο蠓椒ǖ挠蓙?br>1.2.2 面向?qū)ο蟮幕靖拍?br>1.3 面向?qū)ο蟮能浖_發(fā)
1.3.1 分析
1.3.2 設(shè)計
1.3.3 編程
1.3.4 測試
1.3.5 維護
1.4 信息的表示與存儲
1.4.1 計算機的數(shù)字系統(tǒng)
1.4 J2,L種進位記數(shù)制之間的轉(zhuǎn)換
1.4.3 信息的存儲單位
1.4.4 二進制數(shù)的編碼表示
1.4.5 定點數(shù)和浮點數(shù)
1.4.6 數(shù)的表示范圍
1.4.7 非數(shù)值信息的表示
1.5 程序開發(fā)的基本概念
1.5.1 基本術(shù)語
1.5.2 完整的程序過程
1.6 小結(jié)
習(xí)題
第2章 C++簡單程序設(shè)計
2.1 C++語言概述
2.1.1 C++的產(chǎn)生
2.1.2 C++的特點
2.1.3 C++程序?qū)嵗?br>2.1.4 字符集
2.1.5 詞法記號
2.2 基本數(shù)據(jù)類型和表達式
2.2.1 基本數(shù)據(jù)類型
2.2.2 常量
2.2.3 變量
2.2.4 符號常量
2.2.5 運算符與表達式
2.2.6 語句
2.3 數(shù)據(jù)的輸入與輸出
2.3.1 I/O流
2.3.2 預(yù)定義的插入符和提取符
2.3.3 簡單的I/O格式控制
2.4 算法的基本控制結(jié)構(gòu)
2.4.1 用if語句實現(xiàn)選擇結(jié)構(gòu)
2.4.2 多重選擇結(jié)構(gòu)
2.4.3 循環(huán)結(jié)構(gòu)
2.4.4 循環(huán)結(jié)構(gòu)與選擇結(jié)構(gòu)的嵌套
2.4.5 其他控制語句
2.5 自定義數(shù)據(jù)類型
2.5.1 typedef聲明
2.5.2 枚舉類型enum
2.6 小結(jié)
習(xí)題
第3章 函數(shù)
3.1 函數(shù)的定義與使用
3.1.1 函數(shù)的定義
3.1.2 函數(shù)的調(diào)用
3.1.3 函數(shù)的參數(shù)傳遞
3.2 內(nèi)聯(lián)函數(shù)
3.3 帶默認形參值的函數(shù)
3.4 函數(shù)重載
3.5 C++系統(tǒng)函數(shù)
3.6 小結(jié)
習(xí)題
第4章 類與對象
4.1 面向?qū)ο蟪绦蛟O(shè)計的基本特點
4.1.1 抽象
4.1.2 封裝
4.1.3 繼承
4.1.4 多態(tài)
4.2 類和對象
4.2.1 類的定義
4.2.2 類成員的訪問控制
4.2.3 對象
4.2.4 類的成員函數(shù)
4.2.5 程序?qū)嵗?br>4.3 構(gòu)造函數(shù)和析構(gòu)函數(shù)
4.3.1 構(gòu)造函數(shù)
4.3.2 復(fù)制構(gòu)造函數(shù)
4.3.3 析構(gòu)函數(shù)
4.3.4 程序?qū)嵗?br>4.4 類的組合
4.4.1 組合
4.4.2 前向引用聲明
4.5 UML圖形標識
4.5.1 UML簡介
4.5.2 UML類圖
4.6 結(jié)構(gòu)體和聯(lián)合體
4.6.1 結(jié)構(gòu)體
4.6.2 聯(lián)合體
4.7 綜合實例——個人銀行賬戶管理程序
4.7.1 類的設(shè)計
4.7.2 源程序及說明
4.8 小結(jié)
習(xí)題
第5章 數(shù)據(jù)的共享與保護
5.1 標識符的作用域與可見性
5.1.1 作用域
5.1.2 可見性
5.2 對象的生存期
5.2.1 靜態(tài)生存期
5.2.2 動態(tài)生存期
5.3 類的靜態(tài)成員
5.3.1 靜態(tài)數(shù)據(jù)成員
5.3.2 靜態(tài)函數(shù)成員
5.4 類的友元
5.4.1 友元函數(shù)
5.4.2 友元類
5.5 共享數(shù)據(jù)的保護
5.5.1 常對象
5.5.2 用const修飾的類成員
5.5.3 常引用
5.6 多文件結(jié)構(gòu)和編譯預(yù)處理命令
5.6.1 C++程序的一般組織結(jié)構(gòu)
5.6.2 外部變量與外部函數(shù)
5.6.3 標準C++庫
5.6.4 編譯預(yù)處理
5.7 綜合實例——個人銀行賬戶管理程序
5.8 小結(jié)
習(xí)題
第6章 數(shù)組、指針與字符串
6.1 數(shù)組
6.1.1 數(shù)組的聲明與使用
6.1.2 數(shù)組的存儲與初始化
6.1.3 數(shù)組作為函數(shù)參數(shù)
6.1.4 對象數(shù)組
6.1.5 程序?qū)嵗?br>6.2 指針
6.2.1 內(nèi)存空間的訪問方式
6.2.2 指針變量的聲明
6.2.3 與地址相關(guān)的運算“*”和“&”
6.2.4 指針的賦值
6.2.5 指針運算
6.2.6 用指針處理數(shù)組元素
6.2.7 指針數(shù)組
6.2.8 用指針作為函數(shù)參數(shù)
6.2.9 指針型函數(shù)
6.2.10 指向函數(shù)的指針
……
第7章 繼承與派生
第8章 多態(tài)性
第9章 流類庫與輸入輸出
第10章 異常處理
在面向?qū)ο蟮姆椒ǔ霈F(xiàn)以前,我們都是采用面向過程的程序設(shè)計方法。早期的計算機是用于數(shù)學(xué)計算的工具,例如,用于計算炮彈的飛行軌跡。為了完成計算,就必須設(shè)計出一個計算方法或解決問題的過程。因此,軟件設(shè)計的主要工作就是設(shè)計求解問題的過程。
隨著計算機硬件系統(tǒng)的高速發(fā)展,計算機的性能越來越強,用途也更加廣泛,不再僅限于數(shù)學(xué)計算。由于所處理的問題日益復(fù)雜,程序也就越來越復(fù)雜和龐大。20世紀60年代產(chǎn)生的結(jié)構(gòu)化程序設(shè)計思想,為使用面向過程的方法解決復(fù)雜問題提供了有力的手段。因而,在20世紀70年代到80年代,結(jié)構(gòu)化程序設(shè)計方法成為所有軟件開發(fā)設(shè)計領(lǐng)域及每個程序員都采用的方法。結(jié)構(gòu)化程序設(shè)計的思路是:自頂向下、逐步求精;其程序結(jié)構(gòu)是按功能劃分為若干個基本模塊,這些模塊形成一個樹狀結(jié)構(gòu);各模塊之間的關(guān)系盡可能簡單,在功能上相對獨立;每一模塊內(nèi)部均是由順序、選擇和循環(huán)3種基本結(jié)構(gòu)組成;其模塊化實現(xiàn)的具體方法是使用子程序。結(jié)構(gòu)化程序設(shè)計由于采用了模塊分解與功能抽象以及自頂向下、分而治之的方法,從而有效地將一個較復(fù)雜的程序系統(tǒng)設(shè)計任務(wù)分解成許多易于控制和處理的子任務(wù),便于開發(fā)和維護。
雖然結(jié)構(gòu)化程序設(shè)計方法具有很多優(yōu)點,但它仍是一種面向過程的程序設(shè)計方法。它把數(shù)據(jù)和處理數(shù)據(jù)的過程分離為相互獨立的實體,當數(shù)據(jù)結(jié)構(gòu)改變時,所有相關(guān)的處理過程都要進行相應(yīng)的修改,每一種相對于老問題的新方法都要帶來額外的開銷,程序的可重用性差。另外,由于圖形用戶界面的應(yīng)用,使得軟件使用起來越來越方便,但開發(fā)起來卻越來越困難。一個好的軟件,應(yīng)該隨時響應(yīng)用戶的任何操作,而不是請用戶按照既定的步驟循規(guī)蹈矩地使用。例如,我們都熟悉文字處理程序的使用,一個好的文字處理程序使用起來非常方便,幾乎可以隨心所欲,軟件說明書中絕不會規(guī)定任何固定的操作順序,因此對這種軟件的功能很難用過程來描述和實現(xiàn),如果仍使用面向過程的方法,開發(fā)和維護都將很困難。