函數(shù)模塊化編程課件_第1頁
函數(shù)模塊化編程課件_第2頁
函數(shù)模塊化編程課件_第3頁
函數(shù)模塊化編程課件_第4頁
函數(shù)模塊化編程課件_第5頁
已閱讀5頁,還剩95頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第四講

函數(shù)模塊化編程(1)第四講

函數(shù)模塊化編程(1)本章內容4.1模塊化程序設計(ModelDesigning)4.2函數(shù)的概念及其分類4.3函數(shù)調用(Called)與返回4.4變量的作用域(Scope)與生存期(Lifetime)4.5編譯預處理(Pre-process)2本章內容4.1模塊化程序設計(ModelDesignin本講主要內容4.1模塊化程序設計(ModelDesigning)4.2函數(shù)的概念及其分類4.3函數(shù)調用(Called)與返回1.函數(shù)的調用形式2.函數(shù)間的數(shù)據(jù)傳遞方式3本講主要內容4.1模塊化程序設計(ModelDesign高等院校事務管理辦公室管理教務管理科研管理財務管理圖書管理后勤管理人事管理4高等院校事務管理辦公室管理教務管理科研管理財務管理圖書管理后主控模塊模塊1_1模塊1_n模塊2_1模塊2_n模塊n_1模塊n_n模塊1模塊2模塊n自頂向下(Top-downdesign)、逐步細化的模塊化程序設計方法5主控模塊模塊1_1模塊1_n模塊2_1模塊2_n模塊n_1模4.1模塊化程序設計(ModelDesigning)一、模塊化程序設計思想把一個較大的軟件工程項目分解成若干個簡單、易于實現(xiàn)的子系統(tǒng)(也稱模塊),每個子系統(tǒng)(模塊)實現(xiàn)單一完整的功能。每個模塊完成一個特定的任務,能撇開其它部分而單獨編寫和測試,同一項目的開發(fā)工作可以在若干程序員之間同時展開,節(jié)省大量的開發(fā)時間。64.1模塊化程序設計(ModelDesigning)一、4.1模塊化程序設計(ModelDesigning)二、模塊設計原則(PrincipleofModuleDesigning)1.模塊獨立性(ModuleIndependency)(1)模塊實現(xiàn)相對獨立的特定子功能。(2)模塊之間關系簡單。(3)模塊內數(shù)據(jù)的局部化。2.模塊大小適中3、模塊分解層次清楚74.1模塊化程序設計(ModelDesigning)二、【學生項目案例4-1】“學生信息管理系統(tǒng)”項目模塊化設計與劃分。分析:

1、調查用戶需求并進行認真分析2、“學生信息管理系統(tǒng)”初步劃分為6個一級模塊。其中“學生成績管理”一級模塊繼續(xù)細化為七個二級功能模塊

8【學生項目案例4-1】分析:8學生信息管理系統(tǒng)系統(tǒng)管理班級管理課程設置報表管理用戶信息表成績信息統(tǒng)計表用戶信息錄入用戶信息輸出課程信息輸出課程信息錄入用戶信息添加用戶信息刪除學生成績錄入學生成績修改待開發(fā)(空函數(shù))學生成績輸出學生成績查詢學生成績插入學生成績刪除學生成績管理用戶信息查詢用戶信息修正學生成績統(tǒng)計待開發(fā)(空函數(shù))學生學籍管理課程信息表主模塊二級模塊三級9學生信息管理系統(tǒng)系統(tǒng)管理班級管理課程設置報表管理用戶信息表成【文本項目案例4-1】“文本編輯器”項目模塊劃分。分析:1、結合平時使用的文字處理軟件及用戶對文本處理的需求,將“文本編輯器”劃分為5個一級模塊,各一級功能模塊繼續(xù)細化并設計相應的二級功能模塊2、對項目進行模塊劃分時,應該使得每個模塊的實現(xiàn)具有可行性,上面所劃分的每個模塊都是符合模塊的劃分原則的。10【文本項目案例4-1】分析:10文本編輯器文件編輯插入格式工具復制查找粘貼刪除替換排序新建保存打開關閉打印退出小寫變大寫大寫變小寫段落字符分類統(tǒng)計字數(shù)統(tǒng)計文件加密文件解密11文本編輯器文件編輯插入格式工具復制查找粘貼刪除替換排序新建保程序模塊用函數(shù)實現(xiàn)。一個完整的C程序可以由多個源程序文件組成,一個源文件中可以包含多個函數(shù)。

關鍵字→語句→

函數(shù)

→源程序文件→C程序12程序模塊用函數(shù)實現(xiàn)。124.2函數(shù)的概念及其分類為什么要使用函數(shù)?過長的代碼增加了程序維護的難度;反復為常用的功能編寫代碼增加人員的負擔;1.函數(shù)的概念2.函數(shù)的分類3.函數(shù)的定義134.2函數(shù)的概念及其分類為什么要使用函數(shù)?1.函數(shù)的概念11.函數(shù)的概念函數(shù):將程序中反復使用、完成特定任務的程序段定義為函數(shù);

函數(shù)實現(xiàn)代碼復用,提高編程效率。函數(shù)即功能模塊,C語言中完成相對獨立功能的程序。C程序的基本組成單位是函數(shù)。141.函數(shù)的概念函數(shù):142.函數(shù)的分類(1)從定義函數(shù)的角度標準函數(shù)(庫函數(shù)):由系統(tǒng)提供用戶自定義函數(shù)(2)從函數(shù)參數(shù)形式無參函數(shù):getchar()有參函數(shù):abs(x)、sqrt(y)、tolower(ch)等。(3)從函數(shù)的返回值角度:有返回值函數(shù)無返回值函數(shù)(4)從函數(shù)調用角度主調函數(shù)被調函數(shù)152.函數(shù)的分類(1)從定義函數(shù)的角度152.函數(shù)的分類標準函數(shù)(庫函數(shù))使用某庫函數(shù)時,要在程序中嵌入該函數(shù)對應的頭文件。頭文件的擴展名是“.h”,用#include命令包含頭文件。stdio.h文件:printf()、scanf()、getchar()、putchar()等。math.h文件:fabs()、sqrt()、pow()等。按功能可以分為:標準I/O函數(shù),、數(shù)學運算函數(shù)、字符函數(shù)、字符串函數(shù)等。它們的執(zhí)行效率高,用戶需要時,可在程序中直接進行調用。162.函數(shù)的分類標準函數(shù)(庫函數(shù))使用某庫函數(shù)時,要在main(){

inta,b;intc;if(a>b)c=a;elsec=b;}函數(shù)類型說明函數(shù)名(形式參數(shù)列表)形式參數(shù)說明intmax(a,b)inta,b;{intc;if(a>b)c=a;elsec=b;}函數(shù)體必須為變量{數(shù)據(jù)說明部分語句}傳統(tǒng)格式的函數(shù)定義形式:用戶自定義函數(shù)(User-definedfunctions)

函數(shù)說明或函數(shù)首部3.函數(shù)的定義17main()函數(shù)類型說明函數(shù)名(形式參數(shù)列表)int現(xiàn)代格式的函數(shù)定義形式:函數(shù)值類型名函數(shù)名(形式參數(shù)類型及參數(shù)說明){數(shù)據(jù)說明部分語句}intmax(a,b)inta,b;{intc;if(a>b)c=a;elsec=b;}intmax(int

a,intb){intc;if(a>b)c=a;elsec=b;}3.函數(shù)的定義18現(xiàn)代格式的函數(shù)定義形式:intmax(a,b)intma說明:函數(shù)必須獨立定義,不能在一個函數(shù)體中定義另一個函數(shù),即函數(shù)不能嵌套定義。intmax(x,y)intx,y;{intz;z=x>y?x:y;return(z);}intmax(x,y){intx,y;……}或intmax(intx,y){……}或intmax(x,y)intx,y,z;{z=x>y?x:y;return(z);}

√3.函數(shù)的定義19說明:intmax(x,y)intmax(x,y)或無參函數(shù)函數(shù)定義時無參數(shù)有參函數(shù)函數(shù)定義時定義了一個或一個以上的參數(shù)fabs(doublex)pow(doublex,doubley)pow(doublex,y)錯誤getchar()x=getchar();從函數(shù)的形式來看,C語言的函數(shù)可以分為兩類:有參函數(shù)和無參函數(shù)3.函數(shù)的定義20無參函數(shù)函數(shù)定義時無參數(shù)有參函數(shù)函數(shù)定義時定義了一個或一個以空函數(shù)定義時既無參數(shù)也無執(zhí)行語句intmax(

){}3.函數(shù)的定義21空函數(shù)定義時既無參數(shù)也無執(zhí)行語句intmax()3.函數(shù)用戶自定義函數(shù)定義完后,可以被其他函數(shù)使用,這個過程稱為函數(shù)調用。用戶自定義函數(shù)不會自動執(zhí)行,只有正在執(zhí)行中的其它的函數(shù)調用它,才能執(zhí)行。4.3函數(shù)調用(Called)與返回22用戶自定義函數(shù)定義完后,可以被其他函數(shù)使用,這個過程#include"stdio.h"intmax(inta,intb){intc;if(a>b)c=a;elsec=b;returnc;}main()

{intx,y,z;scanf("%d,%d",&x,&y);printf("%d",z);}z=max(x,y);主調函數(shù)被調函數(shù)4.3函數(shù)調用(Called)與返回【例】設計自定義函數(shù)。實現(xiàn)求兩數(shù)的最大值。23#include"stdio.h"main()

{i1.函數(shù)的調用形式函數(shù)名(實際參數(shù)列表)可以有參數(shù),也可以無參數(shù)。z=max(x,y);printf("x=%d",x);4.3函數(shù)調用(Called)與返回241.函數(shù)的調用形式函數(shù)名(實際參數(shù)列表)可以有參數(shù),也可以4.3函數(shù)調用(Called)與返回函數(shù)調用分三種形式:(1)表達式函數(shù)調用:如,y=sqrt(x);(c+d*max(a,b))%e;(2)函數(shù)語句調用:在函數(shù)調用后加“;”構成一個語句。如,printf("hello!");(3)函數(shù)作實參調用:函數(shù)作為某個函數(shù)的實參如,GetMax(GetMax(a,b),c)

254.3函數(shù)調用(Called)與返回函數(shù)調用分三種形式:4.3函數(shù)調用(Called)與返回【例】設計自定義函數(shù)。實現(xiàn)求兩數(shù)的最大值。#include"stdio.h"intmax(a,b)inta,b;{intc;if(a>b)c=a;elsec=b;

returnc;}main()

{intx,y,z;scanf("%d,%d",&x,&y);

z=max(x,y);printf("%d",z);}函數(shù)調用函數(shù)定義264.3函數(shù)調用(Called)與返回【例】設計自定義函數(shù)從函數(shù)調用的角度來看,C語言的函數(shù)可以分為兩類:有返回值函數(shù)和無返回值函數(shù)。有返回值函數(shù):此類函數(shù)被調用執(zhí)行完后將向調用者返回一個執(zhí)行結果,稱為函數(shù)返回值。特點:(1)一個函數(shù)最多只能有一個返回值。(2)函數(shù)定義中應明確返回值的類型,默認為int類型。(3)函數(shù)體中至少包含一個帶表達式的return語句。4.3函數(shù)調用(Called)與返回27從函數(shù)調用的角度來看,C語言的函數(shù)可以分為兩類:有返return語句的一般格式為:

return表達式;

或return(表達式);或return;

/*函數(shù)無返回值,return語句可省*/return語句功能:立即結束當前函數(shù)的執(zhí)行;程序控制流程返回到調用環(huán)境(CallingEnvironment)計算表達式的值,并把該值傳回到調用函數(shù);返回值被轉換為函數(shù)定義中的返回值類型。4.3函數(shù)調用(Called)與返回28return語句的一般格式為:return語句功能:4.3#include"stdio.h"intmax(a,b)inta,b;{intc;if(a>b)c=a;elsec=b;

returnc;}main()

{intx,y,z;scanf("%d,%d",&x,&y);

z=max(x,y);printf("%d",z);}返回值的類型4.3函數(shù)調用(Called)與返回29#include"stdio.h"main()

{i無返回值函數(shù):函數(shù)用于完成某項特定的處理任務,執(zhí)行完成后不向調用者返回函數(shù)值。由于函數(shù)無須返回值,用戶在定義此類函數(shù)時可指定它的返回為空類型“void”。voidkk()注意:(1)一般無返回值函數(shù)定義中沒有return語句,而是直接運行到了終點。(2)無返回值函數(shù)也可以用return語句強制從函數(shù)中某處立即返回。此時,return語句的用法如下:

return;

/*后面不跟表達式*/4.3函數(shù)調用(Called)與返回30無返回值函數(shù):注意:4.3函數(shù)調用(Called)與返回#include"stdio.h"voidmax(a,b)inta,b;{intc;if(a>b)c=a;elsec=b;

return;

printf("%d",c);}main()

{intx,y,z;scanf("%d,%d",&x,&y);max(x,y);}返回值的類型4.3函數(shù)調用(Called)與返回31#include"stdio.h"main()

{iintmax(inta,intb){intc;if(a>b)c=a;elsec=b;returnc;}#include"stdio.h"main()

{intx,y,z;scanf("%d,%d",&x,&y);printf("%d",z);}z=max(x,y);主函數(shù)在前可以嗎?4.3函數(shù)調用(Called)與返回32intmax(inta,intb)#include#include"stdio.h"intmax(inta,intb);main()

{intx,y,z;scanf("%d,%d",&x,&y);

z=max(x,y);printf("%d",z);}intmax(inta,intb){intc;if(a>b)c=a;elsec=b;returnc;}函數(shù)聲明4.3函數(shù)調用(Called)與返回33#include"stdio.h"函數(shù)聲明4.3函數(shù)調函數(shù)的聲明類似于變量的定義聲明,所有的函數(shù)必須先定義后使用,如果定義在使用之后,要先聲明,后使用。函數(shù)聲明的一般形式如下:類型名函數(shù)名(類型1形參1,類型2形參2,…,類型n形參n);或類型名函數(shù)名(類型1,類型2,…,類型n);或類型名函數(shù)名();4.3函數(shù)調用(Called)與返回34函數(shù)的聲明函數(shù)聲明的一般形式如下:類型名函數(shù)名(類型1例,下面的函數(shù)原型聲明是合法的。intArea(int,int);/*聲明中只有形參類型*/等價于==>intArea(intlength,intwidth);doublesqrt(double);等價于==>doublesqrt(double

x);4.3函數(shù)調用(Called)與返回35例,下面的函數(shù)原型聲明是合法的。4.3函數(shù)調用(Calle#include"stdio.h"intmax(inta,intb);main()

{intx,y,z;scanf("%d,%d",&x,&y);

z=max(x,y);printf("%d",z);}intmax(inta,intb){intc;if(a>b)c=a;elsec=b;returnc;}函數(shù)聲明函數(shù)調用函數(shù)定義4.3函數(shù)調用(Called)與返回36#include"stdio.h"函數(shù)聲明函數(shù)調用函數(shù)定……變量名=主調函數(shù)名(實際參數(shù));……主調函數(shù)名(實際參數(shù));……主調環(huán)境的程序被調函數(shù)名(形式參數(shù)){……

return返回值;……}被調環(huán)境的程序4.3函數(shù)調用(Called)與返回2.函數(shù)間的數(shù)據(jù)傳遞方式37……主調環(huán)境的程序被調函數(shù)名(形式參數(shù))被調環(huán)境的程序4.3#include"stdio.h"intmax(inta,intb){intc;if(a>b)c=a;elsec=b;

returnc;}main()

{intx,y,z;scanf("%d,%d",&x,&y);printf("%d",z);}z=max(x,y);主調函數(shù)被調函數(shù)形式參數(shù)(簡稱形參)實際參數(shù)(簡稱實參)4.3函數(shù)調用(Called)與返回38#include"stdio.h"main()

{i4.3函數(shù)調用(Called)與返回2.函數(shù)間的數(shù)據(jù)傳遞方式函數(shù)通過參數(shù)實現(xiàn)數(shù)據(jù)傳遞的方式:值傳遞地址傳遞函數(shù)的參數(shù)傳遞采用單向值傳遞方式。單向值傳遞方式是指在函數(shù)調用時,將實參的值傳遞給對應的形參,使形參具有與實參相同的值。394.3函數(shù)調用(Called)與返回2.函數(shù)間的數(shù)據(jù)傳遞#include"stdio.h"intmax(a,b)inta,b;{intc;if(a>b)c=a;elsec=b;returnc;}main()

{intx,y,z;scanf("%d,%d",&x,&y);z=max(x,y);printf("%d",z);}………………10201020abc20xyz204.3函數(shù)調用(Called)與返回40#include"stdio.h"………………102010有關實參與形參的幾點說明:(1)在函數(shù)定義中指定的形參,未調用時,它們不占用存儲單元。只有調用該函數(shù)時,形參才被分配空間,函數(shù)調用結束后,形參所占的存儲單元被釋放。4.3函數(shù)調用(Called)與返回41有關實參與形參的幾點說明:(1)在函數(shù)定義中指定的形參,未調#include"stdio.h"intmax(a,b)inta,b;{intt;

if(a<b){t=a;a=b;b=t;}}main(){intx,y;scanf("%d,%d",&x,&y);max(x,y);printf("%d",x);}………………10201020abt10xy20104.3函數(shù)調用(Called)與返回42#include"stdio.h"………………102010(2)實參與形參的數(shù)據(jù)傳遞為單向傳遞,只可由實參向形參傳遞,不能由形參傳回實參。實參與形參處在不同的函數(shù)中,作用的區(qū)域不同,即使實參與形參同名,也是不同的變量。4.3函數(shù)調用(Called)與返回43(2)實參與形參的數(shù)據(jù)傳遞為單向傳遞,只可由實參向形參傳遞,#include"stdio.h"intmax(x,y)intx,y;{intt;if(x<y){t=x;x=y;y=t;}}main(){intx,y;scanf("%d,%d",&x,&y);max(x,y);printf("%d",x);}4.3函數(shù)調用(Called)與返回44#include"stdio.h"4.3函數(shù)調用(Cal地址傳遞方式是指形參定義為指針,而實參是內存對象的地址。(以后講)地址傳遞(Pass-by-address)

4.3函數(shù)調用(Called)與返回45地址傳遞方式是指形參定義為指針,而實參是內存對象的地址。(以例intf(inta,intb){intc;c=a;if(a>b)c=1;elseif(a==b)c=0;elsec=-1;returnc;}main(){inti=2,p;

p=f(i,i+1);printf("%d",p);}結果:-14.3函數(shù)調用(Called)與返回46例main()結果:-14.3函數(shù)調用(Called)與返例編程求兩個整數(shù)的階乘之和。分析:一個數(shù)n階乘的求法?intfac(intn){inti,r=1;for(i=1;i<=n;i++)r=r*i;returnr;}4.3函數(shù)調用(Called)與返回main(){intm1,m2,result;scanf("%d%d",&m1,&m2);result=fac(m1)+fac(m2);printf("%d",result);}main函數(shù)中兩次調用fac函數(shù),將結果相加。47例編程求兩個整數(shù)的階乘之和。分析:intfac(int本講小結4.1模塊化程序設計(ModelDesigning)4.2函數(shù)的概念及其分類4.3函數(shù)調用(Called)與返回1.函數(shù)的調用形式2.函數(shù)間的數(shù)據(jù)傳遞方式48本講小結4.1模塊化程序設計(ModelDesignin下講概要4.3函數(shù)調用(Called)與返回3.函數(shù)的嵌套與遞歸函數(shù)4.4變量的作用域(Scope)與生存期(Lifetime)4.5編譯預處理(Pre-process)49下講概要4.3函數(shù)調用(Called)與返回49TheEndthanks5050第四講

函數(shù)模塊化編程(1)第四講

函數(shù)模塊化編程(1)本章內容4.1模塊化程序設計(ModelDesigning)4.2函數(shù)的概念及其分類4.3函數(shù)調用(Called)與返回4.4變量的作用域(Scope)與生存期(Lifetime)4.5編譯預處理(Pre-process)52本章內容4.1模塊化程序設計(ModelDesignin本講主要內容4.1模塊化程序設計(ModelDesigning)4.2函數(shù)的概念及其分類4.3函數(shù)調用(Called)與返回1.函數(shù)的調用形式2.函數(shù)間的數(shù)據(jù)傳遞方式53本講主要內容4.1模塊化程序設計(ModelDesign高等院校事務管理辦公室管理教務管理科研管理財務管理圖書管理后勤管理人事管理54高等院校事務管理辦公室管理教務管理科研管理財務管理圖書管理后主控模塊模塊1_1模塊1_n模塊2_1模塊2_n模塊n_1模塊n_n模塊1模塊2模塊n自頂向下(Top-downdesign)、逐步細化的模塊化程序設計方法55主控模塊模塊1_1模塊1_n模塊2_1模塊2_n模塊n_1模4.1模塊化程序設計(ModelDesigning)一、模塊化程序設計思想把一個較大的軟件工程項目分解成若干個簡單、易于實現(xiàn)的子系統(tǒng)(也稱模塊),每個子系統(tǒng)(模塊)實現(xiàn)單一完整的功能。每個模塊完成一個特定的任務,能撇開其它部分而單獨編寫和測試,同一項目的開發(fā)工作可以在若干程序員之間同時展開,節(jié)省大量的開發(fā)時間。564.1模塊化程序設計(ModelDesigning)一、4.1模塊化程序設計(ModelDesigning)二、模塊設計原則(PrincipleofModuleDesigning)1.模塊獨立性(ModuleIndependency)(1)模塊實現(xiàn)相對獨立的特定子功能。(2)模塊之間關系簡單。(3)模塊內數(shù)據(jù)的局部化。2.模塊大小適中3、模塊分解層次清楚574.1模塊化程序設計(ModelDesigning)二、【學生項目案例4-1】“學生信息管理系統(tǒng)”項目模塊化設計與劃分。分析:

1、調查用戶需求并進行認真分析2、“學生信息管理系統(tǒng)”初步劃分為6個一級模塊。其中“學生成績管理”一級模塊繼續(xù)細化為七個二級功能模塊

58【學生項目案例4-1】分析:8學生信息管理系統(tǒng)系統(tǒng)管理班級管理課程設置報表管理用戶信息表成績信息統(tǒng)計表用戶信息錄入用戶信息輸出課程信息輸出課程信息錄入用戶信息添加用戶信息刪除學生成績錄入學生成績修改待開發(fā)(空函數(shù))學生成績輸出學生成績查詢學生成績插入學生成績刪除學生成績管理用戶信息查詢用戶信息修正學生成績統(tǒng)計待開發(fā)(空函數(shù))學生學籍管理課程信息表主模塊二級模塊三級59學生信息管理系統(tǒng)系統(tǒng)管理班級管理課程設置報表管理用戶信息表成【文本項目案例4-1】“文本編輯器”項目模塊劃分。分析:1、結合平時使用的文字處理軟件及用戶對文本處理的需求,將“文本編輯器”劃分為5個一級模塊,各一級功能模塊繼續(xù)細化并設計相應的二級功能模塊2、對項目進行模塊劃分時,應該使得每個模塊的實現(xiàn)具有可行性,上面所劃分的每個模塊都是符合模塊的劃分原則的。60【文本項目案例4-1】分析:10文本編輯器文件編輯插入格式工具復制查找粘貼刪除替換排序新建保存打開關閉打印退出小寫變大寫大寫變小寫段落字符分類統(tǒng)計字數(shù)統(tǒng)計文件加密文件解密61文本編輯器文件編輯插入格式工具復制查找粘貼刪除替換排序新建保程序模塊用函數(shù)實現(xiàn)。一個完整的C程序可以由多個源程序文件組成,一個源文件中可以包含多個函數(shù)。

關鍵字→語句→

函數(shù)

→源程序文件→C程序62程序模塊用函數(shù)實現(xiàn)。124.2函數(shù)的概念及其分類為什么要使用函數(shù)?過長的代碼增加了程序維護的難度;反復為常用的功能編寫代碼增加人員的負擔;1.函數(shù)的概念2.函數(shù)的分類3.函數(shù)的定義634.2函數(shù)的概念及其分類為什么要使用函數(shù)?1.函數(shù)的概念11.函數(shù)的概念函數(shù):將程序中反復使用、完成特定任務的程序段定義為函數(shù);

函數(shù)實現(xiàn)代碼復用,提高編程效率。函數(shù)即功能模塊,C語言中完成相對獨立功能的程序。C程序的基本組成單位是函數(shù)。641.函數(shù)的概念函數(shù):142.函數(shù)的分類(1)從定義函數(shù)的角度標準函數(shù)(庫函數(shù)):由系統(tǒng)提供用戶自定義函數(shù)(2)從函數(shù)參數(shù)形式無參函數(shù):getchar()有參函數(shù):abs(x)、sqrt(y)、tolower(ch)等。(3)從函數(shù)的返回值角度:有返回值函數(shù)無返回值函數(shù)(4)從函數(shù)調用角度主調函數(shù)被調函數(shù)652.函數(shù)的分類(1)從定義函數(shù)的角度152.函數(shù)的分類標準函數(shù)(庫函數(shù))使用某庫函數(shù)時,要在程序中嵌入該函數(shù)對應的頭文件。頭文件的擴展名是“.h”,用#include命令包含頭文件。stdio.h文件:printf()、scanf()、getchar()、putchar()等。math.h文件:fabs()、sqrt()、pow()等。按功能可以分為:標準I/O函數(shù),、數(shù)學運算函數(shù)、字符函數(shù)、字符串函數(shù)等。它們的執(zhí)行效率高,用戶需要時,可在程序中直接進行調用。662.函數(shù)的分類標準函數(shù)(庫函數(shù))使用某庫函數(shù)時,要在main(){

inta,b;intc;if(a>b)c=a;elsec=b;}函數(shù)類型說明函數(shù)名(形式參數(shù)列表)形式參數(shù)說明intmax(a,b)inta,b;{intc;if(a>b)c=a;elsec=b;}函數(shù)體必須為變量{數(shù)據(jù)說明部分語句}傳統(tǒng)格式的函數(shù)定義形式:用戶自定義函數(shù)(User-definedfunctions)

函數(shù)說明或函數(shù)首部3.函數(shù)的定義67main()函數(shù)類型說明函數(shù)名(形式參數(shù)列表)int現(xiàn)代格式的函數(shù)定義形式:函數(shù)值類型名函數(shù)名(形式參數(shù)類型及參數(shù)說明){數(shù)據(jù)說明部分語句}intmax(a,b)inta,b;{intc;if(a>b)c=a;elsec=b;}intmax(int

a,intb){intc;if(a>b)c=a;elsec=b;}3.函數(shù)的定義68現(xiàn)代格式的函數(shù)定義形式:intmax(a,b)intma說明:函數(shù)必須獨立定義,不能在一個函數(shù)體中定義另一個函數(shù),即函數(shù)不能嵌套定義。intmax(x,y)intx,y;{intz;z=x>y?x:y;return(z);}intmax(x,y){intx,y;……}或intmax(intx,y){……}或intmax(x,y)intx,y,z;{z=x>y?x:y;return(z);}

√3.函數(shù)的定義69說明:intmax(x,y)intmax(x,y)或無參函數(shù)函數(shù)定義時無參數(shù)有參函數(shù)函數(shù)定義時定義了一個或一個以上的參數(shù)fabs(doublex)pow(doublex,doubley)pow(doublex,y)錯誤getchar()x=getchar();從函數(shù)的形式來看,C語言的函數(shù)可以分為兩類:有參函數(shù)和無參函數(shù)3.函數(shù)的定義70無參函數(shù)函數(shù)定義時無參數(shù)有參函數(shù)函數(shù)定義時定義了一個或一個以空函數(shù)定義時既無參數(shù)也無執(zhí)行語句intmax(

){}3.函數(shù)的定義71空函數(shù)定義時既無參數(shù)也無執(zhí)行語句intmax()3.函數(shù)用戶自定義函數(shù)定義完后,可以被其他函數(shù)使用,這個過程稱為函數(shù)調用。用戶自定義函數(shù)不會自動執(zhí)行,只有正在執(zhí)行中的其它的函數(shù)調用它,才能執(zhí)行。4.3函數(shù)調用(Called)與返回72用戶自定義函數(shù)定義完后,可以被其他函數(shù)使用,這個過程#include"stdio.h"intmax(inta,intb){intc;if(a>b)c=a;elsec=b;returnc;}main()

{intx,y,z;scanf("%d,%d",&x,&y);printf("%d",z);}z=max(x,y);主調函數(shù)被調函數(shù)4.3函數(shù)調用(Called)與返回【例】設計自定義函數(shù)。實現(xiàn)求兩數(shù)的最大值。73#include"stdio.h"main()

{i1.函數(shù)的調用形式函數(shù)名(實際參數(shù)列表)可以有參數(shù),也可以無參數(shù)。z=max(x,y);printf("x=%d",x);4.3函數(shù)調用(Called)與返回741.函數(shù)的調用形式函數(shù)名(實際參數(shù)列表)可以有參數(shù),也可以4.3函數(shù)調用(Called)與返回函數(shù)調用分三種形式:(1)表達式函數(shù)調用:如,y=sqrt(x);(c+d*max(a,b))%e;(2)函數(shù)語句調用:在函數(shù)調用后加“;”構成一個語句。如,printf("hello!");(3)函數(shù)作實參調用:函數(shù)作為某個函數(shù)的實參如,GetMax(GetMax(a,b),c)

754.3函數(shù)調用(Called)與返回函數(shù)調用分三種形式:4.3函數(shù)調用(Called)與返回【例】設計自定義函數(shù)。實現(xiàn)求兩數(shù)的最大值。#include"stdio.h"intmax(a,b)inta,b;{intc;if(a>b)c=a;elsec=b;

returnc;}main()

{intx,y,z;scanf("%d,%d",&x,&y);

z=max(x,y);printf("%d",z);}函數(shù)調用函數(shù)定義764.3函數(shù)調用(Called)與返回【例】設計自定義函數(shù)從函數(shù)調用的角度來看,C語言的函數(shù)可以分為兩類:有返回值函數(shù)和無返回值函數(shù)。有返回值函數(shù):此類函數(shù)被調用執(zhí)行完后將向調用者返回一個執(zhí)行結果,稱為函數(shù)返回值。特點:(1)一個函數(shù)最多只能有一個返回值。(2)函數(shù)定義中應明確返回值的類型,默認為int類型。(3)函數(shù)體中至少包含一個帶表達式的return語句。4.3函數(shù)調用(Called)與返回77從函數(shù)調用的角度來看,C語言的函數(shù)可以分為兩類:有返return語句的一般格式為:

return表達式;

或return(表達式);或return;

/*函數(shù)無返回值,return語句可省*/return語句功能:立即結束當前函數(shù)的執(zhí)行;程序控制流程返回到調用環(huán)境(CallingEnvironment)計算表達式的值,并把該值傳回到調用函數(shù);返回值被轉換為函數(shù)定義中的返回值類型。4.3函數(shù)調用(Called)與返回78return語句的一般格式為:return語句功能:4.3#include"stdio.h"intmax(a,b)inta,b;{intc;if(a>b)c=a;elsec=b;

returnc;}main()

{intx,y,z;scanf("%d,%d",&x,&y);

z=max(x,y);printf("%d",z);}返回值的類型4.3函數(shù)調用(Called)與返回79#include"stdio.h"main()

{i無返回值函數(shù):函數(shù)用于完成某項特定的處理任務,執(zhí)行完成后不向調用者返回函數(shù)值。由于函數(shù)無須返回值,用戶在定義此類函數(shù)時可指定它的返回為空類型“void”。voidkk()注意:(1)一般無返回值函數(shù)定義中沒有return語句,而是直接運行到了終點。(2)無返回值函數(shù)也可以用return語句強制從函數(shù)中某處立即返回。此時,return語句的用法如下:

return;

/*后面不跟表達式*/4.3函數(shù)調用(Called)與返回80無返回值函數(shù):注意:4.3函數(shù)調用(Called)與返回#include"stdio.h"voidmax(a,b)inta,b;{intc;if(a>b)c=a;elsec=b;

return;

printf("%d",c);}main()

{intx,y,z;scanf("%d,%d",&x,&y);max(x,y);}返回值的類型4.3函數(shù)調用(Called)與返回81#include"stdio.h"main()

{iintmax(inta,intb){intc;if(a>b)c=a;elsec=b;returnc;}#include"stdio.h"main()

{intx,y,z;scanf("%d,%d",&x,&y);printf("%d",z);}z=max(x,y);主函數(shù)在前可以嗎?4.3函數(shù)調用(Called)與返回82intmax(inta,intb)#include#include"stdio.h"intmax(inta,intb);main()

{intx,y,z;scanf("%d,%d",&x,&y);

z=max(x,y);printf("%d",z);}intmax(inta,intb){intc;if(a>b)c=a;elsec=b;returnc;}函數(shù)聲明4.3函數(shù)調用(Called)與返回83#include"stdio.h"函數(shù)聲明4.3函數(shù)調函數(shù)的聲明類似于變量的定義聲明,所有的函數(shù)必須先定義后使用,如果定義在使用之后,要先聲明,后使用。函數(shù)聲明的一般形式如下:類型名函數(shù)名(類型1形參1,類型2形參2,…,類型n形參n);或類型名函數(shù)名(類型1,類型2,…,類型n);或類型名函數(shù)名();4.3函數(shù)調用(Called)與返回84函數(shù)的聲明函數(shù)聲明的一般形式如下:類型名函數(shù)名(類型1例,下面的函數(shù)原型聲明是合法的。intArea(int,int);/*聲明中只有形參類型*/等價于==>intArea(intlength,intwidth);doublesqrt(double);等價于==>doublesqrt(double

x);4.3函數(shù)調用(Called)與返回85例,下面的函數(shù)原型聲明是合法的。4.3函數(shù)調用(Calle#include"stdio.h"intmax(inta,intb);main()

{intx,y,z;scanf("%d,%d",&x,&y);

z=max(x,y);printf("%d",z);}intmax(inta,intb){intc;if(a>b)c=a;elsec=b;returnc;}函數(shù)聲明函數(shù)調用函數(shù)定義4.3函數(shù)調用(Called)與返回86#include"stdio.h"函數(shù)聲明函數(shù)調用函數(shù)定……變量名=主調函數(shù)名(實際參數(shù));……主調函數(shù)名(實際參數(shù));……主調環(huán)境的程序被調函數(shù)名(形式參數(shù)){……

return返回值;……}被調環(huán)境的程序4.3函數(shù)調用(Called)與返回2.函數(shù)間的數(shù)據(jù)傳遞方式87……主調環(huán)境的程序被調函數(shù)名(形式參數(shù))被調環(huán)境的程序4.3#include"stdio.h"intmax(inta,intb){intc;if(a>b)c=a;elsec=b;

returnc;}main()

{intx,y,z;scanf("%d,%d",&x,&y);printf("%d",z);}z=max(x,y);主調函數(shù)被調函數(shù)形式參數(shù)(簡稱形參)實際參數(shù)(簡稱實參)4.3函數(shù)調用(Called)與返回88#include"stdio.h"main()

{i4.3函數(shù)調用(Called)與返回2.函數(shù)間的數(shù)據(jù)傳遞方式函數(shù)通過參數(shù)實現(xiàn)數(shù)據(jù)傳遞的方式:值傳遞地址傳遞函數(shù)的參數(shù)傳遞采用單向值傳遞方式。單向值傳遞方式是指在函數(shù)調用時,將實參的值傳遞給對應的形參,使形參具有與實參相同的值。894.3函數(shù)調用(Called)與返回2.函數(shù)間的數(shù)據(jù)傳遞#include"stdio.h"intmax(a,b)inta,b;{intc;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論