函数课件省公共课一等奖全国赛课获奖课件.pptx
《函数课件省公共课一等奖全国赛课获奖课件.pptx》由会员分享,可在线阅读,更多相关《函数课件省公共课一等奖全国赛课获奖课件.pptx(57页珍藏版)》请在咨信网上搜索。
1、第八章第八章 函函 数数第1页主要内容主要内容 函函函函 数数数数变量存放属性变量存放属性编译预处理编译预处理第2页模块化程序设计基本思想模块化程序设计基本思想(自顶向下,逐步分解)现实问题现实问题分解为若干子问题集合分解为若干子问题集合对每个子问题单独编程(模块对每个子问题单独编程(模块函数)函数)比如:高校事务管理系统比如:高校事务管理系统第3页分析工具:树型图树型图问题问题问题问题1问题问题2问题问题N问题问题21第4页例例:用树型图分析高校事务管理系统用树型图分析高校事务管理系统高校事务管理高校事务管理办办公公室室管管理理教务管理教务管理学籍管理学籍管理科科研研管管理理人人事事管管理理
2、财财务务管管理理设设备备管管理理后后勤勤管管理理图图书书馆馆管管理理成绩管理成绩管理排课排课第5页C是模块化程序设计语言C程序结构&C是函数式语言&必须有且只能有一个名为main主函数&C程序执行总是从main函数开始,在main中结束&C程序中主函数调用其它函数,其它函数间可相互调用&函数不能嵌套定义,能够嵌套调用第6页算法实现算法实现main()f1()f5()f51()f2()f6()f4()f3()f7()f8()f52()f53()第7页函数基本概念函数基本概念含有特定功效及界面程序段含有特定功效及界面程序段如:求和、排序、求最大(小)、特定格式打印等。如:求和、排序、求最大(小)、
3、特定格式打印等。函数作用函数作用便于实现模块化程序设计便于实现模块化程序设计优点:结构清楚修改方便通用性强优点:结构清楚修改方便通用性强函 数第8页1 1、主函数、主函数 main()main()2 2、功效子函数、功效子函数函数函数1 1、库函数、库函数2 2、自定义函数、自定义函数使用使用库函数库函数应注意:应注意:1、函数功效、函数功效2、函数参数数目和次序,及各参数意义和类型、函数参数数目和次序,及各参数意义和类型3、函数返回值意义和类型、函数返回值意义和类型4、需要使用包含文件、需要使用包含文件使用使用使用使用自定义函数自定义函数时应注意:时应注意:1、怎样定义函数、怎样定义函数-函
4、数首部、函数首部、函数体函数体2、函数返回值意义和类型、函数返回值意义和类型3、怎样调用自定义函数(注意事项)、怎样调用自定义函数(注意事项)第9页【函数定义】【函数定义】描述函数功效描述函数功效定义格式定义格式:(当代格式)(当代格式)类型类型 函数名称(类型函数名称(类型 参数参数1,类型,类型 参数参数2,)函数体函数体 函数返回值类型,缺省为函数返回值类型,缺省为int,void为空类型为空类型,表示函数表示函数不返回任何值不返回任何值可有可无(可有可无(void)例:例:ff().ff(void).等价等价例 有参函数(当代格调)int max(int x,y)int z;z=xy?
5、x:y;return(z);例 有参函数(当代格调)int max(int x,int y)int z;z=xy?x:y;return(z);例 无参函数 printstar()printf(“*n”);或 printstar(void)printf(“*n”);例 空函数 void dummy(void)函数体为空第10页函数类型函数类型 函数名(形参表)函数名(形参表)形参类型说明形参类型说明说明部分说明部分语句部分语句部分传统格调:例例 有参函数(传统格调)有参函数(传统格调)int max(x,y)int x,y;int z;z=xy?x:y;return(z);第11页【函数调用【函
6、数调用1】函数名(实参表列);函数名(实参表列);可缺省例:例:putchar(*);c=getchar();注:注:1、被调用、被调用函数存在函数存在(已被定义(已被定义(两重含义两重含义)2、调用库函数时应包含对应头文件、调用库函数时应包含对应头文件#include sqrt(40.0)#include strlen()#include 举例:编写子函数打印举例:编写子函数打印“*#”第12页主、子函数之间关系主、子函数之间关系 从主函数开始执行,主调子,子不能从主函数开始执行,主调子,子不能调主,子与子之间能够相互调用。调主,子与子之间能够相互调用。主调函数被调函数注:函数不能嵌套定义注
7、:函数不能嵌套定义第13页【函数申明】【函数申明】标准上是标准上是先定义后使用先定义后使用子子2 2主主主主子子1 1子子3 3处理方法:处理方法:2、在主调函数中(调用语句之前)、在主调函数中(调用语句之前)对被调函数进行申明。对被调函数进行申明。3、外部(显式)申明、外部(显式)申明类型类型 函数名称(类型函数名称(类型 参数参数1,类型,类型 参数参数2,);函数申明格式:函数申明格式:子子1 1子子2 2子子3 3主主主主1、被调用函数定义在前、被调用函数定义在前第14页例例 函数申明举例函数申明举例main()float a,b;int c;scanf(%f,%f,&a,&b);c=
8、max(a,b);printf(Max is%dn,c);max(float x,float y)float z;z=xy?x:y;return(z);int型函数可不作函数说明(Borland C+不行)/*ch7_5.c*/float add(float x,float y)float z;z=x+y;return(z);main()float a,b,c;scanf(%f,%f,&a,&b);c=add(a,b);printf(sum is%f,c);被调函数出现在主调函数之前,无须函数说明main()float add(float,float);/*function declarati
9、on*/float a,b,c;scanf(%f,%f,&a,&b);c=add(a,b);printf(sum is%f,c);float add(float x,float y)float z;z=x+y;return(z);float add();第15页函数返回函数返回return(表示式表示式);return;或或 函数类型函数类型 在定义函数时,由函数类型要求。在定义函数时,由函数类型要求。应与应与return(表示式表示式)中表示式值中表示式值 类型一致类型一致无返回值时定义为空类型无返回值时定义为空类型程序执行控制返回到主调函数中程序执行控制返回到主调函数中注:一个函数中可有多
10、个return语句,但仅有一个起作用若函数类型与若函数类型与return语句中表示式值类型不一致,语句中表示式值类型不一致,按前者为准,自动转换按前者为准,自动转换-函数调用转换函数调用转换第16页 printstar()printf(*);main()int a;a=printstar();printf(%d,a);例例 函数带回不确定值函数带回不确定值输出:10void printstar()printf(*);main()int a;a=printstar();printf(%d,a);编译错误!第17页例例 函数返回值类型转换函数返回值类型转换main()float a,b,c;sca
11、nf(%f,%f,&a,&b);c=max(a,b);printf(Max is%fn,c);max(float x,float y)float z;z=xy?x:y;return(z);设输入设输入 5.4,3.5输出:输出:5.000000第18页【函数调用【函数调用2】有参函数调用过程有参函数调用过程有参函数调用过程:实参有参函数调用过程:实参=形参形参传递形式:传递形式:1、赋值调用、赋值调用 2、赋地址调用、赋地址调用main()int a,b;printf(“%dn”,max(a,b);max(int a1,int b1)return(a1b1?a1:b1);形参从对应实参取得数据
12、形参从对应实参取得数据第19页main()int a,b,c,s;scanf(“%d,%d,%d”,&a,&b,&c);s=sum(a,b,c);printf(“sm=%dn”,s);sum(int x,int y,int z)int s;s=x+y+z;return(s);x,y,zx,y,z为暂时存放单元,调用开始分为暂时存放单元,调用开始分配空间、结束释放配空间、结束释放a?b?c?s?输入输入1,2,3123x?y?z?s?12366第20页参数传递形式包含:参数传递形式包含:1、值传送、值传送 (传值调用)(传值调用)2、地址传送、地址传送 (学过指针后再详讲(学过指针后再详讲)xy
13、z123123abc1、形参改变不影响、形参改变不影响 实参实参(因为存放空间不一样)因为存放空间不一样)2、在执行被调函数时形、在执行被调函数时形参单元才被建立,被调函参单元才被建立,被调函数执行完后,存放单元被数执行完后,存放单元被撤消撤消v说明:l实参必须有确定值l实参表求值次序,因系统而定(实参表求值次序,因系统而定(Turbo C 自右向左自右向左)l实参加形参实参加形参个数相等,类型一致,按次序一一对应个数相等,类型一致,按次序一一对应l若形参加实参类型不一致,自动按形参类型转换函数调用转换l形参在函数被调用前不占内存;函数调用时为形参分配内存;调用结束,内存释放,形参值不改变实参
14、值第21页main()int i=2,p;p=f(i,+i);printf(%d,p);int f(int a,int b)int c;if(ab)c=1;else if(a=b)c=0;else c=-1;return(c);例例 参数求值次序参数求值次序设参数求解次序为从左到右运行结果:运行结果:-1设参数求解次序为从右到左运行结果:运行结果:0main()int i=2,p;p=f(i,i+);printf(%d,p);int f(int a,int b)int c;if(ab)c=1;else if(a=b)c=0;else c=-1;return(c);从右到左若程序运行结果:若程序
15、运行结果:1分析编译系统参数执行次序分析编译系统参数执行次序为了程序可移植性,参数中不要含不确定原因为了程序可移植性,参数中不要含不确定原因返回第22页711x:y:调用前:调用前:调用结束:调用结束:711x:y:例 交换两个数#include main()int x=7,y=11;printf(x=%d,ty=%dn,x,y);printf(swapped:n);swap(x,y);printf(x=%d,ty=%dn,x,y);swap(int a,int b)int temp;temp=a;a=b;b=temp;调用:调用:711a:b:711x:y:swap:711x:y:117a:
16、b:temp返回第23页程序执行流程:程序执行流程:函数调用方式函数语句:例 printstar();printf(“Hello,World!n”);函数表示式:例 m=max(a,b)*2;函数参数:例 printf(“%d”,max(a,b);m=max(a,max(b,c);第24页函数嵌套调用函数嵌套调用主函数调用子函数,主函数调用子函数,子函数调用子函数子函数调用子函数 C语言不允许函数嵌套定义,语言不允许函数嵌套定义,但允许函数嵌套调用。但允许函数嵌套调用。例题例题函数递归调用函数递归调用子函数直接或间接调用本身子函数直接或间接调用本身f函数函数f函数函数f1函数函数调用调用f2函
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 函数 课件 公共课 一等奖 全国 获奖
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。