




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1C+C+面向?qū)ο蟪绦蛟O(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì)第1頁/共44頁2 教材 C+程序設(shè)計(jì)譚浩強(qiáng) 清華大學(xué)出版社 C+面向?qū)ο蟪绦蛟O(shè)計(jì)譚浩強(qiáng) 清華大學(xué)出版社第2頁/共44頁3教學(xué)內(nèi)容教學(xué)內(nèi)容第1篇 基 本 知 識(shí)第1章 C+的初步知識(shí)第2章 數(shù)據(jù)類型與表達(dá)式第2篇 面向過程的程序設(shè)計(jì)第3章 程序設(shè)計(jì)初步第4章 函數(shù)與預(yù)處理第5章 數(shù)組第6章 指針第7章 自定義數(shù)據(jù)類型第3頁/共44頁4第3篇 基于對象的程序設(shè)計(jì)第8章 類和對象第9章 關(guān)于類和對象的進(jìn)一步討論第10章 運(yùn)算符重載第4篇 面向?qū)ο蟮某绦蛟O(shè)計(jì)第11章 繼承與派生第12章 多態(tài)性與虛函數(shù)第13章 輸入輸出流第14章 C+工具第4頁/共44頁5第
2、1章 C+的初步知識(shí)第2章 數(shù)據(jù)類型與表達(dá)式第第1 1篇篇基基 本本 知知 識(shí)識(shí)第5頁/共44頁6第第1章章 C+的初步知識(shí)的初步知識(shí)1.1 從C到C+1.2 最簡單的C+程序1.3 C+程序的構(gòu)成和書寫形式1.4 C+程序的編寫和實(shí)現(xiàn)1.5 關(guān)于C+上機(jī)實(shí)踐第6頁/共44頁7計(jì)算機(jī)程序(Computer Program)p計(jì)算機(jī)的工作是用程序(Program)來控制的p程序是指令(Instruction)的集合p指令是計(jì)算機(jī)可以識(shí)別的命令1.1 從C到C+第7頁/共44頁8計(jì)算機(jī)程序語言的發(fā)展:(1)機(jī)器語言:由計(jì)算機(jī)硬件系統(tǒng)可以識(shí)別的二進(jìn)制指令組成的語言稱為機(jī)器語言。計(jì)算機(jī)發(fā)展的初期,軟件
3、工程師們只能用機(jī)器語言來編寫程序。這一階段,在人類的自然語言和計(jì)算機(jī)編程語言之間存在著巨大的鴻溝。(2)匯編語言:將機(jī)器指令映射為一些可以被人讀懂的助記符(Symbol),如ADD、SUB等此時(shí)編程語言與人類語言間的鴻溝略有縮小,但仍與人類的思維相差甚遠(yuǎn)。因?yàn)樗某橄蟪潭忍停绦騿T需要考慮大量的機(jī)器細(xì)節(jié)。第8頁/共44頁9(3)高級(jí)語言屏蔽了機(jī)器的細(xì)節(jié),提高了語言的抽象層次,程序中可以采用具有一定涵義的數(shù)據(jù)命名和容易理解的執(zhí)行語句。這使得在書寫程序時(shí)可以聯(lián)系到程序所描述的具體事物。第9頁/共44頁10世界上第一種計(jì)算機(jī)高級(jí)語言誕生于1954年,它是FORTRAN語言。先后出現(xiàn)了多種計(jì)算機(jī)高級(jí)
4、語言。其中使用最廣泛、影響最大的當(dāng)推BASIC語言和C語言。BASIC語言是1964年在FORTRAN語言的基礎(chǔ)上簡化而成的,它是為初學(xué)者設(shè)計(jì)的小型高級(jí)語言。C語言是1972年由美國貝爾實(shí)驗(yàn)室研制成功的。它不是為初學(xué)者設(shè)計(jì)的,是為了編寫UNIX操作系統(tǒng)的。大多數(shù)系統(tǒng)軟件和許多應(yīng)用軟件都是用C語言編寫的。第10頁/共44頁11C語言的主要特點(diǎn)是:1、C語言是一種結(jié)構(gòu)化的程序設(shè)計(jì)語言,語言本身簡潔、使用靈活方便。既適用于設(shè)計(jì)和編寫大的系統(tǒng)程序,又適用于編寫小的控制程序,也適用科學(xué)計(jì)算。2、它既有高級(jí)語言的特點(diǎn),又具有匯編語言的特點(diǎn)。運(yùn)算符豐富,除了提供對數(shù)據(jù)的算術(shù)邏輯運(yùn)算外,還提供了二進(jìn)制的位運(yùn)算
5、。并且也提供了靈活的數(shù)據(jù)結(jié)構(gòu)。用C語言編寫的程序表述靈活方便,功能強(qiáng)大。用C語言開發(fā)的程序,其結(jié)構(gòu)性好,目標(biāo)程序質(zhì)量高,程序執(zhí)行效率高。第11頁/共44頁123、程序的可移植性好。用C語言在某一種型號(hào)的計(jì)算機(jī)上開發(fā)的程序,基本上可以不作修改,而直接移植到其它型號(hào)的計(jì)算機(jī)上運(yùn)行。4、程序的語法結(jié)構(gòu)不夠嚴(yán)密,程序設(shè)計(jì)的自由度大。這對于比較精通C語言的程序設(shè)計(jì)者來說,可以設(shè)計(jì)出高質(zhì)量的非常通用的程序。但對于初學(xué)者來說,要能比較熟練運(yùn)用C語言來編寫程序,并不是一件容易的事情。與其它高級(jí)語言相比而言,調(diào)試程序比較困難。往往是編好程序輸入計(jì)算機(jī)后,編譯時(shí)容易通過,而在執(zhí)行時(shí)還會(huì)出錯(cuò)。第12頁/共44頁13
6、隨著C語言應(yīng)用的推廣,C語言存在的一些缺陷或不足也開始流露出來,并受到大家的關(guān)注。如:C語言對數(shù)據(jù)類型檢查的機(jī)制比較弱;缺少支持代碼重用的結(jié)構(gòu);隨著軟件工程規(guī)模的擴(kuò)大,難以適應(yīng)開發(fā)特大型的程度等等(由于C語言等高級(jí)語言是面向過程的,最初用于科學(xué)計(jì)算)。第13頁/共44頁14C+是由AT&T Bell(貝爾)實(shí)驗(yàn)室于20世紀(jì)80年代初在C語言的基礎(chǔ)上開發(fā)成功的。C+保留了C語言原有的所有優(yōu)點(diǎn),增加了面向?qū)ο蟮臋C(jī)制。C+是由C發(fā)展而來的,與C兼容。用C語言寫的程序基本上可以不加修改地用于C+。從C+的名字可以看出它是C的超集。C+既可用于面向過程的結(jié)構(gòu)化程序設(shè)計(jì),又可用于面向?qū)ο蟮某绦蛟O(shè)計(jì)
7、,是一種功能強(qiáng)大的混合型的程序設(shè)計(jì)語言。第14頁/共44頁15C+對C的“增強(qiáng)”,表現(xiàn)在兩個(gè)方面: (1) 在原來面向過程的機(jī)制基礎(chǔ)上,對C語言的功能做了不少擴(kuò)充。(2) 增加了面向?qū)ο蟮臋C(jī)制。面向?qū)ο蟪绦蛟O(shè)計(jì),是針對開發(fā)較大規(guī)模的程序而提出來的,目的是提高軟件開發(fā)的效率。不要把面向?qū)ο蠛兔嫦蜻^程對立起來,面向?qū)ο蠛兔嫦蜻^程不是矛盾的,而是各有用途、互為補(bǔ)充的。學(xué)習(xí)C+,既要會(huì)利用C+進(jìn)行面向過程的結(jié)構(gòu)化程序設(shè)計(jì),也要會(huì)利用C+進(jìn)行面向?qū)ο蟮某绦蛟O(shè)計(jì)。第15頁/共44頁16例1.1 輸出一行字符: “This is a C+ program.”。程序如下: #include /包含頭文件ios
8、tream, /用cout輸出時(shí)需要用using namespace std; /使用命名空間stdint main( )coutThis is a C+ program.;/ 上面用C+的方法輸出一行return 0;1.2 最簡單的C+程序主函數(shù)(類型主函數(shù)(類型intint,返回值),返回值)函數(shù)體函數(shù)體預(yù)處理命令預(yù)處理命令在運(yùn)行時(shí)會(huì)在屏幕上輸出以下一行信息:This is a C+ program.第16頁/共44頁17(1)用main代表“主函數(shù)”的名字。每一個(gè)C+程序都必須有一個(gè) main 函數(shù)。main前面的int的作用是聲明函數(shù)的類型為整型。程序第6行的作用是向操作系統(tǒng)返回一個(gè)
9、零值。如果程序不能正常執(zhí)行,則會(huì)自動(dòng)向操作系統(tǒng)返回一個(gè)非零值,一般為-1。(2)函數(shù)體是由大括號(hào) 括起來的。本例中主函數(shù)內(nèi)只有一個(gè)以cout開頭的語句。注意C+所有語句最后都應(yīng)當(dāng)有一個(gè)分號(hào)。第17頁/共44頁18(3)第1行“#include ”,這不是C+的語句,而是C+的一個(gè)預(yù)處理命令,它以“#”開頭以與C+語句相區(qū)別,行的末尾沒有分號(hào)。#include 是一個(gè)“包含命令”,它的作用是將文件內(nèi)容插入到該命令所在的程序文件中,由于iostream這類文件都放在程序單元的開頭,所以稱為“頭文件”(head file)。在程序進(jìn)行編譯時(shí),先對所有的預(yù)處理命令進(jìn)行處理,將頭文件的具體內(nèi)容代替 #i
10、nclude命令行,然后再對該程序單元進(jìn)行整體編譯。第18頁/共44頁19(4)程序的第2行“using namespace std; ” 的意思是“使用命名空間std”C+標(biāo)準(zhǔn)庫中的類和函數(shù)是在命名空間std中聲明的,因此程序中如果需要用到C+標(biāo)準(zhǔn)庫就需要用“using namespace std; ”作聲明,表示要用到命名空間std中的內(nèi)容。第19頁/共44頁20(5)C+程序中可以用/*/做注釋,可以用/做注釋。前者可以做多行注釋,后者只做單行注釋。第20頁/共44頁21例1.2 求a和b兩個(gè)數(shù)之和??梢詫懗鲆韵鲁绦颍?/ 求兩數(shù)之和 (本行是注釋行)#include /預(yù)處理命令usi
11、ng namespace std; /使用命名空間stdint main( ) /主函數(shù)首部 /函數(shù)體開始 int a,b,sum; /定義變量 cinab; /輸入語句 sum=a+b; /賦值語句couta+b=sumendl; /輸出語句return 0; /如程序正常結(jié)束,向操作系統(tǒng)返回一個(gè)零值 /函數(shù)結(jié)束第21頁/共44頁22本程序的作用是求兩個(gè)整數(shù)a和b之和sum。第1行“/求兩數(shù)之和”是一個(gè)注釋行,C+規(guī)定在一行中如果出現(xiàn)“/”,則從它開始到本行末尾之間的全部內(nèi)容都作為注釋。如果在運(yùn)行時(shí)從鍵盤輸入 123 456則輸出為a+b=579第22頁/共44頁23例1.3 給兩個(gè)數(shù)x和y
12、,求兩數(shù)中的大者。在本例中包含兩個(gè)函數(shù)。#include /預(yù)處理命令using namespace std;int max(int x,int y) /定義max函數(shù),函數(shù)值為整型,形式參數(shù) /x,y為整型 /max函數(shù)體開始 int z; /變量聲明,定義本函數(shù)中用到的變量/z為整型 if(xy) z=x; /if語句,如果xy,則將x的值賦給zelse z=y; /否則,將y的值賦給z return(z); /將z的值返回,通過max帶回調(diào)用處 /max函數(shù)結(jié)束int main( ) /主函數(shù)第23頁/共44頁24 /主函數(shù)體開始 int a,b,m; /變量聲明 cinab; /輸入變
13、量a和b的值 m=max(a,b); /調(diào)用max函數(shù),將得到的值賦給mcoutmax=mn; /輸出大數(shù)m的值return 0; /如程序正常結(jié)束,向操作系統(tǒng)返回一個(gè)零值 /主函數(shù)結(jié)束本程序包括兩個(gè)函數(shù):主函數(shù)main和被調(diào)用的函數(shù)max。程序運(yùn)行情況如下: 18 25 (輸入18和25給a和b)max=25 (輸出m的值) 注意輸入的兩個(gè)數(shù)據(jù)間用一個(gè)或多個(gè)空格間隔,不能以逗號(hào)或其他符號(hào)間隔。第24頁/共44頁25在上面的程序中,max函數(shù)出現(xiàn)在main函數(shù)之前,因此在main函數(shù)中調(diào)用max函數(shù)時(shí),編譯系統(tǒng)能識(shí)別max是已定義的函數(shù)名。如果把兩個(gè)函數(shù)的位置對換一下,即先寫main函數(shù),后寫
14、max函數(shù),這時(shí)在編譯main函數(shù)遇到max時(shí),編譯系統(tǒng)無法知道m(xù)ax代表什么含義,因而無法編譯,按出錯(cuò)處理。為了解決這個(gè)問題,在主函數(shù)中需要對被調(diào)用函數(shù)作聲明。上面的程序可以改寫如下:#include using namespace std;int main( ) int max(int x,int y); /對max函數(shù)作聲明 int a,b,c; cinab; c=max(a,b); /調(diào)用max函數(shù)第25頁/共44頁26 coutmax=cy) z=x; else z=y; return(z);只要在被調(diào)用函數(shù)的首部的末尾加一個(gè)分號(hào),就成為對該函數(shù)的函數(shù)聲明。函數(shù)聲明的位置應(yīng)當(dāng)在函數(shù)調(diào)
15、用之前。第26頁/共44頁27C+程序的結(jié)構(gòu)和書寫格式歸納如下: (1) 一個(gè)C+程序可以由一個(gè)程序單位或多個(gè)程序單位構(gòu)成。每一個(gè)程序單位作為一個(gè)文件。在程序編譯時(shí),編譯系統(tǒng)分別對各個(gè)文件進(jìn)行編譯,因此,一個(gè)文件是一個(gè)編譯單元。(2) 在一個(gè)程序單位中,可以包括以下幾個(gè)部分: 預(yù)處理命令。上節(jié)4個(gè)程序中都包括#include命令。 全局聲明部分(在函數(shù)外的聲明部分)。在這部分中包括對用戶自己定義的數(shù)據(jù)類型的聲明和程序中所用到的變量的定義。1.3 C+程序的構(gòu)成和書寫形式第27頁/共44頁28 函數(shù)。函數(shù)是實(shí)現(xiàn)操作的部分,因此函數(shù)是程序中必須有的和最基本的組成部分。每一個(gè)程序必須包括一個(gè)或多個(gè)函
16、數(shù),其中必須有一個(gè)(而且只能有一個(gè))主函數(shù)(main函數(shù))。但是并不要求每一個(gè)程序文件都必須具有以上3個(gè)部分,可以缺少某些部分(包括函數(shù))。(3) 一個(gè)函數(shù)由兩部分組成: 函數(shù)首部,即函數(shù)的第一行。包括函數(shù)名、函數(shù)類型、函數(shù)屬性、函數(shù)參數(shù)(形參)名、參數(shù)類型。一個(gè)函數(shù)名后面必須跟一對圓括號(hào), 函數(shù)參數(shù)可以缺省,如int main( )。第28頁/共44頁29 函數(shù)體,即函數(shù)首部下面的大括號(hào)內(nèi)的部分。如果在一個(gè)函數(shù)中有多個(gè)大括號(hào),則最外層的一對 為函數(shù)體的范圍。函數(shù)體一般包括:局部聲明部分 (在函數(shù)內(nèi)的聲明部分)。包括對本函數(shù)中所用到的類型、函數(shù)的聲明和變量的定義。對數(shù)據(jù)的聲明既可以放在函數(shù)之外
17、(其作用范圍是全局的),也可以放在函數(shù)內(nèi)(其作用范圍是局部的,只在本函數(shù)內(nèi)有效)。執(zhí)行部分。由若干個(gè)執(zhí)行語句組成,用來進(jìn)行有關(guān)的操作,以實(shí)現(xiàn)函數(shù)的功能。第29頁/共44頁30(4) 語句包括兩類。一類是聲明語句,另一類是執(zhí)行語句。 C+對每一種語句賦予一種特定的功能。語句是實(shí)現(xiàn)操作的基本成分,顯然,沒有語句的函數(shù)是沒有意義的。C+語句必須以分號(hào)結(jié)束。(5) 一個(gè)C+程序總是從main函數(shù)開始執(zhí)行的,而不論main函數(shù)在整個(gè)程序中的位置如何。第30頁/共44頁31(6)C+程序書寫格式自由,一行內(nèi)可以寫幾個(gè)語句, 一個(gè)語句可以分寫在多行上。C+程序沒有行號(hào),也不像FORTRAN或COBOL那樣嚴(yán)
18、格規(guī)定書寫格式(語句必須從某一列開始書寫)。(7) 一個(gè)好的、有使用價(jià)值的源程序都應(yīng)當(dāng)加上必要的注釋,以增加程序的可讀性。C+還保留了C語言的注釋形式,可以用“/*/”對C+程序中的任何部分作注釋。在“/*”和“*/”之間的全部內(nèi)容作為注釋。用“/”作注釋時(shí),有效范圍只有一行,即本行有效,不能跨行。而用“/*/”作注釋時(shí)有效范圍為多行。只要在開始處有一個(gè)“/*”,在最后一行結(jié)束處有一個(gè)“*/”即可。因此,一般習(xí)慣是: 內(nèi)容較少的簡單注釋常用“/”,內(nèi)容較長的常用“/*/ ”。第31頁/共44頁32一個(gè)程序從編寫到最后得到運(yùn)行結(jié)果要經(jīng)歷以下一些步驟。1. 用C+語言編寫程序用高級(jí)語言編寫的程序稱
19、為“源程序”(source program)。C+的源程序是以.cpp作為后綴的。2. 對源程序進(jìn)行編譯為了使計(jì)算機(jī)能執(zhí)行高級(jí)語言源程序,必須先用一種稱為“編譯器(complier)”的軟件(也稱編譯程序或編譯系統(tǒng)),把源程序翻譯成二進(jìn)制形式的“目標(biāo)程序(object program)”。1.4 C+程序的編寫和實(shí)現(xiàn)第32頁/共44頁33目標(biāo)程序一般以.obj或.o作為后綴。編譯的作用是對源程序進(jìn)行詞法檢查和語法檢查。編譯時(shí)對文件中的全部內(nèi)容進(jìn)行檢查,編譯結(jié)束后會(huì)顯示出所有的編譯出錯(cuò)信息。一般編譯系統(tǒng)給出的出錯(cuò)信息分為兩種,一種是錯(cuò)誤(error);一種是警告(warning) 。3. 將目標(biāo)文件連接在改正所有的錯(cuò)誤并全部通過編譯后,得到一個(gè)或多個(gè)目標(biāo)文件。此時(shí)要用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 買賣合同范本免
- 鹵肉教學(xué)員合同范本
- 上海企業(yè)記賬報(bào)稅合同范本
- 廠區(qū)白蟻防治合同范本
- 吳中區(qū)工程咨詢合同范本
- 課題立項(xiàng)成果申報(bào)書
- 廠房消防檢測服務(wù)合同范本
- 單位轉(zhuǎn)讓出租車合同范本
- 賣別墅合同范本
- 廠房拆遷工程合同范例
- 思想道德與法治教案第四章:明確價(jià)值要求踐行價(jià)值準(zhǔn)則
- 寧騷版《公共政策學(xué)》課后答案
- 外陰及陰道炎癥
- (綜合治理)修復(fù)工程指南(試行) - 貴州省重金屬污染防治與土壤修復(fù)網(wǎng)
- 公安筆錄模板之詢問嫌疑人(書面?zhèn)鲉局伟舶讣?
- 員工就餐簽到表
- A-level項(xiàng)目介紹(課堂PPT)
- 故障診斷技術(shù)的國內(nèi)外發(fā)展現(xiàn)狀(共3頁)
- 航海計(jì)算軟件---ETA計(jì)算器
- 光伏電站運(yùn)維手冊
- 半導(dǎo)體及集成電路領(lǐng)域的撰寫及常見問題
評(píng)論
0/150
提交評(píng)論