[计算机软件及应用]C语言程序设计第5章
高级语言程序设计 第五章 模块化程序设计(函数) 集美大学计算机基础教研室 刘益玲 Ttllyyll@163.com 教学目的与要求 掌握函数的定义和调用 掌握函数参数的传递方式 领会变量存储类型的概念及各种存储型变量的生存期和有效范围 领会函数的嵌套调用与递归调用 了解带参数的main函数 重点与难点 函数定义、调用、声明等基本概念 函数的嵌套调用与递归调用 数组作为函数的参数 变量的存储类别与作用域 有参宏与无参宏的定义与应用 文件包含的基本概念 一、模块化设计与函数 把大型软件按照规定的原则划分成一个个较小的、相对独立但又相互关联的模块,叫做模块化设计。 1965年,G.A.Miller在他的著名文章“奇妙的数字7±2——人类信息处理能力的限度”中指出,普通人分辨或记忆同一类信息的不同品种或等级的数量一般不超过5~9项。这表明,要使人的智力能足以管理好程序,应该坚持模块化设计。正如不分段的长篇文章可能使读者感到头痛一样,大型的单模块软件不仅可读性差,可靠性也常常难以保证。 C语言中,模块化设计的重要工具是“自定义函数”。 一、模块化设计与函数 【例一】输出任一两数中较大者 #include #include /*基本输入输出函数(clrscr getch等)*/ main( ) /*主调函数*/ { int a,b,c; int max(int,int); /*函数原型*/ clrscr( ); printf("Input a,b="); scanf("%d,%d",&a,&b); c=max(a,b); printf("max=%d\n",c); } int max(int x,int y) /*被调函数*/ { int z; if (x>y) z=x; else z=y; return z; } 一、模块化设计与函数 本章的学习首先要讨论—— ①什么是函数? ②为什么要使用函数? ③函数有哪些类型? ④如何自己定义一个函数? ⑤如何调用一个函数? ⑥函数学习的难点是什么? 一、模块化设计与函数 ①什么是函数? ②为什么要使用函数? ③函数有哪些类型? ④如何自己定义一个函数? ⑤如何调用一个函数? ⑥函数学习的难点是什么? 一、模块化设计与函数 ①什么是函数? ②为什么要使用函数? ③函数有哪些类型? ④如何自己定义一个函数? ⑤如何调用一个函数? ⑥函数学习的难点是什么? 一、模块化设计与函数 一、模块化设计与函数 一、模块化设计与函数 ①什么是函数? ②为什么要使用函数? ③函数有哪些类型? ④如何自己定义一个函数? ⑤如何调用一个函数? ⑥函数学习的难点是什么? 一、模块化设计与函数 ①什么是函数? ②为什么要使用函数? ③函数有哪些类型? ④如何自己定义一个函数? ⑤如何调用一个函数? ⑥函数学习的难点是什么? 一、模块化设计与函数 函数使用常识: 一个源文件由一个或多个函数组成,可为多个C程序公用。 C语言是以源文件为单位而不以函数为单位进行编译的。 一个C程序由一个或多个源(程序)文件组成——可分别编写、编译和调试。 C程序执行总是从main函数开始,一般情况下调用其它函数后总是回到main函数,最后在 main函数中结束整个程序的运行。 所有函数都是平行的、互相独立的,即在一个函数内只能调用其他函数,不能再定义一个函数(嵌套定义)。 一个函数可以调用其他函数或其本身,但任何函数均不可调用main函数。 二、函数的定义 函数定义——“制造自己的函数”。 P104 1、函数定义的一般形式 (参见例二) 函数返回值的数据类型 函数名(类型名 变量名1,类型名 变量名2,……) { 声明部分 处理语句 } 【注意】无形参表的即无参函数。无函数体的为“空函数”。如果函数返回值的数据类型为int,可以省略之。 二、函数的定义 把程序控制权从函数返回函数调用点有三种方法: 执行到函数结束的右花括号时(如果函数没有返回值); 执行到如下语句(如果函数没有返回值): return; 把返回值返回调用处(见例一) return 表达式; 形式: return (x); return (x+y); return (x>y?x:y); 语句中圆括号亦可省略。 二、函数的定义 【注意】 如果函数值类型与return语句表达式值的类型不一