C++優(yōu)秀課件PPT.ppt_第1頁(yè)
C++優(yōu)秀課件PPT.ppt_第2頁(yè)
C++優(yōu)秀課件PPT.ppt_第3頁(yè)
C++優(yōu)秀課件PPT.ppt_第4頁(yè)
C++優(yōu)秀課件PPT.ppt_第5頁(yè)
已閱讀5頁(yè),還剩38頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1 0本科程在專(zhuān)業(yè)學(xué)習(xí)中的地位1 1程序設(shè)計(jì)語(yǔ)言1 2C 前史1 3C 1 4C 編程流程1 5最小樣板程序1 6程序與算法1 7過(guò)程化程序設(shè)計(jì)1 8對(duì)象化程序設(shè)計(jì)1 9小結(jié) 1 0本科程在專(zhuān)業(yè)學(xué)習(xí)中的地位 本科程學(xué)習(xí)的高端目標(biāo) 1 程序設(shè)計(jì)競(jìng)賽 2 初級(jí)程序員 證書(shū) 第四 五學(xué)期相當(dāng)于實(shí)習(xí)工程師 本科畢業(yè) 3 中級(jí)程序員 證書(shū) 第五 六學(xué)期相當(dāng)于助理工程師 本科畢業(yè)工作1年以上 4 高級(jí)程序員 證書(shū) 第六 七學(xué)期相當(dāng)于工程師 本科畢業(yè)工作5年以上 5 軟件設(shè)計(jì)師 證書(shū) 第七 八學(xué)期相當(dāng)于高級(jí)工程師 本科畢業(yè)工作9年以上 C 到底難不難學(xué) 它從開(kāi)始誕生以來(lái) 發(fā)展勢(shì)頭一直旺到現(xiàn)在 背后一定也有它的道理 C 綜合了各家之長(zhǎng) 功能多 操作起來(lái)簡(jiǎn)單 有人說(shuō)它難學(xué) 這是正常的 否則 一學(xué)就會(huì)的東西 還用得著努力教和學(xué)嗎 至于學(xué)習(xí)的結(jié)果 就因人而異 甚至大相徑庭了 難怪有的人趣味盎然 有的人大嘆苦經(jīng) 中國(guó)古代有名畫(huà)家王冕就是因?yàn)樾欧盍诉@樣一句話(huà)而成才的 沒(méi)有學(xué)不會(huì)的事情 1 1程序設(shè)計(jì)語(yǔ)言 ProgrammingLanguage 人們用程序設(shè)計(jì)語(yǔ)言描述需要解決的問(wèn)題 用 語(yǔ)言翻譯 編譯器 加工以使計(jì)算機(jī)理解其描述 爾后就能使計(jì)算機(jī)代替人們工作了 雖然編程語(yǔ)言最終目的是促使計(jì)算機(jī)為人們工作 但人們用編程語(yǔ)言對(duì)問(wèn)題的描述方式與內(nèi)容 隨著使用群體的擴(kuò)大 越來(lái)越多地成為人們之間相互交流過(guò)程描述與信息表達(dá)的工具 計(jì)算機(jī)上的機(jī)器指令也稱(chēng)為機(jī)器代碼 它是機(jī)器語(yǔ)言的程序 機(jī)器語(yǔ)言是低級(jí)語(yǔ)言 匯編語(yǔ)言是機(jī)器語(yǔ)言的直接符號(hào)表示 所以基本上也是低級(jí)語(yǔ)言 而C 則是高級(jí)語(yǔ)言 moveax DWORDPTRa ebp 8b45fc leaeax DWORDPTR eax eax 2 8d0440 movecx DWORDPTRb ebp 8b4df8 addecx ecx03c9 subeax ecx2bc1 inceax40 movDWORDPTRa ebp eax8945fc 匯編語(yǔ)言和某個(gè)特定的機(jī)器語(yǔ)言 程序語(yǔ)言越低級(jí) 則必須對(duì)過(guò)程描寫(xiě)越具體 指令也就越接近機(jī)器的硬件邏輯 程序語(yǔ)言越高級(jí) 就越接近對(duì)問(wèn)題的描述與表達(dá) 因而更直觀 容易被人們所理解 程序語(yǔ)言從低級(jí)到高級(jí)的發(fā)展 也就是從具體描述 編程 到抽象描述 編程 高級(jí)語(yǔ)言的抽象描述最后都需用 語(yǔ)言編譯器 自動(dòng)轉(zhuǎn)化成機(jī)器的具體實(shí)現(xiàn) 語(yǔ)言編譯器的發(fā)展 則是從簡(jiǎn)單到復(fù)雜的過(guò)程 語(yǔ)言越是高級(jí) 描述越是抽象 則用于自動(dòng)化轉(zhuǎn)換的語(yǔ)言編譯器越復(fù)雜 以便人們對(duì)問(wèn)題只需有個(gè)相對(duì)簡(jiǎn)單的描述 編程 就能夠被機(jī)器所理解 1 2C 前史 Pre C history 1953年12月 IBM公司的JohnBackus寫(xiě)了一份備忘錄 建議為IBM704設(shè)計(jì)一種全新的編程語(yǔ)言 Backus多年工作在計(jì)算機(jī)上 深切體會(huì)到編程困難 他的目標(biāo)是設(shè)計(jì)一種用于科學(xué)計(jì)算的 公式翻譯語(yǔ)言 他帶領(lǐng)的一個(gè)團(tuán)隊(duì) 終于在1954年完成了FORTRAN語(yǔ)言的設(shè)計(jì)和實(shí)現(xiàn) 在那以后 不同版本的FORTRAN語(yǔ)言紛紛面世 1966年 美國(guó)統(tǒng)一了它的標(biāo)準(zhǔn) 稱(chēng)為FORTRAN66語(yǔ)言 此后 又被更新為FORTRAN77和FORTRAN90 FORTRAN語(yǔ)言的后繼版本要兼容以前大量的FORTRAN老程序 這一負(fù)擔(dān)阻礙了它 無(wú)法革新成現(xiàn)代編程語(yǔ)言特征 但不管怎樣 FORTRAN語(yǔ)言一直活躍了40多年 Backus為此摘取了1977年度的 圖靈獎(jiǎng) 代數(shù)語(yǔ)言ALGOL 1958年 一個(gè)國(guó)際商業(yè)和學(xué)術(shù)計(jì)算機(jī)科學(xué)家組成的委員會(huì)在瑞士開(kāi)會(huì) 探討改進(jìn)FORTRAN問(wèn)題 并嘗試設(shè)計(jì)一種標(biāo)準(zhǔn)化的計(jì)算機(jī)語(yǔ)言 1960年 該委員會(huì)在1958年討論的基礎(chǔ)上 定義了一種新的語(yǔ)言 國(guó)際代數(shù)語(yǔ)言ALGOL60 首次引入了局部變量和遞歸概念 在數(shù)學(xué)表達(dá)和算法描述上比FORTRAN更出色 而且它不是解釋執(zhí)行 而是編譯后運(yùn)行 比FORTRAN程序效率更高 但由于ALGOL語(yǔ)言的設(shè)計(jì)要求是獨(dú)立于機(jī)器的 所以就面臨許多語(yǔ)言實(shí)現(xiàn)方面的技術(shù)問(wèn)題 致使ALGOL語(yǔ)言無(wú)法流行 但它卻演變?yōu)槠渌幊陶Z(yǔ)言設(shè)計(jì)的概念基礎(chǔ) 科學(xué)計(jì)算借助于FORTRAN獲得快速進(jìn)展的時(shí)候 還沒(méi)有一種適用于商業(yè)計(jì)算的語(yǔ)言 美國(guó)國(guó)防部注意到了這種情況 1959年5月 五角大樓委托GraceMurrayHopper博士領(lǐng)導(dǎo)一個(gè)委員會(huì) 開(kāi)始設(shè)計(jì)面向商業(yè)的通用語(yǔ)言COBOL COBOL最重要的特征是語(yǔ)法與英文很接近 可以讓不懂計(jì)算機(jī)的人也能看懂程序 1968年 COBOL語(yǔ)言進(jìn)行了標(biāo)準(zhǔn)化 后又在1974年和1984年進(jìn)行了標(biāo)準(zhǔn)化更新 COBOL語(yǔ)言曾經(jīng)風(fēng)靡一時(shí) 商用語(yǔ)言COBOL BASIC語(yǔ)言 60年代中期 美國(guó)Dartmouth學(xué)院的JohnG Kemeney和ThomasE Kurtz認(rèn)為 像FORTRAN這樣的編程語(yǔ)言 都是為專(zhuān)業(yè)人員設(shè)計(jì)的 而他們希望能為無(wú)經(jīng)驗(yàn)的人提供一種簡(jiǎn)單的編程語(yǔ)言 特別希望那些非計(jì)算機(jī)專(zhuān)業(yè)的學(xué)生也能通過(guò)這種語(yǔ)言學(xué)會(huì)使用計(jì)算機(jī) 于是 他們?cè)诤?jiǎn)化FORTRAN的基礎(chǔ)上 研究出了BASIC語(yǔ)言 由于BASIC語(yǔ)言易學(xué)易用 很快就成為最流行的計(jì)算機(jī)語(yǔ)言之一 幾乎所有小型和個(gè)人計(jì)算機(jī)都使用它 BASIC語(yǔ)言發(fā)展到后來(lái) 出現(xiàn)了許多改版 典型的有1983年推出的TrueBASIC 1985年推出的QBASIC 以及1991年推出的VisualBASIC 簡(jiǎn)稱(chēng)VB VB一直風(fēng)靡至今長(zhǎng)盛不衰 Lisp語(yǔ)言 同在60年代中期 美國(guó)MIT的JohnMcCarthy等人設(shè)計(jì)和實(shí)現(xiàn)了用于人工智能研究的Lisp語(yǔ)言 Lisp語(yǔ)言是基于表處理的函數(shù)語(yǔ)言 由于該語(yǔ)言更面向問(wèn)題 因此較容易編程 描述能力更強(qiáng) 更易于進(jìn)行程序正確性驗(yàn)證和軟件維護(hù) 但由于實(shí)現(xiàn)技術(shù)復(fù)雜 處理文件等能力不強(qiáng) 運(yùn)行效率低 該工具一直停留在實(shí)驗(yàn)室階段 計(jì)算機(jī)教學(xué)語(yǔ)言LOGO和結(jié)構(gòu)化的編程語(yǔ)言Pascal 1967年 美國(guó)麻省理工大學(xué)人工智能實(shí)驗(yàn)室S Papert為兒童設(shè)計(jì)了一種LOGO編程語(yǔ)言 他用LOGO語(yǔ)言啟發(fā)孩子們的學(xué)習(xí)與思考 一些孩子用LOGO語(yǔ)言設(shè)計(jì)出了真正的程序 于是LOGO成為一種熱門(mén)的計(jì)算機(jī)教學(xué)語(yǔ)言 1971年 瑞士聯(lián)邦技術(shù)學(xué)院N Wirth教授發(fā)明了Pascal語(yǔ)言 Pascal語(yǔ)言語(yǔ)法嚴(yán)謹(jǐn) 層次分明 程序易寫(xiě) 具有很強(qiáng)的可讀性 是第一個(gè)結(jié)構(gòu)化的編程語(yǔ)言 它一出世就受到廣泛歡迎 為此 他獲得1984年度的 圖靈獎(jiǎng) Simula67語(yǔ)言 1967年 挪威奧斯陸的JohanDahl和KristenNygaard推出了Simula67語(yǔ)言 該語(yǔ)言第一次提出類(lèi)的概念 能夠把應(yīng)用中的概念直接用編程語(yǔ)言描述 比其他語(yǔ)言編寫(xiě)的程序更具可讀性 而且編譯系統(tǒng)捕捉類(lèi)型錯(cuò)誤的能力十分強(qiáng) 保證了程序規(guī)模擴(kuò)大之后 錯(cuò)誤量不會(huì)非線(xiàn)性增長(zhǎng) 該語(yǔ)言曾配置在好幾個(gè)大型計(jì)算機(jī)上 但由于編譯實(shí)現(xiàn)不完善 導(dǎo)致運(yùn)行效率低下 只能執(zhí)行一些小型程序 所以像ALGOL語(yǔ)言一樣 沒(méi)能流行 但成為未來(lái)面世的面向?qū)ο缶幊陶Z(yǔ)言的概念基礎(chǔ) C語(yǔ)言 1970年 AT T的Bell實(shí)驗(yàn)室D Ritchie和K Thompson共同發(fā)明了C語(yǔ)言 研制C語(yǔ)言的初衷是用它編寫(xiě)UNIX系統(tǒng)程序 因此 它實(shí)際上是UNIX的 副產(chǎn)品 它充分結(jié)合了匯編語(yǔ)言和高級(jí)語(yǔ)言的優(yōu)點(diǎn) 高效而靈活 又容易移植 所以大受程序設(shè)計(jì)師的青睞 成為計(jì)算機(jī)產(chǎn)業(yè)界的寵兒 為此 他們兩位獲得了1983年度的 圖靈獎(jiǎng) C 語(yǔ)言 70年代中期 BjarneStroustrup在劍橋大學(xué)計(jì)算機(jī)中心工作 他使用過(guò)Simula和ALGOL 實(shí)現(xiàn)過(guò)低級(jí)語(yǔ)言BCPL 接觸過(guò)C 他對(duì)Simula的類(lèi)體系感受頗深 對(duì)ALGOL的結(jié)構(gòu)也頗有好感 他深知運(yùn)行效率的意義 所以 十分欣賞C語(yǔ)言 以C為背景 以Simula思想為基礎(chǔ) 正好符合既要編程簡(jiǎn)單 正確可靠 又要運(yùn)行高效 可移植的設(shè)想 1979年 BjarneStroustrup到了Bell實(shí)驗(yàn)室 開(kāi)始從事將C改良為帶類(lèi)的C Cwithclasses 的工作 1983年將該語(yǔ)言正式命名為C 90年代 程序員開(kāi)始慢慢從C中淡出 轉(zhuǎn)入C 此后 C 穩(wěn)步發(fā)展 1998年ISO ANSIC 標(biāo)準(zhǔn)正式制定 如今已是如日中天 鑒于C 對(duì)現(xiàn)代計(jì)算機(jī)產(chǎn)業(yè)的貢獻(xiàn) 1995年 BYTE 雜志將BjarneStroustrup列入 計(jì)算機(jī)工業(yè)20個(gè)最具影響力的人 1 3C C 是從C語(yǔ)言中繼承而來(lái)的 C 的發(fā)展壯大 主要是因?yàn)槌绦蛟O(shè)計(jì)方法的發(fā)展 程序設(shè)計(jì)方法的發(fā)展 主要是計(jì)算機(jī)應(yīng)用范圍的擴(kuò)大和編程規(guī)模的擴(kuò)大 C語(yǔ)言之所以風(fēng)靡一時(shí) 在于當(dāng)時(shí)需要計(jì)算機(jī)解決的問(wèn)題多半是小規(guī)模問(wèn)題 一般通過(guò)單臺(tái)計(jì)算機(jī)獨(dú)立蠻算便可解決 隨著計(jì)算機(jī)的發(fā)展 人們開(kāi)始著手解決大數(shù)據(jù)量的處理問(wèn)題 需要處理大量復(fù)雜結(jié)構(gòu)的數(shù)據(jù) C程序員雖然經(jīng)過(guò)艱苦的努力 設(shè)計(jì)出許多精巧的程序 但是在理解上卻越來(lái)越困難 運(yùn)行問(wèn)題也越來(lái)越多 程序需要 保修 可維護(hù)性要求 需要 擴(kuò)充 可擴(kuò)展性要求 需要 加固 安全性要求 而這些精巧的程序由于內(nèi)在結(jié)構(gòu)的弱點(diǎn) 數(shù)據(jù)結(jié)構(gòu)與算法盤(pán)根錯(cuò)節(jié) 無(wú)法被可逆地拆解 很難分析 險(xiǎn)情 和重新使用 設(shè)計(jì)計(jì)算機(jī)語(yǔ)言的專(zhuān)家要改革這一現(xiàn)狀 提出程序設(shè)計(jì)語(yǔ)言應(yīng)該具有數(shù)據(jù)類(lèi)型的擴(kuò)充能力 于是基于數(shù)據(jù)類(lèi)型和面向數(shù)據(jù)類(lèi)型的編程語(yǔ)言不斷浮出水面 這些方法 是以程序員自己定義或設(shè)計(jì)數(shù)據(jù)類(lèi)型的方式將復(fù)雜結(jié)構(gòu)的數(shù)據(jù)進(jìn)行系統(tǒng)的組織 統(tǒng)一的管理 以使程序組織合理 算法設(shè)計(jì)簡(jiǎn)單和易懂 C 便是其中之一 從商業(yè)化角度看 C 更是其中的跤跤者 在C的簡(jiǎn)捷 高效的基礎(chǔ)上 C 添加了自定義數(shù)據(jù)類(lèi)型的整套設(shè)施 以適應(yīng)大規(guī)模編程的需要 因此 進(jìn)入市場(chǎng)后 面向?qū)ο蟮木幊谭椒ㄒ查_(kāi)始工業(yè)化了 C繼承者 C 對(duì)C的繼承是青出于藍(lán)而勝于藍(lán) 因?yàn)槭菍?duì)C的繼承 也就承諾了對(duì)C的包容 C 對(duì)C的包容 也包括對(duì)程序設(shè)計(jì)方法的包容 這就決定了C 擅長(zhǎng)面向?qū)ο蟪绦蛟O(shè)計(jì)的同時(shí) 還可以進(jìn)行基于過(guò)程的程序設(shè)計(jì) 因而C 就適應(yīng)的問(wèn)題規(guī)模而論 大小由之 C 是一種混合型程序設(shè)計(jì)語(yǔ)言 混合 體現(xiàn)在可以采用不同的程序設(shè)計(jì)方法 進(jìn)行各種目的的編程 混合 意味著絕不放棄計(jì)算機(jī)高效運(yùn)行的實(shí)用性特征 而又致力于提高大規(guī)模程序的編程質(zhì)量 提高程序設(shè)計(jì)語(yǔ)言的問(wèn)題描述能力 標(biāo)準(zhǔn)C 有了C 標(biāo)準(zhǔn) 專(zhuān)家們?cè)陂_(kāi)發(fā)C 編譯器時(shí) 可以避免大量的研究無(wú)序性和重復(fù)勞動(dòng) 并且也為組織大規(guī)模的編譯軟件開(kāi)發(fā)創(chuàng)造了前提條件 有了C 標(biāo)準(zhǔn)文檔 語(yǔ)言設(shè)計(jì)者 程序員和用戶(hù)三者就可以有一致的語(yǔ)言來(lái)互通 在程序員社區(qū)可以暢通地交流 編寫(xiě)的程序變得更有效 更通用 更易懂 有了C 標(biāo)準(zhǔn) 程序員所開(kāi)發(fā)的軟件產(chǎn)品具有更高的系統(tǒng)可移植性 C 標(biāo)準(zhǔn)還在防止技術(shù)封鎖 促進(jìn)軟件技術(shù)的交流 提高軟件競(jìng)爭(zhēng)力等方面起到了很好的保護(hù)作用 所以當(dāng)C 發(fā)展到一定規(guī)模的時(shí)候 無(wú)論是用戶(hù) 程序員 還是C 語(yǔ)言的設(shè)計(jì)者 都在竭力推動(dòng)標(biāo)準(zhǔn)化的工作 使用標(biāo)準(zhǔn)C 也意味著程序員可以充分享用C 的資源 標(biāo)準(zhǔn)庫(kù) 從而帶來(lái)更多的快速和方便 提高抽象編程的程度 所以 學(xué)習(xí)C 理所當(dāng)然地要學(xué)習(xí)標(biāo)準(zhǔn)C 在我國(guó) 個(gè)人計(jì)算機(jī)配置的操作系統(tǒng)以Windows居多 比較容易獲得的標(biāo)準(zhǔn)C 工具就是Borland公司的C Builder6或者以上版本 或者微軟公司的VisualC net或者以上版本 若在linux系統(tǒng)上 比較容易獲得的標(biāo)準(zhǔn)C 工具就是BorlandC Kylix3 0以上版本 另外 通用的C 編譯器當(dāng)數(shù)C 3 0了 它即有Windows版本 又有Linux版本 1 4C 編程流程 程序設(shè)計(jì)語(yǔ)言發(fā)展到現(xiàn)在 無(wú)論編譯型還是解釋型 一般都附帶提供一個(gè)集成開(kāi)發(fā)環(huán)境 IntegratedDevelopmentEnvironment IDE 程序員可以在該環(huán)境中 編輯程序代碼 逐個(gè)編譯源文件 裝配和鏈接全部源文件及其資源文件 直至調(diào)試運(yùn)行 甚至軟件包裝和做成軟件產(chǎn)品都可以一體化 解釋型環(huán)境 如VB 中 編輯代碼后 沒(méi)有編譯和鏈接的中間環(huán)節(jié) 可以直接運(yùn)行 方便編程開(kāi)發(fā) 但由于程序運(yùn)行不能離開(kāi)解釋器現(xiàn)場(chǎng) 所以效率上便落了下風(fēng) 對(duì)于規(guī)?;拇蟪绦?低性能表現(xiàn)得更加明顯 所以真正的計(jì)算任務(wù)和中大型軟件開(kāi)發(fā)一般都不用解釋型環(huán)境開(kāi)發(fā) C 語(yǔ)言的程序因?yàn)橐w現(xiàn)高性能 所以都是編譯型的 C 的IDE 集成開(kāi)發(fā)環(huán)境 用解釋型的逐條語(yǔ)句執(zhí)行方式以方便開(kāi)發(fā)調(diào)試 用編譯型的方式來(lái)生成最終能脫離開(kāi)發(fā)環(huán)境的執(zhí)行代碼以提高運(yùn)行效率 IDE功能齊全 調(diào)試功能很強(qiáng) 程序編好后 可以立刻在環(huán)境中調(diào)試以獲得初步測(cè)試結(jié)果 然后 可以方便地做成beta版形式 拿到實(shí)際環(huán)境中進(jìn)一步測(cè)試 最后做成軟件發(fā)行版 一般的編程操作流程為 編輯 edit 編譯 compile 鏈接 link或make或build 調(diào)試 debug 該過(guò)程循環(huán)往復(fù) 直至完成 C 源程序 或稱(chēng)源代碼 sourcecode 簡(jiǎn)稱(chēng)代碼 code 以擴(kuò)展名為 cpp 在Windows環(huán)境中 的文本形式存放 程序被編譯 compile 后 會(huì)生成目標(biāo)代碼 objectcode 以 obj為文件擴(kuò)展名存放 目標(biāo)代碼即機(jī)器代碼 是計(jì)算機(jī)能夠識(shí)別的指令集合 但是 目標(biāo)指令 也稱(chēng)目標(biāo)代碼 還不能在具體的計(jì)算機(jī)上運(yùn)行 因?yàn)槟繕?biāo)代碼只是一個(gè)個(gè)獨(dú)立的程序段 程序段之間還沒(méi)有彼此呼應(yīng) 程序段中用到的C 庫(kù)代碼和其他資源還沒(méi)有掛上 為了把成組的程序段轉(zhuǎn)換為可執(zhí)行程序 必須進(jìn)行鏈接 link 鏈接的過(guò)程就是將目標(biāo)代碼整合 或稱(chēng)轉(zhuǎn)換 成可執(zhí)行文件 可執(zhí)行文件通常以 exe為文件擴(kuò)展名 C 程序在編譯后 通過(guò)同時(shí)鏈接若干個(gè)目標(biāo)文件與若干個(gè)庫(kù)文件而創(chuàng)建可執(zhí)行程序 庫(kù)文件是系統(tǒng)提供的程序鏈接資源 不同公司的IDE產(chǎn)品有不同的后綴 例如 VisualC 的庫(kù)文件的后綴是 lib 標(biāo)準(zhǔn)C 提供C 標(biāo)準(zhǔn)庫(kù) 用戶(hù)庫(kù)是由軟件開(kāi)發(fā)商或程序員提供的 目標(biāo)文件與庫(kù)文件鏈接的結(jié)果 生成計(jì)算機(jī)可執(zhí)行程序 1 5最小樣板程序 MinimumSampleProgram C 編譯器能理解的有標(biāo)準(zhǔn)輸出的最小程序?yàn)?includeintmain std coutintmain std cout helloworld n 程序中 iostream 是C 為特定環(huán)境編制的標(biāo)準(zhǔn)輸入輸出流類(lèi)的標(biāo)準(zhǔn)庫(kù)頭文件 cout 是標(biāo)準(zhǔn)輸出設(shè)備的名字 是操作命令 指示將后面的數(shù)據(jù) 字串 Helloworld n 送到顯示器設(shè)備上去 std 是 名空間 程序中有若干名字 程序規(guī)模大起來(lái)后 難免會(huì)有名字沖突 就好像學(xué)校中遇到同名學(xué)生 A班中有張三 B班中也有張三 當(dāng)A B班在一起上課時(shí) 就有名字沖突問(wèn)題 解決的簡(jiǎn)單辦法就是兩個(gè)張三分別命名為 A班的張三 B班的張三 C 也是這樣來(lái)解決問(wèn)題的 為了防止程序員自己又命名一個(gè) cout 而造成沖突 就特地對(duì)語(yǔ)言專(zhuān)門(mén)提供的標(biāo)準(zhǔn)設(shè)備名 cout 冠以前綴 std 表示 標(biāo)準(zhǔn)庫(kù)中的cout 編程風(fēng)格 ProgrammingStyle C 的程序語(yǔ)法是以空格和換行 回車(chē) 來(lái)區(qū)分詞法單位 以特定的字符來(lái)辨認(rèn)語(yǔ)法的 如 分號(hào) 表示語(yǔ)句的結(jié)束 除此之外 其書(shū)寫(xiě)形式就比較隨意 程序設(shè)計(jì)格式的隨意性 給程序設(shè)計(jì)風(fēng)格帶來(lái)了可朔性 程序設(shè)計(jì)風(fēng)格應(yīng)以可讀性為準(zhǔn)則 合理的緊湊性 模塊整體性 對(duì)齊 鋸齒型嵌套 注釋都是形成特定風(fēng)格的因素 為了讓程序表現(xiàn)出美感 又不致于語(yǔ)句前后內(nèi)容含混不清 結(jié)構(gòu)混亂 語(yǔ)句書(shū)寫(xiě)講究疏密得當(dāng) 高級(jí)程序員的程序風(fēng)格 體現(xiàn)了極大的一貫性和藝術(shù)性 每個(gè)初學(xué)者必須要模仿編程風(fēng)格 隨著編程量的增加 對(duì)程序的感受多多 會(huì)不知不覺(jué)地形成自己獨(dú)特的風(fēng)格 最小樣本程序 min sample cpp 帶標(biāo)準(zhǔn)輸出的最小樣本程序 includeintmain std cout helloWorld n 顯示字符串 1 6程序與算法 Program Algorithm 計(jì)算機(jī)程序是用計(jì)算機(jī)語(yǔ)言所要求的規(guī)范描述出來(lái)的一系列動(dòng)作 它表達(dá)了程序員要求計(jì)算機(jī)執(zhí)行的操作 優(yōu)秀的程序員尤其是C 程序員 追求編程方法的實(shí)效性 這意味著所謂 學(xué)會(huì)計(jì)算機(jī)語(yǔ)言 看得懂語(yǔ)法 了解了語(yǔ)言的描述方法 還是不夠的 它和熟練運(yùn)用計(jì)算機(jī)語(yǔ)言 能用語(yǔ)言高效 正確地描述問(wèn)題 解決問(wèn)題是有天壤之別的 學(xué)習(xí)計(jì)算機(jī)語(yǔ)言在于讓計(jì)算機(jī)準(zhǔn)確地執(zhí)行程序 和學(xué)習(xí)其他語(yǔ)言一樣 都需要一個(gè)充分的實(shí)踐過(guò)程 算法 Algorithm 的定義 1 目的性算法是有求解目的的動(dòng)作序列 算法必須有運(yùn)算結(jié)果 而程序只是強(qiáng)調(diào)過(guò)程性 2 抽象性算法離不開(kāi)數(shù)據(jù)結(jié)構(gòu) 而數(shù)據(jù)結(jié)構(gòu)在具體的計(jì)算機(jī)上實(shí)現(xiàn)要受到表示范圍的限制 算法比具體的程序設(shè)計(jì)抽象層次要高一些 算法甚至不在乎用什么編程語(yǔ)言來(lái)描述 3 研究性算法許多時(shí)候用于理論研究 描述算法的目的是溝通人們的思想 而不是實(shí)現(xiàn) 所以 算法可以用偽編程語(yǔ)言來(lái)描述 編程與結(jié)構(gòu) Programming Structure 編程是為了解決計(jì)算問(wèn)題 計(jì)算問(wèn)題強(qiáng)調(diào)算法 程序設(shè)計(jì)也就是在一定抽象層次上的算法設(shè)計(jì) 這里的抽象層次應(yīng)理解為數(shù)據(jù)的描述方式 當(dāng)許多編程問(wèn)題含有大量縱橫交錯(cuò)的數(shù)據(jù)時(shí) 人們便逐漸意識(shí)到數(shù)據(jù)組織與數(shù)據(jù)結(jié)構(gòu)的重要 意識(shí)到數(shù)據(jù)存在的形式必須脫離程序 1976年 計(jì)算機(jī)專(zhuān)家N Wirth提出這樣的經(jīng)典公式 程序 算法 數(shù)據(jù)結(jié)構(gòu)強(qiáng)調(diào)編程中數(shù)據(jù)結(jié)構(gòu)的描述應(yīng)相對(duì)算法而獨(dú)立 程序不再是單純的過(guò)程體 操作序列 了 不再是單純的算法了 而是算法和數(shù)據(jù)結(jié)構(gòu)的有機(jī)組織 1 7過(guò)程化程序設(shè)計(jì) ProceduralProgramming 過(guò)程化程序設(shè)計(jì)主要體現(xiàn)在算法上 編程就是解決算法如何設(shè)計(jì)問(wèn)題 當(dāng)算法很大時(shí) 就考慮將它按功能劃分 程序組織圍繞算法的切分而展開(kāi) 這一類(lèi)問(wèn)題一般都是小規(guī)模的問(wèn)題 一般的程序設(shè)計(jì)語(yǔ)言都可以勝任 過(guò)程程序設(shè)計(jì)按照問(wèn)題來(lái)設(shè)計(jì)算法 它所使用的是語(yǔ)言中現(xiàn)成的基本數(shù)據(jù)類(lèi)型 問(wèn)題模型反映為過(guò)程結(jié)構(gòu)模型 實(shí)際上就是功能模型 但由于過(guò)程模塊與數(shù)據(jù)的復(fù)雜關(guān)系沒(méi)有清晰地分離出來(lái) 所以它一般都是 具體問(wèn)題具體解決 無(wú)法重復(fù)使用其中的 零部件 而且 問(wèn)題龐大以后 其復(fù)雜性會(huì)無(wú)法收?qǐng)?結(jié)構(gòu)化程序設(shè)計(jì) StructuredProgramming 結(jié)構(gòu)化程序設(shè)計(jì)方法主要體現(xiàn)在過(guò)程的功能劃分與過(guò)程內(nèi)部的編寫(xiě)規(guī)則上 因此它是一種規(guī)范的過(guò)程化程序設(shè)計(jì)思想 結(jié)構(gòu)化程序描述任何實(shí)體的操作序列只需用 順序 選擇 分支 重復(fù) 循環(huán) 三種基本控制結(jié)構(gòu) 結(jié)構(gòu)化程序設(shè)計(jì)中的各個(gè)過(guò)程體和各個(gè)組成部分以模塊來(lái)表示 每個(gè)模塊 其內(nèi)聚性 agregation 越強(qiáng) 外聯(lián)性 association 越少 則模塊獨(dú)立性越好 內(nèi)聚性 即模塊內(nèi)部所涉及的功能越單一越好 這樣一旦修改起來(lái) 就職責(zé)明確 不會(huì)因?yàn)檫@個(gè)原因那個(gè)原因都來(lái)找這個(gè)模塊算帳 外聯(lián)性 即模塊之間的聯(lián)系越少越好 聯(lián)系意味著依賴(lài)性 外聯(lián)性少 模塊的獨(dú)立性就好 獨(dú)立性意味著自說(shuō)自話(huà)地修改本模塊與外界無(wú)關(guān) 因此就容易編程和修改 減少外聯(lián)性還涉及到對(duì)數(shù)據(jù)的分離與歸類(lèi) 將過(guò)程體中的數(shù)據(jù)分離出來(lái) 獨(dú)立地用數(shù)據(jù)結(jié)構(gòu)去描述其數(shù)據(jù)和處理 這都是模塊劃分的原則 1 8對(duì)象化程序設(shè)計(jì) ObjectifiedProgramming 伴隨著人類(lèi)對(duì)計(jì)算機(jī)的依賴(lài)性日益增強(qiáng) 程序規(guī)模不斷擴(kuò)大 模塊數(shù)呈指數(shù)級(jí)遞增 模塊間的數(shù)據(jù)傳遞五花八門(mén) 同一程序中模塊之間的關(guān)系錯(cuò)綜復(fù)雜 結(jié)構(gòu)化程序設(shè)計(jì)的規(guī)范已經(jīng)不能保證程序的正確性 可維護(hù)性和重用性了 人們開(kāi)始意識(shí)到不可能在語(yǔ)言中內(nèi)置所有的待解決問(wèn)題的數(shù)據(jù)結(jié)構(gòu) 必須讓語(yǔ)言具有自建數(shù)據(jù)結(jié)構(gòu)的能力 數(shù)據(jù)結(jié)構(gòu)對(duì)于算法 對(duì)于程序是如此的重要 但當(dāng)時(shí)大多數(shù)語(yǔ)言都沒(méi)有專(zhuān)門(mén)支持對(duì)數(shù)據(jù)結(jié)構(gòu)的直接描述 在C語(yǔ)言中有一種結(jié)構(gòu) struct 類(lèi)型 可以在單純空間上復(fù)合其他數(shù)據(jù)類(lèi)型 描述數(shù)據(jù)的組織 但還是不能避免其數(shù)據(jù)操作的安全問(wèn)題 在大規(guī)模程序設(shè)計(jì)中 問(wèn)題尤其突出 軟件發(fā)展似有一個(gè)不可逾越的極限 因此 在軟件產(chǎn)業(yè)界曾一度有軟件危機(jī)之說(shuō) 其實(shí)浩瀚的編程大軍并非每個(gè)人都必須要精通問(wèn)題的每個(gè)細(xì)節(jié) 這就像使用電視機(jī)的人并非都要精通其內(nèi)部的每個(gè)細(xì)節(jié) 我們可用電視機(jī)的外殼 把電視機(jī)的內(nèi)部電路和外部使用一分為二 外部使用只需要了解電視機(jī)的基本操作方法 內(nèi)部電路提供電視機(jī)的各項(xiàng)功能 兩者都需要一個(gè)共同的規(guī)范 電視機(jī)的按鈕操作功能 抽象數(shù)據(jù)類(lèi)型就是想要描述這一共同的規(guī)范 它描述數(shù)據(jù)的組織和相關(guān)的操作 如果語(yǔ)言能夠自由定義數(shù)據(jù)類(lèi)型 那么 問(wèn)題就能化成以抽象數(shù)據(jù)類(lèi)型為媒介的使用與實(shí)現(xiàn)獨(dú)立的兩部分 因而該語(yǔ)言的解決問(wèn)題的能力一定就強(qiáng) 衡量一個(gè)語(yǔ)言的優(yōu)劣 能否自定義或者說(shuō)擴(kuò)充數(shù)據(jù)類(lèi)型是其重要指標(biāo) C 有一個(gè)類(lèi) class 機(jī)制 這正是C語(yǔ)言欠缺的地方 數(shù)據(jù)類(lèi)型的本質(zhì)是數(shù)據(jù)組織 實(shí)現(xiàn) 和其操作 使用 的捆綁性 當(dāng)對(duì)應(yīng)到具體編程時(shí) 用抽象數(shù)據(jù)類(lèi)型來(lái)界定 就能把編程大軍分為兩個(gè)陣營(yíng) 一個(gè)是專(zhuān)業(yè)性極強(qiáng)的 專(zhuān)門(mén)實(shí)現(xiàn)抽象數(shù)據(jù)類(lèi)型的編程 好比生產(chǎn)電視機(jī)者 另一個(gè)是專(zhuān)門(mén)使用抽象數(shù)據(jù)類(lèi)型的編程 好比使用電視機(jī)者 要能使抽象數(shù)據(jù)類(lèi)型能夠維護(hù)兩大程序員陣營(yíng)的編程利益 必須要在語(yǔ)言的設(shè)計(jì)中加入一些語(yǔ)言機(jī)制 這些語(yǔ)言機(jī)制采用了許多難以想象的技術(shù) 實(shí)現(xiàn)了數(shù)據(jù)封裝 類(lèi)型安全等 而且還必然要使代碼更容易閱讀和維護(hù) 否則沒(méi)有人愿意用 抽象數(shù)據(jù)類(lèi)型的使用 最終像使用基本數(shù)據(jù)類(lèi)型那樣簡(jiǎn)單 對(duì)應(yīng)的實(shí)體就稱(chēng)之為對(duì)象 因此 編程的意義就是算法在對(duì)象之間穿梭 或曰針對(duì)對(duì)象的算法設(shè)計(jì) 所以其相應(yīng)的編程就是對(duì)象化的編程了 無(wú)論是實(shí)現(xiàn)抽象數(shù)據(jù)類(lèi)型的程序員群體 還是使用抽象數(shù)據(jù)類(lèi)型的程序員群體 他們都以同樣的參照在工作 都在做算法設(shè)計(jì)的工作 所以更加直截了當(dāng)而又具體的編程模式變成了 程序 算法 抽象數(shù)據(jù)類(lèi)型 面向?qū)ο蟮某绦蛟O(shè)計(jì) Object OrientedPro

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論