当前位置:文档之家› 04 模块化程序设计(函数)

04 模块化程序设计(函数)


②如机为果器什把,编函么程数要比就使做好制比用造其函一零数台部 ?
为什么要使用函数? 便于实现模块化设计
③件函。数有哪些类型? 便于团队开发
④设可如计将何、这调些自试“己、零定测部试件义好”一,单个用独 时函拿数出?来装配,再总体调
便于使用现有的或别人的 程序模块提高编程效能
⑤试如。何调用一个函数? ⑥己这函设些数计“制零学造部习/件别的”人可难设以点计是制是自
… }
float xpoint(float x1,float x2) {
y=… 调用f(x1)、f(x2) }
main() {

f1=f(x1); f2=f(x2); …
x=root(x1,x2); …
float root(float x1,float x2);
}
{
y1=f(x1)
x=xpoint(x1,x2) y=f(x)
函数?
函数部分学习的难点是什么?
⑤如何调用一个函数? ■函数的概念
⑥函数学习的难点是 什么?
■形参/实参/返回值的概念 ■递归算法 ■变量的作用域和生存期
莆田学院现代教育技术中心 2004年3月
一、模块化设计与函数
函数使用常识: P144 一个源文件由一个或多个函数组成,可为多个C程序公用。 C语言是以源文件为单位而不以函数为单位进行编译的。 一个C程序由一个或多个源(程序)文件组成——可分别
/*定义所用函数*/ cover() { } /*软件封面显示函数*/ password(){ } /*密码检查函数*/ question(){ } /*产生题目函数*/ answers(){ } /*接受回答函数*/ marks(){ } /*评分函数*/ results(){ } /*结果显示函数*/
C语言中,模块化设计的重要工具是“自定义函数”。
莆田学院现代教育技术中心 2004年3月
一、模块化设计与函数
【例一】参见 P5例1.3
#include <stdio.h>
#include <conio.h>
main( )
/*主调函数*/
{
int a,b,c;
int max(int,int); /*函数原型*/
例8.6嵌套调用关系(简化)
} 莆田学院现代教育技术中心 2004年3月
三、函数的调用
4、函数的嵌套调用 P155 例8.6嵌套调用关系(示意图)
莆田学院现代教育技术中心 2004年3月
例8.6模块划划分情况
main( ) 根据输入的x1,x2判断
是否有根 若有,调用求根函数
root( ) 输出结果
在C程序设计中,通常: ➢ 将一个大程序分成几个子
程序模块(自定义函数)
造什/现么在?的标准产品
➢ 将常用功能做成标准模块
(标准函数)放在函数库
中供其他程序调用
莆田学院现代教育技术中心 2004年3月
一、模块化设计与函数
【例二】编写一个儿童算术能力测试软件
main() {
自定义函数
char ans = 'y';
is
%d\n”,c);文件files2.c中(与file1.c同目录) extern max(int a,int b) /*extern可省*/
{ float c;
c=a>b?a:b;
return c;
} 莆田学院现代教育技术中心 2004年3月
三、函数的调用
4、函数的嵌套调用 P155例8.6
float f(float x) {
以下情况时,被调函数在主调函数中可以不先声明: P154 被调函数的返回值为整型时函数值是整型(int)或字符型 (char)时——系统自动按整型说明; 被调函数的定义出现在主调函数之前时 在所有函数定义之前,在函数的外部已做了函数声明时
调用方式同库函数。
莆田学院现代教育技术中心 2004年3月
三、函数的调用
什么是函数?
③函数有哪些类型? 一个独立的程序模块,
④如何自己定义一个 可以定义自己的变量
函数?
(仅在本函数内有效),
⑤如何调用一个函数? 拥有自己的存储空间。
⑥函数学习的难点是 什么?
可以被其他函数或自身 调用(主函数除外)。
莆田学院现代教育技术中心 2004年3月
一、模块化设计与函数
①什么是函数?
marks( );
/*调用评分函数*/
results( );
/*调用结果显示函数*/
printf("是否继续练习?(Y/N)\n");
这些函数现在不编程或还不会 编程,可先放空。
ans=getch ( );
可以多人合作,每人完成若干
}
个函数(模块化)。
printf("谢谢使用,再见!");
可在另一个源程序文件中定义。
莆田学院现代教育技术中心 2004年3月
三、函数的调用
2、自定义函数 自定义函数和变量一样,在其主调函数中也必须“先声明,
后使用”。 如例一中的 int max(int,int); /*函数原型*/ 例一中的自定义函数声明也可以用以下两种形式: P153 int max(int x,int y); (多余,因为编译系统并不检查参数名) 或 int max( );(编译系统将不检查参数类型和参数个数)
莆田学院现代教育技术中心 2004年3月
一、模块化设计与函数
本章的学习首先要讨论—— ①什么是函数? ②为什么要使用函数? ③函数有哪些类型? ④如何自己定义一个函数? ⑤如何调用一个函数? ⑥函数学习的难点是什么?
莆田学院现代教育技术中心 2004年3月
一、模块化设计与函数
①什么是函数? ②为什么要使用函数?
一、计算方法研究内容: 高次方程求根 矩阵运算求解(通常归到《线性代数》中) 常微分方程数值求解 线性方程组求解 函数插值 计算方法研究求解的算法,通过计算机程序数值 求解。
莆田学院现代教育技术中心 2004年3月
计算方法与计算机数值求解
二、高次方程求根(近似解)
基本思路
方程f(x)=0处的x称为该方程的根
莆田学院现代教育技术中心 2004年3月
三、函数的调用
1、库函数的调用 必须在源程序中用include命令将定义该库函数的头文件
“包含进来”。 调用方式:
◆独立语句 执行某项操作,如 clrscr( ), printf(“Input a,b=”) 等
◆表达式中 作运算对象,如 a=sqrt(x)+pow(r,3),c=exp(a) 等
编写、编译和调试。 C程序执行总是从main函数开始,一般情况下调用其它
函数后总是回到main函数,最后在 main函数中结束整个 程序的运行。 所有函数都是平行的、互相独立的,即在一个函数内只 能调用其他函数,不能再定义一个函数(嵌套定义)。 一个函数可以调用其他函数或其本身,但任何函数均不 可调用main函数。
3、调用外部函数(其他源文件中定义的注函:数)时
函数说明语句 extern 函数名()要;做一个 .prj
【例二】 文件file1.c中
文件才能运行。
main()
{ int x=80,y=90,c;
extern max(); /*函数说明*/
c=max(x,y)+20; /*调用max函数*/
}
printf(“Max
传统方式见P146。
莆田学院现代教育技术中心 2004年3月
二、函数的定义
把程序控制权从函数返回函数调用点有三种方法: 执行到函数结束的右花括号时(如果函数没有返回值); 执行到如下语句(如果函数没有返回值):
return; 把返回值返回调用处(见例一)
return 表达式; 形式: return (x); return (x+y); return (x>y?x:y); 语句中圆括号亦可省略。
⑥函数学习的难点是 什么?
根据使用的方式,可分为:
无参函数 有参函数(函数内需要使 用主调函数中的数据)
莆田学院现代教育技术中心 2004年3月
一、模块化设计与函数
①什么是函数?
如何自己定义一个函数?
②为什么要使用函数? (见后)
③函数有哪些类型? 如何调用一个函数?
④如何自己定义一个 (见后)
莆田学院现代教育技术中心 2004年3月
二分法: 设方程f(x)=0在区间(a,b)有 一个根,取其中点x0=(a+b)/2。 如果f(x0)与f(a)同号,则根在x0 右侧,取a=x0,b不变,否则取 b=x0,a不变。这样就得到一个新 的变小了的有根区间(a,b)。对 此新的有根区间进行同样的处 理,这样就可得到更小的有根 区间……当|a-b|≤e时,对应的 x0即为所求根之近似解。
results( );
/*调用结果显示函数*/
printf(“是否继续练习?(Y/N)\n”);
ans=getch ( );
}
printf(“谢谢使用,再见!”);
} 莆田学院现代教育技术中心 2004年3月
一、模块化设计与函Le数t’s try…
【例二】编写一个儿童算术能力测试软件
main()
{
高级语言程序设计
第四章 模块化程序设计(函数)
莆田学院现代教育技术中心
2004年3月 制作
一、模块化设计与函数
把大型软件按照规定的原则划分成一个个较小的、相 对独立但又相互关联的模块,叫做模块化设计。
1965年,ler在他的著名文章“奇妙的数字 7±2——人类信息处理能力的限度”中指出,普通 人分辨或记忆同一类信息的不同品种或等级的数量一 般不超过5~9项。这表明,要使人的智力能足以管 理好程序,应该坚持模块化设计。正如不分段的长篇 文章可能使读者感到头痛一样,大型的单模块软件不 仅可读性差,可靠性也常常难以保证。
相关主题