版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2024/12/231教學(xué)目標(biāo)了解計算機(jī)語言的基本概念掌握程序設(shè)計的特點及其一般方法了解C/C++語言的發(fā)展及其特點學(xué)習(xí)與掌握VC++集成環(huán)境2024/12/2321.1計算機(jī)語言及其發(fā)展1.計算機(jī)語言是人與計算機(jī)進(jìn)行交流的工具計算機(jī)語言分為:機(jī)器語言機(jī)器指令(由0和1組成),可直接執(zhí)行
難學(xué)、難記依賴機(jī)器的類型匯編語言用助記符代替機(jī)器指令,用變量代替各類地址??朔洃浀碾y點其他與機(jī)器語言類似高級語言類似數(shù)學(xué)語言、接近自然語言、具有通用性和可移植性,不依賴具體的計算機(jī)類型。2024/12/233例如:10000000加10010000減機(jī)器語言程序MOVAX,
300HADDBX,AX匯編語言源程序main(){inta,b,c;a=300;b=18;c=a+b;printf(“a+b=%d\n”,c);}高級語言源程序(C)源程序需要翻譯2024/12/234高級語言的翻譯:編譯方法圖1.2編譯過程(.CPP或.PAS等)編譯程序連接程序編譯連接高級語言源程序機(jī)器語言目標(biāo)程序可執(zhí)行程序(.OBJ)(.EXE)運行運行結(jié)果解釋程序高級語言源程序解釋執(zhí)行運行結(jié)果圖1.3解釋過程(.BAS)解釋方法2024/12/2351.1.2C語言及其特點1.?C語言的誕生1973年,美國貝爾實驗室的丹尼斯·里奇(DennisM.Ritchie)在B語言的基礎(chǔ)上設(shè)計出了一種新的語言,即C語言。1978年,布賴恩·凱尼漢(BrianW.Kernighan)和丹尼斯·里奇出版了第一版《TheCProgrammingLanguage》,從而使C語言成為目前世界上流傳最廣泛的高級程序設(shè)計語言。2.?C語言標(biāo)準(zhǔn)隨著微型計算機(jī)的普及,許多C語言版本相繼出現(xiàn)。由于一些新的特性不斷被各種編譯器實現(xiàn)并添加,這些C語言之間出現(xiàn)了一些不一致的地方。為了建立一個“無歧義,與具體平臺無關(guān)”的C語言體系,美國國家標(biāo)準(zhǔn)學(xué)會(ANSI)為C語言制定了一套標(biāo)準(zhǔn),即AN標(biāo)準(zhǔn)。2024/12/2361989年美國國家標(biāo)準(zhǔn)學(xué)會(ANSI)通過的C語言標(biāo)準(zhǔn)ANSIX3.159—1989,被稱為C89。之后《TheCProgrammingLanguage》第二版開始出版發(fā)行,書中根據(jù)C89進(jìn)行了更新。1990年,國際標(biāo)準(zhǔn)化組織(ISO)批準(zhǔn)ANSIC成為國際標(biāo)準(zhǔn),于是ISOC誕生了,該標(biāo)準(zhǔn)被稱為C90。這兩個標(biāo)準(zhǔn)只有細(xì)微的差別,因此,通常認(rèn)為C89和C90指的是同一個版本。之后,ISO于1994年、1996年分別出版了C90的技術(shù)勘誤文檔,更正了一些印刷錯誤,并在1995年通過了一份C90的技術(shù)補充,對C90進(jìn)行了微小的擴(kuò)充,經(jīng)擴(kuò)充后的ISOC被稱為C95。1999年,ANSI和ISO又通過了C99標(biāo)準(zhǔn)。C99標(biāo)準(zhǔn)相對C89做了很多修改,例如變量聲明可以不放在函數(shù)開頭,支持變長數(shù)組等。但由于很多編譯器仍然沒有對C99提供完整的支持,因此本書依然按照C89標(biāo)準(zhǔn)來進(jìn)行講解。2024/12/2373.?C語言的特點C語言是一種通用的、面向過程的程序語言,語言簡潔、豐富的運算符、直接訪問物理地址、結(jié)構(gòu)化、可移植性好等諸多特點使它得到了廣泛應(yīng)用。(1)?C語言簡潔、緊湊,使用方便、靈活,具有豐富的運算符和數(shù)據(jù)結(jié)構(gòu)。C語言一共有32個關(guān)鍵字、9種控制語句、34種運算符。C語言把括號、賦值、強制類型轉(zhuǎn)換等都作為運算符處理,其運算類型更為豐富,表達(dá)式類型更加多樣化。C語言的數(shù)據(jù)類型有基本類型和自定義等,能用來實現(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)運算。(2)?C語言允許直接訪問物理地址,進(jìn)行位操作,可以直接對硬件進(jìn)行操作,兼具高級語言和低級語言的特點,能實現(xiàn)匯編語言的大部分功能。C語言既是成功的系統(tǒng)描述語言,又是通用的程序設(shè)計語言,能開發(fā)基于網(wǎng)絡(luò)和單機(jī)的各種形式的程序,在目前高級語言的市場占有率方面名列前茅。(3)?C語言具有結(jié)構(gòu)化的控制語句(如if…else語句、while語句、do…while語句、switch語句、for語句等),它用函數(shù)作為程序模塊以實現(xiàn)程序的模塊化,是結(jié)構(gòu)化的理想語言,符合現(xiàn)代編程風(fēng)格的要求。2024/12/238(4)?C語言語法限制不嚴(yán)格,程序設(shè)計自由度大。例如對變量的類型使用比較靈活,整型數(shù)據(jù)與字符型數(shù)據(jù)以及邏輯型數(shù)據(jù)可以通用。一般的高級語言語法檢查比較嚴(yán),能檢查出幾乎所有的語法錯誤;而C語言允許程序編寫者有較大的自由度,因此放寬了語法的檢查。程序員要自己保證所寫程序的正確性,不能過分依賴C編譯程序去檢查錯誤。(5)?C語言編寫的程序可移植性好(與匯編語言相比)。在某一系統(tǒng)下編寫的程序,基本上不做修改就能在其他類型的計算機(jī)和操作系統(tǒng)上運行。(6)?C語言生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高,一般只比匯編程序生成的目標(biāo)代碼效率低10%~20%。盡管C語言具有很多的優(yōu)點,但和其他任何一種程序設(shè)計語言一樣,它也有其自身的缺點,如代碼實現(xiàn)周期長;C語言程序設(shè)計過于自由,經(jīng)驗不足的程序員易出錯;對平臺依賴較多等。但總的來說,C語言的優(yōu)點遠(yuǎn)遠(yuǎn)超過了它的缺點。2024/12/2391.1.3從C到C++C語言是結(jié)構(gòu)化和模塊化的語言,它是面向過程的。在處理較小規(guī)模的程序時,程序員用C語言較為得心應(yīng)手。但是當(dāng)問題比較復(fù)雜、程序的規(guī)模比較大時,結(jié)構(gòu)化程序設(shè)計方法就顯出它的不足。C程序的設(shè)計者必須細(xì)致地設(shè)計程序中的每一個細(xì)節(jié),準(zhǔn)確地考慮到程序運行時每一時刻發(fā)生的事情,例如各個變量的值是如何變化的,什么時候應(yīng)該進(jìn)行哪些輸入,在屏幕上應(yīng)該輸出什么等。這對程序員的要求是比較高的,如果面對的是一個復(fù)雜問題,程序員往往感到力不從心。當(dāng)初提出結(jié)構(gòu)化程序設(shè)計方法的目的是解決軟件設(shè)計危機(jī),但是這個目標(biāo)并未完全實現(xiàn)。為了解決軟件設(shè)計危機(jī),20世紀(jì)80年代人們提出了面向?qū)ο蟮某绦蛟O(shè)計(ObjectOrientedProgramming,OOP)思想,需要設(shè)計出能支持面向?qū)ο蟮某绦蛟O(shè)計方法的新語言。在這種情況下Smalltalk等面向?qū)ο蟮恼Z言紛紛涌現(xiàn)。不過在實踐中人們發(fā)現(xiàn)由于C語言是如此深入人心,使用如此廣泛,面對程序設(shè)計方法的革命,最好的辦法不是另外發(fā)明一種新的語言去代替它,而是在它原有的基礎(chǔ)上加以發(fā)展。在這種形勢下,C++?語言應(yīng)運而生。C++?語言是由AT&TBell(貝爾實驗室)的Bjarne
Stroustrup博士及其同事于20世紀(jì)80年代初在C語言的基礎(chǔ)上成功開發(fā)的。C++?語言保留了C語言原有的所有優(yōu)點,并增加了面向?qū)ο蟮臋C(jī)制。由于C++?語言對C語言的改進(jìn)主要體現(xiàn)在增加了適用于面向?qū)ο蟪绦蛟O(shè)計的類(class)。后來為了強調(diào)它是C語言的增強版,用了C語言中的自加運算符“++”,改稱為C++。2024/12/2310C++?是由C發(fā)展而來的,與C兼容。用C語言編寫的程序基本上可以不加修改地用于C++。C++?可以看作是C的超集,C++?既可用于面向過程的結(jié)構(gòu)化程序設(shè)計,又可用于面向?qū)ο蟮某绦蛟O(shè)計。C++?增添了類的概念,有人又稱C++?語言是帶類的C語言,是一個功能強大的混合型的程序設(shè)計語言。C++?對C的增強,
表現(xiàn)在兩個方面:(1)在原來面向過程的機(jī)制基礎(chǔ)上,對C語言的功能做了不少擴(kuò)充。(2)增加了面向?qū)ο蟮臋C(jī)制。面向?qū)ο蟪绦蛟O(shè)計是針對開發(fā)較大規(guī)模的程序而提出來的,目的是提高軟件開發(fā)的效率。只有編寫過大型程序的人才會真正體會到C的不足和C++?的優(yōu)點。2024/12/2311程序設(shè)計解決一個實際應(yīng)用問題時,用計算機(jī)語言編寫計算機(jī)程序的過程,稱為程序設(shè)計。1.2程序設(shè)計方法
目前,有兩種重要的程序設(shè)計方法:結(jié)構(gòu)化的程序設(shè)計面向?qū)ο蟮某绦蛟O(shè)計2024/12/23121.結(jié)構(gòu)化程序設(shè)計的基本概念程序的三種基本結(jié)構(gòu)順序結(jié)構(gòu)程序:按照書寫順序依次執(zhí)行語句選擇結(jié)構(gòu)程序:按照條件判斷選擇執(zhí)行語句循環(huán)結(jié)構(gòu)程序:通過條件控制循環(huán)執(zhí)行語句(基本結(jié)構(gòu)流程圖見下頁)1.2.1結(jié)構(gòu)化的程序設(shè)計方法2024/12/2313程序的三種基本結(jié)構(gòu)順序結(jié)構(gòu)N-S結(jié)構(gòu)圖流程圖ABAB選擇結(jié)構(gòu)YNABP成立?PTFAB2024/12/2314程序的三種基本結(jié)構(gòu)循環(huán)結(jié)構(gòu)NYP成立?A當(dāng)P成立時
A直到型循環(huán)
A當(dāng)P成立時YNAP成立?當(dāng)型循環(huán)N-S結(jié)構(gòu)圖流程圖2024/12/2315一個結(jié)構(gòu)化程序應(yīng)該符合以下標(biāo)準(zhǔn):程序僅由三種基本結(jié)構(gòu)組成每種基本結(jié)構(gòu)都是只有一個入口和一個出口程序中沒有死循環(huán)和死語句2024/12/23162.結(jié)構(gòu)化程序設(shè)計方法遵循的原則如果一個程序僅包含這三種基本結(jié)構(gòu)(由這些基本結(jié)構(gòu)組成),則稱為結(jié)構(gòu)化程序。結(jié)構(gòu)化程序設(shè)計的基本原則:采用自頂向下、逐步細(xì)化的方法進(jìn)行設(shè)計;采用模塊化原則和方法進(jìn)行設(shè)計。即將大型任務(wù)從上向下劃分為多個功能模塊,每個模塊又可以劃分為若干子模塊,然后分別進(jìn)行模塊程序的編寫;每個模塊都是用結(jié)構(gòu)化程序?qū)崿F(xiàn),即都只能由三種基本結(jié)構(gòu)組成,并通過計算機(jī)語言的結(jié)構(gòu)化語句實現(xiàn)。2024/12/23173.結(jié)構(gòu)化程序設(shè)計過程
程序設(shè)計過程分為三個基本步驟:分析問題(Question)、設(shè)計算法(Algorithm)、編寫程序(Program),簡稱QAP方法。
第一步:分析問題。對問題進(jìn)行定義與分析。第二步:設(shè)計算法。設(shè)置程序的輪廓(結(jié)構(gòu))并畫出程序的流程圖。第三步:編寫程序。采用一種計算機(jī)語言(例如使用C語言)實現(xiàn)算法編程。(編寫,編譯連接,查看結(jié)果)2024/12/2318結(jié)構(gòu)化的程序設(shè)計仍然是廣泛使用的一種程序設(shè)計方法,但是它也有一些缺點:首先,恰當(dāng)?shù)墓δ芊纸馐墙Y(jié)構(gòu)化程序設(shè)計的前提。然而對于用戶需求來講,變化最大的部分往往就是功能的改進(jìn)、添加和刪除。結(jié)構(gòu)化程序要實現(xiàn)這種功能變化并不容易,有時甚至要重新設(shè)計整個程序的結(jié)構(gòu)。其次,在結(jié)構(gòu)化程序設(shè)計中,數(shù)據(jù)和對數(shù)據(jù)的操作(即函數(shù))分離,函數(shù)依賴于數(shù)據(jù)類型的表示。數(shù)據(jù)的表示一旦發(fā)生變化,與之相關(guān)的所有函數(shù)就均要修改,使得程序維護(hù)量增大。另外,結(jié)構(gòu)化的程序代碼復(fù)用性較差,通常也就是調(diào)用一個函數(shù)或使用一個公共的用戶定義的數(shù)據(jù)類型而已。由于數(shù)據(jù)結(jié)構(gòu)和函數(shù)密切相關(guān),使得函數(shù)并不具有一般特性。例如,一個求方程實數(shù)根的函數(shù)不能應(yīng)用于求解復(fù)數(shù)的情形。2024/12/2319面向?qū)ο蟮某绦蛟O(shè)計是另一種重要的程序設(shè)計方法,它能夠有效地改進(jìn)結(jié)構(gòu)化程序設(shè)計中存在的問題。面向?qū)ο蟮某绦蚺c結(jié)構(gòu)化的程序不同,由C++編寫的結(jié)構(gòu)化的程序是由一個個的函數(shù)組成的;而由C++編寫的面向?qū)ο蟮某绦蚴怯梢粋€個的對象組成的,對象之間通過消息可以相互作用。1.2.2面向?qū)ο蟮某绦蛟O(shè)計方法在面向?qū)ο蟮姆椒ㄖ?,“對象”是現(xiàn)實世界的實體或概念在計算機(jī)邏輯中的抽象表示。對象是具有唯一對象名和固定對外接口的一組屬性和操作的集合,用來模擬組成或影響現(xiàn)實世界問題的一個或一組因素。
2024/12/2320面向?qū)ο蟮某绦蛟O(shè)計有三個主要特征,它們是:封裝、繼承和多態(tài),下面對這幾個特征僅作一個簡單的介紹,具體內(nèi)容將在后續(xù)章節(jié)中詳細(xì)敘述。2024/12/23211.封裝在現(xiàn)實世界中,常常有許多相同類型的對象。例如,張三的汽車只是世界上許多汽車中的一個。如果我們把汽車看作一個大類,那么張三的汽車只是汽車對象類中的一個實例。汽車對象都有同類型的數(shù)據(jù)和對數(shù)據(jù)的操作行為,但是,每一輛汽車的數(shù)據(jù)又是獨立的。根據(jù)這個事實,制造商建造汽車時,用相同的藍(lán)圖建造許多汽車。在面向?qū)ο蟮某绦蛟O(shè)計中,我們把這個藍(lán)圖稱之為類。也就是說,類是定義某種對象共同的數(shù)據(jù)和操作的藍(lán)圖或原型。在C++?中,封裝是通過類來實現(xiàn)的。數(shù)據(jù)成員和成員函數(shù)可以是公有的或私有的。公有的成員函數(shù)和數(shù)據(jù)成員能夠被其他的類訪問。如果一個成員函數(shù)是私有的,它僅能被該類的其他成員函數(shù)訪問,私有的數(shù)據(jù)成員僅能被該類的成員函數(shù)訪問。因而,它們被封裝在類的作用域內(nèi)。封裝是一個有用的機(jī)制,具體表現(xiàn)為:(1)可以限制未經(jīng)許可的訪問;(2)可使信息局部化。2024/12/23222.繼承圖1.3貓的繼承關(guān)系一般地,對象是根據(jù)類來定義的。我們也可以用一個類來定義另一個類。例如,波斯貓和安哥拉貓都是貓的一種。用面向?qū)ο蟮男g(shù)語來說,它都是貓類的子類(或派生類),而貓類是它們的父類(基類或超類)。它們的關(guān)系如圖1.3所示。每一個子類繼承了父類的數(shù)據(jù)和操作,但是,子類并不僅僅局限于父類的數(shù)據(jù)和操作,它還可以擴(kuò)充自己的內(nèi)容。繼承的主要益處是可以復(fù)用父類的程序代碼2024/12/2323圖1.3貓的繼承關(guān)系2024/12/23243.多態(tài)多態(tài)是指對于相同的消息,不同的對象具有不同的反應(yīng)能力。多態(tài)在自然語言中應(yīng)用很多,我們以動詞“關(guān)閉”的應(yīng)用為例,同一個“關(guān)閉”應(yīng)用于不同的對象時含義就不相同。例如,關(guān)閉一個門、關(guān)閉一個銀行賬戶或關(guān)閉一個窗口。精確的含義依賴于執(zhí)行這種行為的對象。在面向?qū)ο蟮某绦蛟O(shè)計中,多態(tài)意味著不同的對象對同一消息具有不同的解釋。4.面向?qū)ο蟪绦蛟O(shè)計過程面向?qū)ο蟪绦蛟O(shè)計方法是遵循面向?qū)ο蠓椒ǖ幕靖拍疃⑵饋淼?,它的設(shè)計過程主要包括面向?qū)ο蟮姆治?ObjectOrientedAnalysis,OOA)、面向?qū)ο蟮脑O(shè)計(ObjectOrientedDesign,OOD)、面向?qū)ο蟮膶崿F(xiàn)(ObjectOrientedImplementation,OOI)三個階段。(1)面向?qū)ο蟮姆治?OOA)。OOA的主要目的就是自上而下地進(jìn)行分析,即將整個軟件系統(tǒng)看作是一個對象,然后將這個大的對象分解成具有語義的對象簇和子對象,同時確定這些對象之間的相互關(guān)系。(2)面向?qū)ο蟮脑O(shè)計(OOD)。OOD的任務(wù)是將對象及其相互關(guān)系進(jìn)行模型化,建立分類關(guān)系,解決問題域中的基本構(gòu)建。在這個階段確定對象及其屬性,以及影響對象的操作并實現(xiàn)每個對象。(3)面向?qū)ο蟮膶崿F(xiàn)(OOI)。OOI是軟件具體功能的實現(xiàn),是對對象的必要細(xì)節(jié)加以刻畫,是面向?qū)ο蟪绦蛟O(shè)計由抽象到具體的實現(xiàn)步驟,即最終用面向?qū)ο蟮木幊虒崿F(xiàn)建立在前面OOA基礎(chǔ)上的模型2024/12/2325通過上面的介紹我們可以看出,面向?qū)ο蟮某绦蛟O(shè)計完全不同于結(jié)構(gòu)化的程序設(shè)計。后者是將問題進(jìn)行分解,然后用許多功能不同的函數(shù)來實現(xiàn),數(shù)據(jù)與函數(shù)是分離的;前者是將問題抽象成許多類,將數(shù)據(jù)與對數(shù)據(jù)的操作封裝在一起,各個類之間可能存在著繼承關(guān)系,對象是類的實例,程序是由對象組成的。面向?qū)ο蟮某绦蛟O(shè)計可以較好地克服結(jié)構(gòu)化程序設(shè)計存在的問題,使用得好,可以開發(fā)出健壯、易于擴(kuò)展和維護(hù)的應(yīng)用程序。2024/12/23261.3
C/C++?語言程序的結(jié)構(gòu)1.3.1C語言程序?qū)嵗?/p>
例1.1最簡單的C語言程序。#include<stdio.h>/*預(yù)處理命令*/voidmain()/*主函數(shù)*/{printf("這是我的第一個C語言程序!\n");/*輸出雙引號中的內(nèi)容*/}2024/12/2327一個計算機(jī)高級語言程序均由一個主程序和若干個(包括0個)子程序組成,程序的運行從主程序開始,子程序由主程序或其他子程序調(diào)用執(zhí)行。在C語言中,主程序和子程序都稱之為函數(shù),規(guī)定主函數(shù)必須以main命名。因此一個C語言程序必須由一個名為main的主函數(shù)(而且只能有一個)和若干個(包括0個)函數(shù)組成,程序的運行從main函數(shù)開始,其他函數(shù)由main函數(shù)直接或間接調(diào)用執(zhí)行。例如例1.1中,程序的第1行#include是編譯程序的預(yù)處理指令,末尾不能加分號。stdio.h是C編譯程序提供的系統(tǒng)頭文件(或稱為包含文件),當(dāng)在程序中調(diào)用標(biāo)準(zhǔn)輸入輸出函數(shù)時,應(yīng)在調(diào)用之前寫上#indude<stdio.h>。2024/12/2328在C語言程序中每一句語句占一行(也可若干條語句在同一行,但為了閱讀方便,建議一條語句占一行),語句右邊“/*…*/”是注釋,“/*”是注釋的開始符號,“*/”是注釋的結(jié)束符號,注釋符號之間的文字是注釋內(nèi)容。注釋的作用是對程序功能、被處理數(shù)據(jù)或處理方法的說明,注釋部分僅供程序員閱讀,不參與程序運行,所以注釋內(nèi)容不需要遵守C語言的語法規(guī)則,編譯時被過濾掉,不增加程序在編譯后占用空間的大小。例如例1.1中,“/*輸出雙引號中的內(nèi)容*/”注明了“printf("這是我的第一個C語言程序!\n");”語句的作用。2024/12/2329例1.2求兩個整數(shù)之和。#include<stdio.h>main()/*主函數(shù)*/{inta,b,sum;/*設(shè)置變量數(shù)據(jù)類型*/a=1;/*給變量賦初值*/b=2;sum=a+b;/*加法運算*/printf("sum=%d\n",sum);}程序運行結(jié)果如下:sum=32024/12/2330程序從主函數(shù)main開始,大括號之間的內(nèi)容為主函數(shù)的函數(shù)體部分,在函數(shù)體中,第一句為變量說明語句,說明a、b和sum為整型變量,存放整數(shù),分別代表加數(shù)a、b和變量sum。語句a=1和b=2的作用是給變量a、b賦值為1和2。這樣就可以通過sum=a+b計算a+b的值為3,最后程序輸出a加b的和值。2024/12/2331例1.3修改例1.2,整數(shù)的加法功能由函數(shù)add實現(xiàn),在主函數(shù)中調(diào)用add函數(shù)以求兩個整數(shù)之和。#include<stdio.h>intadd(intx,inty)/*定義一個加法子函數(shù)add*/{return(x+y);}main()/*主函數(shù)*/{inta,b,sum;a=1;b=2;sum=add(a,b);/*調(diào)用add函數(shù)*/printf("sum=%d\n",sum);}2024/12/2332本程序除了主函數(shù)main外,另外定義了一個add函數(shù),add函數(shù)作用是求x和y之和,通過return語句計算x和y的和值并返回給主函數(shù)main。主函數(shù)中第四句為調(diào)用函數(shù)add語句,在調(diào)用時將a、b的值傳遞給add函數(shù)中的x和y,經(jīng)過執(zhí)行add函數(shù),x和y的和值作為返回值送回給主函數(shù)的調(diào)用語句處,并把這個值賦值給變量sum,然后輸出sum的值。例1.3程序的運行結(jié)果與例1.2完全相同,但特點是實現(xiàn)了整數(shù)加法運算的通用化。從例1.3我們可以看出,在C語言中,一個問題能夠分解成若干個子問題,將子問題用獨立的函數(shù)來實現(xiàn),然后通過函數(shù)調(diào)用把整個程序組織起來,實現(xiàn)了程序的模塊化,從而實現(xiàn)對復(fù)雜問題的解決。2024/12/2333通過對上面3個程序的分析,我們了解到C語言程序結(jié)構(gòu)具有以下特點:(1)?C語言程序是由函數(shù)構(gòu)成的。函數(shù)是C語言程序的基本單位。一個C語言程序可以由一個或多個函數(shù)構(gòu)成,但其中必須有而且只能有一個主函數(shù)main,主函數(shù)是C語言程序運行的起始點,每次執(zhí)行C語言程序時都要從主函數(shù)開始執(zhí)行。(2)除了主函數(shù)之外,其他函數(shù)的運行都是通過函數(shù)調(diào)用實現(xiàn)的。在一個函數(shù)中可以調(diào)用另外一個函數(shù),這個被調(diào)用的函數(shù)可以是用戶定義的函數(shù),也可以是系統(tǒng)提供的標(biāo)準(zhǔn)庫函數(shù)(比如printf和scanf)。使用函數(shù)時,建議讀者盡量使用庫函數(shù),這樣不僅能夠縮短開發(fā)時間,也能提高軟件的可靠性,從而開發(fā)出可靠性高、可讀性強以及可移植性好的程序。2024/12/2334(3)函數(shù)定義的一般形式如下:函數(shù)返回值類型函數(shù)名(形式參數(shù)表){數(shù)據(jù)說明部分執(zhí)行語句部分}(4)可以在程序的任何位置給程序加上注釋,注釋的形式為/*注釋內(nèi)容*/,注釋是為了提高程序可讀性的一個手段,它對程序的編譯和運行沒有任何影響,可以注釋一行,也可以注釋多行。對于C++,注釋內(nèi)容可以寫在“//”之后。2024/12/2335(5)?C語言程序的書寫格式非常自由,一條語句可以在一行內(nèi)書寫,也可以分成多行書寫,而且一行可以書寫多條語句。盡管這樣,我們還是建議在一行只寫一條語句,而且采用逐層縮進(jìn)的形式,這樣使得程序的邏輯層次一目了然,便于對程序的閱讀、理解和修改。(6)?C語言中每條語句都以分號結(jié)尾,分號是C語言語句的必要組成部分。(7)?C語言本身沒有輸入輸出語句。輸入和輸出操作由標(biāo)準(zhǔn)庫函數(shù)scanf和printf等函數(shù)來完成,所以注意在使用之前程序最前面要加上預(yù)處理語句#include<stdio.h>,因為這兩個函數(shù)是在stdio.h文件中定義的。2024/12/23361.3.2C++?程序?qū)嵗?/p>
在了解了C語言程序結(jié)構(gòu)之后,來看一個C++?程序?qū)嵗@?.4是一個面向過程的C++程序。例1.4簡單的C++?程序。#include<iostream.h>voidmain(){cout<<"Hello!MyfirstC++program!\n";cout<<"WelcometoC++!\n";}程序運行結(jié)果如下:Hello!MyfirstC++program!WelcometoC++!2024/12/2337這里,main()是主函數(shù)名,函數(shù)體用一對大括號括住。函數(shù)是C++?程序中最小的功能單位。在C++?中,必須有且只能有一個名為main()的函數(shù),它表示程序執(zhí)行的起始點。main()之前的void表示main()函數(shù)沒有返回值(關(guān)于函數(shù)返回值將在第五章介紹)。程序由語句組成,每條語句由分號“;”作為結(jié)束符。cout是一個輸出流對象,它是C++?系統(tǒng)定義的對象,其中包含了許多有用的輸出功能。輸出操作由操作符“<<”來表達(dá),其作用是將緊隨其后的雙引號中的字符串輸出到標(biāo)準(zhǔn)輸出設(shè)備(顯示器)上。2024/12/2338程序的第一條語句“#include<iostream.h>”指示編譯器在對程序進(jìn)行預(yù)處理時,將文件iostream.h中的代碼嵌入到程序中該指令所在的地方,其中#include被稱為預(yù)編譯指令。文件iostream.h中聲明了程序所需要的輸入和輸出操作的有關(guān)信息。cout和“<<”操作的有關(guān)信息就是在該文件中聲明的。在C++?程序中如果使用了系統(tǒng)中提供的一些功能,就必須嵌入相關(guān)的頭文件。當(dāng)我們編寫完程序文本后,C的源程序被存儲為后綴是?.c的文件(C++?源程序的后綴名為?.cpp),再經(jīng)過編譯系統(tǒng)的編譯、連接后,生成后綴為?.exe的可執(zhí)行文件。2024/12/2339由于C或C++?源程序一般是由ASCII代碼構(gòu)成的,計算機(jī)不能直接執(zhí)行源程序。要使C或C++?源程序在計算機(jī)上運行,必須將ASCII代碼的程序翻譯成機(jī)器能夠執(zhí)行的二進(jìn)制目標(biāo)程序,通常需要一種特定的軟件工具,我們稱這種軟件工具為編譯程序,而把這種轉(zhuǎn)換工作稱為程序編譯。例如一個編寫完成的C源程序在成功運行之前,一般經(jīng)過編輯源代碼、編譯、鏈接、運行四個步驟。為方便讀者上機(jī)練習(xí),下面給出在MicrosoftVisualStudio2010集成環(huán)境下開發(fā)C和C++?程序的步驟。1.4C/C++?語言程序上機(jī)實踐/*預(yù)處理命令*//*主函數(shù)*//*輸出雙引號中的內(nèi)容*/2024/12/2340下面我們以例1.1為例,給出程序上機(jī)實踐步驟。(1)啟動VisualStudio2010編譯環(huán)境,如圖1.4所示。2024/12/2341圖1.4VisualStudio2010編譯環(huán)境窗口2024/12/2342單擊主窗口菜單欄中的“文件”菜單項,彈出如圖1.5所示的下拉式菜單。單擊下拉式菜單中的選項“新建”→“項目”,可以打開新建項目對話框。
圖1.5文件菜單下的選項2024/12/2343(3)在新建項目對話框中,如圖1.6所示。選擇“Win32控制
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 塑料橡膠材料專業(yè)超聲波塑料焊接深圳市恒波超聲設(shè)備有限公
- 純堿的性質(zhì)課件
- 長治2024年山西長治文化藝術(shù)學(xué)校(豫劇團(tuán))招聘豫劇演員專業(yè)技術(shù)人員筆試歷年典型考點(頻考版試卷)附帶答案詳解版
- 零售業(yè)智慧物流網(wǎng)絡(luò)構(gòu)建考核試卷
- 胃痛治療策略優(yōu)化-洞察分析
- 文學(xué)風(fēng)格自適應(yīng)生成-洞察分析
- 園林景觀生態(tài)效應(yīng)-洞察分析
- 2025屆廣東省普通高中高三上學(xué)期第二次調(diào)研考試物理試題(解析版)
- 2023-2024學(xué)年浙江省嘉興市高一1月期末考試生物試題(解析版)
- 2023年-2024年安全管理人員安全教育培訓(xùn)試題帶下載答案可打印
- 藥理學(xué)期末試卷
- 小學(xué)高年級課后服務(wù) scratch3.0編程教學(xué)設(shè)計 一階第27課 植物大戰(zhàn)僵尸-僵尸來襲教學(xué)設(shè)計
- 2024年人民日報社招聘應(yīng)屆高校畢業(yè)生85人筆試高頻難、易錯點500題模擬試題附帶答案詳解
- 中西醫(yī)結(jié)合科工作制度
- 沈鼓集團(tuán)招聘筆試題庫2024
- 高中人教版必修一全冊歷史期末總復(fù)習(xí)重要知識點歸納
- 2024年網(wǎng)絡(luò)安全知識競賽考試題庫500題(含答案)
- 南平武夷高新技術(shù)產(chǎn)業(yè)控股集團(tuán)有限公司招聘筆試題庫2024
- 《2024年 基于Python的電影彈幕數(shù)據(jù)分析》范文
- 三支一扶協(xié)議書模板
- 施工現(xiàn)場臨時用電安全監(jiān)理檢查表
評論
0/150
提交評論