Cc模塊化與函數(shù)學(xué)習(xí)教案_第1頁(yè)
Cc模塊化與函數(shù)學(xué)習(xí)教案_第2頁(yè)
Cc模塊化與函數(shù)學(xué)習(xí)教案_第3頁(yè)
Cc模塊化與函數(shù)學(xué)習(xí)教案_第4頁(yè)
Cc模塊化與函數(shù)學(xué)習(xí)教案_第5頁(yè)
已閱讀5頁(yè),還剩125頁(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)介

1、會(huì)計(jì)學(xué)1Cc模塊化與函數(shù)模塊化與函數(shù)2第1頁(yè)/共130頁(yè)3第2頁(yè)/共130頁(yè)4第3頁(yè)/共130頁(yè)5第4頁(yè)/共130頁(yè)6第5頁(yè)/共130頁(yè)7主模塊模塊1模塊2模塊3模塊4模塊6模塊7模塊5第6頁(yè)/共130頁(yè)第7頁(yè)/共130頁(yè)9第8頁(yè)/共130頁(yè)10第9頁(yè)/共130頁(yè)11第10頁(yè)/共130頁(yè)第11頁(yè)/共130頁(yè)第12頁(yè)/共130頁(yè)unsigned long fac(int x) int i; unsigned long ul=1; for (i=1;i=x;i+) ul*=i; return ul;第13頁(yè)/共130頁(yè)15模塊接口模塊接口實(shí)現(xiàn)模塊功能數(shù)據(jù)傳遞第14頁(yè)/共130頁(yè)16unsigned

2、 long fac(int x) int i; unsigned long ul=1; for (i=1;i=x;i+) ul*=i; return ul;第15頁(yè)/共130頁(yè)17第16頁(yè)/共130頁(yè)18unsigned long fac(int x) int i; unsigned long ul=1; for (i=1;iy?x:y; z=xy?x:y; return(z); return(z); 例例 空函數(shù)空函數(shù) void dummy( void)void dummy( void) 函數(shù)體為空例例 無(wú)參函數(shù)無(wú)參函數(shù) void printstar(void)void printstar(

3、void) cout cout* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * endl; endl;void print_message(void)void print_message(void) cout Welcome to C+!endl; cout Welcome to C+!endl;第36頁(yè)/共130頁(yè)38說(shuō)明:實(shí)參必須有確定的值形參必須指定類型形參與實(shí)參類型一致,個(gè)數(shù)相同若形參與實(shí)參類型不一致,自動(dòng)按形參類型轉(zhuǎn)換函數(shù)調(diào)用轉(zhuǎn)換形參在函數(shù)被調(diào)用前不占內(nèi)存;函數(shù)調(diào)用時(shí)為形參分配內(nèi)存;調(diào)用結(jié)束,內(nèi)存釋放第37頁(yè)/

4、共130頁(yè)39例例: : 計(jì)算計(jì)算x x的立方的立方注意內(nèi)存注意內(nèi)存#include using namespace std;float cube(float x) return(x*x*x);int main() float a, product; couta; product=cube(a); cout Cube of a is producty?x:y);第39頁(yè)/共130頁(yè)41例例: : 函數(shù)返回值類型轉(zhuǎn)換函數(shù)返回值類型轉(zhuǎn)換#include using namespace std;int max(float x, float y) float z; z=xy?x:y; return(z

5、);int main() float a,b; int c; cinab; c=max(a,b); coutMax is cendl; return 0;運(yùn)行結(jié)果:運(yùn)行結(jié)果:2.6 , 8.9 Max is 8第40頁(yè)/共130頁(yè)42可以被多次調(diào)用,相互調(diào)用例 int f1(int x);/函數(shù)原型 int f2(int x); int f3(int x); int main() int a; f1(a); f2(a); f3(a);int f1(int x) int b; return f2(b);int f2(int x) int c; return f3(c); int f3(int x

6、) 第41頁(yè)/共130頁(yè)43第42頁(yè)/共130頁(yè)44例例 函數(shù)說(shuō)明舉例函數(shù)說(shuō)明舉例#includeusing namespace std;int main() int a,b; int c; cinab; c=max(a,b); coutMax is “cy?x:y; return(z);int型函數(shù)可不作函數(shù)說(shuō)明(Borland C+不行)#includeusing namespace std;float add(float x, float y) float z; z=x+y; return(z);int main() float a,b,c; cinab; c=add(a,b); cou

7、tsum is “cendl;return 0;被調(diào)函數(shù)出現(xiàn)在主調(diào)函數(shù)之前,不必函數(shù)說(shuō)明第43頁(yè)/共130頁(yè)main( )調(diào)用函數(shù)a結(jié)束a函數(shù)b函數(shù)調(diào)用函數(shù)b例如: 求三個(gè)數(shù)中最大數(shù)和最小數(shù)的差值第44頁(yè)/共130頁(yè)#include using namespace std; int dif(int x,int y,int z); int max(int x,int y,int z); int min(int x,int y,int z);int main() int a,b,c,d; cinabc; d=dif(a,b,c); coutMax-Min“dy?x:y; return(rz?r:z

8、); int min(int x,int y,int z) int r; r=xy?x:y; return(r1)第47頁(yè)/共130頁(yè)第48頁(yè)/共130頁(yè)#include using namespace std;int age(int n) int c; if(n= =1) c=10; else c=age(n-1)+2; return(c); int main( )coutage(5)1)第49頁(yè)/共130頁(yè)條件,一個(gè)可以得到解的基本情況。第50頁(yè)/共130頁(yè)52第51頁(yè)/共130頁(yè)53第52頁(yè)/共130頁(yè)54第53頁(yè)/共130頁(yè)55基本情形基本情形更簡(jiǎn)單的原始問題更簡(jiǎn)單的原始問題第54頁(yè)/

9、共130頁(yè)565!5*4!4*3!3*2!2*1!1返回5*24=120返回4*6=24返回3*2=6返回2*1=2返回1第55頁(yè)/共130頁(yè)57第56頁(yè)/共130頁(yè)例例 有以下程序有以下程序#include using namespace std; int f(int n) if (n=1)return 1; else return f(n-1)+1; int main() int i,j=0; for(i=1;i3;i+) j+=f(i); coutjendl; return 0;程序運(yùn)行后的輸出結(jié)果是:程序運(yùn)行后的輸出結(jié)果是:a)4 b)3 c)2 d)1 i f(i) j 1 1 1

10、2 f(2-1)+1 1+2 第57頁(yè)/共130頁(yè)例:#include using namespace std;long fun(int n) long s; if( n=1| n=2 ) s=2; else s=n-fun(n-1); return s;int main() coutfun(3)i) i=j;if(ki) i=k;m=i;第61頁(yè)/共130頁(yè)第62頁(yè)/共130頁(yè)int max1(int ,int,int)long max2(long, long, long)double max3(double , double , double )第63頁(yè)/共130頁(yè)例:void print

11、(double);void print(int);void func() print(1); / void print(int); print(1.0); / void print(double); print(a); / void print(int); print(3.1415f); / void pirnt(double); 第64頁(yè)/共130頁(yè)66第65頁(yè)/共130頁(yè)double d1,d2,d3,d; cind1d2d3; d=max(d1,d2,d3); coutd_max=dg1g2g3; g=max(g1,g2,g3); coutg_max=ga) a=b; if(ca) a=

12、c; return a;第66頁(yè)/共130頁(yè)運(yùn)行情況如下:185 -76 567 i_max=567 56.87 90.23 -3214.78d_max=90.2367854 -912456 673456 g_max=673456 特點(diǎn):參數(shù)類型不同,函數(shù)體一樣特點(diǎn):參數(shù)類型不同,函數(shù)體一樣第67頁(yè)/共130頁(yè)第68頁(yè)/共130頁(yè)第69頁(yè)/共130頁(yè)第70頁(yè)/共130頁(yè)72第71頁(yè)/共130頁(yè)第72頁(yè)/共130頁(yè)int main( )int i1=185,i2=-76,i3=567,i;double d1=56.87,d2=90.23,d3=-3214.78,d; long g1=67854,

13、g2=-912456,g3=673456,g; i=max(i1,i2,i3); d=max(d1,d2,d3); g=max(g1,g2,g3); couti_max=iendl; coutf_max=fendl; coutg_max=ga) a=b; if(ca) a=c; return a;第73頁(yè)/共130頁(yè)int add(int x=5,int y=6) return x+y;void main() add(10,20); /10+20 add(10); /10+6 add(); /5+6第74頁(yè)/共130頁(yè)u默認(rèn)形參值必須從右向左順序聲明,并且在默認(rèn)形參值的右面不能有非默認(rèn)形參值的

14、參數(shù)。因?yàn)檎{(diào)用時(shí)實(shí)參取代形參是從左向右的順序。u例:int add(int x,int y=5,int z=6); /正確int add(int x=1,int y=5,int z); /錯(cuò)誤int add(int x=1,int y,int z=6); /錯(cuò)誤第75頁(yè)/共130頁(yè)int max(int a,int b,int c) if(ba) a=b; if(ca) a=c; return a;運(yùn)行情況如下:14 -56 135max(a,b,c)=135max(a,b)=14第76頁(yè)/共130頁(yè)局部變量第77頁(yè)/共130頁(yè)float f1(int a) /函數(shù)f1int b,c; b、c

15、有效 a有效char f2(int x, int y) /函數(shù)f2 int i,j; i、j有效x、y有效int main( ) /主函數(shù)int m,n;int p,q; p、q在復(fù)合語(yǔ)句中有效 m、n有效第78頁(yè)/共130頁(yè)例如int max(int a,int b); /函數(shù)聲明中出現(xiàn)a、b int max(int x,int y) /函數(shù)定義,形參是x、y coutxyendl; /合法,x、y在函數(shù)體中有效coutabendl; /非法,a、b在函數(shù)體中無(wú)效編譯時(shí)認(rèn)為max函數(shù)體中的a和b未經(jīng)定義。第79頁(yè)/共130頁(yè)int p=1,q=5;/全局變量全局變量p、q的作用范圍 floa

16、t f1(int a)/定義函數(shù)f1 int b,c;char c1,c2; /全局變量 全局變量c1、c2 的作用范圍char f2 (int x, int y) /定義函數(shù)f2int i,j;main ( )/主函數(shù)int m,n;第80頁(yè)/共130頁(yè)內(nèi)存.int main() int a; a=10; coutaendl;return 0;編譯或函數(shù)調(diào)用時(shí)為其分配內(nèi)存單元1020002003程序中使用變量名對(duì)內(nèi)存操作第81頁(yè)/共130頁(yè)變量的屬性數(shù)據(jù)類型:變量所持有的數(shù)據(jù)的性質(zhì)(操作屬性)存儲(chǔ)屬性生存期:變量在內(nèi)存中的存在期間。變量在某一時(shí)刻存在-靜態(tài)變量與動(dòng)態(tài)變量(時(shí)間角度)作用域:變

17、量在某區(qū)域內(nèi)有效-局部變量與全局變量(空間角度)變量的存儲(chǔ)類型auto -自動(dòng)型register-寄存器型static -靜態(tài)型extern -外部型變量定義格式: 存儲(chǔ)類型 數(shù)據(jù)類型 變量表;4.12 變量的存儲(chǔ)類別u概述變量是對(duì)程序中數(shù)據(jù)的存儲(chǔ)空間的抽象如: int sum; auto int a,b,c; register int i; static float x,y;第82頁(yè)/共130頁(yè)程序區(qū)靜態(tài)存儲(chǔ)區(qū)動(dòng)態(tài)存儲(chǔ)區(qū)全局變量、局部靜態(tài)變量形參變量局部動(dòng)態(tài)變量(auto register)函數(shù)調(diào)用現(xiàn)場(chǎng)保護(hù)和返回地址等生存期靜態(tài)變量:從程序開始執(zhí)行到程序結(jié)束動(dòng)態(tài)變量:從包含該變量定義的函數(shù)開

18、始執(zhí)行至函數(shù)執(zhí)行結(jié)束第83頁(yè)/共130頁(yè)float f1(int a) int b,c; .char f2(int x,int y) int i,j; main() int m,n; .a,b,c有效x,y,i,j有效m,n有效例 不同函數(shù)中同名變量#include using namespace std;int main() int a,b; int sub( ); a=3; b=4; coutmain: a“,”bendl; sub( ); coutmain: a“,”bendl;return 0; int sub( ) int a,b; a=6; b=7; cout sub: a“,”b

19、外部變量說(shuō)明: extern 數(shù)據(jù)類型 變量表;外部變量定義與外部變量說(shuō)明不同若全局變量與局部變量同名,則全局變量被屏蔽外部變量可用存儲(chǔ)類型:缺省 或 static第85頁(yè)/共130頁(yè)float max,min;float average(float array, int n) int i; float sum=array0; max=min=array0; for(i=1;imax) max=arrayi; else if(arrayimin) min=arrayi; sum+=arrayi; return(sum/n);main() int i; float ave,score10; /*

20、Input */ ave=average(score,10); coutmax= maxmin=“ minaverage=“aveendl;作用域maxmin第86頁(yè)/共130頁(yè)int p=1,q=5;float f1(int a) int b,c; .int f3().char c1,c2;char f2(int x,int y) int i,j; main() int m,n; .c1,c2的作用范圍p,q的作用范圍extern char c1,c2;extern char c1,c2;c1,c2的作用范圍擴(kuò)展后c1,c2的作用范圍擴(kuò)展后第87頁(yè)/共130頁(yè)例 外部變量定義與說(shuō)明#incl

21、udeusing namespace std;int max(int x, int y) int z; z=xy?x:y; return(z);main() extern int a,b; coutmax=“max(a,b)endl;int a=13,b=-8;運(yùn)行結(jié)果:max=13#includeusing namespace std;extern int a,b;int max() int z; z=ab?a:b; return(z);int main() coutmax=“max()endl;return 0;int a=13,b=-8;第88頁(yè)/共130頁(yè)#includeusing n

22、amespace std;int a=3,b=5;max(int a, int b) int c; c=ab?a:b; return(c);int main() int a=8; coutmax=“max(a,b)endl;return 0;例 全局變量與局部變量運(yùn)行結(jié)果:max=8第89頁(yè)/共130頁(yè)int i;#includeusing namespace std;int main() void prt(); for(i=0;i5;i+) prt( );void prt( ) for(i=0;i5;i+) cout“*”; coutendl;例 外部變量副作用運(yùn)行結(jié)果:*第90頁(yè)/共130

23、頁(yè)第91頁(yè)/共130頁(yè)程序區(qū)靜態(tài)存儲(chǔ)區(qū)動(dòng)態(tài)存儲(chǔ)區(qū)全局變量、局部靜態(tài)變量形參變量局部動(dòng)態(tài)變量(auto register)函數(shù)調(diào)用現(xiàn)場(chǎng)保護(hù)和返回地址等如: int sum; auto int a,b,c; register int i; static float x,y;第92頁(yè)/共130頁(yè)u局部變量默認(rèn)為auto型,如int a=3;u局部static變量具有全局壽命和局部可見性u(píng)局部static變量具有可繼承性即占有的存儲(chǔ)單元不釋放,在下一次調(diào)用函數(shù)時(shí),該變量保留上一次函數(shù)調(diào)用結(jié)束時(shí)的值。uextern不是變量定義,可擴(kuò)展外部變量作用域第93頁(yè)/共130頁(yè)例 auto 變量的作用域同名局部變

24、量#includeusing namespace std;int main() int x=1; void prt(void); int x=3; prt( ); cout“2nd x=”xendl; cout“1st x=”xendl;return 0;void prt( ) int x=5; cout“3th x=”xendl;運(yùn)行結(jié)果:3th x=52nd x=31st x=1x=1作用域x=1作用域x=3作用域x=5作用域第94頁(yè)/共130頁(yè)#includeusing namespace std;int main() void increment(void); increment();

25、 increment(); increment();return 0;void increment(void) int x=0; x+; coutxendl;例 局部靜態(tài)變量值具有可繼承性運(yùn)行結(jié)果:1 1 1#includeusing namespace std;int main() void increment(void); increment(); increment(); increment();return 0; void increment(void) static int x=0; x+; coutxendl;運(yùn)行結(jié)果:1 2 3第95頁(yè)/共130頁(yè)例 變量的壽命與可見性#incl

26、ude int i=1;main() static int a; register int b=-10; int c=0; cout-MAIN-n“endl; couti: i a: a “b:” b“ c:” c; c=c+8; other(); cout-MAIN-n“endl; couti: i a: a “b:” b“ c:” c; i=i+10; other();other() static int a=2; static int b; int c=10; a=a+2; i=i+32; c=c+5; cout-OTHER-“endl; couti: i a: a “b:” b“ c:

27、” c; b=a; -Main-i:1 a:0 b:-10 c:0 -Other-i:33 a:4 b:0 c:15 -Main-i:33 a:0 b:-10 c:8-Other-i:75 a:6 b:4 c:15全局i1main: a0b:-10registermain:c0靜態(tài)存儲(chǔ)區(qū)動(dòng)態(tài)存儲(chǔ)區(qū)other: a2other: b0other: c10843315443other: c10675156第96頁(yè)/共130頁(yè)#includeusing namespace std;int main() void gx(),gy(); extern int x,y; cout“1: x=”x“ty=“

28、yendl; y=246; gx(); gy();void gx() extern int x,y; x=135; cout“2: x=”x“ty=“yendl;int x,y;void gy()cout“3: x=”x“ty=“yendl;例 用extern擴(kuò)展外部變量作用域運(yùn)行結(jié)果:1: x=0 y=02: x=135 y=2463: x=135 y=246第97頁(yè)/共130頁(yè)例 引用其它文件中的外部變量int global;extern float x;main() int local;.extern int global;static int number;func2().float x;static int number;func3() extern int global;.file1.cppfile2.cppfile3.cpp第98頁(yè)/共130頁(yè)例 引用其它文件中的變量,輸出ab和a的m次方int a;void main() int power(int n); int b=3,c,d,m; coutam; c=a*b; cout a * b=cendl; d=power(m); couta* m = dendl;extern int a;int power(int n) int

溫馨提示

  • 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ù)覽,若沒有圖紙預(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)論