版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
C++面向?qū)ο蟪绦蛟O(shè)計(jì)
第一章緒論面向?qū)ο笏枷氲挠蓙?lái)面向?qū)ο蟪绦蛟O(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言C++與C語(yǔ)言的關(guān)系§1.1面向?qū)ο笏枷氲挠蓙?lái)
面向?qū)ο蠹夹g(shù)追求的是軟件系統(tǒng)對(duì)現(xiàn)實(shí)世界的直接模擬,盡量實(shí)現(xiàn)將現(xiàn)實(shí)世界中的事物直接映射到軟件系統(tǒng)的解空間?!?.1面向?qū)ο笏枷氲挠蓙?lái)現(xiàn)實(shí)問(wèn)題空間面向?qū)ο蠼饪臻g物質(zhì):一輛白色的自行車意識(shí):自行車具體事物:一個(gè)對(duì)象——自行車的實(shí)例抽象概念:自行車類§1.2面向?qū)ο蟪绦蛟O(shè)計(jì)一、結(jié)構(gòu)化程序設(shè)計(jì)(SP,StructureProgramming)結(jié)構(gòu)化程序設(shè)計(jì)思路是:自頂向下,逐步求精;其程序結(jié)構(gòu)是按功能劃分若干個(gè)基本模塊,這些模塊形成一個(gè)樹(shù)狀結(jié)構(gòu);各模塊之間的關(guān)系盡可能簡(jiǎn)單,在功能上相對(duì)獨(dú)立;每一模塊內(nèi)部均是由順序、選擇和循環(huán)三種基本結(jié)構(gòu)組成;其模塊化實(shí)現(xiàn)的具體方法是使用子程序?!?.2面向?qū)ο蟪绦蛟O(shè)計(jì)一、結(jié)構(gòu)化程序設(shè)計(jì)(SP,StructureProgramming)例如:計(jì)算一個(gè)班中所有學(xué)生計(jì)算機(jī)的平均成績(jī),按照結(jié)構(gòu)化程序設(shè)計(jì)的思想,可以將其拆分為以下的子任務(wù):找出一名學(xué)生的計(jì)算機(jī)成績(jī)計(jì)算共有多少名學(xué)生計(jì)算此科目的單科總分用學(xué)生總數(shù)去除單科總成績(jī)★找出一個(gè)學(xué)生的檔案★讀出計(jì)算機(jī)的分?jǐn)?shù)★把此分?jǐn)?shù)加到部分和上★讀出下一名學(xué)生的檔案§1.2面向?qū)ο蟪绦蛟O(shè)計(jì)一、結(jié)構(gòu)化程序設(shè)計(jì)(SP,StructureProgramming)缺點(diǎn)結(jié)構(gòu)化程序設(shè)計(jì)把數(shù)據(jù)和過(guò)程分離為相互獨(dú)立的實(shí)體,程序員在編程時(shí)必須考慮所要處理數(shù)據(jù)的格式。對(duì)于不同的數(shù)據(jù)格式即使要做同樣的處理或相同的數(shù)據(jù)格式要做不同的處理都需要編寫不同的程序。因此結(jié)構(gòu)化程序的可重用性不好。而且數(shù)據(jù)與程序始終保持相容也成為程序員的一個(gè)負(fù)擔(dān)?!?.2面向?qū)ο蟪绦蛟O(shè)計(jì)二、面向?qū)ο蟪绦蛟O(shè)計(jì)(OOP,Object-OrientedProgramming)優(yōu)點(diǎn)1面向?qū)ο蟪绦蛟O(shè)計(jì)將數(shù)據(jù)及對(duì)數(shù)據(jù)的操作放在一起,作為一個(gè)相互依存,不可分割的整體來(lái)處理,即對(duì)象。它采用數(shù)據(jù)抽象和信息隱藏技術(shù)。它將對(duì)象及對(duì)象的操作抽象成一種新的數(shù)據(jù)類型——類,并且考慮不同對(duì)象之間的聯(lián)系和對(duì)象類的重要性。1.面向?qū)ο蟪绦蛟O(shè)計(jì)的優(yōu)越性§1.2面向?qū)ο蟪绦蛟O(shè)計(jì)二、面向?qū)ο蟪绦蛟O(shè)計(jì)(OOP,Object-OrientedProgramming)自行車對(duì)象數(shù)據(jù)抽象自行車類屬性:架子尺寸車輪尺寸顏色原材料操作:轉(zhuǎn)彎移動(dòng)修理§1.2面向?qū)ο蟪绦蛟O(shè)計(jì)二、面向?qū)ο蟪绦蛟O(shè)計(jì)(OOP,Object-OrientedProgramming)優(yōu)點(diǎn)2面向?qū)ο蟪绦蛟O(shè)計(jì)的優(yōu)越性還表現(xiàn)在,它有希望解決軟件工程的兩個(gè)主要問(wèn)題——軟件復(fù)雜性和軟件生產(chǎn)率的提高。此外它還符合人類的思維習(xí)慣,能夠自然地表現(xiàn)現(xiàn)實(shí)世界的實(shí)體和問(wèn)題,它對(duì)軟件開(kāi)發(fā)過(guò)程具有重要意義。1.面向?qū)ο蟪绦蛟O(shè)計(jì)的優(yōu)越性§1.2面向?qū)ο蟪绦蛟O(shè)計(jì)二、面向?qū)ο蟪绦蛟O(shè)計(jì)(OOP,Object-OrientedProgramming)2.面向?qū)ο蟪绦蛟O(shè)計(jì)的幾個(gè)重要概念封裝和數(shù)據(jù)隱藏繼承和重用多態(tài)性§1.2面向?qū)ο蟪绦蛟O(shè)計(jì)二、面向?qū)ο蟪绦蛟O(shè)計(jì)(OOP,Object-OrientedProgramming)封裝和數(shù)據(jù)隱藏:C++通過(guò)建立用戶自定義類型(類)支持封裝性和數(shù)據(jù)隱藏。完好定義的類一旦建立,就可看成是完全封裝的實(shí)體,可以作為一個(gè)整體單元使用。類的實(shí)際內(nèi)部工作應(yīng)當(dāng)隱藏起來(lái),使用完好定義的類的用戶不需要知道類是如何工作的,只要知道如何使用它就行?!?.2面向?qū)ο蟪绦蛟O(shè)計(jì)二、面向?qū)ο蟪绦蛟O(shè)計(jì)(OOP,Object-OrientedProgramming)繼承和重用:C++采用繼承支持重用的思想,程序可以在擴(kuò)展現(xiàn)有類型的基礎(chǔ)上聲明新類型。新子類是從現(xiàn)有類型派生出來(lái)的,稱為派生類。開(kāi)發(fā)者在設(shè)計(jì)軟件時(shí)可以利用一些已經(jīng)被精心設(shè)計(jì)好并且經(jīng)過(guò)測(cè)試的代碼,這些可重用的代碼被組織和存放在程序設(shè)計(jì)環(huán)境的類庫(kù)中。高質(zhì)量的可重用代碼能有效地降低軟件復(fù)雜度和提高開(kāi)發(fā)效率?!?.2面向?qū)ο蟪绦蛟O(shè)計(jì)二、面向?qū)ο蟪绦蛟O(shè)計(jì)(OOP,Object-OrientedProgramming)多態(tài)性:C++通過(guò)繼承的方法構(gòu)造類,采用多態(tài)性為每個(gè)類指定表現(xiàn)行為。大學(xué)生中學(xué)生繼承計(jì)算成績(jī)計(jì)算成績(jī)語(yǔ)文數(shù)學(xué)英語(yǔ)…高等數(shù)學(xué)計(jì)算機(jī)普通物理…§1.2面向?qū)ο蟪绦蛟O(shè)計(jì)二、面向?qū)ο蟪绦蛟O(shè)計(jì)(OOP,Object-OrientedProgramming)多態(tài)性:C++通過(guò)繼承的方法構(gòu)造類,采用多態(tài)性為每個(gè)類指定表現(xiàn)行為。
☆繼承性和多態(tài)性的組合,可以輕易生成一系列雖類似但獨(dú)一無(wú)二的對(duì)象。由于繼承性,這些對(duì)象共享許多相似的特征。但由于多態(tài)性,一個(gè)對(duì)象可以有獨(dú)特的表現(xiàn)方式,面對(duì)另一個(gè)對(duì)象有另一個(gè)表現(xiàn)方式?!?.3面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言LISP家族SimulaSmalltalkC家族LISP家族SimulaSmalltalkC家族LISP是50年代開(kāi)發(fā)出來(lái)的一種語(yǔ)言,它以表處理為特色,是一種人工智能語(yǔ)言。Simula是60年代開(kāi)發(fā)出來(lái)的,在Simula中引入了幾個(gè)面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言中最重要的概念和特性,即數(shù)據(jù)抽象的概念、類和繼承性。Smalltalk起源于Simula語(yǔ)言,是一個(gè)真正的面向?qū)ο蟪绦蛘Z(yǔ)言,它體現(xiàn)了純粹的面向?qū)ο蟮脑O(shè)計(jì)思想,是最純的面向?qū)ο蟪绦蛘Z(yǔ)言。
在80年代,C語(yǔ)言成為一種及其流行、非常廣泛的語(yǔ)言。為了滿足管理程序的復(fù)雜性需要,1980年,貝爾實(shí)驗(yàn)室的BjarneStroustrup開(kāi)始對(duì)C進(jìn)行改進(jìn)和擴(kuò)充。最初的成果稱為“帶類的C”,1983年正式取名為C++,在經(jīng)歷了三次C++修訂后,于1994年制定了ANSIC++標(biāo)準(zhǔn)的草案。以后又經(jīng)過(guò)不斷完善,成為目前的C++。MSC++TurboC++BorlandC++VisualC++§1.4C++與C語(yǔ)言的關(guān)系一、C語(yǔ)言的局限1.C類型檢查機(jī)制相對(duì)較弱,這使得程序中的一些錯(cuò)誤不能在編譯時(shí)發(fā)現(xiàn)。2.C本身幾乎沒(méi)有支持代碼重用的語(yǔ)言結(jié)構(gòu),因此一個(gè)程序員精心設(shè)計(jì)的程序,很難為其他程序所用。3.當(dāng)程序的規(guī)模達(dá)到一定的程度時(shí),程序員很難控制程序的復(fù)雜性。§1.4C++與C語(yǔ)言的關(guān)系二、C++與C語(yǔ)言的關(guān)系1.C++保持與C語(yǔ)言的兼容這種兼容性表現(xiàn)在許多C語(yǔ)言編寫的程序不經(jīng)修改就可以為C++所用,用C語(yǔ)言編寫的許多庫(kù)函數(shù)和應(yīng)用軟件也都可以用于C++?!?.4C++與C語(yǔ)言的關(guān)系二、C++與C語(yǔ)言的關(guān)系2.C++對(duì)C語(yǔ)言做了許多改進(jìn)①增加了一些新的運(yùn)算符,使得C++應(yīng)用起來(lái)更方便。例如:::newdelete.*->*等。§1.4C++與C語(yǔ)言的關(guān)系二、C++與C語(yǔ)言的關(guān)系2.C++對(duì)C語(yǔ)言做了許多改進(jìn)②改進(jìn)了類型系統(tǒng),增加了安全性,C語(yǔ)言中的類型轉(zhuǎn)換很不嚴(yán)格。C++規(guī)定類型轉(zhuǎn)換多采取強(qiáng)制轉(zhuǎn)換,又規(guī)定函數(shù)的說(shuō)明必須用原型,并對(duì)默認(rèn)類型做了某些限制,還增強(qiáng)了編譯系統(tǒng)檢查類型的能力?!?.4C++與C語(yǔ)言的關(guān)系二、C++與C語(yǔ)言的關(guān)系2.C++對(duì)C語(yǔ)言做了許多改進(jìn)③引進(jìn)了引用概念,使用引用作函數(shù)參數(shù)帶來(lái)很大方便。§1.4C++與C語(yǔ)言的關(guān)系二、C++與C語(yǔ)言的關(guān)系2.C++對(duì)C語(yǔ)言做了許多改進(jìn)④允許函數(shù)重載,允許設(shè)置默認(rèn)參數(shù),這些措施提高了編程的靈活性,減少冗余性。又引進(jìn)了內(nèi)聯(lián)函數(shù)的概念,提高了程序的效率?!?.4C++與C語(yǔ)言的關(guān)系二、C++與C語(yǔ)言的關(guān)系2.C++對(duì)C語(yǔ)言做了許多改進(jìn)⑤對(duì)變量說(shuō)明更加靈活了。C語(yǔ)言只允許在函數(shù)體或分程序內(nèi),先是對(duì)變量的說(shuō)明語(yǔ)句,再是執(zhí)行語(yǔ)句,兩者不可交叉引用。C++打破這一限制,可以根據(jù)需要隨時(shí)對(duì)變量加以說(shuō)明?!?.4C++與C語(yǔ)言的關(guān)系二、C++與C語(yǔ)言的關(guān)系3.C++與C語(yǔ)言的本質(zhì)差別C++面向?qū)ο蟮恼Z(yǔ)言C語(yǔ)言面向過(guò)程的語(yǔ)言§1.4C++與C語(yǔ)言的關(guān)系二、C++與C語(yǔ)言的關(guān)系4.C++面向?qū)ο蟮男绿匦寓貱++支持?jǐn)?shù)據(jù)封裝數(shù)據(jù)封裝類對(duì)象工具支持實(shí)現(xiàn)具體§1.4C++與C語(yǔ)言的關(guān)系二、C++與C語(yǔ)言的關(guān)系4.C++面向?qū)ο蟮男绿匦寓?/p>
C++類中包含私有、公有和保護(hù)成員私有成員只有在類中說(shuō)明的函數(shù)才能訪問(wèn)公有成員類外的函數(shù)也可以訪問(wèn)保護(hù)成員只有該類的派生類才能訪問(wèn)§1.4C++與C語(yǔ)言的關(guān)系二、C++與C語(yǔ)言的關(guān)系4.C++面向?qū)ο蟮男绿匦寓?/p>
C++通過(guò)發(fā)送消息來(lái)處理對(duì)象每個(gè)對(duì)象對(duì)接收到的消息給出一個(gè)相應(yīng)的方法予以響應(yīng)。方法在類定義中使用函數(shù)來(lái)定義,在C++中使用一種類似于函數(shù)調(diào)用的機(jī)制把消息發(fā)送到一個(gè)對(duì)象上。§1.4C++與C語(yǔ)言的關(guān)系二、C++與C語(yǔ)言的關(guān)系4.C++面向?qū)ο蟮男绿匦寓?/p>
C++允許使用友元破壞封裝性類中的私有成員是不允許類外面的任何函數(shù)訪問(wèn)的,但是友元打破了這種封裝性?!?.4C++與C語(yǔ)言的關(guān)系二、C++與C語(yǔ)言的關(guān)系4.C++面向?qū)ο蟮男绿匦寓?/p>
C++允許函數(shù)名和運(yùn)算符重載函數(shù)名重載和運(yùn)算符重載都屬于多態(tài)性。多態(tài)性是指相同的語(yǔ)言結(jié)構(gòu)可以代表不同類型的實(shí)體或者對(duì)不同類型的實(shí)體進(jìn)行操作,C++支持多態(tài)性。§1.4C++與C語(yǔ)言的關(guān)系二、C++與C語(yǔ)言的關(guān)系4.C++面向?qū)ο蟮男绿匦寓?/p>
C++支持繼承性一個(gè)類可以根據(jù)需要生成派生類(或子類)。派生類繼承了基類的所有方法,另外派生類自身還可以定義所需要的不包含在父類中的新方法?!?.4C++與C語(yǔ)言的關(guān)系二、C++與C語(yǔ)言的關(guān)系4.C++面向?qū)ο蟮男绿匦寓?/p>
C++支持動(dòng)態(tài)聯(lián)編
C++可以通過(guò)定義虛函數(shù)來(lái)支持動(dòng)態(tài)聯(lián)編。動(dòng)態(tài)聯(lián)編是多態(tài)性的一個(gè)重要特征。第二章C++語(yǔ)言初步初識(shí)C++程序C++語(yǔ)言的基本符號(hào)C++語(yǔ)言的詞匯C++程序的基本框架運(yùn)行C++程序C++的運(yùn)行環(huán)境第二章C++語(yǔ)言初步§2.1初識(shí)C++程序一、程序?qū)嵗?/*************************//**thisisasimplestprogram**//*************************#include<iostream.h>voidmain(){cout<<“Iamastudent.\n”;}運(yùn)行結(jié)果為:
Iamastudent.注釋編譯預(yù)處理程序主體第二章C++語(yǔ)言初步§2.1初識(shí)C++程序一、程序?qū)嵗⑨尵幾g預(yù)處理程序主體序言注釋注解性注釋用于程序開(kāi)頭,說(shuō)明程序或文件的名稱、用途、編寫時(shí)間、編寫人以及輸入輸出說(shuō)明等。用于程序中難懂的地方。C++的注釋為“//”之后的內(nèi)容,直到換行。另外還兼容C的注釋,即“/*…*/”,可以占用多行。在生成可執(zhí)行程序前,C++忽略注釋,把每個(gè)注釋都視為一個(gè)空格。第二章C++語(yǔ)言初步§2.1初識(shí)C++程序一、程序?qū)嵗⑨尵幾g預(yù)處理程序主體
每個(gè)以符號(hào)“#”開(kāi)頭的行,稱為編譯預(yù)處理行。如:
#include<iostream.h>作用是在編譯之前將文件iostream.h的內(nèi)容增加到程序中,以作為其一部分。
iostream.h是系統(tǒng)定義的一個(gè)“頭文件”,它設(shè)置了C++的I/O相關(guān)環(huán)境,定義輸入輸出流對(duì)象cout和cin等。第二章C++語(yǔ)言初步§2.1初識(shí)C++程序一、程序?qū)嵗⑨尵幾g預(yù)處理程序主體voidmain(){cout<<“Iamastudent.\n”;}main()表示主函數(shù),每一個(gè)C++程序都必須有一個(gè)main()函數(shù),main()作為程序的入口。void表示該main()函數(shù)沒(méi)有返回值函數(shù)體第二章C++語(yǔ)言初步§2.1初識(shí)C++程序一、程序?qū)嵗⑨尵幾g預(yù)處理程序主體voidmain(){cout<<“Iamastudent.\n”;}函數(shù)頭函數(shù)體+=函數(shù)定義描述一個(gè)函數(shù)所執(zhí)行算法的過(guò)程稱為函數(shù)定義。第二章C++語(yǔ)言初步§2.1初識(shí)C++程序一、程序?qū)嵗⑨尵幾g預(yù)處理程序主體voidmain(){cout<<“Iamastudent.\n”;}
main——函數(shù)名全為小寫字母構(gòu)成,C++程序中的名字是大小些“敏感”的。
cout——標(biāo)準(zhǔn)輸出的流設(shè)備,它是C++預(yù)定的對(duì)象。當(dāng)程序要在設(shè)備上進(jìn)行輸出時(shí),就需要在程序中指定對(duì)象。
<<——輸出操作符,表示將該操作符右邊的數(shù)據(jù)送到顯示設(shè)備上。
程序中用雙括號(hào)括起的數(shù)據(jù)“Iamastudent.\n”稱為字符串常量。;表示一個(gè)語(yǔ)句的結(jié)束/(反斜杠)——稱為轉(zhuǎn)義符,表示要輸出特殊字符。字符串中遇到反斜杠時(shí),下一個(gè)字符與反斜杠相結(jié)合,形成轉(zhuǎn)義序列。轉(zhuǎn)義序列說(shuō)明\n\t\r\a\\\”換行符,使屏幕光標(biāo)移到屏幕中下一行開(kāi)頭水平制表符,使光標(biāo)移到下一制表位回車符,使光標(biāo)移到當(dāng)前行開(kāi)頭警告,發(fā)出系統(tǒng)警告聲音打印反斜杠符打印雙引號(hào)相關(guān)鏈接:編程技巧:1.
讓函數(shù)打印的最后一個(gè)字符為換行符\n,可以保證函數(shù)使屏幕光標(biāo)移到屏幕下一行開(kāi)頭。這種習(xí)慣能促進(jìn)軟件復(fù)用,這是軟件開(kāi)發(fā)環(huán)境中的關(guān)鍵目標(biāo)。2.將每個(gè)函數(shù)的整個(gè)函數(shù)體在定義函數(shù)體的花括號(hào)中縮排一級(jí),可使程序的函數(shù)結(jié)構(gòu)更加明顯,使程序更易讀?!?.1初識(shí)C++程序二、I/O語(yǔ)句1.標(biāo)準(zhǔn)輸出語(yǔ)句當(dāng)程序需要在屏幕上顯示輸出時(shí),可以使用插入操作符“<<”向cout中插入字符。cout<<“Iamastudent.”;#include<iostream.h>voidmain(){cout<<“MynameisJone.\n”;cout<<“theIDis”;cout<<2;cout<<endl;}§2.1初識(shí)C++程序二、I/O語(yǔ)句1.標(biāo)準(zhǔn)輸出語(yǔ)句cout<<“MynameisJone.\n”;<<“theIDis”;<<2;<<endl;cout<<“MynameisJone.\n”<<“theIDis”<<2<<endl;§2.1初識(shí)C++程序二、I/O語(yǔ)句2.標(biāo)準(zhǔn)輸入語(yǔ)句
cin與cout類似,是標(biāo)準(zhǔn)輸入文件(指鍵盤)的名字?!?gt;>”稱為提取運(yùn)算符。cin可自動(dòng)識(shí)別變量位置和類型。例如:cin>>palstring;inti;floatf;longl;cin>>i>>f>>l;定義一個(gè)整型變量定義一個(gè)浮點(diǎn)型變量定義一個(gè)長(zhǎng)整型變量cin能夠知道抽取的變量的類型§2.1初識(shí)C++程序二、I/O語(yǔ)句3.使用控制符⑴setw(n):控制輸出間隔。①如果一個(gè)值需要比setw(n)確定的字符數(shù)更多的字符,則該值將使用它所需要的所有字符。說(shuō)明floatamount=3.14159;cout<<setw(4)<<amount<<endl;運(yùn)算結(jié)果為:3.14159§2.1初識(shí)C++程序二、I/O語(yǔ)句3.使用控制符⑴setw(n):控制輸出間隔。②如果一個(gè)值的字符數(shù)比setw(n)確定的字符數(shù)少,則在數(shù)字字符前顯示空白。說(shuō)明cout<<setw(8)<<10<<endl;運(yùn)算結(jié)果為:10﹄︼︼︼§2.1初識(shí)C++程序二、I/O語(yǔ)句3.使用控制符⑴setw(n):控制輸出間隔。③setw(n)僅影響與之相鄰的下一個(gè)數(shù)的輸出,并不保留效力。說(shuō)明cout<<setw(8)<<10<<20<<endl;運(yùn)算結(jié)果為:1020﹄︼︼︼cout<<setw(8)<<10<<setw(8)<<20<<endl;運(yùn)算結(jié)果為:1020﹄︼︼︼§2.1初識(shí)C++程序二、I/O語(yǔ)句3.使用控制符⑵setfill:用來(lái)確定一個(gè)非空格的字符。#include<iostream.h>#include<iomanip.h>voidmain(){cout<<setfill(’*’);<<setw(2)<<21<<endl<<setw(3)<<21<<endl<<setw(4)<<21<<endl;cout<<setfill(’’);}運(yùn)行結(jié)果為:21*21**21§2.1初識(shí)C++程序二、I/O語(yǔ)句4.printf和scanf如果采用標(biāo)準(zhǔn)輸出函數(shù)printf()和輸入函數(shù)scanf(),則應(yīng)把程序開(kāi)始的預(yù)處理指令改為:#include<stdio.h>§2.2C++語(yǔ)言的基本符號(hào)一、基本符號(hào)分類每種語(yǔ)言都用一組字符來(lái)構(gòu)造有意義的語(yǔ)句。C++程序是用下列字符所組成的字符寫成的:大小寫英文字母:a~z,A~Z數(shù)字字符:0~9特殊字符:空格!#%^&*_(下劃線)
-+=~<>/\|.,:;?’”()[]{}$@§2.2C++語(yǔ)言的基本符號(hào)二、基本符號(hào)的ASCII編碼P31例:charcl=‘a(chǎn)’;inti=cl;cout<<cl<<endl<<i;輸出結(jié)果:a97§2.3C++語(yǔ)言的詞匯一、關(guān)鍵字(保留字)關(guān)鍵字是一類有特定的專門含義的單詞。在程序中用到的其他名字(標(biāo)識(shí)符)不能與C/C++的關(guān)鍵字有相同的拼法和大小寫。關(guān)鍵字也不能重新定義。注§2.3C++語(yǔ)言的詞匯一、關(guān)鍵字(保留字)①C++的關(guān)鍵字一般包含了幾乎所有的C語(yǔ)言的關(guān)鍵字說(shuō)明
②C++的關(guān)鍵字集是在不斷變化的③不同版本的C++的關(guān)鍵字集可能不同補(bǔ)充:基本關(guān)鍵字表asmautobreakcasecatchcharclassconstcontinuedefaultdeletedodoubleelseenumexternfloatforfriendgotoifinlineintlongnewoperatorprivateprotectedpublicregisterreturnshortsignedsizeofstaticstructswitchtemplatethisthrowtrytupedefunionunsignedvirtualvoidvolatilewhile§2.3C++語(yǔ)言的詞匯二、標(biāo)識(shí)符標(biāo)識(shí)符是由程序員為程序中的各種成份——變量,有名常量,用戶定義的類型,枚舉類型的值,函數(shù)及其參數(shù),類,對(duì)象等所起的名字。說(shuō)明標(biāo)識(shí)符必須符合以下規(guī)則:§2.3C++語(yǔ)言的詞匯標(biāo)識(shí)符必須符合的規(guī)則:1.不能是C++關(guān)鍵字,如for,if,case等不可作標(biāo)識(shí)符;2.標(biāo)識(shí)符中字母區(qū)分大小寫,如Abc與abc被認(rèn)為是兩個(gè)不同的標(biāo)識(shí)符。而關(guān)鍵字不區(qū)分大小寫,如for,F(xiàn)OR,F(xiàn)or,foR都認(rèn)為是同一關(guān)鍵字;3.第一個(gè)字符必須是字母或下劃線;§2.3C++語(yǔ)言的詞匯標(biāo)識(shí)符必須符合的規(guī)則:4.不要太長(zhǎng),一般不超過(guò)31個(gè)字符為宜(太長(zhǎng)則書(shū)寫困難,反為不美);5.不能以數(shù)字開(kāi)頭。如C5合法,而5C則為非法;6.中間不能有空格。如map合法,而map則為非法;§2.3C++語(yǔ)言的詞匯標(biāo)識(shí)符必須符合的規(guī)則:7.變量名不能包含.;,”’+-之類的特殊符號(hào)。實(shí)際上,標(biāo)識(shí)符中除了能使用26個(gè)英文字母的大小寫和數(shù)字之外,只能使用下劃線_。numberOfStudentnumOfStudentDx6y命名的方式?jīng)Q定了程序書(shū)寫的風(fēng)格補(bǔ)充:介紹幾種常用的命名方式1.駱駝表示法:mycarmy-carmyCar易讀,但是下劃線書(shū)寫困難標(biāo)識(shí)符中不能出現(xiàn)空格補(bǔ)充:介紹幾種常用的命名方式2.匈牙利標(biāo)記法:iMycaripMycar表示整型指針變量表示整型變量在每個(gè)變量名的前面加上若干表示類型的字符§2.3C++語(yǔ)言的詞匯三、字面常量
常量:C++程序中的常量是指固定不變的量。字面常量有名常量例如:圓周率pai=3.1416Int型常量float型常量char型常量字符串常量§2.3C++語(yǔ)言的詞匯三、字面常量即整型常量,可用3種形式表示:⑴Int型常量:①十進(jìn)制整數(shù)。如123,-456,0,79834等。如果某個(gè)整數(shù)超出了一般整數(shù)的表示范圍,系統(tǒng)可自動(dòng)按長(zhǎng)整型(longint)來(lái)處理。如79834L表示長(zhǎng)整型。若此字面整數(shù)超出了長(zhǎng)整型范圍,系統(tǒng)將發(fā)出警告。注§2.3C++語(yǔ)言的詞匯三、字面常量即整型常量,可用3種形式表示:⑴Int型常量:②八進(jìn)制整數(shù)以零開(kāi)頭的整數(shù)表示八進(jìn)制整數(shù)。如0123,表示(123)8?!?.3C++語(yǔ)言的詞匯三、字面常量即整型常量,可用3種形式表示:⑴Int型常量:③十六進(jìn)制整數(shù)以零和字母x開(kāi)頭或以零和字母X開(kāi)頭的整數(shù)表示十六進(jìn)制整數(shù)。如0x123或0X123,表示(123)16。§2.3C++語(yǔ)言的詞匯三、字面常量即實(shí)型常量,實(shí)數(shù)在C++中就是浮點(diǎn)數(shù)。實(shí)數(shù)有2種表示:⑵float型常量:①定點(diǎn)數(shù)形式:如0.123,.456,0.0等。②指數(shù)形式:如123e5,123E5都表示123×105?!?.3C++語(yǔ)言的詞匯三、字面常量⑵float型常量:?jiǎn)尉?float)48f或F后綴34.5f雙精度(double)810默認(rèn)34.5長(zhǎng)雙精度(longdouble)1019l或L后綴34.5e2L種類占用內(nèi)存有效數(shù)字表示形式舉例§2.3C++語(yǔ)言的詞匯三、字面常量即字符常量,是用單引號(hào)括起來(lái)的一個(gè)字符。如‘a(chǎn)’,‘?’等。⑶char型常量:
C++還允許使用一種特殊形式的字符常量,即以“\”開(kāi)頭的字符序列,如‘\n’。注0表示一個(gè)整數(shù)值‘0’表示一個(gè)數(shù)字字符,其ASCII碼等于48或0x30?!?.3C++語(yǔ)言的詞匯三、字面常量即用雙引號(hào)括起來(lái)的字符序列。⑷字符串常量:
①字符常量和字符串常量是不同的。說(shuō)明HELLO‘\0’H§2.3C++語(yǔ)言的詞匯三、字面常量即用雙引號(hào)括起來(lái)的字符序列。⑷字符串常量:②不能將字符串常量賦給字符常量。例如:說(shuō)明charc=“abc”;//error§2.3C++語(yǔ)言的詞匯三、字面常量即用雙引號(hào)括起來(lái)的字符序列。⑷字符串常量:說(shuō)明③單個(gè)字符的字符串與字符在輸出的表示上沒(méi)有差別,因?yàn)樽址敵鰰r(shí),C++并不把0結(jié)束符一同輸出。例如:cout<<“a”<<endl;cout<<‘a(chǎn)’<<endl;輸出結(jié)果為:aa§2.3C++語(yǔ)言的詞匯四、運(yùn)算符說(shuō)明①C++語(yǔ)言的運(yùn)算符和運(yùn)算形式很豐富,要尤其注意一些包含混和操作的運(yùn)算符。如++、--、+=、-=等的功能和用法。②C++語(yǔ)言的某些運(yùn)算符有多種含義。如*的用法。(第三章詳述)§2.4C++程序的基本框架一、SP框架main用戶定義函數(shù)全局變量庫(kù)函數(shù)入口出口從結(jié)構(gòu)設(shè)計(jì)的觀點(diǎn),一個(gè)C++程序由下面幾個(gè)部分組成:主函數(shù)、用戶定義函數(shù)、庫(kù)函數(shù)、全局說(shuō)明。例外還包括預(yù)處理命令和注釋。§2.4C++程序的基本框架二、OOP框架按照面向?qū)ο蟪绦蛟O(shè)計(jì)的思想,其主體是若干類定義的集合。理想的C++程序應(yīng)由以下幾部分組成:類的定義主函數(shù)注釋預(yù)處理命令包括類的說(shuō)明及類成員函數(shù)的類外定義程序的入口分布于程序各處把程序文件劃分成若干.h和.cpp文件§2.5運(yùn)行C++程序從C++源程序到可執(zhí)行程序的步驟:
編輯、預(yù)處理、編譯、鏈接、調(diào)試C++源程序C++預(yù)處理后的C++源程序目標(biāo)程序可執(zhí)行程序運(yùn)行編輯器預(yù)處理器C++編譯器鏈接器程序員調(diào)試出錯(cuò)信息§2.6C++的運(yùn)行環(huán)境Microsoft公司的VisualC++6.0Borland公司的BorlandC++5.02等等File:實(shí)現(xiàn)與文件有關(guān)的所有操作Edit:實(shí)現(xiàn)編輯操作View:修改顯示狀態(tài)Insert:用于在工程中增加文件或組件Project:用于控制整個(gè)工程Build:用于編譯、連接和調(diào)試Tools:用于定制和訪問(wèn)VC的工具Window:用于改變窗口大小Help:使用MSDN及其他幫助選擇C++源文件輸入文件名指定文件位置單擊OKabc輸入程序之后存盤存盤后,選擇compileabc.cpp項(xiàng),進(jìn)行編譯,給出錯(cuò)誤信息。編譯無(wú)錯(cuò)后,自動(dòng)進(jìn)行鏈接,并生成可執(zhí)行文件,選則Executeabc.exe。§2.2C++語(yǔ)言的基本符號(hào)一、基本符號(hào)分類
每種語(yǔ)言都用一組字符來(lái)構(gòu)造有意義的語(yǔ)句。C++程序是用下列字符所組成的字符集寫成的:大小寫英文字母:a~z,A~Z數(shù)字字符:0~9特殊字符:空格!#%^&*_(下劃線)
-+=~<>/\|.,:;?’”()[]{}$@§2.2C++語(yǔ)言的基本符號(hào)二、基本符號(hào)的ASCII編碼P31例:charcl=‘a(chǎn)’;
inti=cl;
cout<<cl<<endl<<i;輸出結(jié)果:a97§2.3C++語(yǔ)言的詞匯一、關(guān)鍵字(保留字)關(guān)鍵字是一類有特定的專門含義的單詞。
在程序中用到的其他名字(標(biāo)識(shí)符)不能與C/C++的關(guān)鍵字有相同的拼法和大小寫。關(guān)鍵字也不能重新定義。注§2.3C++語(yǔ)言的詞匯一、關(guān)鍵字(保留字)①C++的關(guān)鍵字一般包含了幾乎所有的C
語(yǔ)言的關(guān)鍵字說(shuō)明②C++的關(guān)鍵字集是在不斷變化的③不同版本的C++的關(guān)鍵字集可能不同補(bǔ)充:基本關(guān)鍵字表asmautobreakcasecatchcharclassconstcontinuedefaultdeletedodoubleelseenumexternfloatforfriendgotoifinlineintlongnewoperatorprivateprotectedpublicregisterreturnshortsignedsizeofstaticstructswitchtemplatethisthrowtrytupedefunionunsignedvirtualvoidvolatilewhile§2.3C++語(yǔ)言的詞匯二、標(biāo)識(shí)符標(biāo)識(shí)符是由程序員為程序中的各種成份——
變量,有名常量,用戶定義的類型,枚舉類型的值,函數(shù)及其參數(shù),類,對(duì)象等所起的名字。說(shuō)明
標(biāo)識(shí)符必須符合以下規(guī)則:§2.3C++語(yǔ)言的詞匯標(biāo)識(shí)符必須符合的規(guī)則:1.不能是C++關(guān)鍵字,如for,if,case等不可作標(biāo)識(shí)符;2.標(biāo)識(shí)符中字母區(qū)分大小寫,如Abc與abc被認(rèn)為是兩個(gè)不同的標(biāo)識(shí)符。而關(guān)鍵字不區(qū)分大小寫,如for,F(xiàn)OR,F(xiàn)or,foR都認(rèn)為是同一關(guān)鍵字;3.第一個(gè)字符必須是字母或下劃線;§2.3C++語(yǔ)言的詞匯標(biāo)識(shí)符必須符合的規(guī)則:4.不要太長(zhǎng),一般不超過(guò)31個(gè)字符為宜(太長(zhǎng)則書(shū)寫困難,反為不美);5.不能以數(shù)字開(kāi)頭。如C5合法,而5C則為非法;6.中間不能有空格。如map合法,而map則為非法;§2.3C++語(yǔ)言的詞匯標(biāo)識(shí)符必須符合的規(guī)則:7.變量名不能包含.;,”’+-之類的特殊符號(hào)。實(shí)際上,標(biāo)識(shí)符中除了能使用26個(gè)英文字母的大小寫和數(shù)字之外,只能使用下劃線_。numberOfStudentnumOfStudentDx6y命名的方式?jīng)Q定了程序書(shū)寫的風(fēng)格補(bǔ)充:介紹幾種常用的命名方式1.駱駝表示法:mycarmy_carmyCar易讀,但是下劃線書(shū)寫困難標(biāo)識(shí)符中不能出現(xiàn)空格補(bǔ)充:介紹幾種常用的命名方式2.匈牙利標(biāo)記法:iMycaripMycar表示整型指針變量表示整型變量在每個(gè)變量名的前面加上若干表示類型的字符§2.3C++語(yǔ)言的詞匯三、字面常量
常量:C++程序中的常量是指固定不變的量。字面常量有名常量例如:圓周率pai=3.1416Int型常量float型常量char型常量字符串常量§2.3C++語(yǔ)言的詞匯三、字面常量即整型常量,可用3種形式表示:⑴Int型常量:①十進(jìn)制整數(shù)。如123,-456,0,79834等。
如果某個(gè)整數(shù)超出了一般整數(shù)的表示范圍,系統(tǒng)可自動(dòng)按長(zhǎng)整型(longint)來(lái)處理。如79834L表示長(zhǎng)整型。若此字面整數(shù)超出了長(zhǎng)整型范圍,系統(tǒng)將發(fā)出警告。注§2.3C++語(yǔ)言的詞匯三、字面常量即整型常量,可用3種形式表示:⑴Int型常量:②八進(jìn)制整數(shù)
以零開(kāi)頭的整數(shù)表示八進(jìn)制整數(shù)。如0123,表示(123)8。§2.3C++語(yǔ)言的詞匯三、字面常量即整型常量,可用3種形式表示:⑴Int型常量:③十六進(jìn)制整數(shù)
以零和字母x開(kāi)頭或以零和字母X開(kāi)頭的整數(shù)表示十六進(jìn)制整數(shù)。如0x123或0X123,表示(123)16。§2.3C++語(yǔ)言的詞匯三、字面常量即實(shí)型常量,實(shí)數(shù)在C++中就是浮點(diǎn)數(shù)。實(shí)數(shù)有2種表示:⑵float型常量:①定點(diǎn)數(shù)形式:如0.123,.456,0.0等。②指數(shù)形式:如123e5,123E5都表示123×105?!?.3C++語(yǔ)言的詞匯三、字面常量⑵float型常量:?jiǎn)尉?float)48f或F后綴34.5f
雙精度(double)810默認(rèn)34.5
長(zhǎng)雙精度
(longdouble)1019l或L后綴34.5e2L種類占用內(nèi)存有效數(shù)字表示形式舉例§2.3C++語(yǔ)言的詞匯三、字面常量即字符常量,是用單引號(hào)括起來(lái)的一個(gè)字符。如‘a(chǎn)’,‘?’等。⑶char型常量:C++還允許使用一種特殊形式的字符常量,即以“\”開(kāi)頭的字符序列,如‘\n’。注0表示一個(gè)整數(shù)值‘0’表示一個(gè)數(shù)字字符,其ASCII碼等于48或0x30?!?.3C++語(yǔ)言的詞匯三、字面常量即用雙引號(hào)括起來(lái)的字符序列。⑷字符串常量:①字符常量和字符串常量是不同的。說(shuō)明HELLO‘\0’H§2.3C++語(yǔ)言的詞匯三、字面常量即用雙引號(hào)括起來(lái)的字符序列。⑷字符串常量:②不能將字符串常量賦給字符常量。例如:說(shuō)明charc=“abc”;//error§2.3C++語(yǔ)言的詞匯三、字面常量即用雙引號(hào)括起來(lái)的字符序列。⑷字符串常量:說(shuō)明③單個(gè)字符的字符串與字符在輸出的表示上沒(méi)有差別,因?yàn)樽址敵鰰r(shí),
C++并不把0結(jié)束符一同輸出。例如:cout<<“a”<<endl;cout<<‘a(chǎn)’<<endl;輸出結(jié)果為:aa§2.3C++語(yǔ)言的詞匯四、運(yùn)算符說(shuō)明①C++語(yǔ)言的運(yùn)算符和運(yùn)算形式很豐富,要尤其注意一些包含混和操作的運(yùn)算符。如++、--、+=、-=等的功能和用法。②C++語(yǔ)言的某些運(yùn)算符有多種含義。如*的用法。(第三章詳述)§2.4C++程序的基本框架一、SP框架main用戶定義函數(shù)全局變量庫(kù)函數(shù)入口出口
從結(jié)構(gòu)設(shè)計(jì)的觀點(diǎn),一個(gè)C++程序由下面幾個(gè)部分組成:主函數(shù)、用戶定義函數(shù)、庫(kù)函數(shù)、全局說(shuō)明。另外還包括預(yù)處理命令和注釋?!?.4C++程序的基本框架二、OOP框架
按照面向?qū)ο蟪绦蛟O(shè)計(jì)的思想,其主體是若干類定義的集合。理想的C++程序應(yīng)由以下幾部分組成:類的定義主函數(shù)注釋預(yù)處理命令包括類的說(shuō)明及類成員函數(shù)的類外定義程序的入口分布于程序各處把程序文件劃分成若干.h和.cpp文件§2.5運(yùn)行C++程序從C++源程序到可執(zhí)行程序的步驟:
編輯、預(yù)處理、編譯、鏈接、調(diào)試C++源程序C++預(yù)處理后的C++源程序目標(biāo)程序可執(zhí)行程序運(yùn)行編輯器預(yù)處理器C++編譯器鏈接器程序員調(diào)試出錯(cuò)信息第三章基本數(shù)據(jù)類型與基本運(yùn)算包含簡(jiǎn)單計(jì)算的C++程序基本類型及其派生類型說(shuō)明語(yǔ)句基本運(yùn)算符§3.1包含簡(jiǎn)單計(jì)算的C++程序一、程序?qū)嵗?求和#include<iostream.h>voidmain(){inta,b,sum;//說(shuō)明三個(gè)整型變量
a=43;b=37;//賦值語(yǔ)句
sum=a+b;//“+”、“=”是C++的算術(shù)運(yùn)算符
cout<<“Thesumis”<<sum;cout<<endl;}P55§3.1包含簡(jiǎn)單計(jì)算的C++程序二、程序?qū)嵗?計(jì)算圓面積#include<iostream.h>voidmain(){constfloatpai=3.14;//說(shuō)明浮點(diǎn)型常量
floatradius;cout<<“Enterradius:”;cin<<radius;floatarea=pai*radius*radius;//說(shuō)明后即被賦值
cout<<“\nTheareaofcircleis”<<area<<endl;}P56§3.2基本類型及其派生類型一、C++的數(shù)據(jù)類型C++程序中的數(shù)據(jù)類型以如下不同類型的形式出現(xiàn):1.基本類型2.用戶定義類型3.導(dǎo)出類型
由系統(tǒng)定義。C++語(yǔ)言在int,float,char,void四種基本類型的基礎(chǔ)上又給出了若干類型的派生類型。
是OOP區(qū)別于一般SP語(yǔ)言的主要特征之一。C++既可以定義象棧、隊(duì)列、集合、布爾類型等多種數(shù)據(jù)類型,又可以結(jié)合具體問(wèn)題定義象學(xué)生、汽車等類型。
由已定義類型的某種確定的方式產(chǎn)生的新類型,主要指數(shù)組、指針和引用類型?!?.2基本類型及其派生類型二、C++的基本類型2.float型3.char型4.void型float型數(shù)據(jù)占4個(gè)字節(jié)空間,取值范圍為-3.4E(+/-)38~3.4E(+/-)38,可應(yīng)用于部分運(yùn)算。char型數(shù)據(jù)占1個(gè)字節(jié)空間,值集為全部基本字符,ASCII碼集或擴(kuò)充ASCII碼集對(duì)應(yīng)的全部符號(hào)。char型可看作是字符的整型,因此可參與的運(yùn)算相當(dāng)多。無(wú)值型。1.int型int型數(shù)據(jù)占2個(gè)字節(jié)空間,取值范圍為-32768~32767,可參與幾乎所有的運(yùn)算?!?.2基本類型及其派生類型2.float型3.char型4.void型說(shuō)明1.int型①void指沒(méi)有數(shù)值的數(shù)據(jù)類型。沒(méi)有任何返回值的函數(shù)應(yīng)被說(shuō)明為void類型。如:
voidfn();
在函數(shù)體內(nèi),可以使用return語(yǔ)句,但return
之后不能有任何表達(dá)式
(C++對(duì)此檢查非常嚴(yán)格)②void也會(huì)出現(xiàn)在函數(shù)體說(shuō)明中。如:
intg(void);
此語(yǔ)句說(shuō)明g()是一個(gè)不需要任何入口參數(shù)的函數(shù),并且返回一個(gè)int類型的值。C++中,也可以寫成:intg();③不能把數(shù)據(jù)說(shuō)明成void型,因?yàn)樽兞空f(shuō)明成沒(méi)有任何值是沒(méi)有意義的。④void型可以說(shuō)明指針,
void指針在C++中是一種普通指針類型(傳統(tǒng)的C
中被當(dāng)成字符指針),如
void*ptr;
指針ptr可以被賦給指向任何類型的指針。§3.2基本類型及其派生類型三、基本類型的派生類型
基本類型經(jīng)過(guò)簡(jiǎn)單的字長(zhǎng)及范圍放大或縮小,就形成了基本類型的簡(jiǎn)單派生類型。派生類型的說(shuō)明符由int、float、char前面加上類型修飾符組成。類型修飾符包括:shortlongsignedunsingeddoubleP61§3.2基本類型及其派生類型四、enum類型enum類型又稱枚舉類型,它是一種由用戶參與定義的類型。其格式為:enum<enum類型名>{<枚舉值表>}<枚舉變量表>;enumcolor{red,blue,green,white};例§3.2基本類型及其派生類型四、enum類型⒈一個(gè)enum類型實(shí)際上是int型的一個(gè)子集,其每一個(gè)值代表一個(gè)整數(shù)。說(shuō)明⒉幾個(gè)枚舉值全未賦值時(shí),它們自左至右分別與整數(shù)0、1、…n-1相對(duì)應(yīng)。§3.2基本類型及其派生類型四、enum類型⒊若第i個(gè)枚舉值賦常量值為整數(shù)m,則未賦值的后續(xù)枚舉值分別與整數(shù)m+1、
m+2對(duì)應(yīng),直到下一個(gè)賦了值的枚舉值或結(jié)束。說(shuō)明enumcolor{red=100,blue=200,green,white=400};§3.2基本類型及其派生類型四、enum類型⒋枚舉類型的說(shuō)明也可作為成組說(shuō)明若干整形符號(hào)常量的方法。說(shuō)明⒌C++的enum類型只有一個(gè)賦值操作,不能進(jìn)行任何算術(shù)運(yùn)算,也不能通過(guò)強(qiáng)制類型轉(zhuǎn)換而直接給enum類型賦整數(shù)值?!?.2基本類型及其派生類型四、enum類型⒍定義了枚舉類型之后,枚舉變量的取值只能取枚舉類型定義時(shí)規(guī)定的值。說(shuō)明colorpaint=green;colorpaint=200;//error§3.3說(shuō)明語(yǔ)句一、語(yǔ)句2.表達(dá)式語(yǔ)句3.控制語(yǔ)句4.復(fù)合語(yǔ)句和空語(yǔ)句1.說(shuō)明語(yǔ)句§3.3說(shuō)明語(yǔ)句一、語(yǔ)句2.表達(dá)式語(yǔ)句3.控制語(yǔ)句4.復(fù)合語(yǔ)句和空語(yǔ)句1.說(shuō)明語(yǔ)句對(duì)程序中所用到的名字標(biāo)識(shí)符在使用前加以定義和說(shuō)明,有的還同時(shí)給與初始化?!?.3說(shuō)明語(yǔ)句一、語(yǔ)句2.表達(dá)式語(yǔ)句3.控制語(yǔ)句4.復(fù)合語(yǔ)句和空語(yǔ)句1.說(shuō)明語(yǔ)句程序中要求計(jì)算機(jī)對(duì)數(shù)據(jù)進(jìn)行處理和操作的語(yǔ)句?!?.3說(shuō)明語(yǔ)句一、語(yǔ)句2.表達(dá)式語(yǔ)句3.控制語(yǔ)句4.復(fù)合語(yǔ)句和空語(yǔ)句1.說(shuō)明語(yǔ)句程序中用來(lái)控制語(yǔ)句執(zhí)行次序的語(yǔ)句。§3.3說(shuō)明語(yǔ)句一、語(yǔ)句2.表達(dá)式語(yǔ)句3.控制語(yǔ)句4.復(fù)合語(yǔ)句和空語(yǔ)句1.說(shuō)明語(yǔ)句
復(fù)合語(yǔ)句是用“{”和“}”括起來(lái)的若干語(yǔ)句,又稱為“塊”或“塊語(yǔ)句”。空語(yǔ)句是一個(gè)特殊的表達(dá)式語(yǔ)句,不做任何事情?!?.3說(shuō)明語(yǔ)句二、常量和變量常量(constant):在程序執(zhí)行過(guò)程中其值不能改變的數(shù)據(jù)稱為常量。變量(variable):在程序執(zhí)行過(guò)程中其值可以改變的數(shù)據(jù)稱為變量?!?.3說(shuō)明語(yǔ)句三、常量說(shuō)明const<類型名><常量名>=<表達(dá)式>;例如:constintN=2000;constfloatpai=3.14159;§3.3說(shuō)明語(yǔ)句三、常量說(shuō)明例如:constfloatpai;pai=3.14159;//error說(shuō)明⒈定義成const后的常量,程序中對(duì)其只能讀不能修改,由于不可修改,所以常量定義時(shí)必須初始化?!?.3說(shuō)明語(yǔ)句三、常量說(shuō)明例如:
constintnumber=max(8,3);//error
說(shuō)明⒉常量名不能放在賦值語(yǔ)句的左邊。補(bǔ)充:關(guān)于#define
在編譯預(yù)處理命令中使用宏替換定義符號(hào)常量的方法與用const方式定義的方法有所不同:
#definepai3.14159;
宏替換是在編譯時(shí)把程序中出現(xiàn)的所有標(biāo)識(shí)符pai都用3.14159來(lái)替換,僅僅是兩個(gè)字符串的代換,并不是一個(gè)具有一定類型的常量名,隨后的編譯無(wú)法發(fā)現(xiàn)由它引起的數(shù)據(jù)類型誤用的錯(cuò)誤?!?.3說(shuō)明語(yǔ)句四、變量說(shuō)明[<存儲(chǔ)類>]<類型名或類型定義><變量名表>;例如:
intsize,high,temp=37;staticlongsum;autofloatt=0.5;§3.3說(shuō)明語(yǔ)句四、變量說(shuō)明說(shuō)明①在同一語(yǔ)句里不能混合定義不同類型的變量。②存儲(chǔ)類:自動(dòng)變量auto寄存器變量register靜態(tài)變量static外部變量extern缺省,按自動(dòng)變量處理[<存儲(chǔ)類>]<類型名或類型定義><變量名表>;§3.3說(shuō)明語(yǔ)句四、變量說(shuō)明說(shuō)明③類型名和類型定義不可缺省,用以指定數(shù)據(jù)類型。④變量名表:列出該說(shuō)明語(yǔ)句所定義的同一類型的變量及其初值。其格式為:<變量名>[=<表達(dá)式>],<變量名表>[<存儲(chǔ)類>]<類型名或類型定義><變量名表>;§3.3說(shuō)明語(yǔ)句四、變量說(shuō)明1.全局變量和局部變量全局變量:其說(shuō)明語(yǔ)句不在任何一個(gè)類定義、函數(shù)定義和復(fù)合語(yǔ)句之內(nèi)的變量。即包含在某一對(duì)“{”和“}”之外的變量。占用內(nèi)存的數(shù)據(jù)區(qū),在程序運(yùn)行過(guò)程中位置不變?!?.3說(shuō)明語(yǔ)句四、變量說(shuō)明1.全局變量和局部變量局部變量:其說(shuō)明語(yǔ)句在某一類定義、函數(shù)定義和復(fù)合語(yǔ)句之內(nèi)的變量。即包含在某一對(duì)“{”和“}”之內(nèi),所占空間為程序運(yùn)行時(shí)設(shè)置的臨時(shí)工作區(qū),以堆棧的形式允許反復(fù)占用和釋放。§3.3說(shuō)明語(yǔ)句四、變量說(shuō)明2.生存期與作用域生存期:變量a的生存期是指從a被說(shuō)明且分配了內(nèi)存開(kāi)始,直到該說(shuō)明語(yǔ)句失去效力,相應(yīng)內(nèi)存被釋放為止,稱為該變量的生存期。全局變量的生存期局部變量的生存期§3.3說(shuō)明語(yǔ)句四、變量說(shuō)明2.生存期與作用域作用域:變量a的作用域是指a可以代表該變量的范圍。#include<iostream.h>voidfn(inty)//y作用域開(kāi)始{intx=1;//x作用域開(kāi)始
if(x>y)cout<<x<<endl;elsecout<<y<<endl;}//x和y作用域結(jié)束例1描述作用域的概念#include<iostream.h>intid=3;voidmain(){id=5;{intid=7;cout<<“id=”<<id<<endl;//輸出7}cout<<“id=”<<id<<endl;//輸出5}例2不同作用域的同名變量#include<iostream.h>intn;voidfn(){cout<<“m=”<<m<<endl;//errorcout<<“n=”<<n<<endl;//ok}voidmain(){doublem=3.8;cout<<“n=”<<n<<endl;//okfn();}例3全局變量和局部變量§3.3說(shuō)明語(yǔ)句四、變量說(shuō)明3.變量的存儲(chǔ)類型⑴auto變量⑵register變量⑶static變量該變量在程序的臨時(shí)工作區(qū)中獲得存儲(chǔ)空間,為默認(rèn)值。當(dāng)寄存器夠用時(shí),可以以寄存器作為存儲(chǔ)空間。⑷extern變量§3.3說(shuō)明語(yǔ)句四、變量說(shuō)明3.變量的存儲(chǔ)類型⑴auto變量⑵register變量⑶static變量靜態(tài)變量和全局變量一樣,在內(nèi)存數(shù)據(jù)區(qū)分配空間,在整個(gè)程序運(yùn)行中不釋放。說(shuō)明②靜態(tài)變量如未賦初值,系統(tǒng)將自動(dòng)為其賦默認(rèn)初值0(NULL)。③靜態(tài)變量的說(shuō)明語(yǔ)句在程序執(zhí)行過(guò)程中多次運(yùn)行或多次被同樣說(shuō)明時(shí),其第一次稱為定義性說(shuō)明,進(jìn)行內(nèi)存分配和賦初值操作,在以后的重復(fù)說(shuō)明時(shí)僅維持原狀,不再做賦初值的操作。⑷extern變量//example1.cpp#include<iostream.h>intn;voidfn();voidmain(){n=20;cout<<n<<endl;fn();}//example2.cpp#include<iostream.h>staticintn;//全局靜態(tài)變量voidfn(){n++;cout<<n<<endl;}運(yùn)行結(jié)果:201§3.3說(shuō)明語(yǔ)句全局靜態(tài)變量使該變量成為定義該變量的源文件所獨(dú)享?!?.3說(shuō)明語(yǔ)句四、變量說(shuō)明3.變量的存儲(chǔ)類型⑴auto變量⑵register變量⑶static變量⑷extern變量①一般用于由多個(gè)文件組成的程序中,避免重復(fù)分配內(nèi)存。帶extern的變量是變量聲明,不是變量定義。說(shuō)明②如果共同變量一次都沒(méi)有定義,或者在各個(gè)文件中分別定義,造成定義多次,或者聲明的類型不一致,都會(huì)造成直接或間接的錯(cuò)誤。例如://file1.cppinta=5;intb=6;externintc;//file2.cppinta;//error:多次定義externdoubleb;//error:類型不一致externintc;//error:無(wú)定義§3.3說(shuō)明語(yǔ)句
兩個(gè)源文件都以常規(guī)方式定義變量a,沒(méi)有一個(gè)聲明extern,若在VC環(huán)境下,會(huì)在鏈接時(shí),給出一個(gè)錯(cuò)誤信息:intaalreadydefinedinfile1.obj
兩個(gè)源文件的b類型不一致,VC在鏈接時(shí)報(bào)告一個(gè)錯(cuò)誤信息:linkerror:unresolvedexternal
兩個(gè)源文件都聲明了變量c為extern,這時(shí)編譯不會(huì)出錯(cuò),鏈接時(shí)卻會(huì)找不到該變量,產(chǎn)生一個(gè)鏈接錯(cuò)誤,因?yàn)闆](méi)有一個(gè)文件為該變量分配空間例1//file1.cpp#include<iostream.h>voidfn1();voidfn2();intn;voidmain(){n=3;fn1();cout<<n<<endl;}voidfn1(){fn2();}//file2.cppexternintn;//n由另一個(gè)源
//文件定義voidfn2(){n=8;//使用n}運(yùn)行結(jié)果:8§3.3說(shuō)明語(yǔ)句例2§3.3說(shuō)明語(yǔ)句五、類型說(shuō)明
作用:由用戶為一個(gè)已定義的類型賦予一個(gè)新的類型名。typedeftypedef<已定義類型名><新類型名>;typedefintid_number;typedeffloattemprature;例測(cè)試題
面向?qū)ο蟪绦蛟O(shè)計(jì)將數(shù)據(jù)與___放在一起,做為一個(gè)相互依存、不可分割的整體來(lái)處理。A對(duì)數(shù)據(jù)的操作B信息C數(shù)據(jù)隱藏D數(shù)據(jù)抽象A2面向?qū)ο蟪绦蛟O(shè)計(jì)優(yōu)于傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計(jì),其優(yōu)越性主要表現(xiàn)在,它有希望解決軟件工程的兩個(gè)主要問(wèn)題:軟件復(fù)雜性控制和___。A精化已有的代碼B編寫可重用代碼C共享代碼D軟件生產(chǎn)率的提高D3C++對(duì)C語(yǔ)言作了很多改進(jìn),下列描述中___使得C語(yǔ)言發(fā)生了質(zhì)變,即從面向過(guò)程變成了面向?qū)ο蟆增加了一些新的運(yùn)算符B允許函數(shù)重載,并允許設(shè)置默認(rèn)參數(shù)C規(guī)定了函數(shù)說(shuō)明必須用原型D引進(jìn)了類和對(duì)象的概念D4在C語(yǔ)言中合法的字符型常量是___。A“A”B‘t’C65DAB字符常量是用單引號(hào)括起來(lái)的一個(gè)字符。§3.4基本運(yùn)算符一、運(yùn)算符和表達(dá)式的概念單目運(yùn)算:<單目運(yùn)算符><運(yùn)算分量>或<運(yùn)算分量><單目運(yùn)算符>例如:-24,-a,i++雙目運(yùn)算:三目運(yùn)算:多目運(yùn)算:雙目運(yùn)算:?jiǎn)文窟\(yùn)算:<左運(yùn)算分量><雙目運(yùn)算符><右運(yùn)算分量>三目運(yùn)算:雙目運(yùn)算:條件運(yùn)算符單目運(yùn)算:多目運(yùn)算:?jiǎn)文窟\(yùn)算:三目運(yùn)算:函數(shù)調(diào)用§3.4基本運(yùn)算符二、賦值運(yùn)算1.賦值運(yùn)算是一種雙目運(yùn)算,其形式為:〈變量名〉=〈表達(dá)式〉賦值運(yùn)算的操作是:①計(jì)算表達(dá)式的值
②把該值賦給左端的變量例如:a=b+c*a§3.4基本運(yùn)算符2.賦值縮寫,即復(fù)合賦值運(yùn)算
當(dāng)一變量既出現(xiàn)在表達(dá)式的左邊,又出現(xiàn)在表達(dá)式的右邊時(shí),可以縮寫。x=x*y;x*=y;x=x+y;x+=y;二、賦值運(yùn)算§3.4基本運(yùn)算符三、算術(shù)運(yùn)算1.增量和減量例如:i++;//等價(jià)于i=i+1;++i;//等價(jià)于i=i+1;a=i++;//等價(jià)于{a=i;i=i+1;}a=++i;//等價(jià)于{i=i+1;a=i;}增量前綴增量后綴增量減量前綴減量后綴減量++〈運(yùn)算分量〉〈運(yùn)算分量〉++--〈運(yùn)算分量〉〈運(yùn)算分量〉--§3.4基本運(yùn)算符1.增量和減量inta=3;intb=++a;//相當(dāng)于a=a+1;
b=a;
cout<<a<<“”<<b<<endl;intc=a++;//相當(dāng)于c=a;a=a+1;
cout<<a<<“”<<c<<endl;例1輸出結(jié)果:4454三、算術(shù)運(yùn)算§3.4基本運(yùn)算符1.增量和減量例2輸出結(jié)果:2212in
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年貨場(chǎng)階段性借用合同
- 2025年度智能化磚廠設(shè)備承包合同書(shū)4篇
- 2024預(yù)制場(chǎng)地租賃與綠色建筑評(píng)價(jià)服務(wù)合同3篇
- 2024食堂人員培訓(xùn)計(jì)劃與聘用合同規(guī)范3篇
- 2025年度時(shí)尚飾品代理招商合同協(xié)議4篇
- 2024版樓頂場(chǎng)地出租合同
- 2025年度戶外活動(dòng)場(chǎng)地草籽草坪鋪設(shè)合同范本3篇
- 2025年度智能辦公場(chǎng)地租賃及物聯(lián)網(wǎng)技術(shù)應(yīng)用合同4篇
- 2024食品行業(yè)智能物流合同
- 2025年度住宅小區(qū)樓頂太陽(yáng)能設(shè)備安裝合同4篇
- 廣西貴港市2023年中考物理試題(原卷版)
- 外觀質(zhì)量評(píng)定報(bào)告
- 窒息的急救解讀課件
- 集團(tuán)總裁崗位說(shuō)明書(shū)
- 中醫(yī)藥膳學(xué)課件
- 教科版二年級(jí)下冊(cè)科學(xué)第一單元測(cè)試卷(含答案)
- 春節(jié)值班安排通知
- 下腔靜脈濾器置入術(shù)共27張課件
- 人教小學(xué)四年級(jí)上冊(cè)數(shù)學(xué)知識(shí)點(diǎn)歸納
- 2022年上海健康醫(yī)學(xué)院職業(yè)適應(yīng)性測(cè)試題庫(kù)及答案解析
- 安徽省血液凈化??谱o(hù)士臨床培訓(xùn)基地條件
評(píng)論
0/150
提交評(píng)論