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