




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四讲
函数模块化编程(1)第1页本章内容4.1模块化程序设计(ModelDesigning)4.2函数概念及其分类4.3函数调用(Called)与返回4.4变量作用域(Scope)与生存期(Lifetime)4.5编译预处理(Pre-process)2第2页本讲主要内容4.1模块化程序设计(ModelDesigning)4.2函数概念及其分类4.3函数调用(Called)与返回1.函数调用形式2.函数间数据传递方式3第3页高等院校事务管理办公室管理教务管理科研管理财务管理图书管理后勤管理人事管理4第4页主控模块模块1_1模块1_n模块2_1模块2_n模块n_1模块n_n模块1模块2模块n自顶向下(Top-downdesign)、逐步细化模块化程序设计方法5第5页4.1模块化程序设计(ModelDesigning)一、模块化程序设计思想把一个较大软件工程项目分解成若干个简单、易于实现子系统(也称模块),每个子系统(模块)实现单一完整功效。每个模块完成一个特定任务,能撇开其它部分而单独编写和测试,同一项目标开发工作能够在若干程序员之间同时展开,节约大量开发时间。6第6页4.1模块化程序设计(ModelDesigning)二、模块设计标准(PrincipleofModuleDesigning)1.模块独立性(ModuleIndependency)(1)模块实现相对独立特定子功效。(2)模块之间关系简单。(3)模块内数据局部化。2.模块大小适中3、模块分解层次清楚7第7页【学生项目案例4-1】“学生信息管理系统”项目模块化设计与划分。分析:
1、调查用户需求并进行认真分析2、“学生信息管理系统”初步划分为6个一级模块。其中“学生成绩管理”一级模块继续细化为七个二级功效模块
8第8页学生信息管理系统系统管理班级管理课程设置报表管理用户信息表成绩信息统计表用户信息录入用户信息输出课程信息输出课程信息录入用户信息添加用户信息删除学生成绩录入学生成绩修改待开发(空函数)学生成绩输出学生成绩查询学生成绩插入学生成绩删除学生成绩管理用户信息查询用户信息修正学生成绩统计待开发(空函数)学生学籍管理课程信息表主模块二级模块三级9第9页【文本项目案例4-1】“文本编辑器”项目模块划分。分析:1、结合平时使用文字处理软件及用户对文本处理需求,将“文本编辑器”划分为5个一级模块,各一级功效模块继续细化并设计对应二级功效模块2、对项目进行模块划分时,应该使得每个模块实现含有可行性,上面所划分每个模块都是符合模块划分标准。10第10页文本编辑器文件编辑插入格式工具复制查找粘贴删除替换排序新建保留打开关闭打印退出小写变大写大写变小写段落字符分类统计字数统计文件加密文件解密11第11页程序模块用函数实现。一个完整C程序能够由多个源程序文件组成,一个源文件中能够包含多个函数。
关键字→语句→
函数
→源程序文件→C程序12第12页4.2函数概念及其分类为何要使用函数?过长代码增加了程序维护难度;重复为惯用功效编写代码增加人员负担;1.函数概念2.函数分类3.函数定义13第13页1.函数概念函数:将程序中重复使用、完成特定任务程序段定义为函数;
函数实当代码复用,提升编程效率。函数即功效模块,C语言中完成相对独立功效程序。C程序基本组成单位是函数。14第14页2.函数分类(1)从定义函数角度标准函数(库函数):由系统提供用户自定义函数(2)从函数参数形式无参函数:getchar()有参函数:abs(x)、sqrt(y)、tolower(ch)等。(3)从函数返回值角度:有返回值函数无返回值函数(4)从函数调用角度主调函数被调函数15第15页2.函数分类标准函数(库函数)使用某库函数时,要在程序中嵌入该函数对应头文件。头文件扩展名是“.h”,用#include命令包含头文件。stdio.h文件:printf()、scanf()、getchar()、putchar()等。math.h文件:fabs()、sqrt()、pow()等。按功效能够分为:标准I/O函数,、数学运算函数、字符函数、字符串函数等。它们执行效率高,用户需要时,可在程序中直接进行调用。16第16页main(){
inta,b;intc;if(a>b)c=a;elsec=b;}函数类型说明函数名(形式参数列表)形式参数说明intmax(a,b)inta,b;{intc;if(a>b)c=a;elsec=b;}函数体必须为变量{数听说明部分语句}传统格式函数定义形式:用户自定义函数(User-definedfunctions)
函数说明或函数首部3.函数定义17第17页当代格式函数定义形式:函数值类型名函数名(形式参数类型及参数说明){数听说明部分语句}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.函数定义18第18页说明:函数必须独立定义,不能在一个函数体中定义另一个函数,即函数不能嵌套定义。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.函数定义19第19页无参函数函数定义时无参数有参函数函数定义时定义了一个或一个以上参数fabs(doublex)pow(doublex,doubley)pow(doublex,y)错误getchar()x=getchar();从函数形式来看,C语言函数能够分为两类:有参函数和无参函数3.函数定义20第20页空函数定义时既无参数也无执行语句intmax(
){}3.函数定义21第21页用户自定义函数定义完后,能够被其它函数使用,这个过程称为函数调用。用户自定义函数不会自动执行,只有正在执行中其它函数调用它,才能执行。4.3函数调用(Called)与返回22第22页#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);主调函数被调函数4.3函数调用(Called)与返回【例】设计自定义函数。实现求两数最大值。23第23页1.函数调用形式函数名(实际参数列表)能够有参数,也能够无参数。z=max(x,y);printf("x=%d",x);4.3函数调用(Called)与返回24第24页4.3函数调用(Called)与返回函数调用分三种形式:(1)表示式函数调用:如,y=sqrt(x);(c+d*max(a,b))%e;(2)函数语句调用:在函数调用后加“;”组成一个语句。如,printf("hello!");(3)函数作实参调用:函数作为某个函数实参如,GetMax(GetMax(a,b),c)
25第25页4.3函数调用(Called)与返回【例】设计自定义函数。实现求两数最大值。#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);}函数调用函数定义26第26页从函数调用角度来看,C语言函数能够分为两类:有返回值函数和无返回值函数。有返回值函数:这类函数被调用执行完后将向调用者返回一个执行结果,称为函数返回值。特点:(1)一个函数最多只能有一个返回值。(2)函数定义中应明确返回值类型,默认为int类型。(3)函数体中最少包含一个带表示式return语句。4.3函数调用(Called)与返回27第27页return语句普通格式为:
return表示式;
或return(表示式);或return;
/*函数无返回值,return语句可省*/return语句功效:马上结束当前函数执行;程序控制流程返回到调用环境(CallingEnvironment)计算表示式值,并把该值传回到调用函数;返回值被转换为函数定义中返回值类型。4.3函数调用(Called)与返回28第28页#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函数调用(Called)与返回29第29页无返回值函数:函数用于完成某项特定处理任务,执行完成后不向调用者返回函数值。因为函数无须返回值,用户在定义这类函数时可指定它返回为空类型“void”。voidkk()注意:(1)普通无返回值函数定义中没有return语句,而是直接运行到了终点。(2)无返回值函数也能够用return语句强制从函数中某处马上返回。此时,return语句使用方法以下:
return;
/*后面不跟表示式*/4.3函数调用(Called)与返回30第30页#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函数调用(Called)与返回31第31页intmax(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);主函数在前能够吗?4.3函数调用(Called)与返回32第32页#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;}函数申明4.3函数调用(Called)与返回33第33页函数申明类似于变量定义申明,全部函数必须先定义后使用,假如定义在使用之后,要先申明,后使用。函数申明普通形式以下:类型名函数名(类型1形参1,类型2形参2,…,类型n形参n);或类型名函数名(类型1,类型2,…,类型n);或类型名函数名();4.3函数调用(Called)与返回34第34页例,下面函数原型申明是正当。intArea(int,int);/*申明中只有形参类型*/等价于==>intArea(intlength,intwidth);doublesqrt(double);等价于==>doublesqrt(double
x);4.3函数调用(Called)与返回35第35页#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;}函数申明函数调用函数定义4.3函数调用(Called)与返回36第36页……变量名=主调函数名(实际参数);……主调函数名(实际参数);……主调环境程序被调函数名(形式参数){……
return返回值;……}被调环境程序4.3函数调用(Called)与返回2.函数间数据传递方式37第37页#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);主调函数被调函数形式参数(简称形参)实际参数(简称实参)4.3函数调用(Called)与返回38第38页4.3函数调用(Called)与返回2.函数间数据传递方式函数经过参数实现数据传递方式:值传递地址传递函数参数传递采取单向值传递方式。单向值传递方式是指在函数调用时,将实参值传递给对应形参,使形参含有与实参相同值。39第39页#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函数调用(Called)与返回40第40页相关实参加形参几点说明:(1)在函数定义中指定形参,未调用时,它们不占用存放单元。只有调用该函数时,形参才被分配空间,函数调用结束后,形参所占存放单元被释放。4.3函数调用(Called)与返回41第41页#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函数调用(Called)与返回42第42页(2)实参加形参数据传递为单向传递,只可由实参向形参传递,不能由形参传回实参。实参加形参处于不一样函数中,作用区域不一样,即使实参加形参同名,也是不一样变量。4.3函数调用(Called)与返回43第43页#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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 济南2025年山东济南市历下区所属事业单位招聘初级综合类岗位36人笔试历年参考题库附带答案详解-1
- 黑龙江旅游职业技术学院《机车车辆运用与维修》2023-2024学年第二学期期末试卷
- 天津石油职业技术学院《信号与系统实验》2023-2024学年第二学期期末试卷
- 陕西电子信息职业技术学院《生物化学双语》2023-2024学年第二学期期末试卷
- 漳州理工职业学院《应用开发》2023-2024学年第二学期期末试卷
- 琼台师范学院《普通化学(Ⅰ)(上)》2023-2024学年第二学期期末试卷
- 西南民族大学《公差与测量技术》2023-2024学年第二学期期末试卷
- 湛江幼儿师范专科学校《多媒体课件设计》2023-2024学年第二学期期末试卷
- 明达职业技术学院《学术文化与科研能力》2023-2024学年第二学期期末试卷
- 长江艺术工程职业学院《中学思想政治教育教学研究方法》2023-2024学年第二学期期末试卷
- 2024年达州市总工会招聘工会社会工作者笔试真题
- 2025至2030年中国肌酸数据监测研究报告
- 1.2 读懂彼此的心 第二课时 课件 2024-2025学年五年级下册道德与法治 统编版
- 2025年度电视产品进出口贸易合同4篇
- 2025年“开学第一课”观后感心得体会(3篇)
- 外科护理5分钟小讲课
- 2025年中国融通农发社会招聘笔试参考题库含答案解析
- 2025年天津市宁河区事业单位招聘12人高频重点提升(共500题)附带答案详解
- 2024年福建省莆田市数学三上期末质量检测模拟试题含解析
- 2025年山东菏泽投资发展集团限公司招聘61人管理单位笔试遴选500模拟题附带答案详解
- 幕墙工程项目管理手册
评论
0/150
提交评论