2022年模块化程序设计 .pdf
《2022年模块化程序设计 .pdf》由会员分享,可在线阅读,更多相关《2022年模块化程序设计 .pdf(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章 模块化程序设计教学目的: 模块程序设计是 C程序合作编程序的方法,通过这一章的学习使学生能自己编C程序中的函数,正确地调用函数,熟悉函数调用时形式参数和实在参数的关系。通过变量的存储类型,能正确使用各种不同存储类型的变量编程序。重点难点: 函数的嵌套调用及函数的递归调用。前面各几章的学习,大家已有了编制小程序的经验。如果想编制大程序,在C语言下就得用模块化程序设计,其基本思想是将一个大的程序按功能分割成一些模块,使每一个模块都成为功能单一、结构清晰、接口简单、容易理解的小程序。C语言提供了支持模块化软件开发的功能: 1 函数式的程序结构。程序由一个或多个函数组成,每个函数都有各自独立的
2、功能和界面。 2 允许通过使用不同的存储类别的变量,控制模块内部和外部的信息交换。 3具有预编译处理功能,为程序的调试、移植提供方便,支持模块化程序设计。本章介绍这些功能及进行程序开发的基本方法。4.1 函数C程序结构无论涉及的问题是复杂还是简单,规模是大还是小,用C语言设计程序,任务只有一种,就是编写函数,至少要编写一个主函数main(),C 程序的执行就是执行相应的main() 函数。即从它的main() 函数的第一个花括号开始,依次执行后面的语句,直到最后的花括号为止。其它函数只有在执行了 main() 函数的过程中被调用时才执行。高级语言中“函数”的概念和数学中“函数”的概念不完全相同
3、。英语单词function有“函数”和“功能”两种介绍,高级语言中的函数实际上是功能的意思。当要完成某一个功能时,就用一个函数去实现它。在程序设计时首先要考虑main() 函数中的算法,当main() 中需要使用某一功能时,就用一个具有该功能的函数表达式表示。这时的函数,我们只知道它具有什么功能, 其它先不作处理。设计完 main() 的算法并检验无误后,这时开始考虑它所调用的函数。如果在库函数中能找到,就可直接使用,否则再动手设计这些函数。这种设计方法称为自顶向下、逐步细化的程序设计方法。这种方法设计出来的程序在功率高,程序层次分明、结构清晰。复杂程序的层次可从以下图形中看出:办 公 室 管
4、 理教 务 管 理人 事 管 理.高 校 事 务 管 理 系 统许多大型软件系统包含了相当丰富的,可供从事某一领域工作人员选用,如一个高等学校的信息管理系统就包含了教务、科研、人事、财务,设备、图书、后勤、办公室等子系统。每一个子系统以可分为许多子子系统。这种软件为了方便用户大都采用菜单(menu)方式 , 这种形式的软件,大家都用过。用户名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 7 页 - - - - - - - - - 只需按一些简单的键,就能调用该功能,就像在
5、饭店点菜一样那么方便。高等院校事务管理系统的模块结构如下:(程序 menu.c) 函数的定义与函数声明(一)函数就是在程序中设定的一个函数模块。一个函数是由变量声明部分与可执行语句组的成独立实体,用来完成一指定功能。除了系统提供的函数外,用户编制函数才是一种正确的选择。(一) . 函数定义: (函数类型、函数名、形参、函数体内容)函数返回值的类型说明函数名 ( 类型名形式参数 1, 类型名形式参数 2,) 函数首部说明部分函数体语句部分 函数类型:函数计算后的值是什么类型。函数名:用户命名的标识符,在主函数中调用的名字。形式参数:函数中处理的变量,通过它接收主函数传过来的具体值。函数体:函数计
6、算时的具体方法和函数的表达式。由变量定义部分和语句组成。函数的返回:由函数返回调用它的函数,可由以下返回形式: return 表达式; return; 可没有 return 语句,也可有多个return 语句。函数的定义与函数声明(二)函数名 ( 类型名形式参数 1, 类型名形式参数 2,) 省略类型说明,C语言默认返回值为int 型。例:求两个双精度数这和的函数。 double add(double a,double b) double s; s=a+b; return s; 函数返回值的类型可以是整型、实型、字符型和指针类型。以上函数的返回值是double 型。可用 double add(
7、a,b) double a,b来写函数首部。定义函数可以没有参数,但一对括号不省略,如:dummy() ,函数体也可是空的,这样的函数什么也不做。编程时可作为一个虚设的部分。函数举例:编一个求两个数中最小数的函数,用循环语句多次调用该函数,找出十个数中的最小数。 ( ec711.c ) 函数声明(三)在C 语言中,除了主函数外,对于用定义的函数要遵循“先定义,后使用”的规则。凡是未在调用前定义函数,C编译程序都默认函数的返回值为int 类型。对于返回值为其它类型的函数,若把函的定义放在调用之后,应该在调用之前对函进行说明。即只有函数的首部,一般形式为:类型名函数名 ( 参数类型 1, 参数类型
8、 2,)如: double add(double,double)或类型名函数名 ( 参数类型 1 参数名 1, 参数类型 2, 参数名 2,)如: double add(double p,double q) 这里的参数是虚设的,实际上参数名常常省略。函数说明语句中的类型名必须与函数返回值的类型一致。函数说明既可以作为一条单独的语句如:double add(double,double)也可以与普通变量的说明在一起如 :double x,y,add(double,double) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精
9、心整理 - - - - - - - 第 2 页,共 7 页 - - - - - - - - - 函数说明的位置与调用的关系当在所有函数的外部、被调用之前说明函数时,在说明之后的任何位置都可调用。函数说明也可放在调用函数内的说明部分,但只能在该函内调用。函数的传值调用(一)参数是函数调用时进行信息交换的载体,实参和形参结合,完成信息交换, 函数的执行部分对这些传递来的数据进行处理后,返回相应的函数值。与数学中的知道函数表达式求函数值相类似。 (f(x)=3x+1;f(5)=?,f(0)=?)只不过是 C语言中的函数自变量个数不只是一个。1. 当所调用的函数用于求出某个值时,函数的调用可作为表达式
10、出现在允许表达式出现的任何地方,如: y=add(3.0,4.0); 也可出现有关系表达式中用于条件判断。2. 如果只为了某些操作不返回函数值时,函数作为一条独立的语句,如:函数名(实在参数) ;函数调用时的语法要求:1. 调用函数时,函数名必须与定义的函数名字完全一致。2. 实在参数的个数必须与形式参数的个数一样。实在参数可以是表达式,类型上应按位置与形式参数一一对应匹配。如果类型不一致,编译系统会根据赋值兼容规定进行转换,若类型不赋值兼容,不给出错信息,程序继续执行,得不到正确的结果。函数的传值调用(二)在C语言中调用函数与被调用函数之间的数据可通过三种方法进行传递: 1.实在参数和形式参
11、数之间进行数据传递。 2.通过 return 语句把函数值返回调用函数。 3.通过全局变量。这种方法不好。在C语言中,数据只能从实参传递给形参,称为“按值”传递。也就是说,当用简单变量作为实在参数,用不能在函数中改变对应的值。观察参数传递两个实例:函数参数之间的单向传递。(ec71.c ) 调用函数交换两个变量中的值。(ec72.c ) 没有返回值的调用:( ec710.c ) 函数的嵌套调用 C程序的 main() 函数在调用一个函数时,被调用的函数, 又要调用另一个函数,这种调用称为函数的嵌套调用。例:把一个偶数分解为两个素数之和。两次调用判断一个数是否为素数的函数; ( ec74.c )
12、 (ec75.c ) 函数的递归调用 C语言中的函数可以递归调用,即:可直接叵间接地调用自己。前者称为简单递归,后者称为间接递归,只讨论简单递归。递归符合的三个条件: 1. 可以反要解决的问题转化为一个新的问题,而这个新的问题的解法仍与原野来的解法相同,只是所处理的对象有规律地递增或递减。 2 .可以应用这个转化过程使问题得到解决。 3 .必有一个明确的结束递归的条件。例:用递归的方法求n! 。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 7 页 - - - - - -
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年模块化程序设计 2022 模块化 程序设计
限制150内