5.1 模块化的设计思想(教案)-《C语言程序设计》同步教学(电子工业出版社)

2024-07-10
| 4页
| 174人阅读
| 58人下载
普通

内容正文:

教案用纸 第 6 周 总第 16 次 学时:2 教学班级:软件专业各班 课程:C语言程序设计 授课教师:刘畅 课题:5.1 模块化的设计思想 5.2 函数的定义、调用和函数声明 教学方法:讲授、启发 教具:常规教具 教学目标:使同学们掌握函数定义与函数调用 教学重点:函数如何进行定义和调用 教学难点:函数的调用及返回 主要教学内容: 5.1 模块化的设计思想 5.2 函数的定义、调用和函数声明 5.2.1 函数的定义 5.2.2 函数的调用 5.2.3 函数的声明 课后回顾: 教案用纸 四个一: 提问:字符数组的定义、赋值及使用。 导入:C语言是通过函数来实现模块化程序设计的。较大的C语言应用程序往往是由多个函数组成的,每个函数分别对应各自的功能模块。从用户的使用角度看,函数有两种:标准函数(即库函数)和用户自定义函数。 正文: 5.1 模块化的设计思想 在学习C语言函数之前,需要了解什么是模块化程序设计方法。人们在求解一个复杂问题时,通常采用的是逐步分解、分而治之的方法,也就是把一个大问题分解成若干个比较容易求解的小问题,然后分别求解。程序员在设计一个复杂的应用程序时,往往也是把整个程序划分为若干功能较为单一的程序模块,然后分别予以实现,最后再把所有的程序模块像搭积木一样装配起来,这种在程序设计中分而治之的策略,被称为模块化程序设计方法。 5.2 函数的定义、调用和函数声明 5.2.1 函数的定义 1.函数的定义格式 函数的定义格式如下: ( 函数头 ) ( 函数类型 函数名(形式参数列表) { 函数体 } ) 说明: (1)函数类型指定所定义函数返回值的类型,可以是简单类型、void类型或构造类型等,默认为int型。当函数类型为void时,表示函数无返回值。当函数类型为int时,可省略其类型的说明。 (2)函数名是函数的标识符,遵循C语言标识符的命名规则,区分大小写。后面一对圆括号()里为函数的参数列表。函数定义的第一行又可被称为“函数头”。 (3)函数体是一个复合语句,即用花括号{ }括起来的语句序列。 (4)对于有返回值的函数,必须用带表达式的return语句来结束函数的运行,返回值的类型应与函数类型相同。如果return语句中表达式值与函数定义的类型不一致,则以函数定义类型为准,并自动将return语句中的表达式的值转换为函数返回值的类型。 (5)形式参数简称形参,处在函数定义部分的函数名后的圆括号中。形式参数表可以为空,表示没有参数(无参函数),也可以由多个参数组成。当形式参数表中有多个参数时,参数与参数之间用逗号隔开。 2.形式参数列表说明 形式参数列表有以下两种形式: (1)void或空 无参函数一般不需要返回函数值,因此可以不写类型标志符(或写成空类型void)。例如: int sum(void) /*定义一个没有参数的函数sum*/ { int i,s=0; for(i=1;i<=10;i++) s+=i; return s; } 函数的功能是计算并返回从1到10的整数和。 (2)参数类型名1 参数1,参数类型名2 参数2,……,参数类型名n 参数n 函数包含一个或多个参数,每个参数必须标注具体的数据类型,这样的函数又称为有参函数。例如: int max(int a, int b) /*定义一个有2个参数a、b的函数max*/ { int m=0; if(a> b) m=a; else m=b; return m; } 函数的功能是求两个整数的较大值。如果按照传统的函数写法,可以将参数列表中的变量定义放在函数头和函数左花括号之间。 5.2.2 函数的调用 函数的使用是通过函数调用语句来完成的。C语言是通过main函数来调用其他函数,其他函数之间可相互调用,但不能调用main函数。函数被调用时获得程序控制权,调用完成后,返回到调用语句的后面语句。 函数调用语句一般格式如下: ( 函数名(实际参数列表) ) 说明: (1)函数调用可以出现在表达式中,也可以做为一条单独的语句出现。如: s=sum(); /*计算1+2+……+10的值*/ z=max(5,8); /*计算5、8中的较大值*/ z=max(5+4,8*2); /*计算(5+4)和(8*2),即9和16中的较大值*/ z=max(x,y); /*计算x、y中较大值,x、y为实际参数*/ (2)函数的参数分为实际参数和形式参数两种,分别简称为实参和形式。其中实际参数是在调用的函数中的参数,一般是具有实际的值的常量、变量或表达式,而形式参数是写在函数头中函数名后面括号中的变量。例如上面例子中函数头:int max(int a, int b)中的a、b就是形式参数,而语句:z=max(x,y);中的x、y就是实际参数。 (3)实参的个数必须与形参的个数一致。实际参数(简称实参)的个数多于一个时,各实参之间用逗号隔开。 (4)在定义的函数中,必须指定形参的类型,并且实参的类型必须与形参的类型一一对应。 (5)实参可以和形参同名。 5.2.3 函数的声明 编译程序在处理函数调用时,必须从程序中获得完成函数调用所必需的接口信息。函数的声明是对函数类型、名称等的说明。为函数调用提供接口信息,对函数原型的声明是一条程序说明语句。 函数原型的声明就是在函数定义的基础上去掉函数体,后面加上分号“;”。其定义格式如下: ( “ ; ” 不能省略 ) ( 函数类型 函数名(形式参数列表); ) 例如: int max(int a, int b); /*具有两个整型形参,函数类型为整型的函数声明*/ 和完整的函数定义不同,形参表可以只给出形参的类型,形参名可以省略。例如: int max(int , int ); /*与上面声明功能相同,只不过省略了形参名*/ 之所以需要函数的声明,是为了获得调用函数的权限。如果在调用之前定义或声明了函数,则可以调用该函数。 被声明的函数往往定义在其他的文件或库函数中。可以把不同类型的库函数声明放在不同的库文件中,然后在自己设计的程序中包含该文件。例如: #include "math.h" 其中math.h文件包含了很多数学函数的原型声明。 这样做的好处是方便调用和保护源代码。库函数的定义代码已经编译成机器码,对用户而言是不透明的,但用户可以通过库函数的原型获得参数说明并使用这些函数,完成程序设计的需要。 对于用户自定义的函数,也可以这样处理。和使用库函数不同的是,我们经常把自己设计的函数放在调用函数后。例如,我们习惯于先设计main()函数,再设计自定义函数,这个时候需要超前调用自定义函数,在调用之前需要进行函数原型声明。 提示:声明和定义的区分 (1)变量的声明通常是对变量的类型和名称的一种说明,不一定会分配内存,而变量的定义肯定会分配内存空间。 (2)函数的声明是对函数的类型和名称的一种说明,而函数的定义是一个模块,包括函数体部分。 (3)声明可能也是定义,也可以不是,广义上的声明包括定义性声明和引用性声明,通常所说的声明指的是后者。 小结: 通过本次课的讲解,大家应该掌握函数的基本定义及调用方式,函数原型的定义及使用方法。 备 注 学科网(北京)股份有限公司 $$

资源预览图

5.1  模块化的设计思想(教案)-《C语言程序设计》同步教学(电子工业出版社)
1
5.1  模块化的设计思想(教案)-《C语言程序设计》同步教学(电子工业出版社)
2
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。