使用函數(shù)封裝代碼_第1頁(yè)
使用函數(shù)封裝代碼_第2頁(yè)
使用函數(shù)封裝代碼_第3頁(yè)
使用函數(shù)封裝代碼_第4頁(yè)
使用函數(shù)封裝代碼_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

C言語(yǔ)程序設(shè)計(jì)主講:牛慧娟:8231236郵件:supernhj@QQ群號(hào):245095908函數(shù)是什么5.1函數(shù)的任務(wù)原理5.2函數(shù)和構(gòu)造化編程5.3編寫(xiě)函數(shù)5.4五運(yùn)用函數(shù)封裝代碼調(diào)用函數(shù)5.6將參數(shù)傳送給函數(shù)5.5函數(shù)的位置5.7內(nèi)聯(lián)函數(shù)5.8上課用的物品—--完成某功能所需的語(yǔ)句等。函數(shù)把物品封裝在特定手提袋中---函數(shù)函數(shù)各手提帶名字不同以區(qū)分---函數(shù)名獨(dú)一標(biāo)識(shí)函數(shù)。各手提帶中物品不同---函數(shù)體中不同語(yǔ)句使函數(shù)完成特定功能。什么時(shí)候用哪一個(gè)手提袋由主人決議---主函數(shù)調(diào)用特定功能的函數(shù)。主人可以有哪些手提袋可用?列目錄闡明---一個(gè)程序都有哪些函數(shù)可以調(diào)用?被調(diào)用函數(shù)原型闡明語(yǔ)句。程序中被調(diào)用函數(shù)主人+手提袋+目錄=義務(wù)---函數(shù)原型語(yǔ)句+主函數(shù)+其他自定義函數(shù)=程序。6SubTitle5.1.1函數(shù)的定義定義:是一個(gè)命名的、獨(dú)立的代碼段,執(zhí)行特定義務(wù),并能夠給調(diào)用它的程序前往一個(gè)值。闡明:(1)函數(shù)是命名的。函數(shù)名是獨(dú)一的,程序其他部分運(yùn)用該稱號(hào),可執(zhí)行函數(shù)中的語(yǔ)句,稱為“函數(shù)調(diào)用〞。(2)函數(shù)是獨(dú)立的。(3)函數(shù)執(zhí)行特定的義務(wù)。(4)函數(shù)可以將一個(gè)值前往給調(diào)用它的程序(return語(yǔ)句)。5.1.2函數(shù)的用法程序清單5.1cube.c7SubTitle僅當(dāng)函數(shù)被程序其他部分調(diào)用后,函數(shù)中的語(yǔ)句才會(huì)被執(zhí)行;調(diào)用時(shí)程序可以給函數(shù)傳送參數(shù),函數(shù)用這些參數(shù)進(jìn)展運(yùn)算完成義務(wù);函數(shù)中語(yǔ)句執(zhí)行完后,將一個(gè)前往值前往給程序中調(diào)用函數(shù)的地方。main(){callfunc1……callfunc2……callfunc3}func1(){}func2(){}func3(){}函數(shù)原型格式

return_typefunction_name(arg_typename_1,…,arg_typename_n);函數(shù)定義格式

return_typefunction_name(arg_typename_1,…,arg_typename_n)

{

/*statements;*/

}eg.函數(shù)原型語(yǔ)句

doublesquared(doublenumber);

voidprint_report(intreport_number);

intget_menu_choice(void);

eg.函數(shù)定義

doublesquared(doublenumber)

{

return(number*number);

}

voidprint_report(intreport_number)

{

if(report_number==1)

puts(“PrintingReport1〞);

else

puts(“NotprintingReport1〞);

}10SubTitle經(jīng)過(guò)在程序中運(yùn)用函數(shù),可進(jìn)展構(gòu)造化編程。5.3.1構(gòu)造化編程的優(yōu)點(diǎn)構(gòu)造化程序更易編寫(xiě);構(gòu)造化程序更易調(diào)試;構(gòu)造化編程可以節(jié)省時(shí)間。

5.3.2規(guī)劃構(gòu)造化程序eg.編寫(xiě)的程序〔姓名和地址列表〕(1)輸入新的姓名和地址

(2)修正已有的條目

(3)按姓對(duì)條目進(jìn)展排序

(4)打印郵寄地址標(biāo)簽從磁盤(pán)中讀取已有的地址列表;提示用戶輸入一個(gè)或多個(gè)條目;將新數(shù)據(jù)添加到列表中;將更新后的列表存盤(pán)。從磁盤(pán)中讀取已有的地址列表;修正一個(gè)或多個(gè)條目;將更新后的列表存盤(pán)。main()EnterEditSortPrintReadModifySave圖5.2以層次方式組織的構(gòu)造化程序5.3.3從頂向下的方法C程序員可選用從頂向下的方法,如圖5.2.多數(shù)情況下,程序的大多數(shù)實(shí)踐任務(wù)是由位于樹(shù)枝末梢的函數(shù)完成的,位于“主干〞附近的函數(shù)主要用于引導(dǎo)程序執(zhí)行這些函數(shù)。main()EnterEditSortPrintReadModifySave圖5.2以層次方式組織的構(gòu)造化程序函數(shù)頭每個(gè)函數(shù)的第一行都是函數(shù)頭,函數(shù)頭由三部分組成,每部分完成特定的功能。〔參考教材5.4.1,5.4.2,5.4.3〕可以是任何數(shù)據(jù)類型,用void表示函數(shù)不前往任何值。遵照變量名規(guī)那么要傳送給函數(shù)的每個(gè)參數(shù)都要在參數(shù)列表中包含對(duì)應(yīng)條目,指定數(shù)據(jù)類型和稱號(hào)。定義時(shí),函數(shù)頭最后不加分號(hào)參數(shù)列表:可以給函數(shù)傳送任何數(shù)據(jù)類型。eg.longcube(longx)voidfunc1(intx,floaty,charz)intfunc2(void)留意:形參VS實(shí)參:(1)形參位于函數(shù)頭〔〕中,是實(shí)參的占位符。(2)實(shí)參是調(diào)用程序傳送給函數(shù)的實(shí)踐值。(3)C言語(yǔ)中,每次調(diào)用函數(shù)傳送的實(shí)參個(gè)數(shù)和類型必需與對(duì)應(yīng)形參一樣,但值可以不同。〔參考教材5.4.4〕程序清單5.2list0502.c函數(shù)體位置:位于函數(shù)頭后,{}括起的部分功能:函數(shù)被調(diào)用按照流程執(zhí)行其中語(yǔ)句,完成實(shí)踐的工作后前往到被調(diào)用之處并帶回1或0個(gè)值。終了:執(zhí)行到return語(yǔ)句或最外面的花括號(hào)后終了。1、部分變量

在函數(shù)體中聲明的變量,成為“部分變量〞,是特定函數(shù)私有的。eg.intfunc1(inty){inta,b=10;floatrate;doublecost=12.55;……}〔參考教材5.4.5〕a,b,rate,cost,y都是專屬func1的部分變量。程序清單5.3var.c留意:變量的“作用域〞闡明:(1)變量必需“先定義,后運(yùn)用〞;(2)不同位置定義變量的“作用域〞不同;

全局變量,部分變量(3)函數(shù)中的部分變量獨(dú)立于程序,使函數(shù)更加獨(dú)立。2、函數(shù)的語(yǔ)句函數(shù)幾乎可以包含任何語(yǔ)句,在函數(shù)中獨(dú)一不能做的事就是定義另一個(gè)函數(shù)。建議函數(shù)中語(yǔ)句盡量少。3、前往值要從函數(shù)前往一個(gè)值,可以運(yùn)用關(guān)鍵字return,并在后面加上一個(gè)表達(dá)式。eg.intfunc1(intvar){intx;returnx;}一個(gè)函數(shù)中有多條return語(yǔ)句時(shí),只能有一條被執(zhí)行。程序清單5.4return.c函數(shù)原型方式:函數(shù)原型和函數(shù)頭一樣,只是后面加“;〞。位置:放在程序中第一個(gè)函數(shù)之前。功能:將有關(guān)函數(shù)的信息告知編譯器。編譯器知道有關(guān)函數(shù)的前往值類型、稱號(hào)和參數(shù)后,每次調(diào)用函數(shù)時(shí)檢查這些信息,確保傳送的參數(shù)正確,并確保正確運(yùn)用前往值。留意:嚴(yán)厲地講,函數(shù)原型可以與函數(shù)頭不完全一樣,只需確保參數(shù)類型、數(shù)目和順序一樣即可,而參數(shù)名不用一定一樣。舉例闡明〔參考教材5.4.6〕19SubTitle給函數(shù)傳送參數(shù)時(shí),參數(shù)的數(shù)目與類型必需同函數(shù)頭和函數(shù)原型中的形參匹配,并且有一定順序。每個(gè)參數(shù)可以是任何合法的表達(dá)式:常量、變量、數(shù)學(xué)或邏輯表達(dá)式,甚至是另一個(gè)具有前往值的參數(shù)。eg.假設(shè)函數(shù)half()、square()、third()都有前往值,那么可有:x=half(third(square(half(y))));棧是RAM中的特殊區(qū)域動(dòng)作:壓棧、出棧規(guī)那么:“后進(jìn)先出〞themegallery5.6調(diào)用函數(shù)調(diào)用方式:函數(shù)名〔實(shí)參列表〕位置:(1)單獨(dú)成句(2)用在表達(dá)式中闡明:(1)任何函數(shù)調(diào)用可單獨(dú)成句,但有返回值的函數(shù)前往值將被丟棄;(2)用在表達(dá)式中的函數(shù)調(diào)用應(yīng)為有返回值的函數(shù)(非void)。eg.wait(12);printf(“Halfof%dis%d.〞,x,half_of(x));y=half_of(x)+half_of(z);if(half_of(x)>10){……}if(do_a_process()!=OKAY){……}5.6.1遞歸調(diào)用普通情況是一個(gè)函數(shù)調(diào)用另一個(gè)函數(shù),特殊的,函數(shù)直接或間接調(diào)用本身,稱為“遞歸調(diào)用〞。留意:遞歸將運(yùn)用大量資源〔相當(dāng)于復(fù)制了多份函數(shù)〕,慎用!2024/1/4程序清單5.5recurse.c22factorial(4)回歸遞推2factorial(1)4factorial(3)3factorial(2)return1n!=n*(n-1)!遞歸過(guò)程的兩個(gè)階段(如:求4!):遞推:4!=4×3!→3!=3×2!→2!=2×1!→1!=1×0!→0!=1未知知回歸:4!=4×3!=24←3!=3×2!=6←2!=2×1!=2←1!=1×0!=1←0!=1未知知23*可以用遞歸處理的問(wèn)題應(yīng)滿足以下條件:1、要處理的問(wèn)題可以被減階2、要處理的問(wèn)題有邊境24例:遞歸的執(zhí)行情況分析voidprint(intw){inti;if(w!=0){print(w-1);for(i=1;i<=w;++i)printf("%d",w);printf("\n");}}w=3時(shí)的運(yùn)轉(zhuǎn)結(jié)果:1,2,2,3,3,3,25遞歸調(diào)用執(zhí)行情況如下:main函數(shù)(1)print(w)w=3;3print(2);〔1〕w=3topw2print(1);〔2〕w=2〔1〕w=3topw1print(0);〔3〕w=1〔2〕w=2〔1〕w=3topw0〔4〕w=0〔3〕w=1〔2〕w=2〔1〕w=3topw(3)輸出:2,2(2)2(1)3top(4)輸出:1(3)1(2)2(1)3top(2)輸出:3,3,3(1)3top前往(3)1(2)2(1)3top(4)0終了(1)voidprint(intw){inti;if(w!=0){print(w-1);for(i=1;i<=w;++i)printf("%d",w);printf("\n");}}w==0時(shí)

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論