神一样的C课件函数

上传人:E**** 文档编号:91093614 上传时间:2019-06-21 格式:PPT 页数:80 大小:597KB
返回 下载 相关 举报
神一样的C课件函数_第1页
第1页 / 共80页
神一样的C课件函数_第2页
第2页 / 共80页
神一样的C课件函数_第3页
第3页 / 共80页
神一样的C课件函数_第4页
第4页 / 共80页
神一样的C课件函数_第5页
第5页 / 共80页
点击查看更多>>
资源描述

《神一样的C课件函数》由会员分享,可在线阅读,更多相关《神一样的C课件函数(80页珍藏版)》请在金锄头文库上搜索。

1、高级语言程序设计,第四章 模块化程序设计(函数),一、模块化设计与函数,把大型软件按照规定的原则划分成一个个较小的、相对独立但又相互关联的模块,叫做模块化设计。 1965年,G.A.Miller在他的著名文章“奇妙的数字72人类信息处理能力的限度”中指出,普通人分辨或记忆同一类信息的不同品种或等级的数量一般不超过59项。这表明,要使人的智力能足以管理好程序,应该坚持模块化设计。正如不分段的长篇文章可能使读者感到头痛一样,大型的单模块软件不仅可读性差,可靠性也常常难以保证。 C语言中,模块化设计的重要工具是“自定义函数”。,一、模块化设计与函数,【例一】参见 P5例1.3 #include #i

2、nclude main( ) /*主调函数*/ int a,b,c; int max(int,int); /*函数原型*/ clrscr( ); printf(“Input a,b=“); scanf(“%d,%d“, ,int max(int x,int y) /*被调函数*/ int z; if (xy) z=x; else z=y; return z; ,一、模块化设计与函数,本章的学习首先要讨论 什么是函数? 为什么要使用函数? 函数有哪些类型? 如何自己定义一个函数? 如何调用一个函数? 函数学习的难点是什么?,一、模块化设计与函数,什么是函数? 为什么要使用函数? 函数有哪些类型?

3、 如何自己定义一个函数? 如何调用一个函数? 函数学习的难点是什么?,什么是函数? 一个独立的程序模块,可以定义自己的变量(仅在本函数内有效),拥有自己的存储空间。可以被其他函数或自身调用(主函数除外)。,一、模块化设计与函数,什么是函数? 为什么要使用函数? 函数有哪些类型? 如何自己定义一个函数? 如何调用一个函数? 函数学习的难点是什么?,为什么要使用函数? 便于实现模块化设计 便于团队开发 便于使用现有的或别人的程序模块提高编程效能 在C程序设计中,通常: 将一个大程序分成几个子程序模块(自定义函数) 将常用功能做成标准模块(标准函数)放在函数库中供其他程序调用,如果把编程比做制造一台

4、机器,函数就好比其零部件。 可将这些“零部件”单独设计、调试、测试好,用时拿出来装配,再总体调试。 这些“零部件”可以是自己设计制造/别人设计制造/现在的标准产品,一、模块化设计与函数,【例二】编写一个儿童算术能力测试软件,main() char ans = y; clrscr( ); cover( ); /*调用软件封面显示函数*/ password( ); /*调用密码检查函数*/ while (ans =y| ans =Y) question( ); /*调用产生题目函数*/ answers( ); /*调用接受回答函数*/ marks( ); /*调用评分函数*/ results( )

5、; /*调用结果显示函数*/ printf(“是否继续练习?(Y/N)n”); ans=getch ( ); printf(“谢谢使用,再见!”); ,自定义函数,一、模块化设计与函数,【例二】编写一个儿童算术能力测试软件,main() char ans = y; clrscr( ); cover( ); /*调用软件封面显示函数*/ password( ); /*调用密码检查函数*/ while (ans =y| ans =Y) question( ); /*调用产生题目函数*/ answers( ); /*调用接受回答函数*/ marks( ); /*调用评分函数*/ results( )

6、; /*调用结果显示函数*/ printf(“是否继续练习?(Y/N)n“); ans=getch ( ); printf(“谢谢使用,再见!“); ,/*定义所用函数*/ cover() /*软件封面显示函数*/ password() /*密码检查函数*/ question() /*产生题目函数*/ answers() /*接受回答函数*/ marks() /*评分函数*/ results() /*结果显示函数*/,这些函数现在不编程或还不会编程,可先放空。 可以多人合作,每人完成若干个函数(模块化)。 可在另一个源程序文件中定义。,Lets try,一、模块化设计与函数,什么是函数? 为什

7、么要使用函数? 函数有哪些类型? 如何自己定义一个函数? 如何调用一个函数? 函数学习的难点是什么?,函数有哪些类型? 根据函数的来源,可分为: 库函数(标准函数) 由系统提供,编程时可直接使用之 自定义函数 由编程者自己编写,使用时要“先定义后使用” 根据使用的方式,可分为: 无参函数 有参函数(函数内需要使用主调函数中的数据),一、模块化设计与函数,什么是函数? 为什么要使用函数? 函数有哪些类型? 如何自己定义一个函数? 如何调用一个函数? 函数学习的难点是什么?,如何自己定义一个函数? (见后) 如何调用一个函数? (见后) 函数部分学习的难点是什么? 函数的概念 形参/实参/返回值的

8、概念 递归算法 变量的作用域和生存期,一、模块化设计与函数,函数使用常识: P144 一个源文件由一个或多个函数组成,可为多个C程序公用。 C语言是以源文件为单位而不以函数为单位进行编译的。 一个C程序由一个或多个源(程序)文件组成可分别编写、编译和调试。 C程序执行总是从main函数开始,一般情况下调用其它函数后总是回到main函数,最后在 main函数中结束整个程序的运行。 所有函数都是平行的、互相独立的,即在一个函数内只能调用其他函数,不能再定义一个函数(嵌套定义)。 一个函数可以调用其他函数或其本身,但任何函数均不可调用main函数。,二、函数的定义,函数定义“制造自己的函数”。 P1

9、44 1、函数定义的一般形式 (参见例一) 函数返回值的数据类型 函数名(类型名 变量名1,类型名 变量名2,) 声明部分 处理语句 【注意】无形参表的即无参函数。无函数体的为“空函数”。如果函数返回值的数据类型为int,可以省略之。 传统方式见P146。,类型标识符,形参表,二、函数的定义,把程序控制权从函数返回函数调用点有三种方法: 执行到函数结束的右花括号时(如果函数没有返回值); 执行到如下语句(如果函数没有返回值): return; 把返回值返回调用处(见例一) return 表达式; 形式: return (x); return (x+y); return (xy?x:y); 语句

10、中圆括号亦可省略。,二、函数的定义,【注意】 如果函数值类型与return语句表达式值的类型不一致,以函数类型为准(数值型会自动进行类型转换)。 如果明确表示不需返回值,应使用void作函数返回值的数据类型,否则即使没有return语句,仍将带回一个不确定的值(见P149说明)。,三、函数的调用,1、库函数的调用 必须在源程序中用include命令将定义该库函数的头文件“包含进来”。 调用方式: 独立语句 执行某项操作,如 clrscr( ), printf(“Input a,b=”) 等 表达式中 作运算对象,如 a=sqrt(x)+pow(r,3),c=exp(a) 等,三、函数的调用,2

11、、自定义函数 自定义函数和变量一样,在其主调函数中也必须“先声明,后使用”。 如例一中的 int max(int,int); /*函数原型*/ 例一中的自定义函数声明也可以用以下两种形式: P153 int max(int x,int y); (多余,因为编译系统并不检查参数名) 或 int max( );(编译系统将不检查参数类型和参数个数) 以下情况时,被调函数在主调函数中可以不先声明: P154 被调函数的返回值为整型时函数值是整型(int)或字符型(char)时系统自动按整型说明; 被调函数的定义出现在主调函数之前时 在所有函数定义之前,在函数的外部已做了函数声明时 调用方式同库函数。

12、,三、函数的调用,3、调用外部函数(其他源文件中定义的函数)时 函数说明语句 extern 函数名();,【例二】 文件file1.c中 main() int x=80,y=90,c; extern max(); /*函数说明*/ c=max(x,y)+20; /*调用max函数*/ printf(“Max is %dn”,c); ,文件files2.c中(与file1.c同目录) extern max(int a,int b) /*extern可省*/ float c; c=ab?a:b; return c; ,注: 要做一个 .prj文件才能运行。,三、函数的调用,main() f1=f(

13、x1); f2=f(x2); x=root(x1,x2); 例8.6嵌套调用关系(简化),float f(float x) float xpoint(float x1,float x2) y= 调用f(x1)、f(x2) float root(float x1,float x2); y1=f(x1) x=xpoint(x1,x2) y=f(x) ,4、函数的嵌套调用 P155例8.6,三、函数的调用,4、函数的嵌套调用 P155,例8.6嵌套调用关系(示意图),例8.6模块划划分情况,main( ) 根据输入的x1,x2判断是否有根 若有,调用求根函数root( ) 输出结果,f(x) 根据所

14、给x值,求 y=x3-5x2+16x-80 返回y值,即与x对应的f(x)值,xpoint( ) 根据所给x1,x2值 计算弦与x轴的交点,root(x1,x2 ) 根据所给x1,x2值 求近似根,补充内容: 计算方法与计算机数值求解,计算方法工程数学之一 一、计算方法研究内容: 高次方程求根 矩阵运算求解(通常归到线性代数中) 常微分方程数值求解 线性方程组求解 函数插值 计算方法研究求解的算法,通过计算机程序数值求解。,计算方法与计算机数值求解,二、高次方程求根(近似解) 基本思路 方程f(x)=0处的x称为该方程的根 解法步骤: 1、初始近似值(逐步扫描法异号必有根) 2、逐步精确化(误

15、差小于某许可值时,为所求近似根) 二分法 P121 习题6.13 迭代法 P121 习题6.11 牛顿法 P121 习题6.12 弦截法 P155 例8.6,例8.6“弦截法”原理,二分法: 设方程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即为所求根之近似解。 e 为允许的误差,迭代法: 设有方程f(x)=0 先设法将它化为 x=g(x) 于是得到”迭代公式”: xn=g(xn-1) 从给定的初始近似值x0出发,反复利用迭代公式求出 x0,x1,x2,x3,xn-1,xn 当|xn-xn-1|e时,对应的xn即为所求根之近似解。 e 为允许的误差,例: 求方程x3-x-1=0 在x=1.5附近的一个根。 步骤: 将方程改造为迭代公式 用x0=1.5代入,求得 x1=1.35721

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号