多重程序設(shè)計(jì)_第1頁(yè)
多重程序設(shè)計(jì)_第2頁(yè)
多重程序設(shè)計(jì)_第3頁(yè)
多重程序設(shè)計(jì)_第4頁(yè)
多重程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第一章C語(yǔ)言概述1.1C語(yǔ)言的發(fā)展簡(jiǎn)史與特色1.2簡(jiǎn)單的C程序介紹1.3用C語(yǔ)言解決實(shí)際問題的步驟1.1C語(yǔ)言的發(fā)展簡(jiǎn)史與特色1.1.1C語(yǔ)言發(fā)展簡(jiǎn)史C語(yǔ)言是目前世界上最廣泛使用的通用計(jì)算機(jī)語(yǔ)言。用它既可編寫計(jì)算機(jī)系統(tǒng)軟件,也可編寫各種應(yīng)用軟件,所以在數(shù)百種計(jì)算機(jī)語(yǔ)言中,C語(yǔ)言仍然是目前最流行、最受歡迎的計(jì)算機(jī)語(yǔ)言。現(xiàn)在,Windows已成為計(jì)算機(jī)的主要操作系統(tǒng),相應(yīng)的基于Windows的程序開發(fā)多采用C++,它雖是一種面向?qū)ο蟮恼Z(yǔ)言,但其核心內(nèi)容仍是標(biāo)準(zhǔn)C。1.1.2C語(yǔ)言的特色1.C與其它語(yǔ)言的比較1)C與匯編語(yǔ)言比較C語(yǔ)言允許對(duì)位、字節(jié)和地址進(jìn)行操作(指針),這三者是計(jì)算機(jī)最基本的工作單元,在編制系統(tǒng)程序時(shí)要經(jīng)常用到,所以它適用于寫系統(tǒng)程序。由于匯編語(yǔ)言是非結(jié)構(gòu)化語(yǔ)言,含有大量的跳轉(zhuǎn)、子程序調(diào)用以及變址,這種結(jié)構(gòu)的缺陷使得匯編語(yǔ)言程序難以讀懂,難以維護(hù),也不能移植。而C語(yǔ)言的結(jié)構(gòu)化、模塊化克服了匯編程序難讀、難維護(hù)的缺點(diǎn)。C語(yǔ)言又具有匯編語(yǔ)言的功能,目標(biāo)代碼長(zhǎng)度也差不多,效率幾乎與匯編相近,且具有很好的可移植性。2)C與其它高級(jí)語(yǔ)言比較C有豐富的運(yùn)算符,達(dá)34種,其中有很多運(yùn)算符對(duì)應(yīng)于常用的機(jī)器指令,比如++等可直接編譯成機(jī)器代碼,使用起來簡(jiǎn)單精練。C有多樣化的表達(dá)式類型;C的數(shù)據(jù)類型豐富,具有現(xiàn)代語(yǔ)言的各種數(shù)據(jù)結(jié)構(gòu)。C的數(shù)據(jù)類型有:整型,實(shí)型,字符型,數(shù)組,指針,結(jié)構(gòu)體,共用體等。C的輸入輸出使用的是數(shù)據(jù)流C程序生成的機(jī)器代碼質(zhì)量高,內(nèi)存占用少,運(yùn)行速度快,程序執(zhí)行效率高。

2.C是結(jié)構(gòu)化語(yǔ)言C語(yǔ)言是以函數(shù)為模塊來編寫源程序的,所以C程序是模塊化的。C語(yǔ)言具有結(jié)構(gòu)化的控制語(yǔ)句,如if~else語(yǔ)句,switch語(yǔ)句,while語(yǔ)句,do~while語(yǔ)句,for語(yǔ)句等。因此是結(jié)構(gòu)化的理想語(yǔ)言,符合現(xiàn)代編程風(fēng)格的要求。結(jié)構(gòu)化語(yǔ)言的一個(gè)顯著特點(diǎn)是代碼和數(shù)據(jù)的分隔化,即代碼和數(shù)據(jù)分開存貯,互相隔離;程序的各個(gè)部分除了必要的信息交流外,彼此互不影響,相互隔離。3.C是編程者的語(yǔ)言C語(yǔ)言的其它主要優(yōu)點(diǎn)如下:C語(yǔ)言簡(jiǎn)潔、緊湊,使用方便靈活;一共只有32個(gè)關(guān)鍵字(27個(gè)來自kerninghan和Ritchie的標(biāo)準(zhǔn),5個(gè)由ANSI標(biāo)準(zhǔn)委員會(huì)增補(bǔ)),9種控制語(yǔ)句,它們構(gòu)成了C語(yǔ)言的全部指令;程序書寫形式自由,壓縮了一切不必要的成分。C語(yǔ)言很少限制、很少缺陷、模塊結(jié)構(gòu)、彼此獨(dú)立的函數(shù)和一些十分緊湊的關(guān)鍵字,使得C語(yǔ)言能達(dá)到接近匯編語(yǔ)言的高效率和廣泛的應(yīng)用范圍,所以在許多情況下它是編程者首選的計(jì)算機(jī)語(yǔ)言。4.C的“缺點(diǎn)”語(yǔ)法限制不嚴(yán)格

2)程序設(shè)計(jì)自由度大1.2簡(jiǎn)單的C程序介紹例1.1打印一個(gè)語(yǔ)句。程序:main(){printf(″Asimplecprogram.\n″);}經(jīng)編譯后運(yùn)行結(jié)果如下:Asimplecprogram.例1.2求兩數(shù)中的小者。程序:main()/*主函數(shù)*/{inta,b,c;/*定義變量*/scanf(″%d,%d″,&a,&b);/*輸入*/c=min(a,b);/*調(diào)用函數(shù)*/printf(″min=%d\n″,c);/*輸出*/}intmin(intx,inty)/*定義函數(shù)*/{intz;/*定義局部變量*/if(x>y)z=y;elsez=x;return(z);/*返回z值*/}經(jīng)編譯后運(yùn)行如下:14,4min=4再次運(yùn)行:6,29min=6本程序包括兩個(gè)函數(shù):主函數(shù)main和子函數(shù)min。通過上述兩個(gè)例子,我們可以看到:(1)C程序是由函數(shù)構(gòu)成的。(2)一個(gè)函數(shù)由兩部分組成:函數(shù)的首部和函數(shù)體。(3)main函數(shù)通常位于程序之首,實(shí)際上它位于程序的開頭、最后及函數(shù)與函數(shù)之間均是合法的,但不管在什么位置,一個(gè)C程序總是從main函數(shù)開始執(zhí)行的。(4)C程序書寫格式自由,一行內(nèi)可以寫幾個(gè)語(yǔ)句,一個(gè)語(yǔ)句可以分寫在多行上。(5)C語(yǔ)言本身沒有輸入輸出語(yǔ)句。(6)可以用/*…*/對(duì)C程序中的任何部分作注釋,它可增加程序的可讀性。1.3用C語(yǔ)言解決實(shí)際問題的步驟1.3.1一個(gè)實(shí)例的求解過程1.問題提出計(jì)算y=f(x)曲線,x軸(y=0),x=a,x=b四條曲線所圍成的面積。參看圖1.1。圖1.1計(jì)算面積2.分析問題用戶需求:計(jì)算四條曲線所圍的面積。已知條件:四條曲線(即x=a,x=b,y=0,y=f(x))。需要進(jìn)行的處理:計(jì)算面積,注意誤差和精度。需要用到的軟、硬件環(huán)境:用C語(yǔ)言編程,在個(gè)人微機(jī)上運(yùn)行,使用TurboC編譯系統(tǒng)。進(jìn)行可行性分析:用數(shù)值計(jì)算方法完全能夠?qū)崿F(xiàn)。經(jīng)過分析,我們已做到心中有數(shù)。3.確定處理方案根據(jù)實(shí)際問題選用適當(dāng)?shù)臄?shù)學(xué)模型(本例屬科學(xué)計(jì)算)。根據(jù)高等數(shù)學(xué)中學(xué)到的知識(shí),我們提出的數(shù)學(xué)模型是,也就是在[a,b]區(qū)間內(nèi)求f(x)函數(shù)的定積分。4.根據(jù)處理方案確定操作步驟圖1.2矩形法求積分在圖1.2中畫陰影線的小面積有4條邊,第一條長(zhǎng)度f(wàn)(c),第二條長(zhǎng)度f(wàn)(d),第三條長(zhǎng)度d-c,而第四條線我們采用近似的辦法:以第一條線高度作x軸的平行線得y=f(c),則小矩形面積為(d-c)·f(c);或以第二條線高度作x軸平行線得y=f(d),則小矩形面積為(d-c)·f(d)。然后將各小塊面積累加起來。以上過程歸納起來就得出了近似公式,最后得到一個(gè)操作步驟,也就是算法,如下所示:(1)讀a,b和n(分成n塊)。(2)求高h(yuǎn)=(b-a)/n。(3)s=0,面積的初始值為0。(4)i=1,先計(jì)算第一個(gè)小面積。(5)s=s+h*f(a+i*h),用后點(diǎn)計(jì)算;或s=s+h*f(a+(i-1)*h),用前點(diǎn)計(jì)算,小面積累加起來。(6)i=i+1,取下一個(gè)小面積。(7)如i<=n轉(zhuǎn)(5),否則打印s。

5.根據(jù)操作步驟編寫源程序程序:main(){floata,b,h,s;floatf(float);inti,n;scanf(″%f,%f,%d″,&a,&b,&n);h=(b-a)/n;s=0;i=1;while(i<=n){s=s+h*f(a+(i-1)*h);/*用前點(diǎn)計(jì)算*/i++;}printf(″a=%f,b=%f,n=%d,s=%f\n″,a,b,n,s);}

6.輸入程序并上機(jī)調(diào)試上機(jī)輸入源程序并調(diào)試,直到改正了所有的編譯錯(cuò)誤和運(yùn)行錯(cuò)誤。在調(diào)試過程中應(yīng)該精心選擇典型數(shù)據(jù)進(jìn)行測(cè)試。本例當(dāng)計(jì)算有誤差或精度不足時(shí)可加大分塊數(shù)量,或采用其它計(jì)算方法:如改為梯形法或拋物線法(即辛普生法)等。要避免因調(diào)試數(shù)據(jù)不能反映實(shí)際數(shù)據(jù)的特征而引起的計(jì)算偏差和運(yùn)行錯(cuò)誤。7.整理分析計(jì)算結(jié)果圖1.3用計(jì)算機(jī)處理一個(gè)實(shí)際問題1.3.2算法1.什么是算法為解決一個(gè)問題而采取的方法和步驟,就稱為“算法”。對(duì)同一個(gè)問題,可以有不同的解題方法和步驟,也就有不同的算法。例如求可采用矩形法,梯形法,辛普生法(即拋物線法)等。為了有效地解題,不僅需要保證算法正確,還要考慮算法的質(zhì)量,選擇較好的算法,或進(jìn)行算法的優(yōu)化。2.算法的特點(diǎn)一個(gè)算法,必須具有以下特點(diǎn):(1)僅有有限的操作步驟,即“有窮性”(無(wú)死循環(huán))。(2)算法的每一個(gè)步驟應(yīng)當(dāng)是確定的,即無(wú)“二義性”。(3)有適當(dāng)?shù)妮斎?,即有確定的條件。(4)有輸出結(jié)果。沒有輸出的算法是無(wú)意義的。(5)算法中的每一個(gè)步驟都應(yīng)當(dāng)有效執(zhí)行(無(wú)死語(yǔ)句)。3.算法的重要性掌握最基本的、常用的算法是很重要的,算法設(shè)計(jì)是整個(gè)程序設(shè)計(jì)的核心。著名計(jì)算機(jī)科學(xué)家沃思(Wirth)曾提出一個(gè)公式:程序=算法+數(shù)據(jù)結(jié)構(gòu)。對(duì)初學(xué)者而言,數(shù)據(jù)結(jié)構(gòu)即是語(yǔ)言提供的各種數(shù)據(jù)類型,無(wú)大難點(diǎn)。這樣編程的任務(wù)主要是考慮算法問題,當(dāng)然還要學(xué)會(huì)基本的語(yǔ)句和語(yǔ)法。4.算法的表示方法用自然語(yǔ)言表示2)用傳統(tǒng)流程圖表示圖1.4傳統(tǒng)流程圖常用符號(hào)

例1.3求,用傳統(tǒng)流程圖表示,見圖1.5。圖1.5矩形法求積分3)用N-S流程圖表示例1.4求,用

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論