《大學(xué)計(jì)算機(jī)基礎(chǔ)教育規(guī)劃教材:C++程序設(shè)計(jì)》以c++為基礎(chǔ)系統(tǒng)地介紹程序語(yǔ)言、算法與數(shù)據(jù)結(jié)構(gòu)、高級(jí)編程技術(shù)!洞髮W(xué)計(jì)算機(jī)基礎(chǔ)教育規(guī)劃教材:C++程序設(shè)計(jì)》由16章組成,以程序設(shè)計(jì)語(yǔ)言、程序設(shè)計(jì)方法和程序設(shè)計(jì)技術(shù)三大主題組織教材,采用“數(shù)據(jù)表示”和“程序?qū)崿F(xiàn)”雙線索知識(shí)體系,優(yōu)化了程序設(shè)計(jì)知識(shí)的安排。
本書(shū)結(jié)構(gòu)清晰、語(yǔ)言通俗易懂,示例代碼具有專業(yè)的編程風(fēng)格;內(nèi)容由淺入深、知識(shí)循序漸進(jìn),例題豐富,體現(xiàn)了程序設(shè)計(jì)和算法、數(shù)據(jù)結(jié)構(gòu)的緊密結(jié)合。本書(shū)注重典型案例的精選與提煉,高級(jí)編程技術(shù)內(nèi)容便于開(kāi)展課程設(shè)計(jì)和研究型學(xué)習(xí)。
本書(shū)使用iso/iecl4882-2003c++語(yǔ)言標(biāo)準(zhǔn),配套有經(jīng)過(guò)多年教學(xué)實(shí)踐的程序設(shè)計(jì)綜合訓(xùn)練平臺(tái)。
本書(shū)可作為高等院校理工類專業(yè)和信息技術(shù)類培訓(xùn)機(jī)構(gòu)“程序設(shè)計(jì)”、“軟件開(kāi)發(fā)技術(shù)”課程的教材,也可作為計(jì)算機(jī)程序愛(ài)好者學(xué)習(xí)程序開(kāi)發(fā)和編程技術(shù)的自學(xué)教材。
程序設(shè)計(jì)是大學(xué)計(jì)算機(jī)基礎(chǔ)教育和計(jì)算機(jī)專業(yè)基礎(chǔ)的核心課程,它既為其他技術(shù)課程奠定程序開(kāi)發(fā)基礎(chǔ),又是其他專業(yè)課程或?qū)嵺`環(huán)節(jié)的軟件工具,因此成為各類專業(yè)的必修課程。程序設(shè)計(jì)覆蓋面廣、影響大,是卓越工程師教育培養(yǎng)計(jì)劃的通識(shí)教育基礎(chǔ),同時(shí)也是大學(xué)生參加課程設(shè)計(jì)、畢業(yè)設(shè)計(jì)、創(chuàng)新實(shí)驗(yàn)、科技制作和學(xué)科競(jìng)賽等活動(dòng)的重要平臺(tái)。
C++是國(guó)內(nèi)外廣泛使用的計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言。其功能強(qiáng)大、面向?qū)ο蟆?shù)據(jù)表示豐富、代碼運(yùn)行效率高、可移植性好,適合編寫(xiě)系統(tǒng)軟件和各類應(yīng)用程序。世界上大多數(shù)軟件都是由C語(yǔ)言和C++語(yǔ)言開(kāi)發(fā)的,在TIOBE編程語(yǔ)言排行榜上,C語(yǔ)言、C++及其衍生發(fā)展起來(lái)的Java語(yǔ)言多年來(lái)始終處在前三位。學(xué)習(xí)程序設(shè)計(jì)從C++入手,對(duì)于培養(yǎng)算法設(shè)計(jì)與分析能力、抽象數(shù)據(jù)描述與表示能力以及利用計(jì)算機(jī)求解現(xiàn)實(shí)問(wèn)題的計(jì)算思維能力具有其他語(yǔ)言無(wú)法比擬的優(yōu)點(diǎn)。而且在完全掌握了C語(yǔ)言、C++之后,再學(xué)習(xí)其他程序語(yǔ)言就會(huì)輕車熟路。
然而,C++的學(xué)習(xí)難度也是很大的。很多學(xué)生往往是“考完即忘”,學(xué)了后面的忘了前面的,低年級(jí)時(shí)學(xué)習(xí)的程序設(shè)計(jì)到了高年級(jí)即處于猶如從未學(xué)過(guò)的狀態(tài),更談不上利用程序設(shè)計(jì)解決實(shí)際應(yīng)用問(wèn)題。而且面對(duì)龐大、復(fù)雜的C++知識(shí)系統(tǒng),不少學(xué)生甚至教師在教與學(xué)的過(guò)程中始終感覺(jué)“只見(jiàn)樹(shù)木,不見(jiàn)森林”,對(duì)學(xué)過(guò)的程序思路不甚了解、數(shù)據(jù)描述不清楚、算法設(shè)計(jì)不到位,最后連最基本的語(yǔ)言知識(shí)也掌握不住,最基本的開(kāi)發(fā)環(huán)境也不會(huì)使用。缺少以技能為目標(biāo)的程序設(shè)計(jì)教材是造成這一局面的重要原因之一。
現(xiàn)有的C語(yǔ)言和C++程序設(shè)計(jì)類的教材多偏重語(yǔ)言知識(shí),羅列語(yǔ)法多、千篇一律、大同小異,在如何應(yīng)用程序解決實(shí)際問(wèn)題方面下的工夫少;程序設(shè)計(jì)方法與語(yǔ)言結(jié)合少,缺少推動(dòng)學(xué)生計(jì)算思維的訓(xùn)練;生硬的例子與實(shí)際應(yīng)用脫節(jié),缺少應(yīng)用編程技術(shù)的展開(kāi)。教學(xué)中盡管有諸如“案例教學(xué)”、“項(xiàng)目驅(qū)動(dòng)”的做法,但由于缺少成熟的教學(xué)平臺(tái)和系統(tǒng)化、規(guī)范化的教學(xué)資源,難以培養(yǎng)和提高學(xué)生應(yīng)用程序設(shè)計(jì)解決實(shí)際問(wèn)題的技能。
需要知道,人類學(xué)自然語(yǔ)言時(shí),學(xué)的不僅是聽(tīng)還有說(shuō);學(xué)字時(shí),學(xué)的不僅是讀還有寫(xiě)。隨著人們向一個(gè)越來(lái)越數(shù)字化的信息世界邁進(jìn),不僅應(yīng)該學(xué)會(huì)如何使用程序,還要學(xué)會(huì)如何編寫(xiě)程序。當(dāng)語(yǔ)言知識(shí)轉(zhuǎn)化為編程技能時(shí),就沒(méi)有知識(shí)會(huì)遺忘了,應(yīng)用程序設(shè)計(jì)解決實(shí)際問(wèn)題的計(jì)算能力如同學(xué)習(xí)語(yǔ)言時(shí)的聽(tīng)、說(shuō)、讀、寫(xiě)一般。
為此,我們?cè)诙嗄瓿绦蛟O(shè)計(jì)課程的一線教學(xué)經(jīng)驗(yàn)和軟件開(kāi)發(fā)科研工作基礎(chǔ)上,結(jié)合自主研發(fā)的程序設(shè)計(jì)綜合訓(xùn)練平臺(tái)和系列教育軟件,推出以語(yǔ)言知識(shí)為工具、以技能培養(yǎng)為目標(biāo)、以編程技術(shù)為核心的系列程序設(shè)計(jì)教材。
本教材遵循我們多年提倡的“精講多練、注重技能、開(kāi)拓設(shè)計(jì)”教學(xué)理念編寫(xiě)。在程序語(yǔ)言知識(shí)體系的選取與深度的把握上,在算法、數(shù)據(jù)結(jié)構(gòu)與程序設(shè)計(jì)的結(jié)合上精心設(shè)計(jì),力圖適合高等院校和專業(yè)計(jì)算機(jī)培訓(xùn)的教學(xué)目標(biāo)與知識(shí)結(jié)構(gòu)的要求,體現(xiàn)了以下7個(gè)特色。
(1) 首創(chuàng)雙線索的程序設(shè)計(jì)知識(shí)體系。
任何一本程序設(shè)計(jì)教材必然是以程序語(yǔ)言為背景的,本書(shū)也不例外。然而C++具有龐大的語(yǔ)言知識(shí)內(nèi)容,因此以語(yǔ)言知識(shí)為教學(xué)線索必然是整體感凌亂。表現(xiàn)為教學(xué)學(xué)時(shí)始終處在不夠的“高壓狀態(tài)”,學(xué)生學(xué)習(xí)始終抓不住主次。
本教材的雙線索程序設(shè)計(jì)知識(shí)體系以“數(shù)據(jù)表示”和“程序?qū)崿F(xiàn)”作為教學(xué)上的兩條主線索,螺旋上升、交叉推進(jìn),如圖0.1所示。
圖0.1 雙螺旋線索C++知識(shí)體系示意
首先,教材通過(guò)簡(jiǎn)單程序引出程序基本結(jié)構(gòu),以編程為目標(biāo)給出兩條線索: 數(shù)據(jù)表示和程序?qū)崿F(xiàn)。其次,從引入簡(jiǎn)單數(shù)據(jù)開(kāi)始,逐步解決運(yùn)算和程序組織,進(jìn)而上升到程序模塊化的實(shí)現(xiàn)。再次,從基本類型提高到復(fù)雜數(shù)據(jù)類型,上升到數(shù)據(jù)結(jié)構(gòu)層面的數(shù)據(jù)表示,程序模塊進(jìn)階到算法實(shí)現(xiàn)。最后,兩條線索交匯到高級(jí)編程技術(shù)應(yīng)用專題,揭示程序設(shè)計(jì)與應(yīng)用軟件開(kāi)發(fā)的一般規(guī)律。
實(shí)際教學(xué)效果表明,雙線索程序語(yǔ)言知識(shí)體系突出了程序設(shè)計(jì)方法學(xué),使程序語(yǔ)言成為服務(wù)于編程的工具而不是目標(biāo),學(xué)習(xí)者既能獲取語(yǔ)言知識(shí),又能掌握編程技能。
(2) 優(yōu)化程序設(shè)計(jì)知識(shí)安排。
多數(shù)現(xiàn)有教材中的知識(shí)安排導(dǎo)致以技能為目標(biāo)的程序設(shè)計(jì)難于實(shí)現(xiàn),出現(xiàn)教學(xué)瓶頸。表現(xiàn)在語(yǔ)言階段冗長(zhǎng),使得以函數(shù)、自定義類型等內(nèi)容為教學(xué)中心的編程階段在實(shí)際教學(xué)中接近課程末期,從而讓?xiě)?yīng)用程序設(shè)計(jì)教學(xué)目標(biāo)落空。
本教材在程序語(yǔ)言知識(shí)方面采用了“快節(jié)奏”,在程序設(shè)計(jì)方法和編程技術(shù)方面采用了“慢節(jié)奏”,解決了多年來(lái)程序設(shè)計(jì)教與學(xué)的難題和瓶頸問(wèn)題!翱旃(jié)奏”體現(xiàn)為語(yǔ)言基礎(chǔ)知識(shí)學(xué)時(shí)被大幅度壓縮, 從一開(kāi)始即以簡(jiǎn)單程序框架展開(kāi)程序知識(shí),直接進(jìn)入以程序模塊化為主的教與學(xué)環(huán)境。方便教師精講知識(shí),學(xué)生早早練習(xí)進(jìn)而多練,教材不在語(yǔ)言細(xì)節(jié)、小片段程序上反復(fù)循環(huán)。“慢節(jié)奏”體現(xiàn)為以(較難的)編程技術(shù)為研究專題展開(kāi)(費(fèi)時(shí)的)編程方法教學(xué),方便教師組織技能訓(xùn)練,學(xué)生獲取編程技巧。本教材將軟件開(kāi)發(fā)中的結(jié)構(gòu)化、面向?qū)ο蟆⒔M件模型和敏捷思想融入到每個(gè)章節(jié),讓學(xué)習(xí)者接受專業(yè)化訓(xùn)練。
如圖0.2所示是本教材的知識(shí)安排,與傳統(tǒng)的C++教學(xué)相比,增加了“設(shè)計(jì)階段”的教學(xué)。顯然,優(yōu)化的知識(shí)體系使教師在教學(xué)時(shí)能夠“抓大”(設(shè)計(jì)方法)“放小”(語(yǔ)言知識(shí)),學(xué)生學(xué)習(xí)時(shí)能夠得到最大化的“飽滿感”編程訓(xùn)練。
圖0.2 優(yōu)化的C語(yǔ)言程序知識(shí)安排
(3) 首創(chuàng)高級(jí)編程技術(shù)教學(xué)新思想。
由于沒(méi)有更高層次的應(yīng)用程序開(kāi)發(fā)內(nèi)容,許多教材的實(shí)際教學(xué)效果就是教師和學(xué)生都集中在做題上面。如數(shù)學(xué)一般,將程序設(shè)計(jì)演變成“程序語(yǔ)言+計(jì)算方法”, C++成了數(shù)學(xué)工具。殊不知計(jì)算方法(數(shù)值計(jì)算、非數(shù)值計(jì)算)僅是程序設(shè)計(jì)方法的一種,程序方法學(xué)中還有諸如操作系統(tǒng)、人機(jī)界面、圖形圖像、多媒體、網(wǎng)絡(luò)通信、數(shù)據(jù)庫(kù)、硬件接口等技術(shù)領(lǐng)域,每個(gè)領(lǐng)域都有獨(dú)特的編程技術(shù)和精巧的解決方法。
衡量程序設(shè)計(jì)教學(xué)效果有兩個(gè)重要指標(biāo): 編程累計(jì)行數(shù)(TLOC)和單個(gè)程序行數(shù)(SLOC) 。以解題為主的編程訓(xùn)練能提高TLOC,但卻止步于SLOC。即使將習(xí)題做上百題,雖然TLOC指標(biāo)上去了,但SLOC卻不見(jiàn)長(zhǎng)。一般地,在專業(yè)的軟件開(kāi)發(fā)技術(shù)領(lǐng)域,SLOC小于300行時(shí)很難讓人體會(huì)到應(yīng)用開(kāi)發(fā)的“感覺(jué)”.
高級(jí)編程技術(shù)是本教材主要的創(chuàng)新成果之一。通過(guò)研究型專題的技術(shù)教學(xué),拓寬了學(xué)生的知識(shí)面,使其充分認(rèn)識(shí)到程序是如何解決應(yīng)用問(wèn)題的,有極大的興趣展開(kāi)研究型學(xué)習(xí)。在這樣的教與學(xué)環(huán)境下,才能從根本上提高SLOC,提升技能訓(xùn)練層次。
(4) 注重程序設(shè)計(jì)和算法、數(shù)據(jù)結(jié)構(gòu)的緊密結(jié)合。
程序設(shè)計(jì)與算法、數(shù)據(jù)結(jié)構(gòu)實(shí)際上是一個(gè)統(tǒng)一體,不應(yīng)該也不可能將它們對(duì)立與分割。我國(guó)計(jì)算機(jī)基礎(chǔ)教育的實(shí)際情況是,不少非計(jì)算機(jī)專業(yè)在程序設(shè)計(jì)課程后不再涉及算法和數(shù)據(jù)結(jié)構(gòu)。即使是計(jì)算機(jī)專業(yè)開(kāi)設(shè)有專門的算法和數(shù)據(jù)結(jié)構(gòu)課程,也是“自說(shuō)自話”,并不是站在軟件系統(tǒng)開(kāi)發(fā)(SSD)的角度使之有機(jī)地聯(lián)系在一起。
算法和數(shù)據(jù)結(jié)構(gòu)是程序設(shè)計(jì)的理論升華,是培養(yǎng)學(xué)生向應(yīng)用程序開(kāi)發(fā)轉(zhuǎn)型的主要工具。本教材給出算法和數(shù)據(jù)結(jié)構(gòu)的初步知識(shí),克服了簡(jiǎn)單羅列算法、數(shù)據(jù)結(jié)構(gòu)內(nèi)容和算法與程序設(shè)計(jì)脫節(jié)、數(shù)據(jù)結(jié)構(gòu)與程序數(shù)據(jù)表示脫節(jié)的問(wèn)題。在講述每一種常用算法和數(shù)據(jù)結(jié)構(gòu)的基本思路與設(shè)計(jì)步驟的基礎(chǔ)上,落實(shí)到每一個(gè)案例求解,從案例的提出到算法設(shè)計(jì)與數(shù)據(jù)描述、從程序?qū)崿F(xiàn)到案例結(jié)果的討論與分析,環(huán)環(huán)相扣,融為一體,力求理論與實(shí)際相結(jié)合,數(shù)據(jù)描述與數(shù)據(jù)表示、算法與程序?qū)崿F(xiàn)相統(tǒng)一,切實(shí)提高對(duì)所學(xué)算法、數(shù)據(jù)結(jié)構(gòu)的理解和掌握。
(5) 注重典型案例的精選與提煉。
培養(yǎng)學(xué)生的學(xué)習(xí)興趣,激發(fā)學(xué)生的學(xué)習(xí)熱情,不是一兩句空洞說(shuō)教所能奏效的,必須通過(guò)一些有價(jià)值的實(shí)際案例來(lái)引導(dǎo)。本教材設(shè)計(jì)了初等難度語(yǔ)言示范型、中等難度算法和數(shù)據(jù)結(jié)構(gòu)應(yīng)用型、較高難度綜合設(shè)計(jì)型三種梯度的案例。這些案例的精選與提煉,有利于提高學(xué)生學(xué)習(xí)程序設(shè)計(jì)的興趣,有利于學(xué)生在計(jì)算機(jī)現(xiàn)實(shí)問(wèn)題求解上開(kāi)闊視野,使之在程序設(shè)計(jì)方法和思路的開(kāi)拓與編程技巧的應(yīng)用上有一個(gè)深層次的鍛煉與提高。其中難度較大的高級(jí)編程技術(shù)綜合設(shè)計(jì)案例可作為課程設(shè)計(jì)、大作業(yè)與課后專題研究選用。
算法、數(shù)據(jù)結(jié)構(gòu)與程序設(shè)計(jì)都不是一成不變的,可以實(shí)施多層次多方位的變通,變通出效果,變通長(zhǎng)能力。本教材的部分示例給出了算法改進(jìn)與程序優(yōu)化的過(guò)程,既是提高案例求解效率的過(guò)程,也是算法設(shè)計(jì)能力培養(yǎng)與提高的過(guò)程,更是優(yōu)化意識(shí)與創(chuàng)新能力增強(qiáng)的過(guò)程。
(6) 注重編程風(fēng)格。
本書(shū)使用ISO/IEC 14882-2003 C++語(yǔ)言標(biāo)準(zhǔn)(簡(jiǎn)稱C++03標(biāo)準(zhǔn)),充分體現(xiàn)了程序語(yǔ)言的最新進(jìn)展和當(dāng)前業(yè)界的最佳實(shí)踐。
書(shū)中廣泛采納各專業(yè)軟件公司編程規(guī)范的優(yōu)點(diǎn),無(wú)論語(yǔ)法語(yǔ)義、書(shū)寫(xiě)形式、示例代碼等,均采用專業(yè)編程風(fēng)格編寫(xiě),潛移默化地引導(dǎo)學(xué)習(xí)者與專業(yè)化接軌。
書(shū)中所有程序均在Visual C++ 6.0和GCC 4.x (Code: : Blocks)上調(diào)試通過(guò)。同時(shí),教材中的所有源程序與各章習(xí)題的完整代碼均可在清華大學(xué)出版社網(wǎng)站下載。
(7) 配套程序設(shè)計(jì)教學(xué)平臺(tái)、系列教育軟件和教學(xué)資源。
學(xué)習(xí)程序設(shè)計(jì),上機(jī)實(shí)驗(yàn)是重要的環(huán)節(jié)。而實(shí)驗(yàn)環(huán)節(jié)重要的是什么呢?是性能優(yōu)越的計(jì)算機(jī)或者環(huán)境良好的機(jī)房嗎?答案不是。那種在實(shí)驗(yàn)課上做題、講題的教學(xué)模式是很難培養(yǎng)程序設(shè)計(jì)技能的,本質(zhì)上這種模式一開(kāi)始就是奔期末考試(等級(jí)考試)去的。
程序設(shè)計(jì)實(shí)驗(yàn)環(huán)節(jié)最重要的是要有優(yōu)秀的教學(xué)平臺(tái)、教育軟件和完整的教學(xué)資源。以技能培養(yǎng)為目標(biāo)、以編程技術(shù)為核心的教學(xué)模式不是傳統(tǒng)實(shí)驗(yàn)手段自發(fā)實(shí)現(xiàn)的,而是通過(guò)高集成度的程序設(shè)計(jì)綜合訓(xùn)練平臺(tái),全程自動(dòng)化輔助教學(xué)和教學(xué)管理來(lái)實(shí)現(xiàn)的。
自2001年以來(lái),基于專業(yè)的軟件開(kāi)發(fā)科研優(yōu)勢(shì),結(jié)合一線教學(xué)和課程改革的經(jīng)驗(yàn),圍繞課堂、實(shí)驗(yàn)、作業(yè)、設(shè)計(jì)、考核5個(gè)教學(xué)環(huán)節(jié),我們開(kāi)發(fā)了系列教育軟件。例如,“程序設(shè)計(jì)在線評(píng)測(cè)系統(tǒng)INPOJ”采用計(jì)算機(jī)系統(tǒng)使學(xué)生通過(guò)大量習(xí)題的訓(xùn)練提高解題速度(POJ訓(xùn)練)以解決TLOC; “軟件設(shè)計(jì)協(xié)同開(kāi)發(fā)平臺(tái)DevForge”按專業(yè)軟件開(kāi)發(fā)方式引導(dǎo)、跟蹤、自動(dòng)評(píng)閱學(xué)生課程設(shè)計(jì)程序和報(bào)告以解決SLOC; “遠(yuǎn)程網(wǎng)絡(luò)考試系統(tǒng)inTest”實(shí)現(xiàn)技能測(cè)試和實(shí)踐考核,等等。這些教學(xué)平臺(tái)的使用,使得實(shí)驗(yàn)機(jī)房變成了學(xué)生討論、思考、相互教授的研究場(chǎng)所,形成數(shù)字化課堂教學(xué)、網(wǎng)絡(luò)輔助教學(xué)、電子教室、智能答疑、綜合訓(xùn)練等立體化教學(xué)環(huán)境,為落實(shí)教學(xué)理念和教學(xué)目標(biāo)提供了先進(jìn)工具。
使用本教材的高等院校和培訓(xùn)機(jī)構(gòu)想要進(jìn)一步了解有關(guān)程序設(shè)計(jì)綜合訓(xùn)練平臺(tái)和系列教育軟件更多的信息,請(qǐng)與作者(jxf@nwpu.edu.cn)聯(lián)系。
由于C++兼容C語(yǔ)言,因此本書(shū)第1~8章主要是C語(yǔ)言的知識(shí)內(nèi)容,不妨稱為“C語(yǔ)言的”,其中帶號(hào)的章節(jié)是C++對(duì)C語(yǔ)言的擴(kuò)展。第9~14章完全是C++的知識(shí)內(nèi)容,稱為“C++的”. C語(yǔ)言部分以結(jié)構(gòu)化程序設(shè)計(jì)為主要方法,C++部分將逐步上升到面向?qū)ο蟪绦蛟O(shè)計(jì)方法。之所以如此涇渭分明,是因?yàn)镃語(yǔ)言是C++的基礎(chǔ),C語(yǔ)言的即C++的,結(jié)構(gòu)化程序設(shè)計(jì)是面向?qū)ο蟪绦蛟O(shè)計(jì)的起步環(huán)節(jié)。
本書(shū)有兩本配套的教學(xué)參考書(shū):
(1) 《C++程序設(shè)計(jì)實(shí)驗(yàn)教程》。該書(shū)分為四部分。前兩部分詳細(xì)介紹了Visual C++和GCC開(kāi)發(fā)工具的使用方法和程序調(diào)試技術(shù);第三部分是與教材知識(shí)體系相對(duì)應(yīng)的實(shí)驗(yàn)內(nèi)容,分為驗(yàn)證型實(shí)驗(yàn)和設(shè)計(jì)型實(shí)驗(yàn),主要突出綜合性實(shí)驗(yàn),并結(jié)合算法、數(shù)據(jù)結(jié)構(gòu)知識(shí)設(shè)計(jì)了一些有難度的實(shí)驗(yàn)題目;第四部分是課程設(shè)計(jì)專題研究實(shí)驗(yàn)內(nèi)容,其目的是使讀者能夠訓(xùn)練應(yīng)用程序開(kāi)發(fā),獲取設(shè)計(jì)C++程序項(xiàng)目的初步知識(shí)和工程經(jīng)驗(yàn),掌握高級(jí)編程技術(shù)。
(2) 《C++程序設(shè)計(jì)習(xí)題與解析》。該書(shū)主要包括3個(gè)方面的內(nèi)容: 知識(shí)點(diǎn)與考點(diǎn)提煉、經(jīng)典例題解析、典型習(xí)題與解答。內(nèi)容緊扣課程教材和實(shí)驗(yàn)教材,對(duì)課程的講授、學(xué)習(xí)以及考查起到積極的指導(dǎo)和輔助作用,其目的是使讀者加強(qiáng)程序語(yǔ)言知識(shí)的掌握。
此外,向使用本書(shū)的教師提供講課的電子演示文稿和素材,以節(jié)省教師的備課時(shí)間。向使用本書(shū)的高校和培訓(xùn)機(jī)構(gòu)提供“程序設(shè)計(jì)課程教學(xué)指南”,方便組織教學(xué)、實(shí)施課程管理。
本書(shū)第1~8章和第15、16章由姜學(xué)鋒編寫(xiě),第9章和第10章由周果清、姜學(xué)鋒共同編寫(xiě),第11~14章由劉君瑞編寫(xiě),全書(shū)由姜學(xué)鋒主編并統(tǒng)稿。在書(shū)稿的編著過(guò)程中,得到了多位專家的關(guān)心和熱情支持,西北工業(yè)大學(xué)計(jì)算機(jī)學(xué)院的同事們提出了許多寶貴的意見(jiàn)和建議,清華大學(xué)出版社對(duì)本書(shū)的出版十分重視并做了周到的安排。在此,對(duì)所有鼓勵(lì)、支持和幫助過(guò)本書(shū)編寫(xiě)工作的領(lǐng)導(dǎo)、專家、同事和廣大讀者表示真摯的謝意!
由于時(shí)間緊迫以及作者水平有限,書(shū)中難免有錯(cuò)誤、疏漏之處,懇請(qǐng)讀者批評(píng)指正。
姜學(xué)鋒2011年7月于西北工業(yè)大學(xué)
第1章 程序設(shè)計(jì)基礎(chǔ)
1.1 計(jì)算機(jī)系統(tǒng)和工作原理
1.2 信息的表示與存儲(chǔ)
1.3 程序設(shè)計(jì)語(yǔ)言
1.4 程序設(shè)計(jì)概述
1.5 c++概述
習(xí)題
第2章 數(shù)據(jù)類型與表達(dá)式
2.1 數(shù)據(jù)類型
2.2 常量
2.3 變量
2.4 運(yùn)算符與表達(dá)式
2.5 類型轉(zhuǎn)換
習(xí)題
第3章 程序控制結(jié)構(gòu)
3.1 語(yǔ)句
3.2 輸入與輸出
3.3 程序順序結(jié)構(gòu)
3.4 程序選擇結(jié)構(gòu)
3.5 程序循環(huán)結(jié)構(gòu)
習(xí)題
第4章 函數(shù)
4.1 函數(shù)定義
4.2 函數(shù)參數(shù)
4.3 函數(shù)原型與調(diào)用
4.4 內(nèi)聯(lián)函數(shù)
4.5 默認(rèn)參數(shù)
4.6 函數(shù)重載
4.7 函數(shù)模板
4.8 函數(shù)調(diào)用形式
4.9 作用域和生命期
4.10 對(duì)象初始化
4.11 聲明與定義
4.12 變量修飾小結(jié)
4.13 程序組織結(jié)構(gòu)
4.14 函數(shù)應(yīng)用程序舉例
習(xí)題
第5章 預(yù)處理命令
5.1 宏定義
5.2 文件包含
5.3 條件編譯
5.4 其他命令
習(xí)題
第6章 數(shù)組
6.1 一維數(shù)組的定義和引用
6.2 多維數(shù)組的定義和引用
6.3 數(shù)組與函數(shù)
6.4 字符串
6.5 c++字符串類
6.6 數(shù)組應(yīng)用程序舉例
習(xí)題
第7章 指針與引用
7.1 指針與指針變量
7.2 指針的使用及運(yùn)算
7.3 指針與數(shù)組
7.4 指針與字符串
7.5 指針與函數(shù)
7.6 動(dòng)態(tài)內(nèi)存
7.7 帶參數(shù)的main函數(shù)
7.8 引用類型
習(xí)題
第8章 自定義數(shù)據(jù)類型
8.1 結(jié)構(gòu)體類型
8.2 結(jié)構(gòu)體對(duì)象
8.3 結(jié)構(gòu)體與數(shù)組
8.4 結(jié)構(gòu)體與指針
8.5 結(jié)構(gòu)體與函數(shù)
8.6 共用體
8.7 枚舉類型
8.8 位域
8.9 用戶自定義類型
8.10 鏈表
習(xí)題
第9章 類與對(duì)象
9.1 類的定義和聲明
9.2 對(duì)象的定義和使用
9.3 構(gòu)造函數(shù)和析構(gòu)函數(shù)
9.4 對(duì)象數(shù)組
9.5 對(duì)象指針
9.6 類作用域與對(duì)象生命期
9.7 const限定
9.8 靜態(tài)成員
9.9 友元
9.10 類模板
9.11 數(shù)據(jù)封裝和信息隱蔽
習(xí)題
第10章 繼承與派生
10.1 類的繼承與派生
10.2 派生類成員的訪問(wèn)
10.3 賦值兼容規(guī)則
10.4 派生類的構(gòu)造和析構(gòu)函數(shù)
10.5 多重繼承
10.6 多態(tài)性與虛函數(shù)
10.7 命名的強(qiáng)制類型轉(zhuǎn)換
習(xí)題
第11章 運(yùn)算符重載
11.1 運(yùn)算符重載的概念
11.2 運(yùn)算符重載的方法
11.3 典型運(yùn)算符的重載
習(xí)題
第12章 異常處理
12.1 基本概念
12.2 異常處理的實(shí)現(xiàn)
習(xí)題
第13章 命名空間
13.1 命名空間的概念
13.2 命名空間的定義
13.3 命名空間的使用
習(xí)題
第14章 標(biāo)準(zhǔn)庫(kù)
14.1 c++標(biāo)準(zhǔn)庫(kù)
14.2 標(biāo)準(zhǔn)輸入輸出
14.3 標(biāo)準(zhǔn)模板庫(kù)
習(xí)題
第15章 算法
15.1 算法基本概念
15.2 算法分析
15.3 常用算法
習(xí)題
第16章 高級(jí)編程技術(shù)
16.1 配置開(kāi)發(fā)環(huán)境
16.2 界面編程
16.3 圖形編程
16.4 多媒體編程
16.5 網(wǎng)絡(luò)編程
16.6 數(shù)據(jù)庫(kù)編程
習(xí)題
附錄a ascii碼對(duì)照表
附錄b c++關(guān)鍵字
附錄c c++運(yùn)算符及其優(yōu)先級(jí)、結(jié)合性
參考文獻(xiàn)