模块化程序设计-函数.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《模块化程序设计-函数.ppt》由会员分享,可在线阅读,更多相关《模块化程序设计-函数.ppt(58页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、模块化程序设计函数模块化程序设计函数 n n重写例重写例1.1模块化程序设计模块化程序设计 n n函数函数 n n程序设计实例程序设计实例 for(x=for(x=A;xA;x=F;xF;x+)+)for(y=x;y=for(y=x;y=I;yI;y+)+)printfprintf(%c,y);(%c,y);for(y=A;yx;y+)for(y=A;yx;y+)printfprintf(%c,y);(%c,y);for(i=1;i=(5-(x-A)*2);i+)for(i=1;i=(5-(x-A)*2);i+)printfprintf();();for(i=1;i=2*(x-A)+1;i+)
2、for(i=1;i=2*(x-A)+1;i+)printfprintf(%c,x);(%c,x);for(i=1;i=(5-(x-A)*2);i+)for(i=1;i=(5-(x-A)*2);i+)printfprintf();();for(y=x+1;y=for(y=x+1;y=I;yI;y+)+)printfprintf(%c,y);(%c,y);for(y=A;y=for(y=A;y=A;xA;x-)-)for(y=x;y=for(y=x;y=I;yI;y+)+)printfprintf(%c,y);(%c,y);for(y=A;y=x-1;y+)for(y=A;y=x-1;y+)pri
3、ntfprintf(%c,y);(%c,y);for(i=1;i=(5-(x-A)*2);i+)for(i=1;i=(5-(x-A)*2);i+)printfprintf();();for(i=1;i=2*(x-A)+1;i+)for(i=1;i=2*(x-A)+1;i+)printfprintf(%c,x);(%c,x);for(i=1;i=(5-(x-A)*2);for(i=1;i=(5-(x-A)*2);i+)printfi+)printf();();for(y=x+1;y=for(y=x+1;y=I;yI;y+)+)printfprintf(%c,y);(%c,y);for(y=A;y
4、=for(y=A;y=x;yx;y+)+)printfprintf(%c,y);(%c,y);printfprintf(n);(n);abab=sqrtsqrt(xa-xbxa-xb)*()*(xa-xb)+(ya-ybxa-xb)+(ya-yb)*()*(ya-ybya-yb););/边边边边abab长长长长bdbd=sqrtsqrt(xb-xdxb-xd)*()*(xb-xd)+(yb-ydxb-xd)+(yb-yd)*()*(ybyb-yd);-yd);/边边边边bdbd长长长长ad=ad=sqrtsqrt(xa-xdxa-xd)*()*(xa-xd)+(ya-ydxa-xd)+(ya-
5、yd)*()*(yaya-yd);-yd);/边边边边adad长长长长s=(ab+bd+ad)/2;s=(ab+bd+ad)/2;s1=s1=sqrtsqrt(s*(s*(s-abs-ab)*()*(s-bds-bd)*(s-ad);/)*(s-ad);/ABDABD面积面积面积面积bcbc=sqrtsqrt(xb-xcxb-xc)*()*(xb-xc)+(yb-ycxb-xc)+(yb-yc)*()*(yb-ycyb-yc);/边边边边BCBC长长长长cdcd=sqrtsqrt(xc-xdxc-xd)*()*(xc-xd)+(yc-ydxc-xd)+(yc-yd)*()*(ycyc-yd)-
6、yd);/边边边边CDCD长长长长s=(bc+bd+cd)/2;s=(bc+bd+cd)/2;s2=s2=sqrtsqrt(s*(s*(s-bcs-bc)*()*(s-bds-bd)*()*(s-cds-cd);/);/BCDBCD面积面积面积面积重写例重写例1.1#include#include/1/1#include#include/2/2float float xa,ya,xb,yb,xc,yc,xd,ydxa,ya,xb,yb,xc,yc,xd,yd;/3/3float s1,s2,ss,m;float s1,s2,ss,m;/4/4/*/*计算计算计算计算r r、s s两点距离:参数
7、:两点距离:参数:两点距离:参数:两点距离:参数:r r点点点点x x、y y坐标,坐标,坐标,坐标,s s点点点点x x、y y坐标坐标坐标坐标*/float liners(float float liners(float xr,floatxr,float yr,floatyr,float xs,floatxs,float ysys)/5/5return return sqrtsqrt(xr-xsxr-xs)*()*(xr-xs)+(yr-ysxr-xs)+(yr-ys)*(yr-)*(yr-ysys););/6/6 /7/7/*/*计算三角形计算三角形计算三角形计算三角形uvwuvw面积,
8、参数:面积,参数:面积,参数:面积,参数:u u点点点点x x、y y坐标,坐标,坐标,坐标,v v点点点点x x、y y坐标,坐标,坐标,坐标,ww点点点点x x、y y坐标坐标坐标坐标 */float float areauvw(floatareauvw(float xu,floatxu,float yuyu,float float xv,floatxv,float yvyv,float float xw,floatxw,float ywyw)/8/8 float float uvuv,uwuw,vwvw;/三条边长三条边长三条边长三条边长/9/9float s;float s;/10/1
9、0uvuv=liners(=liners(xuxu,yuyu,xv,xv,yvyv););/边边边边uvuv长长长长/11/11uwuw=liners(=liners(xuxu,yuyu,xwxw,ywyw););/边边边边uwuw长长长长/12/12vwvw=liners(xv,=liners(xv,yvyv,xwxw,ywyw););/边边边边vwvw长长长长/13/13s=(uv+uw+vw)/2;s=(uv+uw+vw)/2;/s/s/14/14return return sqrtsqrt(s*(s*(s-uvs-uv)*()*(s-uws-uw)*()*(s-vws-vw);/);/
10、面积面积面积面积/15/15 void void main(voidmain(void)/主函数主函数主函数主函数 printf(pleaseprintf(please input input xa,ya,xb,ybxa,ya,xb,yb,xc,yc,xd,yd:nxc,yc,xd,yd:n););/18/18 scanf(%f%f%f%f%f%fscanf(%f%f%f%f%f%f%f%ff%f,&,&xa,&yaxa,&ya,&xb,&yb,&xc,&yc,&xd,&ydxb,&yb,&xc,&yc,&xd,&yd););/19/19 s1=s1=areauvwareauvw(xaxa,y
11、aya,xbxb,ybyb,xdxd,yd);,yd);/20/20 s2=s2=areauvwareauvw(xbxb,ybyb,xcxc,ycyc,xdxd,yd);,yd);/21/21 ssss=s1+s2;=s1+s2;/22/22 ssss=ss/1000;=ss/1000;/折合成亩折合成亩折合成亩折合成亩 /23/23 m=m=ssss*950;*950;/计算总产量计算总产量计算总产量计算总产量 /24/24 printf(“mprintf(“m=%10.3fn”,m);=%10.3fn”,m);/打印输出打印输出打印输出打印输出 /25/25 子程序子程序n n自顶向下、逐
12、步求精自顶向下、逐步求精”程序设计技术的基程序设计技术的基础础 从问题的整体(最顶层)出发,向下分解问题。从问题的整体(最顶层)出发,向下分解问题。从问题的整体(最顶层)出发,向下分解问题。从问题的整体(最顶层)出发,向下分解问题。逐层细分,得到整个问题的解决方法逐层细分,得到整个问题的解决方法逐层细分,得到整个问题的解决方法逐层细分,得到整个问题的解决方法n使用子程序技术分离了使用子程序技术分离了“做什么做什么”与与“怎怎么做么做”程序逻辑结构清晰,易写,易读,易懂。程序逻辑结构清晰,易写,易读,易懂。程序的设计,调试,维护变得容易程序的设计,调试,维护变得容易n程序执行的主要步骤程序执行的
13、主要步骤从第从第18行主函数开始,执行行主函数开始,执行printf(please input xa,ya,xb,yb,xc,yc,xd,yd:n);输出一行提示信息输出一行提示信息:please input xa,ya,xb,yb,xc,yc,xd,yd:执行第执行第19行函数调用行函数调用scanf(%f%f%f%f%f%f%f%f,&xa,&ya,&xb,&yb,&xc,&yc,&xd,&yd);等待操作员键入数值。设操作员键入等待操作员键入数值。设操作员键入547 411 804 77 39 208 116 332当操作员键入并回车之后,变量当操作员键入并回车之后,变量xa、ya、xb
14、、yb、xc、yc、xd、yd分别取得相应值。分别取得相应值。n n第第第第2020行以行以行以行以xaxa、yaya、xbxb、ybyb、xdxd、ydyd为实参调用为实参调用为实参调用为实参调用函数函数函数函数areauvwareauvw 分别计算分别计算分别计算分别计算xaxa,yaya,xbxb,ybyb ,xdxd,ydyd的值,得的值,得的值,得的值,得547547、411411、804804、7777、116116、332 332 将将将将547547、411411、804804、7777、116116、332332分别分别分别分别 送入送入送入送入areauvwareauvw的
15、形参的形参的形参的形参xuxu、yuyu、xvxv、yvyv、xwxw、ywyw中中中中 进入函数进入函数进入函数进入函数areauvwareauvw ,执行,执行,执行,执行areauvwareauvw的操作部分的操作部分的操作部分的操作部分 第第第第1111行,以行,以行,以行,以xuxu,yuyu,xv,xv,yvyv为实在参数调用函数为实在参数调用函数为实在参数调用函数为实在参数调用函数linersliners,计,计,计,计算边算边算边算边uvuv长长长长 分别计算分别计算分别计算分别计算xuxu,yuyu,xv,xv,yvyv得得得得547547、411411、804804、77
16、77;将将将将547547、411411、804804、7777顺序送入顺序送入顺序送入顺序送入linersliners形参形参形参形参xrxr,yr,yr,xsxs,ysys中中中中 第第第第6 6行返回语句行返回语句行返回语句行返回语句return return sqrtsqrt(xr-xsxr-xs)*()*(xr-xs)+(yr-ysxr-xs)+(yr-ys)*(yr-)*(yr-ysys););计算出表达式的值为计算出表达式的值为计算出表达式的值为计算出表达式的值为 421.432 421.432 带着函数值带着函数值带着函数值带着函数值421.432421.432返回调用处返回调
17、用处返回调用处返回调用处areauvwareauvw中第中第中第中第1111行,给行,给行,给行,给uvuv赋值。赋值。赋值。赋值。uvuv的值为的值为的值为的值为421.432421.432 第第第第1212行,以行,以行,以行,以xuxu,yuyu,xwxw,ywyw为实参调用函数为实参调用函数为实参调用函数为实参调用函数linersliners,计算边计算边计算边计算边uwuw长长长长uwuw。uwuw值为:值为:值为:值为:438.18438.18 第第第第1313行,以行,以行,以行,以xvxv,yvyv,xwxw,ywyw为实参调用函数为实参调用函数为实参调用函数为实参调用函数li
18、nersliners,计算边计算边计算边计算边vwvw长长长长vwvw。vwvw值为:值为:值为:值为:733.736733.736 第第第第1414行,计算出行,计算出行,计算出行,计算出s s796.674 796.674 1515行返回语句。计算表达式的值为行返回语句。计算表达式的值为行返回语句。计算表达式的值为行返回语句。计算表达式的值为82128.582128.5,也就是函数,也就是函数,也就是函数,也就是函数areauvwareauvw的值。的值。的值。的值。带着函数值带着函数值带着函数值带着函数值82128.582128.5返回调用处主程序第返回调用处主程序第返回调用处主程序第返
19、回调用处主程序第2020行行行行 n n第第第第2121行,计算三角形行,计算三角形行,计算三角形行,计算三角形BCDBCD的面积,的面积,的面积,的面积,s2s252473.552473.5n n第第第第2222行,计算总面积,行,计算总面积,行,计算总面积,行,计算总面积,ssss134602134602n n第第第第2323行,折合成亩,行,折合成亩,行,折合成亩,行,折合成亩,ssss134.602134.602n n第第第第2424行,计算总产量,行,计算总产量,行,计算总产量,行,计算总产量,mm127871.9127871.9n n第第第第2525行,输出函数行,输出函数行,输出
20、函数行,输出函数printfprintf在屏幕显示在屏幕显示在屏幕显示在屏幕显示:mm127871.90 127871.90 函数函数n函数概念的组成函数概念的组成函数定义函数定义函数调用函数调用n使用函数注意事项使用函数注意事项先定义该函数(标准库函数除外)先定义该函数(标准库函数除外)类似于数学中的函数定义。类似于数学中的函数定义。再在表达式中调用该函数再在表达式中调用该函数数学中计算某函数的一个特定值。数学中计算某函数的一个特定值。函数定义函数定义(function-declaration)n除标准库函数外除标准库函数外,程序中使用函数必须程序中使用函数必须先定义先定义,然后再用然后再用
21、“函数调用函数调用”调用它。调用它。n标准函数是系统已经定义好的函数,不必定义标准函数是系统已经定义好的函数,不必定义即可直接调用。即可直接调用。n由上述语法可知,一个函数定义的形式是由上述语法可知,一个函数定义的形式是:类型说明符类型说明符 标识符标识符 (参数列表参数列表 )复合语句复合语句float liners(float float liners(float xr,floatxr,float yr,floatyr,float xs,floatxs,float ysys)return return sqrtsqrt(xr-xsxr-xs)*()*(xr-xs)+(yr-ysxr-xs)
22、+(yr-ys)*(yr-)*(yr-ysys););函数类函数类型型函数名字函数名字形参列表形参列表复合语句复合语句函数体函数体函数定义说明符函数定义说明符n 函数定义说明符函数定义说明符 上述形式的第一行称上述形式的第一行称“函数定义说明符函数定义说明符”,形式如,形式如下下 TT F(参数列表参数列表)具体指明以下点:具体指明以下点:l函数的结果类型函数的结果类型 由由“类型说明符类型说明符”(TT)标明;标明;l函数的名字函数的名字 由类型说明符后的由类型说明符后的“标识符标识符”(F)标明;标明;l函数的形式参数个数和每个形式参数的特性函数的形式参数个数和每个形式参数的特性 由由“参
23、数列表参数列表”标明。标明。n n函数类型函数类型函数的结果类型函数的结果类型函数的结果类型函数的结果类型缺省缺省缺省缺省 intint 类型类型类型类型 结果类型不能是数组类型、函数类型结果类型不能是数组类型、函数类型结果类型不能是数组类型、函数类型结果类型不能是数组类型、函数类型 函数可以是无值的,即函数可以是无值的,即函数可以是无值的,即函数可以是无值的,即“无类型无类型无类型无类型”的的的的 void void n参数列表参数列表(parameter-list)组成:组成:每个参数声明具体说明形式:每个参数声明具体说明形式:类型说明符类型说明符 标识符标识符参数列表形式参数列表形式 T
24、 id,T id,.,T id C允许使用无参函数,无参函数的参数列表为空,或使用允许使用无参函数,无参函数的参数列表为空,或使用“空类型空类型”的类型说明符的类型说明符“void”TT F()TT F(void)n复合语句(复合语句(compound-statement)由声明和语句)由声明和语句列表组成列表组成声明部分具体的说明本函数内使用的其它量;声明部分具体的说明本函数内使用的其它量;语句部分规定在本函数中要执行的算法动作。语句部分规定在本函数中要执行的算法动作。n函数定义的形式:函数定义的形式:TT F (T id,T id,.,T id).int f(int x,int y,flo
25、at z)int f(int x,y;float z)int f(int x,y,float z)函数调用函数调用n调用过程调用过程首先顺序计算实参表中各实参值首先顺序计算实参表中各实参值然后把这些值顺序传入形参表的各个形参中然后把这些值顺序传入形参表的各个形参中最后进入函数执行复合语句。最后进入函数执行复合语句。n一般形式一般形式F(U,U,U)F()n例子例子liners(xu,yu,xv,yv)areauvw(xa,ya,xb,yb,xd,yd)sqrt(s*(s-uv)*(s-uw)*(s-vw)主程序主程序调用函数调用函数返回返回结束结束函数函数n参数结合规则参数结合规则静态上看,实
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模块化 程序设计 函数
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内