




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、C+,中國高等院校計算機基礎(chǔ)教育課程體系規(guī)劃教材,譚浩強 編著,總 目 錄,第1篇 基 本 知 識 第1章 C+的初步知識 第2章 數(shù)據(jù)類型與表達式 第2篇 面向過程的程序設(shè)計 第3章 程序設(shè)計初步 第4章 函數(shù)與預(yù)處理 第5章 數(shù)組 第6章 指針 第7章 自定義數(shù)據(jù)類型,第3篇 基于對象的程序設(shè)計 第8章 類和對象 第9章 關(guān)于類和對象的進一步討論 第10章 運算符重載 第4篇 面向?qū)ο蟮某绦蛟O(shè)計 第11章 繼承與派生 第12章 多態(tài)性與虛函數(shù) 第13章 輸入輸出流 第14章 C+工具,第1章 C+的初步知識 第2章 數(shù)據(jù)類型與表達式,第1篇基 本 知 識,第1章 C+的初步知識,*1.1
2、從C到C+ *1.2 最簡單的C+程序 1.3 C+程序的構(gòu)成和書寫形式 1.4 C+程序的編寫和實現(xiàn) 1.5 關(guān)于C+上機實踐,計算機誕生初期,人們要使用計算機必須用機器語言或匯編語言編寫程序。世界上第一種計算機高級語言誕生于1954年,它是FORTRAN語言。先后出現(xiàn)了多種計算機高級語言。其中使用最廣泛、影響最大的當(dāng)推BASIC語言和C語言。 BASIC語言是1964年在FORTRAN語言的基礎(chǔ)上簡化而成的,它是為初學(xué)者設(shè)計的小型高級語言。 C語言是1972年由美國貝爾實驗室的D.M.Ritchie研制成功的。它不是為初學(xué)者設(shè)計的,而是為計算機專業(yè)人員設(shè)計的。大多數(shù)系統(tǒng)軟件和許多應(yīng)用軟件都
3、是用C語言編寫的。,*1.1 從C到C+,但是隨著軟件規(guī)模的增大,用C語言編寫程序漸漸顯得有些吃力了。 C+是由AT /使用命名空間std int main( ) coutThis is a C+ program.; return 0; 在運行時會在屏幕上輸出以下一行信息: This is a C+ program.,*1.2 最簡單的C+程序,用main代表“主函數(shù)”的名字。每一個C+程序都必須有一個 main 函數(shù)。main前面的int的作用是聲明函數(shù)的類型為整型。程序第6行的作用是向操作系統(tǒng)返回一個零值。如果程序不能正常執(zhí)行,則會自動向操作系統(tǒng)返回一個非零值,一般為-1。 函數(shù)體是由大括
4、號 括起來的。本例中主函數(shù)內(nèi)只有一個以cout開頭的語句。注意C+所有語句最后都應(yīng)當(dāng)有一個分號。 再看程序的第1行“#include ”,這不是C+的語句,而是C+的一個預(yù)處理命令,它以“#”開頭以與C+語句相區(qū)別,行的末尾沒有分號。,#include 是一個“包含命令”,它的作用是將文件iostream的內(nèi)容包含到該命令所在的程序文件中,代替該命令行。文件iostream的作用是向程序提供輸入或輸出時所需要的一些信息。iostream是i-o-stream 3個詞的組合,從它的形式就可以知道它代表“輸入輸出流”的意思,由于這類文件都放在程序單元的開頭,所以稱為“頭文件”(head file)
5、。在程序進行編譯時,先對所有的預(yù)處理命令進行處理,將頭文件的具體內(nèi)容代替 #include命令行,然后再對該程序單元進行整體編譯。,程序的第2行“using namespace std; ” 的意思是“使用命名空間std”。C+標(biāo)準(zhǔn)庫中的類和函數(shù)是在命名空間std中聲明的,因此程序中如果需要用到C+標(biāo)準(zhǔn)庫(此時就需要用#include命令行),就需要用“using namespace std; ”作聲明,表示要用到命名空間std中的內(nèi)容。 在初學(xué)C+時,對本程序中的第1,2行可以不必深究,只需知道: 如果程序有輸入或輸出時,必須使用“#include ”命令以提供必要的信息,同時要用“usin
6、g namespace std;” ,使程序能夠使用這些信息,否則程序編譯時將出錯。,例1.2 求a和b兩個數(shù)之和。 可以寫出以下程序: / 求兩數(shù)之和 (本行是注釋行) #include /預(yù)處理命令 using namespace std; /使用命名空間std int main( ) /主函數(shù)首部 /函數(shù)體開始 int a,b,sum; /定義變量 cinab; /輸入語句 sum=a+b; /賦值語句 couta+b=sumendl; /輸出語句 return 0; /如程序正常結(jié)束,向操作系統(tǒng)返回一個零值 /函數(shù)結(jié)束,本程序的作用是求兩個整數(shù)a和b之和sum。第1行“/求兩數(shù)之和”是
7、一個注釋行,C+規(guī)定在一行中如果出現(xiàn)“/”,則從它開始到本行末尾之間的全部內(nèi)容都作為注釋。 如果在運行時從鍵盤輸入 123 456 則輸出為 a+b=579,例1.3 給兩個數(shù)x和y,求兩數(shù)中的大者。 在本例中包含兩個函數(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的值賦給z else z=y; /否則,將y的值賦給z return(z)
8、; /將z的值返回,通過max帶回調(diào)用處 /max函數(shù)結(jié)束 int main( ) /主函數(shù), /主函數(shù)體開始 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)返回一個零值 /主函數(shù)結(jié)束 本程序包括兩個函數(shù):主函數(shù)main和被調(diào)用的函數(shù)max。 程序運行情況如下: 18 25 (輸入18和25給a和b) max=25 (輸出m的值) 注意輸入的兩個數(shù)據(jù)間用一個或多個空格間隔,不能以逗號或其他符號間隔。,在上面的程序中,max
9、函數(shù)出現(xiàn)在main函數(shù)之前,因此在main函數(shù)中調(diào)用max函數(shù)時,編譯系統(tǒng)能識別max是已定義的函數(shù)名。如果把兩個函數(shù)的位置對換一下,即先寫main函數(shù),后寫max函數(shù),這時在編譯main函數(shù)遇到max時,編譯系統(tǒng)無法知道m(xù)ax代表什么含義,因而無法編譯,按出錯處理。 為了解決這個問題,在主函數(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ù),couty) z=x;
10、else z=y; return(z); 只要在被調(diào)用函數(shù)的首部的末尾加一個分號,就成為對該函數(shù)的函數(shù)聲明。函數(shù)聲明的位置應(yīng)當(dāng)在函數(shù)調(diào)用之前。,下面舉一個包含類(class)和對象(object)的C+程序,目的是使讀者初步了解C+是怎樣體現(xiàn)面向?qū)ο蟪绦蛟O(shè)計方法的。 例1.4 包含類的C+程序。 #include / 預(yù)處理命令 using namespace std; class Student / 聲明一個類,類名為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類的變量,稱為對象 int main( ) / 主函數(shù)首部 stud1.setdata( ); / 調(diào)用對象stud1的setdata函數(shù) stud2
12、.setdata( ); / 調(diào)用對象stud2的setdata函數(shù) stud1.display( ); / 調(diào)用對象stud1的display函數(shù) stud2.display( ); / 調(diào)用對象stud2的display函數(shù) return 0; ,在一個類中包含兩種成員: 數(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組成了一個名為Student的“類”類型。成員函數(shù)是用來對數(shù)據(jù)成員進行操作的。也就是說,一個類是由一批
13、數(shù)據(jù)以及對其操作的函數(shù)組成的。 類可以體現(xiàn)數(shù)據(jù)的封裝性和信息隱蔽。在上面的程序中,在聲明Student類時,把類中的數(shù)據(jù)和函數(shù)分為兩大類: private(私有的)和public(公用的)。把全部數(shù)據(jù)(num,score)指定為私有的,把全部函數(shù)(setdata,display)指定為公用的。在大多數(shù)情況下,會把所有數(shù)據(jù)指定為私有,以實現(xiàn)信息隱蔽。,具有“類”類型特征的變量稱為“對象”(object)。 程序中第1824行是主函數(shù)。 程序運行情況如下: 1001 98.5 (輸入學(xué)生1的學(xué)號和成績) 1002 76.5 (輸入學(xué)生2的學(xué)號和成績) num=1001 (輸出學(xué)生1的學(xué)號) sco
14、re=98.5 (輸出學(xué)生1的成績) num=1002 (輸出學(xué)生2的學(xué)號) score=76.5 (輸出學(xué)生2的成績),C+程序的結(jié)構(gòu)和書寫格式歸納如下: (1) 一個C+程序可以由一個程序單位或多個程序單位構(gòu)成。每一個程序單位作為一個文件。在程序編譯時,編譯系統(tǒng)分別對各個文件進行編譯,因此,一個文件是一個編譯單元。 (2) 在一個程序單位中,可以包括以下幾個部分: 預(yù)處理命令。上節(jié)4個程序中都包括#include命令。 全局聲明部分(在函數(shù)外的聲明部分)。在這部分中包括對用戶自己定義的數(shù)據(jù)類型的聲明和程序中所用到的變量的定義。,1.3 C+程序的構(gòu)成和書寫形式, 函數(shù)。函數(shù)是實現(xiàn)操作的部分
15、,因此函數(shù)是程序中必須有的和最基本的組成部分。每一個程序必須包括一個或多個函數(shù),其中必須有一個(而且只能有一個)主函數(shù)(main函數(shù))。 但是并不要求每一個程序文件都必須具有以上3個部分,可以缺少某些部分(包括函數(shù))。 (3) 一個函數(shù)由兩部分組成: 函數(shù)首部,即函數(shù)的第一行。包括函數(shù)名、函數(shù)類型、函數(shù)屬性、函數(shù)參數(shù)(形參)名、參數(shù)類型。 一個函數(shù)名后面必須跟一對圓括號, 函數(shù)參數(shù)可以缺省,如int main( )。, 函數(shù)體,即函數(shù)首部下面的大括號內(nèi)的部分。如果在一個函數(shù)中有多個大括號,則最外層的一對 為函數(shù)體的范圍。 函數(shù)體一般包括: 局部聲明部分 (在函數(shù)內(nèi)的聲明部分)。包括對本函數(shù)中所
16、用到的類型、函數(shù)的聲明和變量的定義。 對數(shù)據(jù)的聲明既可以放在函數(shù)之外(其作用范圍是全局的),也可以放在函數(shù)內(nèi)(其作用范圍是局部的,只在本函數(shù)內(nèi)有效)。 執(zhí)行部分。由若干個執(zhí)行語句組成,用來進行有關(guān)的操作,以實現(xiàn)函數(shù)的功能。,(4) 語句包括兩類。一類是聲明語句,另一類是執(zhí)行語句。 C+對每一種語句賦予一種特定的功能。語句是實現(xiàn)操作的基本成分,顯然,沒有語句的函數(shù)是沒有意義的。C+語句必須以分號結(jié)束。 (5) 一個C+程序總是從main函數(shù)開始執(zhí)行的,而不論main函數(shù)在整個程序中的位置如何。 (6) 類(class)是C+新增加的重要的數(shù)據(jù)類型,是C+對C的最重要的發(fā)展。有了類,就可以實現(xiàn)面向
17、對象程序設(shè)計方法中的封裝、信息隱蔽、繼承、派生、多態(tài)等功能。在一個類中可以包括數(shù)據(jù)成員和成員函數(shù),他們可以被指定為私有的(private)和公用的(public)屬性。私有的數(shù)據(jù)成員和成員函數(shù)只能被本類的成員函數(shù)所調(diào)用。,(7)C+程序書寫格式自由,一行內(nèi)可以寫幾個語句, 一個語句可以分寫在多行上。C+程序沒有行號,也不像FORTRAN或COBOL那樣嚴(yán)格規(guī)定書寫格式(語句必須從某一列開始書寫)。 (8) 一個好的、有使用價值的源程序都應(yīng)當(dāng)加上必要的注釋,以增加程序的可讀性。C+還保留了C語言的注釋形式,可以用“/*/”對C+程序中的任何部分作注釋。在“/*”和“*/”之間的全部內(nèi)容作為注釋。
18、 用“/”作注釋時,有效范圍只有一行,即本行有效,不能跨行。而用“/*/”作注釋時有效范圍為多行。只要在開始處有一個“/*”,在最后一行結(jié)束處有一個“*/”即可。因此,一般習(xí)慣是: 內(nèi)容較少的簡單注釋常用“/”,內(nèi)容較長的常用“/*/ ”。,一個程序從編寫到最后得到運行結(jié)果要經(jīng)歷以下一些步驟。 1. 用C+語言編寫程序 用高級語言編寫的程序稱為“源程序”(source program)。C+的源程序是以.cpp作為后綴的(cpp是c plus plus 的縮寫)。 2. 對源程序進行編譯 為了使計算機能執(zhí)行高級語言源程序,必須先用一種稱為“編譯器(complier)”的軟件(也稱編譯程序或編譯系統(tǒng)),把源程序翻譯成二進制形式的“目標(biāo)程序(object program)”。,1.4 C+程序的編寫和實現(xiàn),編譯是以源程序文件為單位分別編譯的。目標(biāo)程序一般以.obj或.o作為后綴(object 的縮寫)。編譯的作用是對源程序進行詞法檢查和語法檢查。編譯時對文件中的全部內(nèi)容進行檢查,編譯結(jié)束后會顯示出所有的編譯出錯信息。一般編譯系統(tǒng)給出的出錯信息分為兩種,一
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 沙河紋眉活動策劃方案
- 概念活動策劃方案
- 武術(shù)公益課活動方案
- 母親節(jié)網(wǎng)上活動方案
- 檢察院包粽子活動方案
- 夢幻西游端午活動方案
- 樓盤合影活動策劃方案
- 水族館展覽活動方案
- 植物變色大賽活動方案
- 正宗草莓促銷活動方案
- 《 民航服務(wù)心理學(xué)》考試題及參考答案
- 公務(wù)員培訓(xùn)包過班協(xié)議書范本
- 2021學(xué)堂在線網(wǎng)課《生活英語讀寫》課后作業(yè)單元考核答案
- 中國近現(xiàn)代史綱要超星爾雅答案貴州大學(xué)-
- 職業(yè)危害防護設(shè)施、器具檢查維護記錄
- 食品全過程防護工作手冊(食品防護計劃)
- Q∕GDW 12162-2021 隔離開關(guān)分合閘位置雙確認(rèn)系統(tǒng)技術(shù)規(guī)范
- 燃?xì)馊霊舭矙z培訓(xùn)PPT.ppt
- 臨概題庫(南醫(yī)大)--內(nèi)科部分
- 古代漢語授課教案(郭錫良版)教案分享
- 裝載機驅(qū)動橋培訓(xùn)
評論
0/150
提交評論