C++第一章基本知識(shí)_第1頁(yè)
C++第一章基本知識(shí)_第2頁(yè)
C++第一章基本知識(shí)_第3頁(yè)
C++第一章基本知識(shí)_第4頁(yè)
C++第一章基本知識(shí)_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、C+,中國(guó)高等院校計(jì)算機(jī)基礎(chǔ)教育課程體系規(guī)劃教材,譚浩強(qiáng) 編著,總 目 錄,第1篇 基 本 知 識(shí) 第1章 C+的初步知識(shí) 第2章 數(shù)據(jù)類型與表達(dá)式 第2篇 面向過(guò)程的程序設(shè)計(jì) 第3章 程序設(shè)計(jì)初步 第4章 函數(shù)與預(yù)處理 第5章 數(shù)組 第6章 指針 第7章 自定義數(shù)據(jù)類型,第3篇 基于對(duì)象的程序設(shè)計(jì) 第8章 類和對(duì)象 第9章 關(guān)于類和對(duì)象的進(jìn)一步討論 第10章 運(yùn)算符重載 第4篇 面向?qū)ο蟮某绦蛟O(shè)計(jì) 第11章 繼承與派生 第12章 多態(tài)性與虛函數(shù) 第13章 輸入輸出流 第14章 C+工具,第1章 C+的初步知識(shí) 第2章 數(shù)據(jù)類型與表達(dá)式,第1篇基 本 知 識(shí),第1章 C+的初步知識(shí),*1.1

2、從C到C+ *1.2 最簡(jiǎn)單的C+程序 1.3 C+程序的構(gòu)成和書(shū)寫(xiě)形式 1.4 C+程序的編寫(xiě)和實(shí)現(xiàn) 1.5 關(guān)于C+上機(jī)實(shí)踐,計(jì)算機(jī)誕生初期,人們要使用計(jì)算機(jī)必須用機(jī)器語(yǔ)言或匯編語(yǔ)言編寫(xiě)程序。世界上第一種計(jì)算機(jī)高級(jí)語(yǔ)言誕生于1954年,它是FORTRAN語(yǔ)言。先后出現(xiàn)了多種計(jì)算機(jī)高級(jí)語(yǔ)言。其中使用最廣泛、影響最大的當(dāng)推BASIC語(yǔ)言和C語(yǔ)言。 BASIC語(yǔ)言是1964年在FORTRAN語(yǔ)言的基礎(chǔ)上簡(jiǎn)化而成的,它是為初學(xué)者設(shè)計(jì)的小型高級(jí)語(yǔ)言。 C語(yǔ)言是1972年由美國(guó)貝爾實(shí)驗(yàn)室的D.M.Ritchie研制成功的。它不是為初學(xué)者設(shè)計(jì)的,而是為計(jì)算機(jī)專業(yè)人員設(shè)計(jì)的。大多數(shù)系統(tǒng)軟件和許多應(yīng)用軟件都

3、是用C語(yǔ)言編寫(xiě)的。,*1.1 從C到C+,但是隨著軟件規(guī)模的增大,用C語(yǔ)言編寫(xiě)程序漸漸顯得有些吃力了。 C+是由AT /使用命名空間std int main( ) coutThis is a C+ program.; return 0; 在運(yùn)行時(shí)會(huì)在屏幕上輸出以下一行信息: This is a C+ program.,*1.2 最簡(jiǎn)單的C+程序,用main代表“主函數(shù)”的名字。每一個(gè)C+程序都必須有一個(gè) main 函數(shù)。main前面的int的作用是聲明函數(shù)的類型為整型。程序第6行的作用是向操作系統(tǒng)返回一個(gè)零值。如果程序不能正常執(zhí)行,則會(huì)自動(dòng)向操作系統(tǒng)返回一個(gè)非零值,一般為-1。 函數(shù)體是由大括

4、號(hào) 括起來(lái)的。本例中主函數(shù)內(nèi)只有一個(gè)以cout開(kāi)頭的語(yǔ)句。注意C+所有語(yǔ)句最后都應(yīng)當(dāng)有一個(gè)分號(hào)。 再看程序的第1行“#include ”,這不是C+的語(yǔ)句,而是C+的一個(gè)預(yù)處理命令,它以“#”開(kāi)頭以與C+語(yǔ)句相區(qū)別,行的末尾沒(méi)有分號(hào)。,#include 是一個(gè)“包含命令”,它的作用是將文件iostream的內(nèi)容包含到該命令所在的程序文件中,代替該命令行。文件iostream的作用是向程序提供輸入或輸出時(shí)所需要的一些信息。iostream是i-o-stream 3個(gè)詞的組合,從它的形式就可以知道它代表“輸入輸出流”的意思,由于這類文件都放在程序單元的開(kāi)頭,所以稱為“頭文件”(head file)

5、。在程序進(jìn)行編譯時(shí),先對(duì)所有的預(yù)處理命令進(jìn)行處理,將頭文件的具體內(nèi)容代替 #include命令行,然后再對(duì)該程序單元進(jìn)行整體編譯。,程序的第2行“using namespace std; ” 的意思是“使用命名空間std”。C+標(biāo)準(zhǔn)庫(kù)中的類和函數(shù)是在命名空間std中聲明的,因此程序中如果需要用到C+標(biāo)準(zhǔn)庫(kù)(此時(shí)就需要用#include命令行),就需要用“using namespace std; ”作聲明,表示要用到命名空間std中的內(nèi)容。 在初學(xué)C+時(shí),對(duì)本程序中的第1,2行可以不必深究,只需知道: 如果程序有輸入或輸出時(shí),必須使用“#include ”命令以提供必要的信息,同時(shí)要用“usin

6、g namespace std;” ,使程序能夠使用這些信息,否則程序編譯時(shí)將出錯(cuò)。,例1.2 求a和b兩個(gè)數(shù)之和。 可以寫(xiě)出以下程序: / 求兩數(shù)之和 (本行是注釋行) #include /預(yù)處理命令 using namespace std; /使用命名空間std int main( ) /主函數(shù)首部 /函數(shù)體開(kāi)始 int a,b,sum; /定義變量 cinab; /輸入語(yǔ)句 sum=a+b; /賦值語(yǔ)句 couta+b=sumendl; /輸出語(yǔ)句 return 0; /如程序正常結(jié)束,向操作系統(tǒng)返回一個(gè)零值 /函數(shù)結(jié)束,本程序的作用是求兩個(gè)整數(shù)a和b之和sum。第1行“/求兩數(shù)之和”是

7、一個(gè)注釋行,C+規(guī)定在一行中如果出現(xiàn)“/”,則從它開(kāi)始到本行末尾之間的全部?jī)?nèi)容都作為注釋。 如果在運(yùn)行時(shí)從鍵盤(pán)輸入 123 456 則輸出為 a+b=579,例1.3 給兩個(gè)數(shù)x和y,求兩數(shù)中的大者。 在本例中包含兩個(gè)函數(shù)。 #include /預(yù)處理命令 using namespace std; int max(int x,int y) /定義max函數(shù),函數(shù)值為整型,形式參數(shù)x,y為整型 /max函數(shù)體開(kāi)始 int z; /變量聲明,定義本函數(shù)中用到的變量z為整型 if(xy) z=x; /if語(yǔ)句,如果xy,則將x的值賦給z else z=y; /否則,將y的值賦給z return(z)

8、; /將z的值返回,通過(guò)max帶回調(diào)用處 /max函數(shù)結(jié)束 int main( ) /主函數(shù), /主函數(shù)體開(kāi)始 int a,b,m; /變量聲明 cinab; /輸入變量a和b的值 m=max(a,b); /調(diào)用max函數(shù),將得到的值賦給m coutmax=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)間隔。,在上面的程序中,max

9、函數(shù)出現(xiàn)在main函數(shù)之前,因此在main函數(shù)中調(diào)用max函數(shù)時(shí),編譯系統(tǒng)能識(shí)別max是已定義的函數(shù)名。如果把兩個(gè)函數(shù)的位置對(duì)換一下,即先寫(xiě)main函數(shù),后寫(xiě)max函數(shù),這時(shí)在編譯main函數(shù)遇到max時(shí),編譯系統(tǒng)無(wú)法知道m(xù)ax代表什么含義,因而無(wú)法編譯,按出錯(cuò)處理。 為了解決這個(gè)問(wèn)題,在主函數(shù)中需要對(duì)被調(diào)用函數(shù)作聲明。上面的程序可以改寫(xiě)如下: #include using namespace std; int main( ) int max(int x,int y); /對(duì)max函數(shù)作聲明 int a,b,c; cinab; c=max(a,b); /調(diào)用max函數(shù),couty) z=x;

10、else z=y; return(z); 只要在被調(diào)用函數(shù)的首部的末尾加一個(gè)分號(hào),就成為對(duì)該函數(shù)的函數(shù)聲明。函數(shù)聲明的位置應(yīng)當(dāng)在函數(shù)調(diào)用之前。,下面舉一個(gè)包含類(class)和對(duì)象(object)的C+程序,目的是使讀者初步了解C+是怎樣體現(xiàn)面向?qū)ο蟪绦蛟O(shè)計(jì)方法的。 例1.4 包含類的C+程序。 #include / 預(yù)處理命令 using namespace std; class Student / 聲明一個(gè)類,類名為Student private: / 以下為類中的私有部分 int num; / 私有變量num int score; / 私有變量score public: / 以下為類中的

11、公用部分 void setdata( ) / 定義公用函數(shù)setdata cinnum; / 輸入num的值 cinscore; / 輸入score的值 ,void display( ) / 定義公用函數(shù)display coutnum=numendl; / 輸出num的值 coutscore=scoreendl; /輸出score的值 ; ; / 類的聲明結(jié)束 Student stud1,stud2; /定義stud1和stud2為Student類的變量,稱為對(duì)象 int main( ) / 主函數(shù)首部 stud1.setdata( ); / 調(diào)用對(duì)象stud1的setdata函數(shù) stud2

12、.setdata( ); / 調(diào)用對(duì)象stud2的setdata函數(shù) stud1.display( ); / 調(diào)用對(duì)象stud1的display函數(shù) stud2.display( ); / 調(diào)用對(duì)象stud2的display函數(shù) return 0; ,在一個(gè)類中包含兩種成員: 數(shù)據(jù)和函數(shù),分別稱為數(shù)據(jù)成員和成員函數(shù)。在C+中把一組數(shù)據(jù)和有權(quán)調(diào)用這些數(shù)據(jù)的函數(shù)封裝在一起,組成一種稱為“類(class)”的數(shù)據(jù)結(jié)構(gòu)。在上面的程序中,數(shù)據(jù)成員num,score和成員函數(shù)setdata,display組成了一個(gè)名為Student的“類”類型。成員函數(shù)是用來(lái)對(duì)數(shù)據(jù)成員進(jìn)行操作的。也就是說(shuō),一個(gè)類是由一批

13、數(shù)據(jù)以及對(duì)其操作的函數(shù)組成的。 類可以體現(xiàn)數(shù)據(jù)的封裝性和信息隱蔽。在上面的程序中,在聲明Student類時(shí),把類中的數(shù)據(jù)和函數(shù)分為兩大類: private(私有的)和public(公用的)。把全部數(shù)據(jù)(num,score)指定為私有的,把全部函數(shù)(setdata,display)指定為公用的。在大多數(shù)情況下,會(huì)把所有數(shù)據(jù)指定為私有,以實(shí)現(xiàn)信息隱蔽。,具有“類”類型特征的變量稱為“對(duì)象”(object)。 程序中第1824行是主函數(shù)。 程序運(yùn)行情況如下: 1001 98.5 (輸入學(xué)生1的學(xué)號(hào)和成績(jī)) 1002 76.5 (輸入學(xué)生2的學(xué)號(hào)和成績(jī)) num=1001 (輸出學(xué)生1的學(xué)號(hào)) sco

14、re=98.5 (輸出學(xué)生1的成績(jī)) num=1002 (輸出學(xué)生2的學(xué)號(hào)) score=76.5 (輸出學(xué)生2的成績(jī)),C+程序的結(jié)構(gòu)和書(shū)寫(xiě)格式歸納如下: (1) 一個(gè)C+程序可以由一個(gè)程序單位或多個(gè)程序單位構(gòu)成。每一個(gè)程序單位作為一個(gè)文件。在程序編譯時(shí),編譯系統(tǒng)分別對(duì)各個(gè)文件進(jìn)行編譯,因此,一個(gè)文件是一個(gè)編譯單元。 (2) 在一個(gè)程序單位中,可以包括以下幾個(gè)部分: 預(yù)處理命令。上節(jié)4個(gè)程序中都包括#include命令。 全局聲明部分(在函數(shù)外的聲明部分)。在這部分中包括對(duì)用戶自己定義的數(shù)據(jù)類型的聲明和程序中所用到的變量的定義。,1.3 C+程序的構(gòu)成和書(shū)寫(xiě)形式, 函數(shù)。函數(shù)是實(shí)現(xiàn)操作的部分

15、,因此函數(shù)是程序中必須有的和最基本的組成部分。每一個(gè)程序必須包括一個(gè)或多個(gè)函數(shù),其中必須有一個(gè)(而且只能有一個(gè))主函數(shù)(main函數(shù))。 但是并不要求每一個(gè)程序文件都必須具有以上3個(gè)部分,可以缺少某些部分(包括函數(shù))。 (3) 一個(gè)函數(shù)由兩部分組成: 函數(shù)首部,即函數(shù)的第一行。包括函數(shù)名、函數(shù)類型、函數(shù)屬性、函數(shù)參數(shù)(形參)名、參數(shù)類型。 一個(gè)函數(shù)名后面必須跟一對(duì)圓括號(hào), 函數(shù)參數(shù)可以缺省,如int main( )。, 函數(shù)體,即函數(shù)首部下面的大括號(hào)內(nèi)的部分。如果在一個(gè)函數(shù)中有多個(gè)大括號(hào),則最外層的一對(duì) 為函數(shù)體的范圍。 函數(shù)體一般包括: 局部聲明部分 (在函數(shù)內(nèi)的聲明部分)。包括對(duì)本函數(shù)中所

16、用到的類型、函數(shù)的聲明和變量的定義。 對(duì)數(shù)據(jù)的聲明既可以放在函數(shù)之外(其作用范圍是全局的),也可以放在函數(shù)內(nèi)(其作用范圍是局部的,只在本函數(shù)內(nèi)有效)。 執(zhí)行部分。由若干個(gè)執(zhí)行語(yǔ)句組成,用來(lái)進(jìn)行有關(guān)的操作,以實(shí)現(xiàn)函數(shù)的功能。,(4) 語(yǔ)句包括兩類。一類是聲明語(yǔ)句,另一類是執(zhí)行語(yǔ)句。 C+對(duì)每一種語(yǔ)句賦予一種特定的功能。語(yǔ)句是實(shí)現(xiàn)操作的基本成分,顯然,沒(méi)有語(yǔ)句的函數(shù)是沒(méi)有意義的。C+語(yǔ)句必須以分號(hào)結(jié)束。 (5) 一個(gè)C+程序總是從main函數(shù)開(kāi)始執(zhí)行的,而不論main函數(shù)在整個(gè)程序中的位置如何。 (6) 類(class)是C+新增加的重要的數(shù)據(jù)類型,是C+對(duì)C的最重要的發(fā)展。有了類,就可以實(shí)現(xiàn)面向

17、對(duì)象程序設(shè)計(jì)方法中的封裝、信息隱蔽、繼承、派生、多態(tài)等功能。在一個(gè)類中可以包括數(shù)據(jù)成員和成員函數(shù),他們可以被指定為私有的(private)和公用的(public)屬性。私有的數(shù)據(jù)成員和成員函數(shù)只能被本類的成員函數(shù)所調(diào)用。,(7)C+程序書(shū)寫(xiě)格式自由,一行內(nèi)可以寫(xiě)幾個(gè)語(yǔ)句, 一個(gè)語(yǔ)句可以分寫(xiě)在多行上。C+程序沒(méi)有行號(hào),也不像FORTRAN或COBOL那樣嚴(yán)格規(guī)定書(shū)寫(xiě)格式(語(yǔ)句必須從某一列開(kāi)始書(shū)寫(xiě))。 (8) 一個(gè)好的、有使用價(jià)值的源程序都應(yīng)當(dāng)加上必要的注釋,以增加程序的可讀性。C+還保留了C語(yǔ)言的注釋形式,可以用“/*/”對(duì)C+程序中的任何部分作注釋。在“/*”和“*/”之間的全部?jī)?nèi)容作為注釋。

18、 用“/”作注釋時(shí),有效范圍只有一行,即本行有效,不能跨行。而用“/*/”作注釋時(shí)有效范圍為多行。只要在開(kāi)始處有一個(gè)“/*”,在最后一行結(jié)束處有一個(gè)“*/”即可。因此,一般習(xí)慣是: 內(nèi)容較少的簡(jiǎn)單注釋常用“/”,內(nèi)容較長(zhǎng)的常用“/*/ ”。,一個(gè)程序從編寫(xiě)到最后得到運(yùn)行結(jié)果要經(jīng)歷以下一些步驟。 1. 用C+語(yǔ)言編寫(xiě)程序 用高級(jí)語(yǔ)言編寫(xiě)的程序稱為“源程序”(source program)。C+的源程序是以.cpp作為后綴的(cpp是c plus plus 的縮寫(xiě))。 2. 對(duì)源程序進(jìn)行編譯 為了使計(jì)算機(jī)能執(zhí)行高級(jí)語(yǔ)言源程序,必須先用一種稱為“編譯器(complier)”的軟件(也稱編譯程序或編譯系統(tǒng)),把源程序翻譯成二進(jìn)制形式的“目標(biāo)程序(object program)”。,1.4 C+程序的編寫(xiě)和實(shí)現(xiàn),編譯是以源程序文件為單位分別編譯的。目標(biāo)程序一般以.obj或.o作為后綴(object 的縮寫(xiě))。編譯的作用是對(duì)源程序進(jìn)行詞法檢查和語(yǔ)法檢查。編譯時(shí)對(duì)文件中的全部?jī)?nèi)容進(jìn)行檢查,編譯結(jié)束后會(huì)顯示出所有的編譯出錯(cuò)信息。一般編譯系統(tǒng)給出的出錯(cuò)信息分為兩種,一

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論