哈尔滨工业大学C语言2014课件 第七章 函数教材

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
提炼出公用任务
信息隐藏(Information Hiding, Parnas, 1972) –设计得当的函数可把具体操作细节对外界隐藏
起来,从而使整个程序结构清楚
–使用函数时,不用知道函数内部是如何运作的
,只按照我们的需要和它的参数形式调用它即可
2020/7/15
6/78
程序设计的艺术
算法设计艺术
……
2020/7/15
7/78
7.2 函数(Function)的定义
函数是C语言中模块化编程的最小单位
– 可以把每个函数看作一个模块( Module )
如把编程比做制造一台机器,函数就好比其
零部件
–可将这些“零部件”单独设计、调试、测试好
,用时拿出来装配,再总体调试。
–这些“零部件”可以是自己设计制造/别人设
2020/7/15
10/78
7.2.1函数的分类
标准库函数
– ANSI/ISO C定义的标准库函数
符合标准的C语言编译器必须提供这些函数 函数的行为也要符合ANSI/ISO C的定义
– 第三方库函数
由其他厂商自行开发的C语言函数库 不在标准范围内,能扩充C语言的功能(图形、网络、数据 库等)
自定义函数
}
函数体
2020/7/15
13/78
7.2.2函数的定义 (Function Definition)
函数无返回值,用 void定义返回值类型
用void定义参数 ,表示没有参数
void 函数名(void)
{ 声明语句序列
可执行语句序列
return; }
return语句后无
需任何表达式
2020/7/15
–此话音落不久,诸葛亮果然病故于五丈原。
“事无巨细”,“事必躬亲”
–管理学的观点是极其排斥这种做法的,认为
工作必须分工,各司其职
–其中的思想,在程序设计里也适用
2020/7/15
5/78
7.1分而治之与信息隐藏
分而治之( Divide and Conquer,Wirth, 1971 ) – 函数把较大的任务分解成若干个较小的任务,并
long result = 1;
for (i=2; i<=n; i++)
{ result *= i;
}
返回值作为函数 调用表达式的值
return result;
}
2020/7/15
15/78
7.3向函数传递值和从函数返回值
函数名(表达式1, 表达式2, ……);
实际参数(Actual Argument )
14/78
【例7.1a】 计算整数n的阶乘n!
/* 函数功能: 用迭代法计算n!
返回值函数类入型口参数:函整数型名变量说n明表示阶乘的形阶参数表,函
函数返回值: 函返数回的n!功的能值
数入口
*/
long Fact(int n) /* 函数定义 *函/ 数内部可以定义
{
只能自己使用的变
int i;
量,称内部变量
–程序的灵魂
–Donald E. Knuth,
“The Art of Computer Programming”, 清华大学出版社(英),国防工业出版社(中)
结构设计艺术
–程序的肉体 –模块化(Parnas, 1972)
结构化(Structural) 面向对象(Object-Oriented) 面向组件(Component-Oriented) 面向智能体(Agent-Oriented)
“自顶向下、逐步求精”的模块化程序设计方 法
2020/7/15
2/78
数学中的函数
y f (x)
因变量
函数名
自变量
程序设计中的函数
程序设计中的函数不局限于wk.baidu.com算
–计算类,如打印阶乘表的程序……
–判断推理类,如排序、查找……
2020/7/15
3/78
问题的提出
读多少行的程序能让你不头疼? 假如系统提供的函数printf()由10行代码替 换,那么你编过的程序会成什么样子?
}
2020/7/15
函数出口
返回运算的结果
12/78
7.2.2函数的定义 (Function Definition)
参数表里的变量(叫形式参数, Formal Parameter)也是内部变量
类型 函数名(类型 参数1, 类型 参数2, ……)
{ 声明语句序列
函数体的定界符
可执行语句序列 return 表达式;
–函数调用(Founction Call)时提供的表达式
有返回值时 –放到一个数值表达式中 返回值 = 函数名(实参表列);
c = max(a,b);
–作为另一个函数调用的参数
c = max(max(a,b),c);
printf("%d\n", max(a,b));
无返回值时 –函数调用表达式
计制造/现成的标准产品
Larry
Curly
Moe
2020/7/15
8/78
7.2 函数(Function)的定义
若干相关的函数可以合并成一个“模块” 一个C程序由一个或多个源程序文件组成 一个源程序文件由一个或多个函数组成
2020/7/15
9/78
7.2.1函数的分类
函数生来都是平等的,互相独立的,没有 高低贵贱和从属之分 – main()稍微特殊一点点 – C程序的执行从main函数开始 – 调用其他函数后流程回到main函数 – 在main函数中结束整个程序运行
第7章 函数
哈尔滨工业大学 计算机科学与技术学院
苏小红 sxh@hit.edu.cn
本章学习内容
函数定义、函数调用、函数原型、函数的参数 传递与返回值
递归函数和函数的递归调用
函数封装,函数复用,函数设计的基本原则, 程序的健壮性
变量的作用域与存储类型,全局变量、自动变 量、静态变量、寄存器变量
– 实际上一个printf()有上千行代码 main()中能放多少行代码? 如果所有代码都在main()中,怎么团队合作? 如果代码都在一个文件中,怎么团队合作?
2020/7/15
4/78
问题的提出
《三国演义》中有这样一段描写:
–懿问曰:“孔明寝食及事之烦简若何?”使
者曰:“丞相夙兴夜寐,罚二十以上皆亲览焉 。所啖之食,日不过数升。”懿顾谓诸将曰: “孔明食少事烦,其能久乎?”
–自己定义的函数
包装后,也可成为函数库,供别人使用
2020/7/15
11/78
7.2.2函数的定义 (Function Definition)
返回值 类型
函数名标识符, 说明运算规则
参数表相当于 运算的操作数
类型 函数名(类型 参数1, 类型 参数2, ……)
{ 声明语句序列
可执行语句序列 return 表达式;
相关文档
最新文档