版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、,C++語言程序設(shè)計,(C++ Language Programming),第一章 緒論,(Chapter 1 Introduction),重慶大學(xué)經(jīng)濟與工商管理學(xué)院,張洪武 博士,zhw@cqu.edu.cn,,課程簡介,本課程為高級語言程序設(shè)計的入門課程,完全針對零起點的學(xué)生,可作為其他信息類相關(guān)課程的基礎(chǔ)課。目標(biāo)是使學(xué)生通過本課程的學(xué)習(xí),掌握面向?qū)ο蟪绦蛟O(shè)計的基本概念和方法、C++的基本語法和編程方法;學(xué)會使用集成開發(fā)環(huán)境;掌
2、握程序調(diào)試方法;初步了解常用數(shù)據(jù)結(jié)構(gòu)和非數(shù)值算法;初步了解C++標(biāo)準(zhǔn)模板庫的使用方法。本學(xué)期上課地點:DYC403教室 及自學(xué)課件。實驗課:DS1408實驗室,,課程參考教材,《C++語言程序設(shè)計》,清華大學(xué)出版社,《C++面向?qū)ο蟪绦蛟O(shè)計》,清華大學(xué)出版社《 C 語言程序設(shè)計》, 清華大學(xué)出版社《Thinking in C++, 2nd ed》, Bruce Eckel《The C++ Programming Langu
3、age , Bjarne Stroustrup,《C++語言程序設(shè)計習(xí)題與實驗指導(dǎo)書》,,(,課程內(nèi)容安排,Contents ),第1章 緒 論第2章 C++簡單程序設(shè)計第3章 函數(shù)第4章 類與對象第5章 C++程序的結(jié)構(gòu)第6章 數(shù)組、指針與字符串第7章 繼承與派生第8章 多態(tài)性第9章 群體類和群體數(shù)據(jù)的組織第10章 泛型程序設(shè)計與C++標(biāo)準(zhǔn)模板庫第11章 流類庫與輸入/輸出第12章 異常處
4、理第13章 MFC庫與WINDOWS程序開發(fā)概述,,(,本章主要內(nèi)容,Contents ),計算機程序設(shè)計語言的發(fā)展面向?qū)ο蟮姆椒?面向?qū)ο蟮能浖_發(fā)信息的表示與存儲程序的開發(fā)過程,,機,發(fā),計,算,計算機程序,(Computer Program),語,言,的,計算機的工作是用程序來控制的,程序(program)是指令(Instruction)的集合。,展,指令是計算機可以識別的命令。,,發(fā),展,計,算,機器
5、語言與匯編語言(Machine Language and Assemble Language),機,語,言,的,由計算機硬件系統(tǒng)(Hardware System)可以識別的二進制指令組成的語言稱為機器語言。計算機發(fā)展的初期,軟件工程師們只能用機器語言來編寫程序。這一階段,在人類的自然語言和,計算機編程語言之間存在著巨大的鴻溝。匯編語言將機器指令映射為一些可以被人讀懂的助記符(Symbol),如ADD、SUB等。
6、此時編程語言與人類自然語言間的鴻溝略有縮小,但仍與人類的思維相差甚遠。因為它的抽象層次太低,程序員需要考慮大量的機器細節(jié)。,,計,算,機,高級語言(Advanced Language),語,言,高級語言屏蔽了機器的細節(jié),提高,的,發(fā),展,了語言的抽象層次,程序中可以采用具有一定涵義的數(shù)據(jù)命名和容易理解,的執(zhí)行語句。這使得在書寫程序時可以聯(lián)系到程序所描述的具體事物。,,言,計,算,面向?qū)ο蟮恼Z言(Object
7、 Oriented Language),機,語,出發(fā)點:– 更直接地描述客觀世界中存在的事物,(對象)以及它們之間的關(guān)系。,的,發(fā),展,特點:– 是高級語言。– 將客觀事物看作具有屬性和行為的對象。– 通過抽象找出同一類對象的共同屬性和行為,形成類。,– 通過類的繼承與多態(tài)實現(xiàn)代碼重用,,的,計,算,機,面向?qū)ο蟮恼Z言(Object Oriented Language),語,言,優(yōu)點:,使程序能夠比較直接地反問題
8、域,發(fā),展,的本來面目,軟件開發(fā)人員能夠利用人類認(rèn)識事物所采用的一般思維方法,來進行軟件開發(fā)。,,面,程序設(shè)計方法的發(fā)展歷程,向,對,——面向過程的程序設(shè)計方法(Procedure Oriented Programming),象,的,程序的目的:用于數(shù)學(xué)計算(Computation),方,法,主要工作:設(shè)計求解問題的過程(procedure),缺點:對于龐大、復(fù)雜的程序難以開發(fā)和維護,,象,的,面,向,程序設(shè)計方法的發(fā)展歷程—
9、—面向過程的結(jié)構(gòu)化程序設(shè)計方法(Structurized Procedure Oriented Programming),對,設(shè)計思路– 自頂向下、逐步求精。采用模塊分解與功能抽,方,法,象,自頂向下、分而治之。程序結(jié)構(gòu)(structure) :– 按功能劃分為若干個基本模塊(module) ,形成一,個樹狀(tree)結(jié)構(gòu)。– 各模塊間的關(guān)系盡可能簡單,功能上相對獨立;每一模塊內(nèi)部均是由順序(sequence
10、) 、選擇(choice)和循環(huán)(cycle)三種基本結(jié)構(gòu)組成。– 其模塊化實現(xiàn)的具體方法是使用子程序(subprogram, subroutine) 。,,方,法,面,向,對,程序設(shè)計方法的發(fā)展歷程——面向過程的結(jié)構(gòu)化程序設(shè)計方法(Structurized Procedure Oriented Programming),象,的,優(yōu)點:,有效地將一個較復(fù)雜的程序系統(tǒng)(system)設(shè)計任務(wù)分解(decompos
11、e)成許多易于控制和處理的子任務(wù)(task) ,便于開發(fā)和維護。1,,法,面,向,程序設(shè)計方法的發(fā)展歷程——面向過程的結(jié)構(gòu)化程序設(shè)計方法(Structurized Procedure Oriented Programming),對,象,的,方,缺點:可重用性差、數(shù)據(jù)安全性差、難以開發(fā)圖形界面的應(yīng)用– 把數(shù)據(jù)和處理數(shù)據(jù)的過程分離為相互獨立的實體(entity) 。,– 當(dāng)數(shù)據(jù)結(jié)構(gòu)(data
12、structure)改變時,所有相關(guān)的處理過程都要進行相應(yīng)的修改。– 每一種相對于老問題的新方法都要帶來額外的開銷(cost) 。– 圖形用戶界面(Graphical User Interface)的應(yīng)用,很難用過程來描述和實現(xiàn),開發(fā)和維護都很困難。1,,面,向,對,程序設(shè)計方法的發(fā)展歷程——面向?qū)ο蟮姆椒?Object Oriented Programming),象,的,方,法,將數(shù)據(jù) (
13、data) 及對數(shù)據(jù)的操作 (data manipulation) 方法封裝 (encapsulation) 在一起,作為一個相互依存、不可分離的整體——對象(object) 。對同類型(type)對象抽象(abstract)出其共性,形成類(class) 。,類通過一個簡單的外部接口(interface) ,與外界(environment)發(fā)生關(guān)系(relation) 。對象與對象之間通過消息(message)進行通訊
14、(communication) 。1,,方,法,面,向,對,程序設(shè)計方法的發(fā)展歷程——面向?qū)ο蟮姆椒?Object Oriented Programming),象,的,優(yōu)點:,– 程序模塊間的關(guān)系更為簡單,程序模塊的獨立性(independence)、數(shù)據(jù)的安全性(security)就有了良好的保障。– 通過繼承(inheritance) 與多態(tài)性 ,可以大大提高程序的可重用性(reusage) ,使得
15、軟件的開發(fā)(develop)和維護(maintenance)都更為方便。1,,象,面,向,對,面向?qū)ο蟮幕靖拍睢獙ο?object),一般意義上的對象:,的,方,法,– 是現(xiàn)實世界中一個實際存在的事物。– 可以使有形的(比如一輛汽車),也可以是無形的(比如一項計劃)。,– 是構(gòu)成世界的一個獨立單位,具有:? 靜態(tài)特征:可以用某種數(shù)據(jù)來描述? 動態(tài)特征:對象所表現(xiàn)的行為或具有的功能
16、1,,象,面,向,對,面向?qū)ο蟮幕靖拍睢獙ο?object),面向?qū)ο蠓椒ㄖ械膶ο螅?的,方,法,– 是系統(tǒng)中用來描述客觀事物的一個實體,它是用來構(gòu)成系統(tǒng)的一個基本單位。對象由一組屬性和一組行為構(gòu)成。,– 屬性:用來描述對象靜態(tài)特征的數(shù)據(jù)項。– 行為:用來描述對象動態(tài)特征的操作序列。1,,的,方,法,面,向,對,象,面向?qū)ο蟮幕靖拍睢?class)分類——人類通常的思維方法
17、,分類所依據(jù)的原則——抽象– 例如,石頭、樹木、汽車、房屋等都是人們在長期的生產(chǎn)和生活實踐中抽象出的概念。– 忽略事物的非本質(zhì)特征,只注意那些與當(dāng)前目標(biāo)有關(guān)的本質(zhì)特征,從而找出事物的共性,把具有共同性質(zhì)的事物劃分為一類,得出一個抽象的概念。1,,象,面,向,對,面向?qū)ο蟮幕靖拍睢?class),面向?qū)ο蠓椒ㄖ械?quot;類",的,方,法,– 具有相同屬性和服務(wù)的一
18、組對象的集合– 為屬于該類的全部對象提供了抽象的描述,包括屬性和行為兩個主要部分。,– 類與對象的關(guān)系:猶如模具與鑄件之間的關(guān)系,一個屬于某類的對象稱為該類的一個實例。1,,面,向,對,面向?qū)ο蟮幕靖拍睢庋b(encapsulation),象,的,方,法,把對象的屬性和服務(wù)結(jié)合成一個獨立的系統(tǒng)單位。盡可能隱蔽對象的內(nèi)部細節(jié)。對外形成一個邊界(或者說一道屏障),只保留,有限的對外接口
19、使之與外部發(fā)生聯(lián)系。1,,象,面,向,對,面向?qū)ο蟮幕靖拍睢^承(encapsulation),繼承對于軟件復(fù)用有著重要意義,是面,的,方,法,向?qū)ο蠹夹g(shù)能夠提高軟件開發(fā)效率的重要原因之一。定義:特殊類的對象擁有其一般類的全部屬性與服務(wù),稱作特殊類對一般類的,繼承。例如:將輪船作為一個一般類,客輪便是一個特殊類。1,,象,的,方,法,面,向,對,面向?qū)ο蟮幕靖拍睢鄳B(tài)性,
20、多態(tài)是指在一般類中定義的屬性或行為,被特殊類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。這使得同一個屬性或行為在一般類及其各個特殊類中具有不同的語義。例如:數(shù)的加法->實數(shù)的加法->復(fù)數(shù)的加法2,,的,軟,件,面,向,對,面向?qū)ο蟮能浖こ?Object Oriented Software Project),象,面向?qū)ο蟮能浖こ淌敲嫦驅(qū)ο蠓椒ㄔ谲浖こ填I(lǐng)域的全面應(yīng)用。它包
21、括:– 面向?qū)ο蟮姆治觯∣OA),開,發(fā),– 面向?qū)ο蟮脑O(shè)計(OOD)– 面向?qū)ο蟮木幊蹋∣OP),– 面向?qū)ο蟮臏y試(OOT)– 面向?qū)ο蟮能浖S護(OOSM)2,,面,向,象,系統(tǒng)分析(System Analysis),對,系統(tǒng)分析階段應(yīng)該扼要精確地抽象出,的,軟,件,開,發(fā),系統(tǒng)必須做什么,但是不關(guān)心如何去實現(xiàn)。面向?qū)ο蟮南到y(tǒng)分析,直接用問題域中客觀存在的事物建立模型中的對象,對單個事物及事物之
22、間的關(guān)系,都保留他們的原貌,不做轉(zhuǎn)換,也不打破,原有界限而重新組合,因此能夠很好地映射客觀事物。2,,象,的,面,向,設(shè)計(design),對,針對系統(tǒng)的一個具體實現(xiàn)運用面向?qū)ο蟮姆椒āF渲邪▋煞矫娴墓ぷ鳎?軟,件,開,發(fā),– 把OOA模型直接搬到OOD,作為OOD的一部分– 針對具體實現(xiàn)中的人機界面、數(shù)據(jù)存儲、任務(wù)管理等因素補充一些與實現(xiàn)有關(guān)的部分。,2,,面,向,編程(programming),對,象
23、,的,OOP工作就是用一種面向?qū)ο蟮?軟,件,編程語言把OOD模型(model)中的每個成,開,發(fā),分書寫出來,是面向?qū)ο蟮能浖_發(fā)最終落實的重要階段。,2,,面,向,測試(test),對,象,的,軟,測試的任務(wù)是發(fā)現(xiàn)軟件中的錯誤(error) 。在面向?qū)ο蟮能浖y試中繼續(xù)運用面向,件,開,發(fā),對象的概念與原則來組織測試,以對象的類作為基本測試單位,可以更準(zhǔn)確的發(fā)現(xiàn)程序錯誤并提高測試效率(efficiency)
24、 。,2,,象,的,軟,件,開,發(fā),面,向,維護(maintenance),對,將軟件交付使用后,工作并沒有完結(jié),還要根據(jù)軟件的運行情況和用戶的需求,不斷改進系統(tǒng)。使用面向?qū)ο蟮姆椒ㄩ_發(fā)的軟件,其程序與問題域是一致的,因此,在維護階段運用面向?qū)ο蟮姆椒梢源蟠筇岣哕浖S護的效率。2,,信息的表示和存儲(自學(xué)),(Information Presentation and Storage),信息的分類,計算
25、機的數(shù)字系統(tǒng),程序設(shè)計中常用的數(shù)制不同進位計數(shù)制間的轉(zhuǎn)換信息的存儲單位,二進制數(shù)的編碼表示小數(shù)的表示方法,非數(shù)值信息的表示,2,,的,表,示,與,存,儲,信,息,信息的分類(classification),┌ 指令┌控制信息 ┤│ └ 控制字信息 ┤│ ┌│
26、 ┌ 數(shù)值信息 ┤└數(shù)據(jù)信息 ┤ └│ ┌└ 非數(shù)值信息 ┤└,定點數(shù)浮點數(shù)字符數(shù)據(jù)邏輯數(shù)據(jù),2,,–,信,息,計算機的數(shù)字(digital)系統(tǒng),的,表,示,與,存,儲,計算機采用的是二進制數(shù)字系統(tǒng)?;痉枺?、1進位原則:逢二進一優(yōu)點:– 易于物理實現(xiàn)– 二進制數(shù)運算簡單,機器可靠
27、性高,–,通用性強,缺點:對人來說可讀性差2,表,示,與,存,儲,信,息,程序設(shè)計中常用的數(shù)制,的,進制二進制八進制十進制十六進制,基數(shù)281016,進位原則逢 2 進 1逢 8 進 1逢 10 進 1逢 16 進 1,基本符號0,10,1,2,3,4,5,6,70,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,,A,B,C,D,E,F
28、3,,表,儲,信,息,的,不同進位計數(shù)制間的轉(zhuǎn)換——R 進制→十進制,各位數(shù)字與它的權(quán)相乘,其積相加。,示,與,存,例如:(11111111.11)2=1*27 + 1*26 + 1* 25 +1* 24+ 1* 23 + 1* 22 +1* 21+ 1* 20+1*2-1+1*2-2,=(255.75)10(3506.2)8=3*83 + 5*82 + 0*81 + 6*80 +2*8-1=(1862.
29、25)10(0.2A)16=2*16-1 +10*16-2=(0.1640625)103,與,存,儲,2,2,信,息,的,表,示,不同進位計數(shù)制間的轉(zhuǎn)換——十進制→ R 進制十進制整數(shù)轉(zhuǎn)換成R進制的整數(shù)“除R取余”法,例如:2 68 余 數(shù),2,34 ┄┄┄┄┄┄┄┄┄┄┄┄0,低位,2,2,2,1
30、7 ┄┄┄┄┄┄┄┄┄┄┄ 08 ┄┄┄┄┄┄┄┄┄┄┄ 14 ┄┄┄┄┄┄┄┄┄┄ 0,2 ┄┄┄┄┄┄┄┄┄┄ 01 ┄┄┄┄┄┄┄┄┄ 0,0 ┄┄┄┄┄┄┄┄┄ 1,高位,所以 6810=100010023,,,,存,儲,信,息,的,表,示,與,不同進位計數(shù)制間的轉(zhuǎn)換——十進制→ R 進制十進制小數(shù)轉(zhuǎn)換成R進制小數(shù)“乘 R 取整”法,例如:高位
31、,0.3125×2 = 0 .6250.625 ×2 = 1 .250.25 ×2 = 0 .50.5 ×2 = 1 .0所以 0.312510 = 0.010123,,,,,,,,,,,信,息,的,不同進位計數(shù)制間的轉(zhuǎn)換——二、八、十六進制的相互轉(zhuǎn)換,表,示,與,存,儲,每位八進制數(shù)相當(dāng)于三位二進制數(shù)每位十六進制數(shù)相當(dāng)于四位二進制數(shù)
32、(1011010.10) 2 =(001 011 010 .100)=(132.4)8(1011010.10) 2 =(0101 1010 .1000),=(5A.8)16(F7)16=(1111 0111)2=(11110111)23,,表,信,息,信息的存儲單位,的,位(bit):度量數(shù)據(jù)的最小單位,表示一,示,與,存,儲,位二進制信息。字節(jié)(byte):由八位二進制數(shù)字組
33、成(1byte = 8 bit)。K 字節(jié) 1 K = 1024 byte,M 字節(jié)G 字節(jié),1 M = 1024 K1 G = 1024 M,3,,,,表,3,信,息,二進制數(shù)的編碼表示:原碼,的,"符號──絕對值表示"的編碼,示,與,存,儲,例如:X=+0101011 [X]原 = 0 0101011X=-0101011 [X]原 = 1 0101011符號位
34、缺點:,– 零,的,表,示,不,唯,一,:,[+0]原 =000...0 [-0]原 =100...0– 進行四則運算時,符號位需單獨處理,且運算規(guī)則復(fù)雜。,,信,息,二進制數(shù)的編碼表示:反碼,的,表,示,與,存,儲,正數(shù)的反碼與原碼表示相同。負數(shù)的反碼與原碼有如下關(guān)系:符號位相同(仍用1表示),其余各位取反(0變1,1變0)。例如:X=-1100110 [X]原 =11100110 [X]反 =10011001
35、X=+0000000 [X]原 =00000000 [X]反 =00000000反碼中零的表示也不唯一,X=-0000000 [X]原 =10000000 [X]反 =11111111反碼只是求補碼的中間碼3,,存,儲,信,息,二進制數(shù)的編碼表示:補碼,的,表,示,與,模數(shù):– n位整數(shù)(包括一位符號位),則它的模數(shù)為2n 。 n位小數(shù),小數(shù)點前一位為符號位,則它的模數(shù)為 2。,補數(shù):– 一
36、個數(shù)減去另一個數(shù),或者說一個數(shù)加上一個負數(shù),等于第一個數(shù)加上第二個數(shù)的補數(shù)。例:8+(-2)=8+10 ( mod 12 )– 一個二進制負數(shù)可用其模數(shù)與真值做加法 (模減去該數(shù)的絕對值) 求得其補,碼。,3,,信,息,二進制數(shù)的編碼表示:補碼,的,表,示,與,存,儲,計算機中的補碼表示法– 負數(shù)的補碼由該數(shù)反碼的末位加 1 求得– 對補碼再求補即得到原碼補碼運算規(guī)則– 符號位可作為數(shù)值參加運算–
37、 減法運算可轉(zhuǎn)換為加法運算:,加上一個負數(shù)等于加上該數(shù)的補碼– 補碼運算的結(jié)果仍為補碼– 運算結(jié)果溢出:負數(shù)之和得正數(shù),或正數(shù)之和得負數(shù)3,,表,示,與,存,儲,信,息,小數(shù)的表示方法,的,計算機中通常采用浮點方式表示小數(shù)一個數(shù) N 用浮點形式表示可以寫成:N=M×2E– E表示2的冪,稱為數(shù)N的階碼。階碼確定了數(shù)N的小數(shù)點的位置,其位數(shù)反映了該浮點數(shù)所表示的數(shù)的范圍。– M表示
38、數(shù)N的全部有效數(shù)字,稱為數(shù)N的尾數(shù)。其位數(shù)反映了數(shù)據(jù)的精度。4,,與,信,息,非數(shù)值信息的表示,的,表,示,西文字符:– ASCII碼:用7位二進制數(shù)表示一個字符,最多可以表示27=128個字符,– EBCDIC碼:用8位二進制數(shù)表示一個字符,,存,儲,最多可以表示28=256個字符漢字:– 應(yīng)用較為廣泛的是"國家標(biāo)準(zhǔn)信息交換用,漢字編碼"(GB2312-80標(biāo)準(zhǔn)),簡稱國標(biāo)
39、碼。是二字節(jié)碼,用二個七位二進制數(shù)編碼表示一個漢字。4,,程序的開發(fā)(development)過程,源程序、目標(biāo)程序、翻譯程序三種不同類型的翻譯程序:,匯編程序、編譯程序、解釋程序,程序的開發(fā)過程,編輯、編譯、連接、運行調(diào)試,4,,開,發(fā),過,程,程,序,基本術(shù)語(items),的,源(source)程序:– 用源語言寫的,有待翻譯的程序目標(biāo)(objective)程序:– 也稱為"結(jié)果程序"
40、;,是源程序通過翻譯程序加工以后所生成的程序。翻譯(translation)程序:– 是指一個把源程序翻譯成等價的目標(biāo)程序的程序。4,,程,序,的,基本術(shù)語——三種不同類型的翻譯程序,開,發(fā),過,程,匯編(assemble)程序:其任務(wù)是把用匯編語言寫成的源程序,翻譯成機器語言形式的目標(biāo)程序。編譯(compile)程序:,若源程序是用高級程序設(shè)計語言所寫,經(jīng)翻譯程序加工生成目標(biāo)
41、程序,那么,該翻譯程序就稱為"編譯程序"。4,,程,序,的,基本術(shù)語——三種不同類型的翻譯程序,開,發(fā),過,程,解釋(interpretation)程序:這也是一種翻譯程序,同樣是將高級語言源程序翻譯成機器指令。它與編譯程序不同點就在于:它是邊翻譯邊執(zhí)行的,即輸,入一句、翻譯一句、 執(zhí)行一句,直至將整個源程序翻譯并執(zhí)行完畢。4,,過,程,程,序,程序的開發(fā)過程,的
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論