C程序設(shè)計緒論_第1頁
C程序設(shè)計緒論_第2頁
C程序設(shè)計緒論_第3頁
C程序設(shè)計緒論_第4頁
C程序設(shè)計緒論_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

會計學(xué)1C程序設(shè)計緒論人與計算機的溝通機器語言:機器直接執(zhí)行匯編語言:與機器碼對應(yīng)高級語言:通過“翻譯”010100101001001100110011010100101001001100110011MOVAX,A5hMOVBX,90hINT13h010100101001001100110011。。。for(i=1,i<20;i++){variable+=25;if(variable==100)break;}第1頁/共27頁高級語言高級語言屏蔽了機器的細節(jié),提高了語言的抽象層次,程序中可以采用具有一定涵義的數(shù)據(jù)命名和容易理解的執(zhí)行語句。這使得在書寫程序時可以聯(lián)系到程序所描述的具體事物。高級語言的特征:使用人比較容易理解的邏輯語言來記錄計算機運算過程。高級語言的邏輯結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)等。高級語言與具體機器指令無關(guān)。高級語言需要通過編譯或解釋才能在計算機上運行。第2頁/共27頁面向過程與面向?qū)ο笞钤缑嫦蜻^程FORTRAN77:代碼結(jié)構(gòu)化程序ALGOL60,后發(fā)展成PASCAL:代碼50年代開始發(fā)展,直到80年代。80年代末C語言開始流行,一直到90年代。面向過程實際上就是面向結(jié)構(gòu)和函數(shù)的程序。第3頁/共27頁軟件危機軟件危機最早在1968年的NATO會議提出,表現(xiàn)為:對軟件的需求遠超出現(xiàn)有的生產(chǎn)能力;人們依賴于脆弱的軟件,目前的軟件不可靠、缺乏安全性、性能下降、出錯、難以升級,73%的軟件項目被延遲、超資、取消或失敗。為了從根本上解決軟件危機的危機,人類提出了“軟件工程”的一些列方法,然而,眾多的軟件工程的方法并沒有徹底解決“軟件危機”的問題。第4頁/共27頁軟件危機1986年,弗雷德里克·布魯克斯提出一個著名悲觀論斷:“沒有一種單純的技術(shù)或管理上的進步,能夠獨立地承諾在10年內(nèi)大幅度地提高軟件的生產(chǎn)率、可靠性和簡潔性”。非常遺憾的是銀彈論斷迄今為止尚未打破!據(jù)美國國家標準和技術(shù)研究院的一份報告顯示,占據(jù)世界軟件銷售額85%的是大型的專用軟件,而其開發(fā)的失敗率卻高達70%。針對日趨復(fù)雜的軟件需求的挑戰(zhàn),軟件業(yè)界在90年代發(fā)展出了面向?qū)ο螅∣bject-Oriented)的軟件開發(fā)模式,作為針對“軟件危機”的最佳對策。第5頁/共27頁面向?qū)ο蟮乃枷胍话銓ο螅菏乾F(xiàn)實世界中一個實際存在的事物??梢允褂行蔚模ū热缫惠v汽車),也可以是無形的(比如一項計劃)。是構(gòu)成世界的一個獨立單位,具有:靜態(tài)特征:可以用某種數(shù)據(jù)來描述動態(tài)特征:對象所表現(xiàn)的行為或具有的功能軟件中的對象:對象應(yīng)可以用量化描述和處理;對象具有屬性和行為:屬性:描述對象的靜態(tài)特征的數(shù)據(jù)項;行為:表述對象的動態(tài)特征的操作序列。第6頁/共27頁面向?qū)ο蟮乃枷朊嫦蜻^程好比是無人管理的閱覽室,只有書架和圖書,隨便看,隨便拿。面向?qū)ο蠛帽仁菆D書館,圖書被有效的管理(分類),借書憑證,到期歸還。屬性:各種類型的圖書、各個閱覽室行為:圖書進貨,閱讀規(guī)則,借閱規(guī)則,殘破處理等。第7頁/共27頁面向?qū)ο蟮乃枷搿?/p>

Class分類——人類通常的思維方法分類所依據(jù)的原則——抽象忽略事物的非本質(zhì)特征,只注意那些與當前目標有關(guān)的本質(zhì)特征,從而找出事物的共性,把具有共同性質(zhì)的事物劃分為一類,得出一個抽象的概念。例如,石頭、樹木、汽車、房屋等都是人們在長期的生產(chǎn)和生活實踐中抽象出的概念。第8頁/共27頁面向?qū)ο蟮乃枷搿?/p>

Class面向?qū)ο蠓椒ㄖ械?類"具有相同屬性和服務(wù)的一組對象的集合為屬于該類的全部對象提供了抽象的描述,包括屬性和行為兩個主要部分。類與對象的關(guān)系:

猶如模具與鑄件之間的關(guān)系,一個屬于某類的對象稱為該類的一個實例。第9頁/共27頁面向?qū)ο蟮乃枷搿庋b

Envelopment把對象的屬性和服務(wù)結(jié)合成一個獨立的系統(tǒng)單位。盡可能隱蔽對象的內(nèi)部細節(jié)。對外形成一個邊界(或者說一道屏障),只保留有限的對外接口使之與外部發(fā)生聯(lián)系。例如:圖書館的管理,由管理員驗證你證件的有效性,查找你所需要的資料等。第10頁/共27頁面向?qū)ο蟮乃枷搿^承

Inherit繼承對于軟件復(fù)用有著重要意義,是面向?qū)ο蠹夹g(shù)能夠提高軟件開發(fā)效率的重要原因之一。定義:特殊類的對象擁有其一般類的全部屬性與服務(wù),稱作特殊類對一般類的繼承。例如:將輪船作為一個一般類,客輪便是一個特殊類。第11頁/共27頁面向?qū)ο蟮乃枷搿鄳B(tài)性

Polymorphism多態(tài)是指在一般類中定義的屬性或行為,被特殊類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。這使得同一個屬性或行為在一般類及其各個特殊類中具有不同的語義。例如:數(shù)的加法->實數(shù)的加法

->復(fù)數(shù)的加法第12頁/共27頁軟件編寫的一些常見問題第13頁/共27頁問題1:常量與變量的區(qū)別?常量:在程序運行中其值不能被改變的量。變量:在程序運行中其值可以被改變的量。常量類型:整型常量、實型常量、字符常量、符號常量(宏定義)。#definePI3.1415926變量:變量名,變量值。原則:先定義后使用。inta;a=10;

第14頁/共27頁問題2:運算符的來歷?在低級語言中只有操作指令(instruction)和操作數(shù)(operand)instructionoperand1,operand2高級語言將能完成某項工作的一組有關(guān)指令用函數(shù)(function)來表示。如:intc;c=Add(inta,intb)表示a與b的和。進一步抽象:inta,b,c;…c=a+b;同樣:c=Increase(inta);c=a++;根據(jù)運算符operator的操作數(shù)的個數(shù)來確定運算符的目數(shù):單目、雙目、三目。

第15頁/共27頁問題3:

C語言中有哪些運算符?雙目運算符:有兩個操作數(shù);單目運算符:有一個操作數(shù);雙目運算符:+(加),-(減),*(乘),/(除),%(取余)

=

(賦值)+=、-=、/=、*=、|=、&=、^===(相等),!=(不相等),>(大于),<(小于),>=

(大于等于),<=(小于等于)。||(邏輯或),&&(邏輯與)

<<(左移),>>(右移),|(或),&(與),^(異或)

.(結(jié)構(gòu)成員)、->(指針型結(jié)構(gòu)成員),(逗號運算)第16頁/共27頁問題4:

C語言中有哪些運算符?單目運算符:++(遞增),--(遞減),-(負)。?。ㄟ壿嫹牵(補)&(取地址)、*(按指針取值)sizeof(取大?。?、()(類型轉(zhuǎn)換)、[](數(shù)組下標)三目運算符:

?:(條件運算):c=(a>b)?a:b;等價于if(a>b)c=a;elsec=b;

第17頁/共27頁問題5:

宏定義是什么?1.定義一個常量#definePI3.1415926floatx,y;x=PI/2.0;y=3*PI;2.定義一個帶參數(shù)的表達式#defineDISTANT(x,y)sqrt((x)*(x)+(y)*(y))floatx,y,d;d=DISTANT(x,y);3.字符串可以這樣定義:

#definePRINT_MYNAME(myname) \ printf(“Mynameis=%s”,#myname);4.字符串還能這樣:

#defineNEW_VARIABLE(newtype) \ var=Var_##newtype;第18頁/共27頁問題6:

地址是什么回事?指針又是怎么?地址(address)是數(shù)據(jù)在內(nèi)存中存放的位置。按字節(jié)編號。每個有效的變量都有有效的地址。在有效地址上存放的可能是別的地址的值。例如設(shè)a,b的地址分別是A,B,A=>&a,B=>&b;地址B存放了地址A的值&a=>A=>*B=>b;

因此a=>*(&a)=>*b;所以b是指向a的指針![注]=>為等價于(數(shù)值相同)的意思。

inta;int*b;a=10;b=&a;則*b的值是10!b是a的指針!第19頁/共27頁問題7:雙指針是怎么回事?指針與數(shù)組是什么關(guān)系?請看下面的例子:inta;int*b;int**c;a=10;b=&a;c=&b;c就是指針的指針,即雙指針。數(shù)組有靜態(tài)的(棧stack中申請)和動態(tài)的(堆heap中申請)

charName[10];/*Name擁有10個字節(jié)的空間*/char*Text;Text=malloc(10);/*Text也擁有10個字節(jié)的空間*/

靜態(tài)空間是自動釋放的,而動態(tài)空間是需要調(diào)用Free來釋放的。二維數(shù)組就應(yīng)該用雙指針,如char**。第20頁/共27頁問題8:如何理解函數(shù)的參數(shù)?函數(shù)有形參和實參。形參表示參數(shù)的形式,實參表示實際的參數(shù)傳遞。實參的數(shù)據(jù)類型要與形參保持一致。聲明:voidfunction(intvar1,intvar2);使用:intv1,v2;v1=10;v2=20;function(v1,v2);v1,v2通過函數(shù)入口將數(shù)值傳入function內(nèi)。如果function將var1和var2的值改變了,是否會影響function外部呢?

第21頁/共27頁問題8:如何理解函數(shù)的參數(shù)?如果函數(shù)定義:voidfunction(intvar1,intvar2){var1=100;var2=200;}調(diào)用:intv1,v2;v1=10;v2=20;function(v1,v2);printf(“var1=%d,var2=%d”,v1,v2);結(jié)果是:var1=10,var2=20這稱為傳值調(diào)用。第22頁/共27頁問題8:如何理解函數(shù)的參數(shù)?如果函數(shù)定義:voidfunction(intvar1,int*pvar2){var1=100;*pvar2=200;}調(diào)用:intv1,v2;v1=10;v2=20;function(v1,&v2);printf(“var1=%d,var2=%d”,v1,v2);結(jié)果是:var1=10,var2=200這稱為傳指針調(diào)用。第23頁/共27頁本課考核方法平時成績:20分上課和作業(yè)實驗成績:30分三次MFC編程練習(xí)期末考試:50分開卷考試,基本概念和編程能力第24頁/共27頁

第25頁/共27頁布魯克斯用形

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論