计算机程序设计基础 第三章函数.ppt

上传人:小飞机 文档编号:6342634 上传时间:2023-10-18 格式:PPT 页数:37 大小:337.82KB
返回 下载 相关 举报
计算机程序设计基础 第三章函数.ppt_第1页
第1页 / 共37页
计算机程序设计基础 第三章函数.ppt_第2页
第2页 / 共37页
计算机程序设计基础 第三章函数.ppt_第3页
第3页 / 共37页
计算机程序设计基础 第三章函数.ppt_第4页
第4页 / 共37页
计算机程序设计基础 第三章函数.ppt_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《计算机程序设计基础 第三章函数.ppt》由会员分享,可在线阅读,更多相关《计算机程序设计基础 第三章函数.ppt(37页珍藏版)》请在三一办公上搜索。

1、计算机程序设计基础,第三章 函 数,提 纲,3.1 函数声明与调用3.2 函数定义3.3 函数调用规范3.4 程序的结构化与模块化3.5 程序测试与代码优化本章小结,3.1 函数声明与调用,函数调用主调(客户)函数与被调(服务器)函数函数调用时的参数与返回值例一:printf(%2d,i);例二:n=GetIntegerFromKeyboard();函数原型函数的实现与调用格式说明:作为函数接口一般出现在头文件中/#include 格式:函数返回值类型 函数名称(形式参数列表);例一:int Add(int x,int y);例二:void Swap(int x,int y);例三:void

2、Compute();,3.2 函数定义,函数实现函数定义,使用编程语言给出函数的执行步骤函数返回值函数完成后带回来的结果主调函数可以使用谓词函数返回 BOOL 类型值的函数表达某项任务是否完成或某个条件是否满足,Add 函数,编写函数 Add,求两个整数之和,int Add(int x,int y)int t;t=x+y;return t;,Compare 函数,编写函数 Compare,比较两个整型数据 x、y 的大小。若 x 等于 y 返回 0,若 x 大于 y 返回 1,若 x 小于 y 返回-1,int Compare(int x,int y)int t;if(x=y)t=0;else

3、 if(x y)t=1;else t=-1;return t;,Swap 函数,编写函数 Swap,互换两个整型数据 x、y 的值,void Swap(int x,int y)int t;t=x;x=y;y=t;return;/因函数没有返回值,只需直接列写 return 语句,多条 return 语句,编写函数 Compare,比较两个整型数据 x、y 的大小。若 x 等于 y 返回 0,若 x 大于 y 返回 1,若 x 小于 y 返回-1,/允许函数中包含多条 return 语句/函数在执行到第一条 return 语句后终止int Compare(int x,int y)if(x=y)r

4、eturn 0;else if(x y)return 1;else return-1;,谓词函数,编写函数 IsLeapYear,判断某个给定年份是否为闰年,BOOL IsLeapYear(int year)return year%4=0,3.3 函数调用规范,函数调用示例参数传递机制函数调用栈框架函数的嵌套调用,函数调用示例,编写程序将用户输入的两个整数相加,要求尽可能使用函数将程序中的有关操作独立出来,#include#include zylib.hvoid PrintWelcomeInfo();int GetInteger(STRING prompt);int Add(int x,int

5、 y);int main()int a,b,sum;PrintWelcomeInfo();a=GetInteger(The first number:);b=GetInteger(The second number:);sum=Add(a,b);printf(The sum is%d.n,sum);return 0;,#include int main()int a,b,sum;printf(The program gets two integers,and prints their sum.n);printf(The first number:);scanf(%d,函数调用示例,void P

6、rintWelcomeInfo()printf(The program gets two integers,and prints their sum.n);int GetInteger(STRING prompt)int t;printf(%s,prompt);t=GetIntegerFromKeyboard();/scanf(%d,参数传递机制,形式参数在函数调用时才分配存储空间,并接受实际参数的值实际参数可以为复杂的表达式,在函数调用前获得计算形式参数与实际参数可同名,也可不同名参数较多时,实际参数值逐一赋值,它们必须保持数目、类型、顺序的一致值的复制过程是单向不可逆的,函数内部对形式参数

7、值的修改不会反映到实际参数中去函数参数一般为函数输入集的一部分,函数输出集一般使用返回值表示,只有使用特殊的手段才可以将函数参数作为函数输出集的一部分,函数调用栈框架,首次调用 GetInteger 函数前,函数调用栈框架,首次调用 GetInteger 函数,数据输入前,函数调用栈框架,The first number:,10,prompt,t,GetInteger,首次调用 GetInteger 函数,数据输入后,函数调用栈框架,首次调用 GetInteger 函数,数据输入后,函数调用栈框架,首次调用 GetInteger 函数结束,函数调用栈框架,再次调用 GetInteger 函数,

8、数据输入后,函数调用栈框架,再次调用 GetInteger 函数结束,函数调用栈框架,调用 Add 函数,函数调用栈框架,调用 Add 函数结束,结果为 30,整数互换示例第一版,编写程序将用户输入的两个整数互换,#include#include zylib.hvoid PrintWelcomeInfo();int GetInteger(STRING prompt);void Swap(int x,int y);int main()int a,b;/*输入部分*/PrintWelcomeInfo();a=GetInteger(The first number:);b=GetInteger(Th

9、e second number:);/*数据处理与输出部分*/printf(In main():a:%d;b:%dn,a,b);Swap(a,b);printf(In main():a:%d;b:%dn,a,b);return 0;,整数互换示例第一版,void PrintWelcomeInfo()printf(The program gets two integers,and tries to swap them.n);int GetInteger(STRING prompt)int t;printf(%s,prompt);t=GetIntegerFromKeyboard();return

10、t;void Swap(int x,int y)int t;printf(In Swap():x:%d;y:%dn,x,y);t=x;x=y;y=t;printf(In Swap():x:%d;y:%dn,x,y);return;,整数互换程序栈框架,调用 Swap 函数前,整数互换程序栈框架,调用 Swap 函数,数据互换前,整数互换程序栈框架,调用 Swap 函数,数据互换后,整数互换程序栈框架,调用 Swap 函数后,整数互换示例第二版,编写程序将用户输入的两个整数互换,#include#include zylib.hint a,b;/*全局数据对象声明,以保证所有函数都可以访问这两个数

11、据对象*/void PrintWelcomeInfo();int GetInteger(STRING prompt);void Swap();/*不再需要函数参数*/int main()/*输入部分*/PrintWelcomeInfo();a=GetInteger(The first number:);b=GetInteger(The second number:);/*数据处理与输出部分*/printf(In main():a:%d;b:%dn,a,b);Swap();printf(In main():a:%d;b:%dn,a,b);return 0;,整数互换示例第二版,void Prin

12、tWelcomeInfo()printf(The program gets two integers,and tries to swap them.n);int GetInteger(STRING prompt)int t;printf(%s,prompt);t=GetIntegerFromKeyboard();return t;void Swap()int t;printf(In Swap():a:%d;b:%dn,a,b);t=a;a=b;b=t;printf(In Swap():a:%d;b:%dn,a,b);return;,函数嵌套调用,函数平行定义,不能嵌套定义,但可以嵌套调用,3.

13、4 程序的结构化与模块化,结构化与函数抽象结构化负责实现函数,强调编码自顶向下,逐步求精抽象手段:函数模块化与函数抽象模块化负责组织函数,进行任务划分,强调设计抽象手段:函数模块间通信使用接口,典型表现为函数参数与返回值,3.5 程序测试与代码优化,程序测试原则顺序结构:一般一次测试。注意:仅仅是一般!分支结构:每条路径都需要测试循环结构:一般测试第一次、最后一次与中间某次迭代程序效率混合运算时文字的存储类型程序测试示例编写程序,实现从摄氏温度到华氏温度值的转换。温度转换公式为 f=1.8 c+32,c 为摄氏温度值,f 为转换后的华氏温度值,温度转换程序,#include#include z

14、ylib.hconst float absolute_zero=-273.15;float f,c;float GetFloat(STRING prompt);void Input();void Compute();void Output();void main()Input();Compute();Output();,温度转换程序,void Input()c=GetFloat(Input a temperature value(C):);while(c=absolute_zero)printf(The temperature value is below%.2f.n,absolute_zer

15、o);c=GetFloat(Input a temperature greater than the absolute zero:);void Compute()f=c*1.8+32;void Output()printf(Temperature value(F)is%.2f.n,f);float GetFloat(STRING prompt)float t;printf(%s,prompt);t=GetRealFromKeyboard();return t;,本章小结,结构化与模块化重要程序设计原则!函数的声明、调用与定义函数参数与函数返回值参数传递规范函数调用栈框架程序测试与代码优化基本程序测试原则代码优化是双刃剑,注意在效率与可读性间维持平衡,作 业,第 115 页:习题二第 4、5、9小题第 116 页:习题二第 11 小题,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号