程序设计函数与过程及算法.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
程 序 设 计 函数与过程及算法 5.1 使用库函数 函数是程序设计语言中最重要的部分,每一个程序都要用到函数。 即使你自己不定义新的函数, 在每一个完整的C程序中 都必须有一个main() 函数。 我们学习的第一个C程序——“Hello world”程序就包含了一个printf函数:printf(“Hello, world.\n); 函数能将结果发送给主调程序:n1 = GetInteger(); 函数来源于已有的库函数或者是需要自己开发。 学习使用函数要注意它的输入和输出,即传递的参数和返回值。 函数的例子 我们可以将像sin那样的函数想象成一个黑盒子,或一个小机器。如果你在它的上面放入一个“值”,在它的下面就会掉出“结果” 调用函数的例子 如果我们改变了输入的参数,函数就能返回不同的值。 函数的参数可以是常数、变量或表达式。 图中我们将调用4次sin的结果加起来,并将其和存入变量total中。 C 库中的Math.h 如果在程序中包含了头文件math.h,就能使用一些像 sin 那些数学库。sin函数的参数必须是弧度。 预定义常数和表达式 使用#define语句可以改善程序的可读性. 当 #define 涉及到表达式,应当用括号将表达式括起来,以避免改变预定操作符的运算次序。 关于宏定义 #define mult(x,y) x*y // 错误 c = z/mult(a+b, a-b) 将替换成: c = z/a+b*a-b // 计算次序有误 #define mult(x,y) ((x)*(y) ) // 正确 c = z/mult(a+b, a-b) 替换成: c = z/((a+b)*(a-b)) 前面的预定义常数和表达式也可能产生相同的问题 调用函数 调用一个函数的返回值本身能作为调用另一个函数的参数,并不需要用中间变量保存调用结果。 C的函数调用实际上就是一个表达式,任何能用到表达式的地方都能用到它。 C 中的函数 在一些程序设计语言 中,将不返回结果的函数称为“过程”。 可是在C中,这两种类型都称为“函数。 5.2 函数说明 使用和编写一个函数要包括说明函数的原型,一个或多个函数调用和实现该函数的代码。 对于库函数,你的 #include “ xxx.h”的文件中已包括了函数的原型的说明,C的库文件中则包含了函数实现的代码。 5.3 编写自己的函数 下面是一个调用和定义一个简单函数Times2的例子,该函数有一个参数,返回值为该参数的两倍。 C 函数的说明 这个简单的函数例子能说明C函数实现中所有的组成部分。 常见的错误 一个常见的错误是遗漏了函数原型的说明。 但由于Times2的返回值为整型(仅限于整型),在一些C编译环境中,函数原型的说明:int Times2(); 也可省略。 函数说明规则 库函数在调用前需要#include相应的头文件。 自定义的函数在调用时需要进行函数原型说明。 函数原型说明与函数首部写法上需要保持一致,即函数类型、函数名、参数个数和参数顺序必须相同。 如果被调函数的定义在主调函数之前,可以不必加声明。 如果在所有函数定义之前,在函数外部已经做了函数声明,则在主调函数中无须再作声明。 在函数说明和函数调用中的名字 函数参数的名字对结果没有任何影响。 如果将函数参数的名字value改成number效果是一样的。 编译器不检查函数声明中的名字。但编程时一般与函数头保持一致。 5.4 函数调用过程中的机制 当程序执行到printf函数调用, 为main函数产生的数据堆栈中包含本地变量。 赋给该变量的值是由用户输入的(GetInteger())。 函数的执行 为了执行printf函数, 必须求printf 参数的值。 这意味着要调用函数Times2, 于是要为这次调用建立新的栈的框架。 框架 有一个包含参数值的“容器” ,该“容器” 作为函数内的本地变量。 参数传递 调用函数的一个重要的方面是“参数传递” ,即进行参数值的复制工作,或称“亚实结合”… 参数传递 ...对应的参数值放入函数的栈结构的容器中。 函数的执行 图中将函数的栈结构放在主调程序栈结构的顶部,以强调当函数执行时不能存取主调程序中的变量。 函数的返回 返回值取代了函数调用, 为该函数分配的栈结构被销毁(释放), 这意味着该函数占用的内存空间被操作系统回收,并可重新使用。 参数的类型 判断函数 函数能返回不同的类型 布尔类型只有两个值:FALSE 和TRUE(在genlib.h中定义) bool IsEven(int n) { return(n % 2 ==

文档评论(0)

you-you + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档