chapter07 函数.ppt

  1. 1、本文档共133页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
程序设计是一门艺术 算法设计的艺术 程序的灵魂 Donald E. Knuth, The Art of Computer Programming, 清华大学出版社, 2002 结构设计的艺术 程序的肉体 “…the larger the project, the more essential the structuring!”—Dijkstra, 1968 模块化(信息隐蔽原则,Parnas, 1972) 结构化(Structural) 面向对象(Object-Oriented) 面向组件(Component-Oriented) 面向智能体(Agent-Oriented) …… 结构化程序设计方法 自顶向下,逐步细化(逐步求精) 自底向上,逐步积累 模块化设计 结构化编码 顺序结构 选择结构 循环结构 为什么要模块化 读多少行的程序能让你不头疼? main()当中能放多少行程序? 假如printf()函数由10行代码替换,那么你见过的程序会成什么样子? 如果所有代码都在main()当中,怎么团队合作? 如果代码都在一个文件中,怎么团队合作? 模块化的优点 分而治之 函数把较大的任务分解成若干个较小的任务,并提炼出公用任务 并行开发 按模块分配任务,职责明确 并行开发,缩短开发时间 复用 程序员可以在其他函数的基础上构造程序,而不需要从头做起 信息隐藏 设计得当的函数可以把具体操作细节对程序中不需要知道它们的那些部分隐藏掉,从而使整个程序结构清楚 函数(function)和模块(module) 函数是C语言中模块化编程的最小单位 可以把每个函数看作一个模块 若干相关的函数可以合并作一个“模块” 函数间的调用关系 主函数可以调用其他函数; 其他函数也可以互相调用; 同一个函数可以被一个或多个函数调用; 函数可以调用任意多次; 主函数不能被其它函数调用。 参数传递的两种方式 值传递 函数调用时,为形参分配单元,并将实参的值复制到形参中;调用结束,形参单元被释放,实参单元仍保留并维持原值。特点是形参与实参占用不同的内存单元,单向传递。 地址传递(本质上仍是值传递) 函数调用时,将数据的存储地址作为参数传递给形参,特点是形参与实参指向同样的存储单元,“双向”传递,实参必须是地址常量或变量,形参是地址变量。 值传递 #include stdio.h void swap (int a, int b) { int temp; temp = a; a = b; b = temp; } void main () { int x = 7, y = 11; printf (x=%d,\ty=%d\n, x, y); printf (swapped:\n); swap (x, y); printf (x=%d,\ty=%d\n, x, y); } 地址传递 #include stdio.h void swap (int *a, int *b) { int temp; temp = *a; *a = *b; *b = temp; } void main() { int x = 7, y = 11; printf (x=%d,\ty=%d\n, x, y); printf (swapped:\n); swap (x, y); printf (x=%d,\ty=%d\n, x, y); } 4)对于不带回值的函数,应当用“void”定义函数为“无类型”(或称“空类型”)。 如: void print_star (); 函数的声明 函数调用示例: 求n! = n(n-1)(n-2)…1 。 迭代与递归 迭代从已知条件一步步推出结果;递归把问题不断分解成更小的相同问题,最后变成一个已知问题求解; 迭代使用循环,不断用新值代替旧值,最后达到结束条件; 迭代和递归都有结束条件; 递归逻辑清析,时空开销大,层次过多可能溢出;迭代逻辑较复杂,开销小; 作用域与生存期 作用域(空间): 变量在某个文件或函数范围内是有效的,在此作用域内可引用此变量,又称变量在此作用域内“可见”(可见性) 生存期(时间) 一个变量在某一时刻是存在的,则认为这一时刻属于该变量的“生存期”,又称该变量在此时刻“存在”(存在性) 全局变量 全局变量(外部变量):函数之外定义的变量称为外部变量。外部变量可以为本文件中其他函数所共用。它的有效范围为从定义变量的位置开始到本源文件结束。所以也称全局变量(全程变量)。 int p = 1, q = 5; /* 外部变量 */ float f1 (int a) { /* 定义函数f1 */ int b, c; ... } char

文档评论(0)

2232文档 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档