南京理工大學(xué)C++_第1頁
南京理工大學(xué)C++_第2頁
南京理工大學(xué)C++_第3頁
南京理工大學(xué)C++_第4頁
南京理工大學(xué)C++_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C+ 康 其 桔0教材及參考書目教材:Visual C+程序設(shè)計 蘇州大學(xué)出版社參考書目:C程序設(shè)計 譚浩強著 清華大學(xué)出版社C+程序設(shè)計譚浩強編著 清華大學(xué)出版社C+ 程序設(shè)計教程 錢能主編 清華大學(xué)出版社Effective C+(第三版) Scott Meyers著,候捷譯 電子工業(yè)出版C+ Primer中文版 (美) Stanley B.Lippman, (加) Josee Lajoie著,潘愛民譯 中國電力出版社設(shè)計模式 Erich等著,李英軍等譯 機械工業(yè)出版社設(shè)計模式精解 Alan等著,熊節(jié)翻譯 清華大學(xué)出版社重構(gòu):改善既有代碼的設(shè)計 Martin Fowler著,熊節(jié)、候捷譯 電

2、力出版社代碼大全(第2版) Steve McConnell著,金戈、湯凌、陳碩、張菲譯 電子工業(yè)出版社1課時安排理論:32學(xué)時(2學(xué)分)上機:32學(xué)時(2學(xué)分)2課程簡介第1章 C+概述第2章 數(shù)據(jù)類型、運算符與表達式第3章 簡單的輸入/輸出第4章 C+的流程控制語句第5章 函數(shù)和編譯預(yù)處理第6章 數(shù)組第7章 結(jié)構(gòu)體、共同體和枚舉類型3第8章 指針和引用第9章 類和對象第10章 構(gòu)造函數(shù)和析構(gòu)函數(shù)第11章 繼承和派生類第12章 類的其它特性第13章 運算符重載第14章 輸入/輸出流類庫課程簡介4第1章 C概述51.了解C+的發(fā)展過程、特點2.了解C+程序的基本結(jié)構(gòu)3.了解面向?qū)ο蟪绦蛟O(shè)計的格式

3、4.掌握上機編譯程序的方法本章學(xué)習(xí)目標(biāo)1.1 C+語言的發(fā)展程序設(shè)計語言的發(fā)展過程:機器語言硬件系統(tǒng)能直接理解和執(zhí)行的“0”和“1”的原始語言;開發(fā)軟件難度大、周期長;程序員記憶困難。匯編語言用助記符號來表示各個基本操作;直接處理所有硬件;是各種語言中最快又最有效的語言;容易理解、記憶。高級語言用接近自然語言和數(shù)學(xué)語言的語法符號描述基本操作,屏蔽低級語言硬件細節(jié)的語言,一個模塊對應(yīng)匯編語言中一系列整體運行的指令。例如:求解A+B=? 機器語言10000000 表示“加法”操作 匯編語言ADD A, B 表示執(zhí)行 A+B A高級語言A=A+BC+語句:a=3*a-2*b+1;/將3a-2b+1的

4、值賦給a對應(yīng)的匯編語言:mov eax, DWORD PTR a_$ebp /a放入寄存器eaxlea eax, DWORD PTR eax+eax*2 /eax的內(nèi)容加上2倍eax內(nèi)容放到eaxmov ecx, DWORD PTR b_$ebp /b放入寄存器ecxadd ecx,ecx /ecx內(nèi)容加上ecx內(nèi)容,即2*bsub eax,ecx /eax減去ecx,即3*a-2*binc eax /eax的值加1,即3*a-2*b+1mov DWORD PTR a_$ebp, eax /將eax的值放入a變量中對應(yīng)的機器語言:8b 45 fc8d 04 4003 c92b c14089 4

5、5 fc各種語言的發(fā)展演化過程FORTRANFORTRAN 77FORTRAN90BASICANSI-BASICQBASICVISUAL-BASICDELPHIPASCALALGOLALGOL68SIMULA67SMALLTALKC+JAVAC#BCPLBCTIOBE Programming Community Index for August 2011PositionAug 2011PositionAug 2010Delta in PositionProgramming LanguageRatingsAug 2011Delta Aug 201011 Java19.409%+1.42%22 C

6、17.390%-0.48%33 C+8.433%-1.23%44 PHP6.134%-3.05%56 C#6.042%+1.06%69 Objective-C5.494%+2.34%75 (Visual) Basic5.013%-0.40%87 Python3.415%-0.81%98 Perl2.315%-1.11%1011 JavaScript1.557%-0.84%2001年6月TIOBE編程榜發(fā)布以來,總體只有13個編程語言曾經(jīng)進入前十名。 TIOBE 開發(fā)語言排名是一種編程語言的流行程度的指標(biāo)。該指標(biāo)每月更新一次。市場占有率是根據(jù)世界各地的熟練工程師、課程和第三方供應(yīng)商的數(shù)據(jù)統(tǒng)計來的

7、。 1967年,英國劍橋大學(xué)的Martin Richard推出BCPL (Basic Combined Programming Language)語言。70年,美國貝爾實驗室的Ken Thompson 設(shè)計了B(來源于BCPL),并用B語言寫出一個UNIX操作系統(tǒng)。72到73年間,貝爾實驗室的Dennis M. Ritchie 對B改 進,稱為C。73年,Ken Thompson 和Dennis M. Ritchie合作把UNIX的90%以上用C改寫。78年,Brain W. Kernighan,Dennis M. Ritchie (合稱K&R) 出版了程序設(shè)計語言C ( The C Prog

8、ramming Language),這本書中介紹的C語言成為后來廣泛使用的C語言版本的基礎(chǔ), 標(biāo)準(zhǔn)C83年,ANSI( American National Standards Institute 美國國家標(biāo)準(zhǔn)協(xié)會)開始制定C標(biāo)準(zhǔn),ANSI 87年,ANSI又公布了新的標(biāo)準(zhǔn),87 ANSI 88年,K&R按照ANSI C標(biāo)準(zhǔn)重新修改The C Programming LanguageC的特點C語言是一種結(jié)構(gòu)化的程序設(shè)計語言,語言本身簡潔、使用靈活方便。它既有高級語言的特點,又具有匯編語言的特點。運算符豐富,除了提供對數(shù)據(jù)的算術(shù)邏輯運算外,還提供了二進制的位運算。程序的可移植性好。用C語言在某一種

9、型號的計算機上開發(fā)的程序,基本上可以不作修改,而直接移植到其它型號和不同檔次的計算機上運行。C語言存在著一些局限:C語言的類型檢查機制相對較弱,使得程序中的一些錯誤不能在編譯階段由編譯器檢查出來;C語言本身幾乎沒有支持代碼重用的語言結(jié)構(gòu);C語言不適合開發(fā)大型程序,當(dāng)程序的規(guī)模達到一定的程度時,程序員就很難控制程序的復(fù)雜性。隨著計算機應(yīng)用的復(fù)雜化,傳統(tǒng)的軟件設(shè)計方法顯出了一些弊端,出現(xiàn)了面向?qū)ο蟮拈_發(fā)方法,80年代 Smalltalk。80年美國新澤西州貝爾實驗室 Bjarne Stroustrup 開發(fā)了ith classes (+的原形)83年夏天由Rick Mascitti正式命名為 C+

10、1.2 C+的特點C+全面兼容C語言,它保持了C語言的簡潔、高效等特點,而且比C語言更安全。C+是C語言的一個超集,大多數(shù)的C程序代碼略作修改或不作修改就可在C+的集成環(huán)境下運行或調(diào)試。C+是一種面向?qū)ο蟮某绦蛟O(shè)計語言。它使得程序的各個模塊的獨立性更強,程序的可讀性和可理解性更好,程序代碼的結(jié)構(gòu)性更加合理。這對于設(shè)計和調(diào)試一些大的軟件,尤為重要。用C+設(shè)計的程序,擴充性強。C+與C的關(guān)系 C語言 面向?qū)ο驝+語言哪些程序是用C+寫的: 主流的操作系統(tǒng),Windows內(nèi)核都是用C語言和匯編寫的,上層高級特性是用C+寫的。 魔獸世界等幾乎所有的網(wǎng)絡(luò)游戲,百度搜索引擎,我們所用的大多數(shù)軟件都是用C+

11、寫的(硬件也有很多用到C+的)。 以下是一些C+的應(yīng)用: Amazon:Software for large-scale e-commerce Apple: OS X is written in a mix of language, but a few important parts are C+(當(dāng)然最核心的部分都是匯編與c語言). AT&T:The largest US telecommunications provider. o provisioning systems o systems for rapid network recovery after failure Autodesk

12、: A large number of major number of application in the CAD domain Ericsson: o server platform. o TDMA-CDMA HLR o GSM-TDMA-CDMA mobility gateway Google: web search engine, etc。 HP: Here is a tiny fraction of HPs C+ apps: o C, C+, Fortran90 compilers, and linker for the new HP IA64 platform (these add

13、 to more than 1 million lines of C+ code). IBM: o OS/400. o K42: a high performance, open source, general-purpose operating system kernel for cache-coherent multiprocessors. Intel: o Vtune performace analysis software o compilers and optimizers o lots of chip design and manufacturing software JPL (J

14、et Propulsion Lab, NASA): Mars rover autonomous driving system (incl. scene analysis and route planning). C+ on Mars! Also lots of supporting software on the ground (i.e. Earth). Microsoft: o Windows XP o Windows NT (NT4 and 2000) o Windows 9x (95, 98, Me) o Microsoft Office (Word, Excel, Access, Po

15、werPoint, Outlook) o Internet Explorer (including Outlook Express) o Visual Studio o SQL Mozilla: Firefox browser and Thunderbird mail client (open source) MySQL: MySQL Server (about 250,000 lines of C+) and MySQL Cluster. Arguably the worlds most popular open source database Nokia: o Mobile Communi

16、cations radio-station/internet bridges: FlexiGGSN (Gateway GPRS Support Node) and FlexiSGSN (Server GPRS Support Node). o MSC/HLR Sun: o The HotSpot Java Virtual Machine is written in C+ Symbian OS: rationale: . using C+ for all system code, from the kernel upwards. This is one of the most widesprea

17、d OSs for cellular phones KDE from linux is written in C+. telephone systems: I think it would be almost easier to list the systems which arent written in C+ C+寫出的軟件,還包括 VLC, 著名的開源視頻播放器; LAMMPS,著名分子動力學(xué)模擬軟件,其中包括一部分Fortran代碼; 1.3 面向?qū)ο蟮某绦蛟O(shè)計概述正確性??勺x性和可理解性。程序結(jié)構(gòu)好程序中增加注釋程序書寫格式規(guī)范可維護性。構(gòu)思好,程序簡短,執(zhí)行速度快。程序:是為解決某

18、一問題而編寫的語句序列。即,將解決一個實際問題的具體操作步驟用某種計算機語言描述出來,就形成了程序。面向過程的程序設(shè)計 又稱為結(jié)構(gòu)化程序設(shè)計,其主要思想是功能分解并逐步求精。例如: 統(tǒng)計一個公司中每一個員工的平均工資?可以拆分成若干子任務(wù):統(tǒng)計出一個人的收入計算總共有多少員工計算工資總額用員工人數(shù)去除工資總額其中,計算工資總額又可以分為一系列子任務(wù):讀取每個員工的檔案讀出工資數(shù)額把工資加到總計中讀取下個員工的檔案類似地,讀取每個員工檔案又可以分解:打開檔案找出正確記錄從磁盤讀取數(shù)據(jù)面向過程的程序設(shè)計方法的缺陷:當(dāng)數(shù)據(jù)量增大時,數(shù)據(jù)與處理這些數(shù)據(jù)的方法之間的分離使程序變得越來越難以理解;對于程序

19、員來說,每一種相對于老問題的新方法都要帶來額外的開銷,造成所謂的重復(fù)投入。面向?qū)ο蟮某绦蛟O(shè)計OOP (Object Oriented Programming)本質(zhì)是把數(shù)據(jù)和處理數(shù)據(jù)的過程當(dāng)成一個整體對象OOP的要素封裝性繼承和派生性重載性多態(tài)性1.4 簡單的C+程序介紹高級語言一般都是在一個集成開發(fā)環(huán)境(Integration Development Environment,IDE)中進行編輯、編譯、運行的?;靖拍睿涸闯绦蚴褂迷凑Z言編寫的、有待翻譯的程序。*.c稱為C源程序,*.cpp稱為C+源程序。 目標(biāo)程序源程序經(jīng)過翻譯加工后所生成的程序,一般使用機器語言表示,也稱為目標(biāo)代碼,*.obj

20、文件。 可執(zhí)行程序目標(biāo)程序不能直接運行,必須將目標(biāo)程序和所有的資源進行連接,生成可執(zhí)行文件才能夠運行,*.exe文件。翻譯程序用來將源程序翻譯成目標(biāo)程序的工具,源程序是輸入,目標(biāo)程序是輸出,分為三類:匯編程序?qū)R編語言編寫的源程序翻譯成機器語言形式編譯程序?qū)⒏呒壵Z言編寫的源程序翻譯成機器語言形式的目標(biāo)程序解釋程序?qū)⑹褂酶呒壵Z言編寫的源程序翻譯成機器指令解釋程序與編譯程序的區(qū)別在于邊翻譯邊執(zhí)行連接程序用來將匯編程序或編譯程序生成的目標(biāo)程序加上所需的其它資源進行連接,生成可執(zhí)行文件的程序,目標(biāo)程序是輸入,可執(zhí)行程序是輸出。開發(fā)C+程序的過程: 在Visual C+系統(tǒng)中,可直接從源程序編譯連接至可

21、執(zhí)行程序,但依然要生成*.OBJ及*.EXE這兩個文件。源程序(文本文件)*.CPP目標(biāo)文件(二進制文件)*.OBJ可執(zhí)行文件(二進制文件)*.EXE庫文件(各種函數(shù))編譯連接compilelink一個簡單的C+程序 /* C+程序的基本結(jié)構(gòu) */ #include void main(void ) cout i; /從鍵盤上輸入變量i的值 cout i的值為: in; / 輸出變量i的值主函數(shù)函數(shù)體開始函數(shù)體結(jié)束輸出流,在屏幕上打印引號內(nèi)的字符串分號,一條完整語句的結(jié)束符包含文件注釋或說明輸入流C+程序的組成部分:注釋 程序員為作者所作的說明,用來提高程序的可讀性?!?”用于注釋一行說明,“/*”和“*/”配合使用用來注釋一段說明。編譯預(yù)處理所有以“#”開頭的代碼,都稱為編譯預(yù)處理。程序主體 正式的程序從代碼“void main()”開始,每個程序有且僅有一個main()函數(shù)。1.5 Visual C+程序的上機過程VC為用戶提供了一個集成開發(fā)環(huán)境,包括:源程序的輸入、編輯和修改源程序的編譯和連接程序運行期間的調(diào)試與跟蹤項目的自動管理為程序開發(fā)提供工具、窗口管理、聯(lián)機幫助等VC +運行界面 界

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論