《程序設計基礎:以C++為例/普通高等教育“十一五”國家級規(guī)劃教材·計算機系列教材》是以C++語言作為入門語言的程序設計教材,以嶄新的思路進行設計和編排。全書以程序設計零起點讀者為主要對象,以培養(yǎng)程序設計能力為目標,循序漸進,通過數(shù)百個例題,重點講解程序設計思想和方法,力圖將C++語言基礎知識介紹和程序設計能力培養(yǎng)完美結(jié)合!冻绦蛟O計基礎:以C++為例/普通高等教育“十一五”國家級規(guī)劃教材·計算機系列教材》共10章,包括程序設計概述、C++基礎、函數(shù)、復合數(shù)據(jù)類型、對象和類、對象和類的進一步學習、繼承和多態(tài)、文件、常用數(shù)據(jù)結(jié)構(gòu)以及標準模板庫。
《程序設計基礎:以C++為例/普通高等教育“十一五”國家級規(guī)劃教材·計算機系列教材》可作為高等學校學生學習程序設計課程的教材,也可供程序員和編程愛好者參考使用。
《程序設計基礎:以C++為例/普通高等教育“十一五”國家級規(guī)劃教材·計算機系列教材》特色: 1.完全遵循C++語言標準(C++03),并加入了最新C++語言標準(C++11)的部分內(nèi)容。避免程序依賴任何特定的計算機、操作系統(tǒng)和編譯器! 2.以程序設計思想和方法的培養(yǎng)為主線,按照循序漸進的方式進行編排,前后內(nèi)容由淺入深、相互呼應! 3.針對C++語言語法龐雜,重點介紹了基本的、常用的C++語言語法知識,使讀者容易理解和掌握! 4.通過數(shù)百個例題,通俗易懂地講解概念、語法和算法,尤其強調(diào)標準庫函數(shù)的使用。每章后面都有精心設計的實驗題,便于讀者通過模仿、改寫、編寫的實踐過程強化對相關(guān)內(nèi)容的理解! 5.強調(diào)程序的可讀性,注重培養(yǎng)良好的編碼風格!冻绦蛟O計基礎:以C++為例/普通高等教育“十一五”國家級規(guī)劃教材·計算機系列教材》程序全部采用一種符合業(yè)界規(guī)范的編碼風格。
隨著信息產(chǎn)業(yè)的迅速發(fā)展,軟件人才的需求量也越來越大。程序設計是軟件人才必備的基礎知識和技能。
程序設計基礎是一門理論與實踐密切相關(guān),以培養(yǎng)學生程序設計能力為目標的課程。如何消除學生學習程序設計的畏難情緒,使學生順利進入程序設計的大門,逐步掌握程序設計思想和方法,提高實踐動手能力,是本課程教學的難題。
程序設計既是科學,也是藝術(shù)。學習程序設計是一件非常辛苦的事情,要有非常強的耐心和實踐精神,需要花費大量的時間,不可能一蹴而就,必須從某個起點開始循序漸進。
本書就是一個很好的起點,以程序設計零起點讀者為主要對象,采用標準C++語言(C++03)作為程序設計的描述語言,并加入了最新C++語言標準(C++11)的部分內(nèi)容。C++語言是目前業(yè)界使用最廣泛的程序設計語言,作者確信選用C++語言作為程序設計基礎課程的教學語言是正確的選擇。在多年的教學實踐中,作者深深感到C++語言的靈活和高效,能夠帶給軟件開發(fā)者無盡想象的空間,同時也深深感到講授C++語言過程中面臨的困難和挑戰(zhàn),意識到在程序設計基礎課程中講授C++語言并不是那么容易的。C++語言是一門復雜的程序設計語言,是為軟件開發(fā)者設計的,而非為初學者設計的,向初學者講授C++語言時必須很好地控制其固有的復雜性。
盡管目前有關(guān)學習C++語言的書籍很多,但學習C++語言仍然讓大多數(shù)初學者心存畏懼。作者一直從事程序設計方面的教學和科研工作,主講過多門程序設計課程,積累了豐富的教學經(jīng)驗。結(jié)合自己學習和使用C++語言的經(jīng)驗和感悟,以程序設計為主線,通過數(shù)百個例題,簡潔通俗地講解程序設計思想和方法,并穿插介紹相關(guān)的語言知識,循序漸進培養(yǎng)學生的程序設計能力。本書對那些渴望掌握C++語言而又心存畏懼的初學者是一個很好的選擇。
教學改革的重點之一,就是要抓學生實踐動手能力的培養(yǎng)。學生的能力是決定就業(yè)的根本,而就業(yè)率又是體現(xiàn)教育質(zhì)量的重要指標。作為國內(nèi)首家服務外包本科學院以及教育部、商務部在江蘇、浙江兩省開展地方高校計算機學院培養(yǎng)服務外包人才試點工作單位,我們實施了程序設計課程的教學改革,在教學內(nèi)容、教學方法、教學手段和考核方式上,基本形成了比較完整的體系,目的就是培養(yǎng)學生的程序設計能力,適應社會對軟件服務外包人才培養(yǎng)的需求。本書源于教學改革和教學實踐,體現(xiàn)了程序設計教學改革的成果。
全書共有10章,各章內(nèi)容安排如下: 第1章程序設計概述,介紹程序設計基本概念和C++語言的基礎知識。第2章C++基礎,介紹標識符、數(shù)據(jù)類型、運算符、表達式、語句、標準庫函數(shù)的使用、指針、引用以及程序設計錯誤、程序設計風格。第3章函數(shù),內(nèi)容包括函數(shù)定義、函數(shù)調(diào)用、函數(shù)聲明、內(nèi)聯(lián)函數(shù)、函數(shù)默認參數(shù)、函數(shù)重載、函數(shù)模板、遞歸函數(shù)、指針和函數(shù)、引用和函數(shù)、Lambda表達式以及異常處理、程序結(jié)構(gòu)。第4章復合數(shù)據(jù)類型,內(nèi)容包括數(shù)組的基本概念、數(shù)組的聲明和使用、數(shù)組作為函數(shù)參數(shù)、數(shù)組和指針的關(guān)系、排序和查找、array數(shù)組、動態(tài)內(nèi)存分配以及字符串。第5章對象和類,內(nèi)容包括面向?qū)ο蟪绦蛟O計、類、構(gòu)造函數(shù)和析構(gòu)函數(shù)、靜態(tài)成員、類作用域、對象作為函數(shù)參數(shù)、對象數(shù)組、異常類以及編寫多文件程序。第6章對象和類的進一步學習,內(nèi)容包括拷貝構(gòu)造函數(shù)、this指針、對象組合、友元函數(shù)和友元類、運算符重載以及類模板。第7章繼承和多態(tài),內(nèi)容包括繼承的概念、單繼承、多繼承、多態(tài)的概念、虛函數(shù)、抽象類。第8章文件,內(nèi)容包括文件的基本概念、文件操作、文件輸入輸出以及文件定位。第9章常用數(shù)據(jù)結(jié)構(gòu),內(nèi)容包括數(shù)組類Vector、棧類Stack、鏈表以及隊列類Queue。第10章標準模板庫,內(nèi)容包括標準模板庫的概念、容器、容器適配器、迭代器、函數(shù)對象以及算法。
寫給教師
跟各位尊敬的老師一樣,作者從事了多年程序開發(fā)和教學工作,深知教學的艱辛,為教學方法費勁了心機,為教學效果傷透了腦筋,為學生的學習成績搖頭惋惜……所有這一切,從主觀上說,與教師素質(zhì)有關(guān)、與教學方法有關(guān)、與學生的學習態(tài)度有關(guān);而在客觀上,與教材和教學內(nèi)容組織更有著重大的關(guān)聯(lián)。編寫本書的目的,就是企圖從客觀的角度,使教師的教學熱情有更好的著力點,從而更順利地完成既定的教學目標,讓教師和學生的辛勞能得到應有的回報。
每章后面都有精心設計的實驗題,可以據(jù)此來布置實驗內(nèi)容,使學生從第1周起就練習編程,并貫穿始終。許多實驗題與例題有關(guān)聯(lián)。實驗題都有運行結(jié)果,較難的實驗題有編程提示和程序代碼,便于學生檢驗自己編寫的程序。
實驗所用操作系統(tǒng)可以是Windows、Mac OS X或UNIX/Linux,建議使用業(yè)界流行的C++語言集成開發(fā)工具(例如Visual Studio、Xcode或Code∷Blocks的較新版本),支持利用項目來實現(xiàn)程序的多文件組織。徹底拋棄非常陳舊的Visual C++ 6.0。
在講授過程中,應該完全遵循C++語言標準,避免程序依賴任何特定的計算機、操作系統(tǒng)和編譯器。要注重培養(yǎng)學生養(yǎng)成良好的編碼風格,強調(diào)程序的可讀性。在編寫程序時,采用一種統(tǒng)一的、良好的編碼風格是非常重要的。本書程序全部采用一種符合業(yè)界規(guī)范的編碼風格。
我們所面對的教學對象,絕大多數(shù)是第一次接觸程序設計的學生,很多學生對學習程序設計有較大的畏難情緒。培養(yǎng)學生程序設計能力不外乎3點: 興趣、天賦和經(jīng)驗。經(jīng)驗可以通過實踐加以積累,天賦不容易改變,所以程序設計課程教學唯一能起作用的就是提高學生對編程的興趣。
以往的程序設計教學多以講授語法為主,沒有引導學生如何合理優(yōu)美地使用語言來解決實際問題。對初學者來說,語法內(nèi)容講得太多,難以在短時間內(nèi)理解和消化。更何況,在課堂教學中,不可能面面俱到地講授語法知識。這就造成了多數(shù)學生在學習結(jié)束后仍不會編程。這種只造磚、不蓋房的教學方式,本身就造就了學生這樣的學習態(tài)度,使學生感覺就是為了考試過關(guān)、為了學分而學習,所以學習興趣不大,主觀能動性缺乏,學過的東西也很少能對將來的就業(yè)和工作有幫助,因此,真正能夠達到課程期望目標的學生少之又少。
本書略去過多的語法細節(jié)和實際很少使用的語言特性,通過“例題→知識點說明→模仿編程→實踐提高”的教學方式,讓學生首先得到成功的經(jīng)歷,盡快體驗成功的喜悅,逐漸喜愛看似枯燥的課程,增強學習的信心,激發(fā)求知欲。如果不僅會造磚,而且用造好的磚瓦親手蓋起了漂亮的房子,那么,學生就不會輕易將它們丟棄,而且還會長期擁有、使用和維護它們。這樣,學到的東西就會真正成為他們自己的財富,而他們也將由此長期受益。那么,教師順利、圓滿地完成教學目標也就可以期待了。
寫給學生
程序設計是一門實踐性很強的學科,僅靠記概念、背原理是遠遠不夠的。通常學生在上課時基本都能夠聽懂,可到了自己動手編程時,往往會覺得無從下手。要解決這個問題沒有捷徑可走,只有增加實踐的時間和數(shù)量,熟能生巧,經(jīng)歷的多了,就會慢慢理解程序設計的思想,用過的方法多了,遇到問題才有可能想到解決的思路。
剛開始可能會感覺程序設計很難、很痛苦,可是當?shù)谝淮尉帉懗隽艘粋小程序,就會覺得無比欣喜,回頭看看其實也并不是那么難。解決了一個過去不能解決的問題,就是一種自我實現(xiàn),就會有成就感,就會發(fā)覺自己原來這么有潛力。反過來,這種感覺會更加激發(fā)學習的熱情,驅(qū)使自己去解決更多的難題,實現(xiàn)更多實用的任務,同時這些成果還可以作為提高自己工作效率的工具,豈不兩全其美?這個過程也正是一條造就高手之路。所以學習程序設計一定要有信心、耐心和恒心,要實踐,實踐,再實踐。
教學資源
讀者要獲取本書的相關(guān)資源,請訪問清華大學出版社網(wǎng)站http://www.tup.com.cn。
致謝
在本書寫作過程中,參考了部分圖書資料和網(wǎng)站資料,在此向其作者表示感謝。
本書的出版得到了清華大學出版社的大力支持,在此表示衷心的感謝。
征求建議與批評
感謝讀者選擇本書。由于作者水平和經(jīng)驗有限,書中難免有不足之處,懇請讀者提出寶貴意見和建議,使本書日臻完善。
第1章 程序設計概述
1.1 程序設計基礎
1.1.1 程序
1.1.2 程序設計語言
1.1.3 程序設計
1.2 C++語言的發(fā)展歷史與特點
1.2.1 C++語言的歷史
1.2.2 C++語言的特點
1.3 初識C++
1.3.1 基本術(shù)語
1.3.2 C++程序的開發(fā)過程
1.3.3 第一個C++程序
1.3.4 華氏溫度轉(zhuǎn)換為攝氏溫度的程序
1.3.5 兩個整數(shù)的加法程序
1.3.6 計算兩點之間距離的程序 第1章 程序設計概述
1.1 程序設計基礎
1.1.1 程序
1.1.2 程序設計語言
1.1.3 程序設計
1.2 C++語言的發(fā)展歷史與特點
1.2.1 C++語言的歷史
1.2.2 C++語言的特點
1.3 初識C++
1.3.1 基本術(shù)語
1.3.2 C++程序的開發(fā)過程
1.3.3 第一個C++程序
1.3.4 華氏溫度轉(zhuǎn)換為攝氏溫度的程序
1.3.5 兩個整數(shù)的加法程序
1.3.6 計算兩點之間距離的程序
1.3.7 計算圓面積的程序
小結(jié)
習題
實驗
第2章 C++基礎
2.1 標識符
2.1.1 C++程序中的基本記號
2.1.2 標識符
2.1.3 關(guān)鍵字
2.2 數(shù)據(jù)類型
2.2.1 數(shù)據(jù)類型的基本概念
2.2.2 變量和常量
2.2.3 整數(shù)類型
2.2.4 浮點數(shù)類型
2.2.5 字符類型
2.2.6 布爾類型
2.2.7 枚舉類型
2.2.8 類型定義
2.3 用運算符對數(shù)據(jù)進行運算
2.3.1 用表達式表達運算意圖
2.3.2 算術(shù)運算符和算術(shù)表達式
2.3.3 賦值運算符和賦值表達式
2.3.4 關(guān)系運算符和關(guān)系表達式
2.3.5 邏輯運算符和邏輯表達式
2.3.6 條件運算符和條件表達式
2.3.7 位運算符
2.3.8 長度運算符
2.3.9 類型轉(zhuǎn)換
2.4 將語句編織成程序
2.4.1 什么是語句
2.4.2 簡單語句
2.4.3 單入口單出口的控制結(jié)構(gòu)
2.4.4 分支結(jié)構(gòu)
2.4.5 循環(huán)結(jié)構(gòu)
2.5 使用輸入輸出標準庫
2.6 指針
2.6.1 什么是指針
2.6.2 聲明指針變量
2.6.3 取地址運算符和解引用運算符
2.6.4 指向指針的指針
2.6.5 指針賦值
2.6.6 通用指針
2.6.7 使用const修飾指針
2.7 引用
2.8 程序設計錯誤
2.8.1 語法錯誤
2.8.2 運行時錯誤
2.8.3 邏輯錯誤
2.8.4 測試和調(diào)試
……
第3章 函數(shù)
第4章 復合數(shù)據(jù)類型
第5章 對象和類
第6章 對象和類的進一步學習
第7章 繼承和多態(tài)
第8章 文件
第9章 常用數(shù)據(jù)結(jié)構(gòu)
第10章 標準模板庫