版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第一章第一章 概說概說C+1.0 1.0 本科程在專業(yè)學(xué)習(xí)中的地位本科程在專業(yè)學(xué)習(xí)中的地位1.1 1.1 程序設(shè)計語言程序設(shè)計語言 1.2 C+1.2 C+前史前史 1.3 C+1.3 C+ 1.4 C+1.4 C+編程流程編程流程 1.5 1.5 最小樣板程序最小樣板程序1.6 1.6 程序與算法程序與算法 1.7 1.7 過程化程序設(shè)計過程化程序設(shè)計 1.8 1.8 對象化程序設(shè)計對象化程序設(shè)計 1.91.9 小結(jié)小結(jié) 第一章第一章 概說概說C+1.0 本科程在專業(yè)學(xué)習(xí)中的地位本科程在專業(yè)學(xué)習(xí)中的地位智能無線終端應(yīng)用智能無線終端應(yīng)用(5-7(5-7學(xué)期學(xué)期) ) 電磁場與電磁波;電磁場與電
2、磁波; 數(shù)字圖象處理;數(shù)字圖象處理; 信號檢測與處理;信號檢測與處理; 微波技術(shù)與天線;微波技術(shù)與天線; 射頻電路設(shè)計原理與應(yīng)用射頻電路設(shè)計原理與應(yīng)用。 專業(yè)基礎(chǔ)課程專業(yè)基礎(chǔ)課程第一層次第一層次(3-5(3-5學(xué)期學(xué)期) ): 電路原理、模擬電子技術(shù)、數(shù)字電路與數(shù)字邏輯;電路原理、模擬電子技術(shù)、數(shù)字電路與數(shù)字邏輯;第二層次第二層次(5-6(5-6學(xué)期學(xué)期) ): 信號與系統(tǒng)信號與系統(tǒng)、數(shù)字信號處理、電子測量原理;數(shù)字信號處理、電子測量原理;第三層次第三層次(5-7(5-7學(xué)期學(xué)期) ): MATLAB與系統(tǒng)仿真與系統(tǒng)仿真、電子線路、電子線路CAD、DSP原理及應(yīng)用原理及應(yīng)用智能信息處理支持課程
3、智能信息處理支持課程1. 1. 高端軟件設(shè)計支持高端軟件設(shè)計支持(2-4(2-4學(xué)期學(xué)期) ) 程序設(shè)計基礎(chǔ)程序設(shè)計基礎(chǔ)C C; C+C+程序設(shè)計;程序設(shè)計; 可視化編程與應(yīng)用??梢暬幊膛c應(yīng)用。 2. 2. 芯片級設(shè)計支持芯片級設(shè)計支持(5-7(5-7學(xué)期學(xué)期) ) 微機(jī)原理與應(yīng)用;微機(jī)原理與應(yīng)用; 單片機(jī)原理與應(yīng)用;單片機(jī)原理與應(yīng)用; 嵌入式系統(tǒng);嵌入式系統(tǒng); 專業(yè)課程設(shè)計。專業(yè)課程設(shè)計。工業(yè)信號檢測系統(tǒng)工業(yè)信號檢測系統(tǒng)與智能電子產(chǎn)品研發(fā)與智能電子產(chǎn)品研發(fā)(5-7(5-7學(xué)期學(xué)期) ) 傳感器原理與應(yīng)用;傳感器原理與應(yīng)用; 檢測技術(shù)基礎(chǔ);檢測技術(shù)基礎(chǔ); 數(shù)據(jù)庫開發(fā)與應(yīng)用;數(shù)據(jù)庫開發(fā)與應(yīng)用;
4、 現(xiàn)代電氣及現(xiàn)代電氣及PLCPLC技術(shù);技術(shù); 樓宇智能化技術(shù)。樓宇智能化技術(shù)。 第一章第一章 概說概說C+本科程學(xué)習(xí)的高端目標(biāo):本科程學(xué)習(xí)的高端目標(biāo):1. 程序設(shè)計競賽;程序設(shè)計競賽;2. 初級程序員初級程序員(證書):第四五學(xué)期(證書):第四五學(xué)期 相當(dāng)于實習(xí)工程師(本科畢業(yè))相當(dāng)于實習(xí)工程師(本科畢業(yè))3. 中級程序員中級程序員(證書):第五六學(xué)期(證書):第五六學(xué)期 相當(dāng)于助理工程師(本科畢業(yè)工作相當(dāng)于助理工程師(本科畢業(yè)工作 1 年以上)年以上)4. 高級程序員高級程序員(證書):第六七學(xué)期(證書):第六七學(xué)期 相當(dāng)于工程師(本科畢業(yè)工作相當(dāng)于工程師(本科畢業(yè)工作 5 年以上)年以上
5、)5. 軟件設(shè)計師軟件設(shè)計師(證書):第七八學(xué)期(證書):第七八學(xué)期 相當(dāng)于高級工程師(本科畢業(yè)工作相當(dāng)于高級工程師(本科畢業(yè)工作 9 年以上)年以上)第一章第一章 概說概說C+ C+到底難不難學(xué)?它從開始誕生以來,到底難不難學(xué)?它從開始誕生以來,發(fā)展勢發(fā)展勢頭 一 直 旺 到 現(xiàn) 在頭 一 直 旺 到 現(xiàn) 在 , 背 后 一 定 也 有 它 的 道 理 。, 背 后 一 定 也 有 它 的 道 理 。 C+綜合了各家之長,功能多綜合了各家之長,功能多,操作起來簡單。有人,操作起來簡單。有人說它難學(xué),這是正常的說它難學(xué),這是正常的,否則,否則,一學(xué)就會的東西,還一學(xué)就會的東西,還用得著努力教和
6、學(xué)嗎?用得著努力教和學(xué)嗎?至于學(xué)習(xí)的結(jié)果,就因人而異,至于學(xué)習(xí)的結(jié)果,就因人而異,甚至大相徑庭了。難怪有的人趣味盎然,有的人大嘆甚至大相徑庭了。難怪有的人趣味盎然,有的人大嘆苦經(jīng)??嘟?jīng)。 中國古代有名畫家王冕就是因為信奉了這樣一句中國古代有名畫家王冕就是因為信奉了這樣一句話而成才的:話而成才的:沒有學(xué)不會的事情!沒有學(xué)不會的事情! 第一章第一章 概說概說C+1.1 程序設(shè)計語言程序設(shè)計語言(Programming Language)(Programming Language) 人們用程序設(shè)計語言描述需要解決的問題,用人們用程序設(shè)計語言描述需要解決的問題,用“語語言翻譯言翻譯/編譯器編譯器”加工
7、以使計算機(jī)理解其描述,爾后就加工以使計算機(jī)理解其描述,爾后就能使計算機(jī)代替人們工作了。雖然編程語言最終目的能使計算機(jī)代替人們工作了。雖然編程語言最終目的是促使計算機(jī)為人們工作,但人們用編程語言對問題是促使計算機(jī)為人們工作,但人們用編程語言對問題的描述方式與內(nèi)容,隨著使用群體的擴(kuò)大,越來越多的描述方式與內(nèi)容,隨著使用群體的擴(kuò)大,越來越多地成為人們之間相互地成為人們之間相互交流過程描述與信息表達(dá)的工具交流過程描述與信息表達(dá)的工具。 計算機(jī)上的機(jī)器指令也稱為機(jī)器代碼,它是機(jī)器語計算機(jī)上的機(jī)器指令也稱為機(jī)器代碼,它是機(jī)器語言的程序。機(jī)器語言是低級語言,匯編語言是機(jī)器語言的程序。機(jī)器語言是低級語言,匯編
8、語言是機(jī)器語言的直接符號表示,所以基本上也是低級語言。而言的直接符號表示,所以基本上也是低級語言。而C+則是高級語言則是高級語言 。第一章第一章 概說概說C+ mov eax, DWORD PTR a $ebp 8b 45 fc lea eax, DWORD PTR eax+eax*2 8d 04 40 mov ecx, DWORD PTR b $ebp 8b 4d f8 add ecx, ecx 03 c9 sub eax, ecx 2b c1 inc eax 40 mov DWORD PTR a $ebp, eax 89 45 fc匯編語言和某個特定的機(jī)器語言:匯編語言和某個特定的機(jī)器語言
9、:第一章第一章 概說概說C+ 程序語言越低級,則必須對過程描寫越具體,指令程序語言越低級,則必須對過程描寫越具體,指令也就越接近機(jī)器的硬件邏輯。程序語言越高級,就越接也就越接近機(jī)器的硬件邏輯。程序語言越高級,就越接近對問題的描述與表達(dá),因而更直觀,容易被人們所理近對問題的描述與表達(dá),因而更直觀,容易被人們所理解。解。 程序語言從低級到高級的發(fā)展,也就是從具體描述程序語言從低級到高級的發(fā)展,也就是從具體描述(編程)(編程)到抽象描述到抽象描述(編程)(編程),高級語言的抽象描述最,高級語言的抽象描述最后都后都需用需用“語言編譯器語言編譯器”自動轉(zhuǎn)化成機(jī)器的具體實現(xiàn)。自動轉(zhuǎn)化成機(jī)器的具體實現(xiàn)。 語
10、言編譯器語言編譯器的發(fā)展,則是從簡單到復(fù)雜的過程。語的發(fā)展,則是從簡單到復(fù)雜的過程。語言越是高級,描述越是抽象,則用于自動化轉(zhuǎn)換的言越是高級,描述越是抽象,則用于自動化轉(zhuǎn)換的語言語言編譯器編譯器越復(fù)雜,以便人們對問題只需有個相對簡單的描越復(fù)雜,以便人們對問題只需有個相對簡單的描述(編程),就能夠被機(jī)器所理解。述(編程),就能夠被機(jī)器所理解。 第一章第一章 概說概說C+1.2 C+前史(Pre-C+ history) 1953年年12月,月,IBM公司的公司的John Backus寫了一份備忘錄,寫了一份備忘錄,建議為建議為IBM704設(shè)計一種全新的編程語言。設(shè)計一種全新的編程語言。Backus
11、多年工作在多年工作在計算機(jī)上,深切體會到編程困難,他的目標(biāo)是設(shè)計一種用于科計算機(jī)上,深切體會到編程困難,他的目標(biāo)是設(shè)計一種用于科學(xué)計算的學(xué)計算的“公式翻譯語言公式翻譯語言”。 他帶領(lǐng)的一個團(tuán)隊,終于在他帶領(lǐng)的一個團(tuán)隊,終于在1954年完成了年完成了FORTRAN語言語言的設(shè)計和實現(xiàn)的設(shè)計和實現(xiàn)。在那以后,不同版本的。在那以后,不同版本的FORTRAN語言紛紛面語言紛紛面世。世。1966年,美國統(tǒng)一了它的標(biāo)準(zhǔn)年,美國統(tǒng)一了它的標(biāo)準(zhǔn),稱為,稱為FORTRAN66語言,語言,此后,又被更新為此后,又被更新為FORTRAN77和和FORTRAN90。FORTRAN語言的后繼版本要兼容以前大量的語言的后
12、繼版本要兼容以前大量的FORTRAN老程序,這一負(fù)老程序,這一負(fù)擔(dān)阻礙了它,無法革新成現(xiàn)代編程語言特征。但不管怎樣,擔(dān)阻礙了它,無法革新成現(xiàn)代編程語言特征。但不管怎樣,F(xiàn)ORTRAN語言一直活躍了語言一直活躍了40多年多年,Backus為此摘取了為此摘取了1977年年度的度的“圖靈獎圖靈獎”。 第一章第一章 概說概說C+代數(shù)語言代數(shù)語言ALGOL 1958年,一個國際商業(yè)和學(xué)術(shù)計算機(jī)科學(xué)家組成年,一個國際商業(yè)和學(xué)術(shù)計算機(jī)科學(xué)家組成的委員會在瑞士開會,探討改進(jìn)的委員會在瑞士開會,探討改進(jìn)FORTRAN問題,并問題,并嘗試設(shè)計一種標(biāo)準(zhǔn)化的計算機(jī)語言。嘗試設(shè)計一種標(biāo)準(zhǔn)化的計算機(jī)語言。1960年,該委
13、員年,該委員會在會在1958年討論的基礎(chǔ)上,定義了一種新的語言年討論的基礎(chǔ)上,定義了一種新的語言國際代數(shù)語言國際代數(shù)語言ALGOL60,首次引入了局部變量和遞首次引入了局部變量和遞歸概念歸概念,在數(shù)學(xué)表達(dá)和算法描述上比,在數(shù)學(xué)表達(dá)和算法描述上比FORTRAN更出更出色,而且它不是解釋執(zhí)行,而是色,而且它不是解釋執(zhí)行,而是編譯后運(yùn)行編譯后運(yùn)行,比,比FORTRAN程序效率更高。但由于程序效率更高。但由于ALGOL語言的設(shè)語言的設(shè)計要求是計要求是獨(dú)立于機(jī)器獨(dú)立于機(jī)器的,所以就面臨許多語言實現(xiàn)方的,所以就面臨許多語言實現(xiàn)方面的技術(shù)問題,致使面的技術(shù)問題,致使ALGOL語言無法流行。但它卻語言無法流行
14、。但它卻演變?yōu)槠渌幊陶Z言設(shè)計的概念基礎(chǔ)。演變?yōu)槠渌幊陶Z言設(shè)計的概念基礎(chǔ)。第一章第一章 概說概說C+ 科學(xué)計算借助于科學(xué)計算借助于FORTRAN獲得快速進(jìn)展的時候,獲得快速進(jìn)展的時候,還沒有一種適用于商業(yè)計算的語言。美國國防部注意還沒有一種適用于商業(yè)計算的語言。美國國防部注意到了這種情況,到了這種情況,1959年年5月月,五角大樓委托,五角大樓委托Grace Murray Hopper博士領(lǐng)導(dǎo)一個委員會,開始設(shè)計博士領(lǐng)導(dǎo)一個委員會,開始設(shè)計面向面向商業(yè)的通用語言商業(yè)的通用語言COBOL。COBOL最重要的特征是語最重要的特征是語法與英文很接近,可以讓不懂計算機(jī)的人也能看懂程法與英文很接近,可
15、以讓不懂計算機(jī)的人也能看懂程序。序。1968年,年,COBOL語言進(jìn)行了標(biāo)準(zhǔn)化語言進(jìn)行了標(biāo)準(zhǔn)化。后又在。后又在1974年和年和1984年進(jìn)行了標(biāo)準(zhǔn)化更新。年進(jìn)行了標(biāo)準(zhǔn)化更新。COBOL語言曾經(jīng)風(fēng)語言曾經(jīng)風(fēng)靡一時。靡一時。 商用語言商用語言COBOL第一章第一章 概說概說C+BASIC語言語言 60年代中期,美國年代中期,美國Dartmouth學(xué)院的學(xué)院的John G.Kemeney和和Thomas E.Kurtz認(rèn)為,像認(rèn)為,像FORTRAN這樣的編程語言,都是為這樣的編程語言,都是為專業(yè)人員設(shè)計的,而他們希望能為無經(jīng)驗的人提供一種簡單的專業(yè)人員設(shè)計的,而他們希望能為無經(jīng)驗的人提供一種簡單的編
16、程語言,特別希望那些非計算機(jī)專業(yè)的學(xué)生也能通過這種語編程語言,特別希望那些非計算機(jī)專業(yè)的學(xué)生也能通過這種語言學(xué)會使用計算機(jī)。于是,他們在簡化言學(xué)會使用計算機(jī)。于是,他們在簡化FORTRAN的基礎(chǔ)上,的基礎(chǔ)上,研究出了研究出了BASIC語言。由于語言。由于BASIC語言易學(xué)易用語言易學(xué)易用,很快就成為,很快就成為最流行的計算機(jī)語言之一,幾乎所有小型和個人計算機(jī)都使用最流行的計算機(jī)語言之一,幾乎所有小型和個人計算機(jī)都使用它。它。BASIC語言發(fā)展到后來,出現(xiàn)了許多改版,典型的有語言發(fā)展到后來,出現(xiàn)了許多改版,典型的有1983年推出的年推出的TrueBASIC,1985年推出的年推出的QBASIC,
17、以及,以及1991年推年推出的出的Visual BASIC(簡稱(簡稱VB)。)。VB一直風(fēng)靡至今長盛不衰。一直風(fēng)靡至今長盛不衰。 第一章第一章 概說概說C+Lisp語言語言 同在同在60年代中期,美國年代中期,美國MIT的的John McCarthy等等人設(shè)計和實現(xiàn)了人設(shè)計和實現(xiàn)了用于人工智能研究用于人工智能研究的的Lisp語言。語言。Lisp語言是語言是基于表處理的函數(shù)語言基于表處理的函數(shù)語言,由于該語言更面向問,由于該語言更面向問題,因此較題,因此較容易編程,描述能力更強(qiáng)容易編程,描述能力更強(qiáng),更易于進(jìn)行程,更易于進(jìn)行程序正確性驗證和軟件維護(hù)。但由于實現(xiàn)序正確性驗證和軟件維護(hù)。但由于實現(xiàn)
18、技術(shù)復(fù)雜,處技術(shù)復(fù)雜,處理文件等能力不強(qiáng),運(yùn)行效率低理文件等能力不強(qiáng),運(yùn)行效率低,該工具一直停留在,該工具一直停留在實驗室階段。實驗室階段。 第一章第一章 概說概說C+計算機(jī)教學(xué)語言計算機(jī)教學(xué)語言LOGO和結(jié)構(gòu)化的編程語言和結(jié)構(gòu)化的編程語言Pascal 1967年,美國麻省理工大學(xué)人工智能實驗室年,美國麻省理工大學(xué)人工智能實驗室S.Papert為兒童為兒童設(shè)計了一種設(shè)計了一種LOGO編程語言。他用編程語言。他用LOGO語言啟發(fā)孩子們的學(xué)語言啟發(fā)孩子們的學(xué)習(xí)與思考,一些孩子用習(xí)與思考,一些孩子用LOGO語言設(shè)計出了真正的程序,于是語言設(shè)計出了真正的程序,于是LOGO成為一種熱門的計算機(jī)教學(xué)語言。
19、成為一種熱門的計算機(jī)教學(xué)語言。 1971年,瑞士聯(lián)邦技術(shù)學(xué)院年,瑞士聯(lián)邦技術(shù)學(xué)院N.Wirth教授發(fā)明了教授發(fā)明了Pascal語語言。言。Pascal語言語法嚴(yán)謹(jǐn),層次分明,程序易寫,具有很強(qiáng)的語言語法嚴(yán)謹(jǐn),層次分明,程序易寫,具有很強(qiáng)的可讀性,是第一個結(jié)構(gòu)化的編程語言可讀性,是第一個結(jié)構(gòu)化的編程語言。它一出世就受到廣泛歡。它一出世就受到廣泛歡迎,為此,他獲得迎,為此,他獲得1984年度的年度的“圖靈獎圖靈獎”。 第一章第一章 概說概說C+Simula67語言語言 1967年,挪威奧斯陸的年,挪威奧斯陸的Johan Dahl和和Kristen Nygaard推出了推出了Simula67語言。該
20、語言語言。該語言第一次提出類第一次提出類的概念的概念,能夠把應(yīng)用中的概念直接用編程語言描述,能夠把應(yīng)用中的概念直接用編程語言描述,比其他語言編寫的程序更具可讀性,而且編譯系統(tǒng)捕比其他語言編寫的程序更具可讀性,而且編譯系統(tǒng)捕捉類型錯誤的能力十分強(qiáng),保證了程序規(guī)模擴(kuò)大之后,捉類型錯誤的能力十分強(qiáng),保證了程序規(guī)模擴(kuò)大之后,錯誤量不會非線性增長。該語言曾配置在好幾個大型錯誤量不會非線性增長。該語言曾配置在好幾個大型計算機(jī)上,但由于計算機(jī)上,但由于編譯實現(xiàn)不完善編譯實現(xiàn)不完善,導(dǎo)致運(yùn)行效率低,導(dǎo)致運(yùn)行效率低下,只能執(zhí)行一些小型程序,所以像下,只能執(zhí)行一些小型程序,所以像ALGOL語言一語言一樣,沒能流行
21、,但成為未來面世的樣,沒能流行,但成為未來面世的面向?qū)ο缶幊陶Z言面向?qū)ο缶幊陶Z言的概念基礎(chǔ)的概念基礎(chǔ)。 第一章第一章 概說概說C+C語言語言 1970年,年,AT&T的的Bell實驗室實驗室D.Ritchie和和K.Thompson共同發(fā)明了共同發(fā)明了C語言。研制語言。研制C語言的初衷是語言的初衷是用它編寫用它編寫UNIX系統(tǒng)程序,因此,它實際上是系統(tǒng)程序,因此,它實際上是UNIX的的“副產(chǎn)品副產(chǎn)品”。它充分。它充分結(jié)合了結(jié)合了和和的優(yōu)的優(yōu)點(diǎn)點(diǎn),又,又,所以大受程序設(shè)計師,所以大受程序設(shè)計師的青睞,成為計算機(jī)產(chǎn)業(yè)界的寵兒。為此,他們兩位的青睞,成為計算機(jī)產(chǎn)業(yè)界的寵兒。為此,他們兩位獲得
22、了獲得了1983年度的年度的“圖靈獎圖靈獎”。 第一章第一章 概說概說C+C+語言語言 70年代中期,年代中期,Bjarne Stroustrup在劍橋大學(xué)計算機(jī)中心在劍橋大學(xué)計算機(jī)中心工作。他使用過工作。他使用過Simula和和ALGOL,實現(xiàn)過低級語言,實現(xiàn)過低級語言BCPL,接,接觸過觸過C。他。他對對Simula的類體系的類體系感受頗深,感受頗深,對對ALGOL的結(jié)構(gòu)的結(jié)構(gòu)也也頗有好感,他深知頗有好感,他深知運(yùn)行效率運(yùn)行效率的意義,所以,十分欣賞的意義,所以,十分欣賞C語言。語言。以以C為背景,以為背景,以Simula思想為基礎(chǔ),正好符合既要編程簡單、思想為基礎(chǔ),正好符合既要編程簡單、
23、正確可靠,又要運(yùn)行高效、可移植的設(shè)想正確可靠,又要運(yùn)行高效、可移植的設(shè)想。1979年,年,Bjarne Stroustrup到了到了Bell實驗室,開始從事實驗室,開始從事將將C改良為帶類的改良為帶類的C (C with classes)的工作。的工作。1983年將該語言年將該語言正式命名為正式命名為C+。90年代,年代,程序員開始慢慢從程序員開始慢慢從C中淡出,轉(zhuǎn)入中淡出,轉(zhuǎn)入C+。此后,。此后,C+穩(wěn)步發(fā)展,穩(wěn)步發(fā)展,1998年年ISO/ANSI C+標(biāo)準(zhǔn)正式制定,如今已是標(biāo)準(zhǔn)正式制定,如今已是如日中天如日中天。鑒。鑒于于C+對現(xiàn)代計算機(jī)產(chǎn)業(yè)的貢獻(xiàn)對現(xiàn)代計算機(jī)產(chǎn)業(yè)的貢獻(xiàn),1995年年BYT
24、E雜志將雜志將Bjarne Stroustrup列入列入“計算機(jī)工業(yè)計算機(jī)工業(yè)20個最具影響力的人個最具影響力的人”。 第一章第一章 概說概說C+1.3 C+1.3 C+ C+是從是從C語言中繼承而來的。語言中繼承而來的。C+的發(fā)展壯大,主要是的發(fā)展壯大,主要是因為程序設(shè)計方法的發(fā)展。程序設(shè)計方法的發(fā)展,主要是計算因為程序設(shè)計方法的發(fā)展。程序設(shè)計方法的發(fā)展,主要是計算機(jī)應(yīng)用范圍的擴(kuò)大和編程規(guī)模的擴(kuò)大。機(jī)應(yīng)用范圍的擴(kuò)大和編程規(guī)模的擴(kuò)大。 C語言之所以風(fēng)靡一時,在于當(dāng)時需要計算機(jī)解決的問題語言之所以風(fēng)靡一時,在于當(dāng)時需要計算機(jī)解決的問題多半是小規(guī)模問題,一般通過單臺計算機(jī)獨(dú)立蠻算便可解決。多半是小
25、規(guī)模問題,一般通過單臺計算機(jī)獨(dú)立蠻算便可解決。隨著計算機(jī)的發(fā)展,人們開始著手解決隨著計算機(jī)的發(fā)展,人們開始著手解決大數(shù)據(jù)量大數(shù)據(jù)量的處理問題,的處理問題,需要處理大量需要處理大量復(fù)雜結(jié)構(gòu)的數(shù)據(jù)復(fù)雜結(jié)構(gòu)的數(shù)據(jù)。C程序員雖然經(jīng)過程序員雖然經(jīng)過艱苦的努力艱苦的努力,設(shè)計出許多設(shè)計出許多精巧的程序精巧的程序,但是在,但是在理解上卻越來越困難,運(yùn)行問理解上卻越來越困難,運(yùn)行問題也越來越多題也越來越多。程序需要。程序需要“保修(可維護(hù)性要求)保修(可維護(hù)性要求)”,需要,需要“擴(kuò)充(可擴(kuò)展性要求)擴(kuò)充(可擴(kuò)展性要求)”,需要,需要“加固(安全性要求)加固(安全性要求)”。而這些精巧的程序由于內(nèi)在結(jié)構(gòu)的弱點(diǎn)
26、而這些精巧的程序由于內(nèi)在結(jié)構(gòu)的弱點(diǎn)數(shù)據(jù)結(jié)構(gòu)與算法盤數(shù)據(jù)結(jié)構(gòu)與算法盤根錯節(jié),無法被可逆地拆解,很難分析根錯節(jié),無法被可逆地拆解,很難分析“險情險情”和重新使用。和重新使用。第一章第一章 概說概說C+ 設(shè)計計算機(jī)語言的專家要改革這一現(xiàn)狀,提出程設(shè)計計算機(jī)語言的專家要改革這一現(xiàn)狀,提出程序設(shè)計語言應(yīng)該序設(shè)計語言應(yīng)該具有數(shù)據(jù)類型的擴(kuò)充能力具有數(shù)據(jù)類型的擴(kuò)充能力。于是基于。于是基于數(shù)據(jù)類型和面向數(shù)據(jù)類型的編程語言不斷浮出水面。數(shù)據(jù)類型和面向數(shù)據(jù)類型的編程語言不斷浮出水面。這些方法,是以程序員自己定義或設(shè)計數(shù)據(jù)類型的方這些方法,是以程序員自己定義或設(shè)計數(shù)據(jù)類型的方式將復(fù)雜結(jié)構(gòu)的數(shù)據(jù)進(jìn)行系統(tǒng)的組織,統(tǒng)一的管
27、理,式將復(fù)雜結(jié)構(gòu)的數(shù)據(jù)進(jìn)行系統(tǒng)的組織,統(tǒng)一的管理,以使程序組織合理,算法設(shè)計簡單和易懂,以使程序組織合理,算法設(shè)計簡單和易懂,C+便是便是其中之一,從商業(yè)化角度看,其中之一,從商業(yè)化角度看,C+更是其中的跤跤者。更是其中的跤跤者。在在C的簡捷、高效的簡捷、高效的基礎(chǔ)上,的基礎(chǔ)上,C+添加了自定義數(shù)據(jù)類添加了自定義數(shù)據(jù)類型的整套設(shè)施型的整套設(shè)施,以適應(yīng)大規(guī)模編程的需要。因此,進(jìn),以適應(yīng)大規(guī)模編程的需要。因此,進(jìn)入市場后,面向?qū)ο蟮木幊谭椒ㄒ查_始工業(yè)化了。入市場后,面向?qū)ο蟮木幊谭椒ㄒ查_始工業(yè)化了。 第一章第一章 概說概說C+C繼承者繼承者 C+對對C的繼承是青出于藍(lán)而勝于藍(lán),因為是對的繼承是青出
28、于藍(lán)而勝于藍(lán),因為是對C的繼承,也就承諾了對的繼承,也就承諾了對C的包容。的包容。C+對對C的包容,也的包容,也包括對程序設(shè)計方法的包括對程序設(shè)計方法的包容包容,這就決定了,這就決定了C+擅長擅長面面向?qū)ο蟪绦蛟O(shè)計向?qū)ο蟪绦蛟O(shè)計的同時,還可以進(jìn)行的同時,還可以進(jìn)行基于過程的程序基于過程的程序設(shè)計設(shè)計,因而,因而C+就適應(yīng)的問題規(guī)模而論,大小由之。就適應(yīng)的問題規(guī)模而論,大小由之。 C+是一種是一種混合型混合型程序設(shè)計語言,程序設(shè)計語言,“混合混合”體現(xiàn)體現(xiàn)在在可以采用不同的程序設(shè)計方法可以采用不同的程序設(shè)計方法,進(jìn)行各種目的的編,進(jìn)行各種目的的編程。程。 “混合混合”意味著絕不放棄計算機(jī)意味著絕
29、不放棄計算機(jī)高效運(yùn)行高效運(yùn)行的實用性特的實用性特征,而又致力于提高征,而又致力于提高大規(guī)模程序的編程大規(guī)模程序的編程質(zhì)量,提高程質(zhì)量,提高程序設(shè)計語言的問題描述能力。序設(shè)計語言的問題描述能力。 第一章第一章 概說概說C+標(biāo)準(zhǔn)標(biāo)準(zhǔn)C+ 有了有了C+標(biāo)準(zhǔn),專家們在標(biāo)準(zhǔn),專家們在開發(fā)開發(fā)C+編譯器編譯器時,可以時,可以避免大量避免大量的研究無序性和重復(fù)勞動的研究無序性和重復(fù)勞動,并且也為組織大規(guī)模的編譯軟件開,并且也為組織大規(guī)模的編譯軟件開發(fā)創(chuàng)造了前提條件;發(fā)創(chuàng)造了前提條件; 有了有了C+標(biāo)準(zhǔn)文檔,語言設(shè)計者,程序員和用戶三者就可以標(biāo)準(zhǔn)文檔,語言設(shè)計者,程序員和用戶三者就可以有一致的語言來互通,有一
30、致的語言來互通,在程序員社區(qū)可以暢通地交流在程序員社區(qū)可以暢通地交流,編寫的,編寫的程序變得更有效,更通用,更易懂。程序變得更有效,更通用,更易懂。 有了有了C+標(biāo)準(zhǔn),程序員所開發(fā)的軟件產(chǎn)品具有更高的系統(tǒng)標(biāo)準(zhǔn),程序員所開發(fā)的軟件產(chǎn)品具有更高的系統(tǒng)可可移植性移植性;C+標(biāo)準(zhǔn)還在標(biāo)準(zhǔn)還在防止技術(shù)封鎖防止技術(shù)封鎖,促進(jìn)軟件技術(shù)的交流促進(jìn)軟件技術(shù)的交流,提高軟件競爭力等方面起到了很好的保護(hù)作用;提高軟件競爭力等方面起到了很好的保護(hù)作用; 所以當(dāng)所以當(dāng)C+發(fā)展到一定規(guī)模的時候,無論是用戶、程序員,發(fā)展到一定規(guī)模的時候,無論是用戶、程序員,還是還是C+語言的設(shè)計者,都在竭力推動標(biāo)準(zhǔn)化的工作。語言的設(shè)計者,
31、都在竭力推動標(biāo)準(zhǔn)化的工作。第一章第一章 概說概說C+ 使用標(biāo)準(zhǔn)使用標(biāo)準(zhǔn)C+,也意味著程序員可以充分享用,也意味著程序員可以充分享用C+的資源的資源標(biāo)準(zhǔn)庫。從而帶來更多的快速和方便,提高標(biāo)準(zhǔn)庫。從而帶來更多的快速和方便,提高抽象編程的程度。所以,學(xué)習(xí)抽象編程的程度。所以,學(xué)習(xí)C+,理所當(dāng)然地要學(xué),理所當(dāng)然地要學(xué)習(xí)標(biāo)準(zhǔn)習(xí)標(biāo)準(zhǔn)C+。 在我國,個人計算機(jī)配置的操作系統(tǒng)以在我國,個人計算機(jī)配置的操作系統(tǒng)以Windows居居多,比較容易獲得的多,比較容易獲得的標(biāo)準(zhǔn)標(biāo)準(zhǔn)C+就是就是Borland公司的公司的C+ Builder 6或者以上版本,或者或者以上版本,或者微軟公司的微軟公司的Visual C+、
32、.net或者以上版本。若在或者以上版本。若在linux系統(tǒng)上,比較容系統(tǒng)上,比較容易獲得的標(biāo)準(zhǔn)易獲得的標(biāo)準(zhǔn)C+工具就是工具就是Borland C+ Kylix 3.0以以上版本。另外,上版本。另外,通用的通用的C+編譯器當(dāng)數(shù)編譯器當(dāng)數(shù)C+3.0了,它了,它即有即有Windows版本,又有版本,又有Linux版本。版本。 第一章第一章 概說概說C+1.4 C+1.4 C+編程流程編程流程 程序設(shè)計語言發(fā)展到現(xiàn)在,無論程序設(shè)計語言發(fā)展到現(xiàn)在,無論編譯型編譯型還是還是解釋型解釋型,一般,一般都附帶提供一個都附帶提供一個集成開發(fā)環(huán)境集成開發(fā)環(huán)境(Integrated Development Envir
33、onment,IDE)。程序員可以在該環(huán)境中,編輯程序代)。程序員可以在該環(huán)境中,編輯程序代碼,逐個編譯源文件,裝配和鏈接全部源文件及其資源文件,碼,逐個編譯源文件,裝配和鏈接全部源文件及其資源文件,直至調(diào)試運(yùn)行。甚至軟件包裝和做成軟件產(chǎn)品都可以一體化。直至調(diào)試運(yùn)行。甚至軟件包裝和做成軟件產(chǎn)品都可以一體化。 解釋型環(huán)境(如解釋型環(huán)境(如VB)中,編輯代碼后,沒有編譯和鏈接)中,編輯代碼后,沒有編譯和鏈接的中間環(huán)節(jié),可以直接運(yùn)行,方便編程開發(fā)。但由于程序運(yùn)行的中間環(huán)節(jié),可以直接運(yùn)行,方便編程開發(fā)。但由于程序運(yùn)行不能離開解釋器現(xiàn)場,所以不能離開解釋器現(xiàn)場,所以效率上效率上便落了下風(fēng)。對于規(guī)模化的便
34、落了下風(fēng)。對于規(guī)?;拇蟪绦颍蟪绦?,低性能低性能表現(xiàn)得更加明顯,所以真正的計算任務(wù)和中大表現(xiàn)得更加明顯,所以真正的計算任務(wù)和中大型軟件開發(fā)一般都不用解釋型環(huán)境開發(fā)。型軟件開發(fā)一般都不用解釋型環(huán)境開發(fā)。 第一章第一章 概說概說C+ C+語言的程序因為要體現(xiàn)高性能,所以都是編語言的程序因為要體現(xiàn)高性能,所以都是編譯型的。譯型的。C+的的IDE(集成開發(fā)環(huán)境)(集成開發(fā)環(huán)境)用解釋型的逐用解釋型的逐條語句執(zhí)行方式以方便開發(fā)調(diào)試條語句執(zhí)行方式以方便開發(fā)調(diào)試,用編譯型的方式來用編譯型的方式來生成最終能脫離開發(fā)環(huán)境的執(zhí)行代碼以提高運(yùn)行效率生成最終能脫離開發(fā)環(huán)境的執(zhí)行代碼以提高運(yùn)行效率。 IDE功能齊全,
35、調(diào)試功能很強(qiáng),程序編好后,可功能齊全,調(diào)試功能很強(qiáng),程序編好后,可以立刻在環(huán)境中調(diào)試以獲得初步測試結(jié)果,然后,可以立刻在環(huán)境中調(diào)試以獲得初步測試結(jié)果,然后,可以方便地做成以方便地做成beta版形式,拿到實際環(huán)境中進(jìn)一步測版形式,拿到實際環(huán)境中進(jìn)一步測試,最后做成軟件發(fā)行版。試,最后做成軟件發(fā)行版。 一般的編程操作流程為:編輯(一般的編程操作流程為:編輯(edit)編譯編譯(compile)鏈接(鏈接(link或或make或或build)調(diào)試調(diào)試(debug),該過程循環(huán)往復(fù),直至完成。),該過程循環(huán)往復(fù),直至完成。 第一章第一章 概說概說C+ C+源程序,或稱源程序,或稱源代碼源代碼(sour
36、ce code),簡稱代碼,簡稱代碼(code),以,以擴(kuò)展名為擴(kuò)展名為.cpp(在(在Windows環(huán)境中)的文本環(huán)境中)的文本形式存放。形式存放。 程序被編譯程序被編譯(compile)后,會生成后,會生成目標(biāo)代碼目標(biāo)代碼(object code),以以.obj為文件擴(kuò)展名為文件擴(kuò)展名存放。目標(biāo)代碼即機(jī)器代存放。目標(biāo)代碼即機(jī)器代碼,是計算機(jī)能夠識別的指令集合,但是,目標(biāo)指令碼,是計算機(jī)能夠識別的指令集合,但是,目標(biāo)指令(也稱目標(biāo)代碼)還不能在具體的計算機(jī)上運(yùn)行,因(也稱目標(biāo)代碼)還不能在具體的計算機(jī)上運(yùn)行,因為目標(biāo)代碼只是一個個獨(dú)立的為目標(biāo)代碼只是一個個獨(dú)立的程序段程序段,程序段之間還,程
37、序段之間還沒有彼此呼應(yīng),程序段中用到的沒有彼此呼應(yīng),程序段中用到的C+庫代碼和其他資庫代碼和其他資源還沒有掛上。源還沒有掛上。 第一章第一章 概說概說C+ 為了把成組的程序段轉(zhuǎn)換為可執(zhí)行程序,必須進(jìn)為了把成組的程序段轉(zhuǎn)換為可執(zhí)行程序,必須進(jìn)行鏈接行鏈接(link),鏈接的過程就是將目標(biāo)代碼整合(或稱,鏈接的過程就是將目標(biāo)代碼整合(或稱轉(zhuǎn)換)成可執(zhí)行文件,轉(zhuǎn)換)成可執(zhí)行文件,可執(zhí)行文件通常以可執(zhí)行文件通常以.exe為文件為文件擴(kuò)展名擴(kuò)展名。 C+程序在編譯后,通過同時鏈接若干個目標(biāo)文程序在編譯后,通過同時鏈接若干個目標(biāo)文件與若干個庫文件而創(chuàng)建可執(zhí)行程序。庫文件是系統(tǒng)件與若干個庫文件而創(chuàng)建可執(zhí)行程
38、序。庫文件是系統(tǒng)提供的程序鏈接資源,不同公司的提供的程序鏈接資源,不同公司的IDE產(chǎn)品有不同的產(chǎn)品有不同的后綴,例如,后綴,例如,Visual C+的庫文件的后綴是的庫文件的后綴是.lib。標(biāo)準(zhǔn)。標(biāo)準(zhǔn)C+提供提供C+標(biāo)準(zhǔn)庫,用戶庫是由軟件開發(fā)商或程序標(biāo)準(zhǔn)庫,用戶庫是由軟件開發(fā)商或程序員提供的。目標(biāo)文件與庫文件鏈接的結(jié)果,生成計算員提供的。目標(biāo)文件與庫文件鏈接的結(jié)果,生成計算機(jī)可執(zhí)行程序。機(jī)可執(zhí)行程序。 第一章第一章 概說概說C+1.5 最小樣板程序最小樣板程序(Minimum Sample Program) C+編譯器能理解的有標(biāo)準(zhǔn)輸出的最小程序為:編譯器能理解的有標(biāo)準(zhǔn)輸出的最小程序為:#in
39、cludeint main()std:cout”hello world.n”;為了讓人能更好地理解,并讓程序體現(xiàn)出其邏輯結(jié)構(gòu)。為了讓人能更好地理解,并讓程序體現(xiàn)出其邏輯結(jié)構(gòu)。上述程序最好寫成如下所示的有結(jié)構(gòu)形式:上述程序最好寫成如下所示的有結(jié)構(gòu)形式:#includeint main() std:cout”hello world.n”;第一章第一章 概說概說C+ 程序中程序中“iostreamiostream”是是C+C+為特定環(huán)境編制的標(biāo)準(zhǔn)輸入輸出為特定環(huán)境編制的標(biāo)準(zhǔn)輸入輸出流類的標(biāo)準(zhǔn)庫頭文件。流類的標(biāo)準(zhǔn)庫頭文件。 “ “coutcout”是是標(biāo)準(zhǔn)輸出設(shè)備的名字,標(biāo)準(zhǔn)輸出設(shè)備的名字,“”是操作
40、命令,指示是操作命令,指示將后面的數(shù)據(jù)(字串將后面的數(shù)據(jù)(字串Hello world.nHello world.n),送到顯示器設(shè)備上),送到顯示器設(shè)備上去。去。 “std”std”是是“名空間名空間”。程序中有若干名字,程序規(guī)模大起。程序中有若干名字,程序規(guī)模大起來后,難免會有名字沖突,就好像學(xué)校中遇到同名學(xué)生:來后,難免會有名字沖突,就好像學(xué)校中遇到同名學(xué)生:A A班班中有張三,中有張三,B B班中也有張三,當(dāng)班中也有張三,當(dāng)A A、B B班在一起上課時,就有名班在一起上課時,就有名字沖突問題。解決的簡單辦法就是兩個張三分別命名為:字沖突問題。解決的簡單辦法就是兩個張三分別命名為:“A A
41、班的張三班的張三”,“B B班的張三班的張三”。C+C+也是這樣來解決問題的。為也是這樣來解決問題的。為了防止程序員自己又命名一個了防止程序員自己又命名一個“coutcout”而造成沖突而造成沖突, ,就特地對就特地對語言專門提供的標(biāo)準(zhǔn)設(shè)備名語言專門提供的標(biāo)準(zhǔn)設(shè)備名“coutcout”冠以前綴冠以前綴“std:”std:”,表,表示示“標(biāo)準(zhǔn)庫中的標(biāo)準(zhǔn)庫中的coutcout”。 第一章第一章 概說概說C+編程風(fēng)格編程風(fēng)格(Programming Style) C+的程序語法是以空格和換行(回車)來區(qū)分詞法單位,的程序語法是以空格和換行(回車)來區(qū)分詞法單位,以特定的字符來辨認(rèn)語法的,如,分號以特
42、定的字符來辨認(rèn)語法的,如,分號“;”表示語句的結(jié)束。表示語句的結(jié)束。除此之外,其書寫形式就比較隨意。程序設(shè)計格式的隨意性,除此之外,其書寫形式就比較隨意。程序設(shè)計格式的隨意性,給程序設(shè)計風(fēng)格帶來了可朔性。給程序設(shè)計風(fēng)格帶來了可朔性。 程序設(shè)計風(fēng)格應(yīng)以程序設(shè)計風(fēng)格應(yīng)以可讀性可讀性為準(zhǔn)則,合理的為準(zhǔn)則,合理的緊湊性、模塊整緊湊性、模塊整體性、對齊、鋸齒型嵌套、注釋體性、對齊、鋸齒型嵌套、注釋都是形成特定風(fēng)格的因素。都是形成特定風(fēng)格的因素。為了讓程序表現(xiàn)出為了讓程序表現(xiàn)出美感美感,又不致于語句前后內(nèi)容含混不清、結(jié)構(gòu),又不致于語句前后內(nèi)容含混不清、結(jié)構(gòu)混亂,語句書寫講究疏密得當(dāng)?;靵y,語句書寫講究疏密
43、得當(dāng)。 高級程序員的程序風(fēng)格,體現(xiàn)了極大的一貫性和藝術(shù)性。高級程序員的程序風(fēng)格,體現(xiàn)了極大的一貫性和藝術(shù)性。每個初學(xué)者必須要模仿編程風(fēng)格,隨著編程量的增加,對程序每個初學(xué)者必須要模仿編程風(fēng)格,隨著編程量的增加,對程序的感受多多,會不知不覺地形成自己獨(dú)特的風(fēng)格。的感受多多,會不知不覺地形成自己獨(dú)特的風(fēng)格。第一章第一章 概說概說C+最小樣本程序最小樣本程序/=/ min_sample.cpp/ 帶標(biāo)準(zhǔn)輸出的最小樣本程序帶標(biāo)準(zhǔn)輸出的最小樣本程序/=#includeint main() std:cout”helloWorld.n”;/顯示字符串顯示字符串/=第一章第一章 概說概說C+1.6 1.6 程
44、序與算法程序與算法(Program & Algorithm)(Program & Algorithm) 計算機(jī)程序是用計算機(jī)語言所要求的規(guī)范描述出計算機(jī)程序是用計算機(jī)語言所要求的規(guī)范描述出來的一系列動作,它表達(dá)了程序員要求計算機(jī)執(zhí)行的來的一系列動作,它表達(dá)了程序員要求計算機(jī)執(zhí)行的操作。操作。 優(yōu)秀的程序員尤其是優(yōu)秀的程序員尤其是C+程序員,追求編程方法的程序員,追求編程方法的實效性實效性。這意味著所謂。這意味著所謂“學(xué)會計算機(jī)語言,看得懂語學(xué)會計算機(jī)語言,看得懂語法,了解了語言的描述方法法,了解了語言的描述方法”,還是不夠的,它和熟,還是不夠的,它和熟練運(yùn)用計算機(jī)語言,練運(yùn)用計
45、算機(jī)語言,能用語言高效、正確地描述問題、能用語言高效、正確地描述問題、解決問題解決問題是有天壤之別的。是有天壤之別的。 學(xué)習(xí)計算機(jī)語言在于讓計算機(jī)準(zhǔn)確地執(zhí)行程序,和學(xué)習(xí)計算機(jī)語言在于讓計算機(jī)準(zhǔn)確地執(zhí)行程序,和學(xué)習(xí)其他語言一樣,都需要一個學(xué)習(xí)其他語言一樣,都需要一個充分的實踐充分的實踐過程。過程。第一章第一章 概說概說C+算法算法(Algorithm)的定義的定義 1)目的性)目的性 算法是有求解目的的動作序列,算法必須有算法是有求解目的的動作序列,算法必須有運(yùn)算結(jié)果運(yùn)算結(jié)果,而程序只是強(qiáng)調(diào)過程性而程序只是強(qiáng)調(diào)過程性;2)抽象性)抽象性 算法離不開數(shù)據(jù)結(jié)構(gòu),而數(shù)據(jù)結(jié)構(gòu)在具體的算法離不開數(shù)據(jù)結(jié)構(gòu),
46、而數(shù)據(jù)結(jié)構(gòu)在具體的計算機(jī)上實現(xiàn)要受到表示范圍的限制,算法比具體的計算機(jī)上實現(xiàn)要受到表示范圍的限制,算法比具體的程序設(shè)計抽象層次要高一些,算法甚至不在乎用什么程序設(shè)計抽象層次要高一些,算法甚至不在乎用什么編程語言來描述;編程語言來描述;3)研究性)研究性 算法許多時候用于理論研究,描述算法的目算法許多時候用于理論研究,描述算法的目的是溝通人們的思想,而不是實現(xiàn),所以,算法可以的是溝通人們的思想,而不是實現(xiàn),所以,算法可以用偽編程語言來描述。用偽編程語言來描述。第一章第一章 概說概說C+編程與結(jié)構(gòu)編程與結(jié)構(gòu)(Programming & Structure) 編程是為了解決計算問題,計算問題
47、強(qiáng)調(diào)算法,編程是為了解決計算問題,計算問題強(qiáng)調(diào)算法,程序設(shè)計程序設(shè)計也就是在一定抽象層次上的算法設(shè)計也就是在一定抽象層次上的算法設(shè)計。這里的抽象層次應(yīng)理解。這里的抽象層次應(yīng)理解為數(shù)據(jù)的描述方式。當(dāng)許多編程問題含有大量縱橫交錯的數(shù)據(jù)為數(shù)據(jù)的描述方式。當(dāng)許多編程問題含有大量縱橫交錯的數(shù)據(jù)時,人們便逐漸意識到數(shù)據(jù)組織與數(shù)據(jù)結(jié)構(gòu)的重要,意識到數(shù)時,人們便逐漸意識到數(shù)據(jù)組織與數(shù)據(jù)結(jié)構(gòu)的重要,意識到數(shù)據(jù)存在的形式必須脫離程序。據(jù)存在的形式必須脫離程序。1976年,計算機(jī)專家年,計算機(jī)專家N.Wirth提提出這樣的經(jīng)典公式:出這樣的經(jīng)典公式: 程序程序 算法算法 數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu) 強(qiáng)調(diào)編程中強(qiáng)調(diào)編程中數(shù)據(jù)結(jié)
48、構(gòu)的描述應(yīng)相對算法而獨(dú)立數(shù)據(jù)結(jié)構(gòu)的描述應(yīng)相對算法而獨(dú)立。程序不再是單。程序不再是單純的過程體(操作序列)了,不再是單純的算法了,而是算法純的過程體(操作序列)了,不再是單純的算法了,而是算法和數(shù)據(jù)結(jié)構(gòu)的有機(jī)組織。和數(shù)據(jù)結(jié)構(gòu)的有機(jī)組織。 第一章第一章 概說概說C+1.7 1.7 過程化程序設(shè)計過程化程序設(shè)計(Procedural Programming)(Procedural Programming) 過程化程序設(shè)計主要體現(xiàn)在算法上,編程就是解決算法如過程化程序設(shè)計主要體現(xiàn)在算法上,編程就是解決算法如何設(shè)計問題。當(dāng)算法很大時,就考慮將它按功能劃分。程序組何設(shè)計問題。當(dāng)算法很大時,就考慮將它按功能
49、劃分。程序組織圍繞算法的切分而展開。這一類問題一般都是小規(guī)模的問題,織圍繞算法的切分而展開。這一類問題一般都是小規(guī)模的問題,一般的程序設(shè)計語言都可以勝任。一般的程序設(shè)計語言都可以勝任。 過程程序設(shè)計按照問題來設(shè)計算法。它所使用的是語言中過程程序設(shè)計按照問題來設(shè)計算法。它所使用的是語言中現(xiàn)成的基本數(shù)據(jù)類型。問題模型反映為過程結(jié)構(gòu)模型,實際上現(xiàn)成的基本數(shù)據(jù)類型。問題模型反映為過程結(jié)構(gòu)模型,實際上就是功能模型。但由于過程模塊與數(shù)據(jù)的復(fù)雜關(guān)系沒有清晰地就是功能模型。但由于過程模塊與數(shù)據(jù)的復(fù)雜關(guān)系沒有清晰地分離出來,所以它一般都是分離出來,所以它一般都是“具體問題具體解決具體問題具體解決”,無法重復(fù)無法
50、重復(fù)使用其中的使用其中的“零部件零部件”,而且,問題龐大以后,其復(fù)雜性會無,而且,問題龐大以后,其復(fù)雜性會無法收場。法收場。 第一章第一章 概說概說C+結(jié)構(gòu)化程序設(shè)計結(jié)構(gòu)化程序設(shè)計(Structured Programming) 結(jié)構(gòu)化程序設(shè)計方法主要體現(xiàn)在過程的功能劃分結(jié)構(gòu)化程序設(shè)計方法主要體現(xiàn)在過程的功能劃分與過程內(nèi)部的編寫規(guī)則上,因此它是一種與過程內(nèi)部的編寫規(guī)則上,因此它是一種規(guī)范的過程規(guī)范的過程化化程序設(shè)計思想程序設(shè)計思想 。 結(jié)構(gòu)化程序描述任何實體的操作序列只需用結(jié)構(gòu)化程序描述任何實體的操作序列只需用“順順序,選擇(分支),重復(fù)(循環(huán))序,選擇(分支),重復(fù)(循環(huán))”三種基本控制結(jié)三
51、種基本控制結(jié)構(gòu)。構(gòu)。 結(jié)構(gòu)化程序設(shè)計中的各個結(jié)構(gòu)化程序設(shè)計中的各個過程體過程體和各個組成部分和各個組成部分以以模塊模塊來表示。每個模塊,其內(nèi)聚性來表示。每個模塊,其內(nèi)聚性(agregation)越強(qiáng),越強(qiáng),外聯(lián)性外聯(lián)性(association)越少,則模塊獨(dú)立性越好。越少,則模塊獨(dú)立性越好。 第一章第一章 概說概說C+ 內(nèi)聚性內(nèi)聚性,即模塊內(nèi)部所涉及的功能越單一越好。這,即模塊內(nèi)部所涉及的功能越單一越好。這樣一旦修改起來,就職責(zé)明確,不會因為這個原因那樣一旦修改起來,就職責(zé)明確,不會因為這個原因那個原因都來找這個模塊算帳。個原因都來找這個模塊算帳。 外聯(lián)性外聯(lián)性,即模塊之間的聯(lián)系越少越好,聯(lián)系
52、意味著,即模塊之間的聯(lián)系越少越好,聯(lián)系意味著依賴性,外聯(lián)性少,模塊的獨(dú)立性就好,獨(dú)立性意味依賴性,外聯(lián)性少,模塊的獨(dú)立性就好,獨(dú)立性意味著自說自話地修改本模塊與外界無關(guān)。因此就容易編著自說自話地修改本模塊與外界無關(guān)。因此就容易編程和修改。程和修改。 減少外聯(lián)性還涉及到對數(shù)據(jù)的分離與歸類。將過程減少外聯(lián)性還涉及到對數(shù)據(jù)的分離與歸類。將過程體中的數(shù)據(jù)分離出來,獨(dú)立地用數(shù)據(jù)結(jié)構(gòu)去描述其數(shù)體中的數(shù)據(jù)分離出來,獨(dú)立地用數(shù)據(jù)結(jié)構(gòu)去描述其數(shù)據(jù)和處理,這都是模塊劃分的原則。據(jù)和處理,這都是模塊劃分的原則。 第一章第一章 概說概說C+1.8 1.8 對象化程序設(shè)計對象化程序設(shè)計(Objectified Prog
53、ramming)(Objectified Programming) 伴隨著人類對計算機(jī)的依賴性日益增強(qiáng),程序規(guī)伴隨著人類對計算機(jī)的依賴性日益增強(qiáng),程序規(guī)模不斷擴(kuò)大,模不斷擴(kuò)大,模塊數(shù)呈指數(shù)級遞增模塊數(shù)呈指數(shù)級遞增,模塊間的,模塊間的數(shù)據(jù)傳數(shù)據(jù)傳遞五花八門遞五花八門,同一程序中,同一程序中模塊之間的關(guān)系錯綜復(fù)雜模塊之間的關(guān)系錯綜復(fù)雜,結(jié)構(gòu)化程序設(shè)計的規(guī)范已經(jīng)不能保證程序的正確性,結(jié)構(gòu)化程序設(shè)計的規(guī)范已經(jīng)不能保證程序的正確性,可維護(hù)性和重用性了。人們開始意識到不可能在語言可維護(hù)性和重用性了。人們開始意識到不可能在語言中內(nèi)置所有的待解決問題的數(shù)據(jù)結(jié)構(gòu),必須讓語言具中內(nèi)置所有的待解決問題的數(shù)據(jù)結(jié)構(gòu),必
54、須讓語言具有有自建數(shù)據(jù)結(jié)構(gòu)自建數(shù)據(jù)結(jié)構(gòu)的能力。的能力。 數(shù)據(jù)結(jié)構(gòu)對于算法,對于程序是如此的重要,但數(shù)據(jù)結(jié)構(gòu)對于算法,對于程序是如此的重要,但當(dāng)時大多數(shù)語言都沒有專門支持對數(shù)據(jù)結(jié)構(gòu)的直接描當(dāng)時大多數(shù)語言都沒有專門支持對數(shù)據(jù)結(jié)構(gòu)的直接描述。述。 第一章第一章 概說概說C+ 在在C語言中有一種結(jié)構(gòu)語言中有一種結(jié)構(gòu)(struct)類型,可以在單純空間上復(fù)類型,可以在單純空間上復(fù)合其他數(shù)據(jù)類型,描述數(shù)據(jù)的組織,但還是不能避免其數(shù)據(jù)操合其他數(shù)據(jù)類型,描述數(shù)據(jù)的組織,但還是不能避免其數(shù)據(jù)操作的安全問題。在大規(guī)模程序設(shè)計中,問題尤其突出。軟件發(fā)作的安全問題。在大規(guī)模程序設(shè)計中,問題尤其突出。軟件發(fā)展似有一個不
55、可逾越的極限,因此,在軟件產(chǎn)業(yè)界曾一度有展似有一個不可逾越的極限,因此,在軟件產(chǎn)業(yè)界曾一度有軟軟件危機(jī)件危機(jī)之說。之說。 其實其實浩瀚的編程大軍浩瀚的編程大軍并非每個人都必須要精通問題的每并非每個人都必須要精通問題的每個細(xì)節(jié),這就像使用電視機(jī)的人并非都要精通其內(nèi)部的每個細(xì)個細(xì)節(jié),這就像使用電視機(jī)的人并非都要精通其內(nèi)部的每個細(xì)節(jié)!我們可用電視機(jī)的外殼,把電視機(jī)的內(nèi)部電路和外部使用節(jié)!我們可用電視機(jī)的外殼,把電視機(jī)的內(nèi)部電路和外部使用一分為二。外部使用只需要了解電視機(jī)的基本操作方法,內(nèi)部一分為二。外部使用只需要了解電視機(jī)的基本操作方法,內(nèi)部電路提供電視機(jī)的各項功能,兩者都需要一個共同的規(guī)范電路提供
56、電視機(jī)的各項功能,兩者都需要一個共同的規(guī)范電視機(jī)的按鈕操作功能。電視機(jī)的按鈕操作功能。第一章第一章 概說概說C+ 抽象數(shù)據(jù)類型抽象數(shù)據(jù)類型就是想要描述這一共同的規(guī)范,它就是想要描述這一共同的規(guī)范,它描述數(shù)據(jù)描述數(shù)據(jù)的組織和相關(guān)的操作的組織和相關(guān)的操作。如果語言能夠自由定義數(shù)據(jù)類型,那么,。如果語言能夠自由定義數(shù)據(jù)類型,那么,問題就能化成以抽象數(shù)據(jù)類型為媒介的使用與實現(xiàn)獨(dú)立的兩部問題就能化成以抽象數(shù)據(jù)類型為媒介的使用與實現(xiàn)獨(dú)立的兩部分,因而該語言的解決問題的能力一定就強(qiáng)。分,因而該語言的解決問題的能力一定就強(qiáng)。衡量一個語言的衡量一個語言的優(yōu)劣,能否自定義或者說擴(kuò)充數(shù)據(jù)類型是其重要指標(biāo)優(yōu)劣,能否自
57、定義或者說擴(kuò)充數(shù)據(jù)類型是其重要指標(biāo)。 C+有一個有一個類類(class)機(jī)制機(jī)制,這正是,這正是C語言欠缺的地方。語言欠缺的地方。數(shù)據(jù)數(shù)據(jù)類型的本質(zhì)是數(shù)據(jù)組織類型的本質(zhì)是數(shù)據(jù)組織(實現(xiàn))(實現(xiàn))和其操作(和其操作(使用)使用)的捆綁性的捆綁性。當(dāng)對應(yīng)到具體編程時,用抽象數(shù)據(jù)類型來界定,就能把編程大當(dāng)對應(yīng)到具體編程時,用抽象數(shù)據(jù)類型來界定,就能把編程大軍分為兩個陣營,一個是專業(yè)性極強(qiáng)的,專門軍分為兩個陣營,一個是專業(yè)性極強(qiáng)的,專門實現(xiàn)實現(xiàn)抽象數(shù)據(jù)類抽象數(shù)據(jù)類型的編程,好比生產(chǎn)電視機(jī)者;另一個是專門型的編程,好比生產(chǎn)電視機(jī)者;另一個是專門使用使用抽象數(shù)據(jù)類抽象數(shù)據(jù)類型的編程,好比使用電視機(jī)者。型的
58、編程,好比使用電視機(jī)者。 第一章第一章 概說概說C+ 要能使抽象數(shù)據(jù)類型能夠維護(hù)要能使抽象數(shù)據(jù)類型能夠維護(hù)兩大程序員陣營兩大程序員陣營的編程利益,的編程利益,必須要在語言的設(shè)計中加入一些語言機(jī)制,這些語言機(jī)制采用必須要在語言的設(shè)計中加入一些語言機(jī)制,這些語言機(jī)制采用了許多難以想象的技術(shù),實現(xiàn)了了許多難以想象的技術(shù),實現(xiàn)了數(shù)據(jù)封裝數(shù)據(jù)封裝,類型安全類型安全等,而且等,而且還必然要使代碼更容易閱讀和維護(hù),否則沒有人愿意用。還必然要使代碼更容易閱讀和維護(hù),否則沒有人愿意用。 抽象數(shù)據(jù)類型的使用,最終像使用基本數(shù)據(jù)類型那樣簡單,抽象數(shù)據(jù)類型的使用,最終像使用基本數(shù)據(jù)類型那樣簡單,對應(yīng)的對應(yīng)的實體就稱之
59、為對象實體就稱之為對象。因此,編程的意義就是算法在。因此,編程的意義就是算法在對象對象之間穿梭之間穿梭,或曰,或曰針對對象的算法設(shè)計針對對象的算法設(shè)計。所以其相應(yīng)的編程就是。所以其相應(yīng)的編程就是對象化的編程了。對象化的編程了。 無論是無論是實現(xiàn)抽象數(shù)據(jù)類型的程序員群體實現(xiàn)抽象數(shù)據(jù)類型的程序員群體,還是使,還是使用抽象數(shù)用抽象數(shù)據(jù)類型的程序員群體據(jù)類型的程序員群體,他們都以同樣的參照在工作,都在做算,他們都以同樣的參照在工作,都在做算法設(shè)計的工作,所以更加直截了當(dāng)而又具體的編程模式變成了法設(shè)計的工作,所以更加直截了當(dāng)而又具體的編程模式變成了:程序程序 算法算法 抽象數(shù)據(jù)類型抽象數(shù)據(jù)類型第一章第一章 概說概說C+面向?qū)ο蟮某绦蛟O(shè)計面向?qū)ο蟮某绦蛟O(shè)計(Object-Oriented Prog
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度跨境電商主體變更與物流及客服人員勞動合同3篇
- 二零二五版海外農(nóng)業(yè)開發(fā)項目勞務(wù)輸出合同2篇
- 二零二五版股權(quán)回購項目擔(dān)保及投資風(fēng)險控制合同3篇
- 二零二五年教育培訓(xùn)機(jī)構(gòu)招生合同正本3篇
- 二零二五版辦公樓物業(yè)客戶關(guān)系管理與滿意度調(diào)查合同3篇
- 二零二五年度行政合同在社會保障體系中的構(gòu)建與實施2篇
- 二零二五年股東股權(quán)轉(zhuǎn)讓合同范本3篇
- 二零二五年度祠堂傳統(tǒng)節(jié)日慶典活動承包合同3篇
- 二零二五版企業(yè)間借款合同模板與債務(wù)轉(zhuǎn)讓協(xié)議標(biāo)準(zhǔn)范本6篇
- 二零二五年綠色能源板車租賃服務(wù)合同3篇
- 民宿建筑設(shè)計方案
- 干部基本信息審核認(rèn)定表
- 2023年11月外交學(xué)院(中國外交培訓(xùn)學(xué)院)2024年度公開招聘24名工作人員筆試歷年高頻考點(diǎn)-難、易錯點(diǎn)薈萃附答案帶詳解
- 春節(jié)行車安全常識普及
- 電機(jī)維護(hù)保養(yǎng)專題培訓(xùn)課件
- 汽車租賃行業(yè)利潤分析
- 春節(jié)拜年的由來習(xí)俗來歷故事
- 2021火災(zāi)高危單位消防安全評估導(dǎo)則
- 佛山市服務(wù)業(yè)發(fā)展五年規(guī)劃(2021-2025年)
- 房屋拆除工程監(jiān)理規(guī)劃
- 醫(yī)院保安服務(wù)方案(技術(shù)方案)
評論
0/150
提交評論