[教育]第7章_函数-1.ppt

  1. 1、本文档共112页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[教育]第7章_函数-1

本学期教学过程 前十二周 正常课程教学(3+2) 函数调用 指针 结构体和共用体 文件 后六周 C程序课程设计(全上机) 基础训练题目 综合题目 平时成绩 期末闭卷考试成绩占50% 上机作业、考勤、提问占10% 课程设计占20% 平时测验占20% (上机课当堂完成程序+随堂章节小测验) 第7章 函数 内容提要 函数定义、函数调用、函数原型、函数返回值 难点:函数的参数传递与返回值 程序调试 代码风格 变量的作用域与存储类型 模块化程序设计 Skill: 用函数编程求解问题的能力 程序排错与调试的能力 数学中的函数 程序设计中的函数不局限于计算 计算类,如打印阶乘表的程序…… 判断推理类,如排序、查找…… 程序设计的艺术 《三国演义》中有这样一段描写: 懿问曰:“孔明寝食及事之烦简若何?”使者曰:“丞相夙兴夜寐,罚二十以上皆亲览焉。所啖之食,日不过数升。”懿顾谓诸将曰:“孔明食少事烦,其能久乎?” 此话音落不久,诸葛亮果然病故于五丈原。 “事无巨细”,“事必躬亲” 管理学的观点是极其排斥这种做法的,认为工作必须分工,各司其职 其中的思想,在程序设计里也适用 程序设计的艺术 分而治之( Divide and Conquer,Wirth, 1971 ) 函数把较大的任务分解成若干个较小的任务,并提炼出公用任务 信息隐藏(Information Hiding, Parnas, 1972) 设计得当的函数可以把具体操作细节对程序中不需要知道它们的那些部分隐藏掉,从而使整个程序结构清楚 使用函数时,不用知道这个函数内部是如何运作的,只按照我们的需要和它的参数形式调用它即可 程序设计的艺术 结构化程序设计有两大最高级的艺术 算法设计艺术 程序的灵魂 Donald E. Knuth, The Art of Computer Programming, 清华大学出版社(英) 国防工业出版社(中) 结构设计艺术 程序的肉体 模块化(Parnas, 1972) 结构化(Structural) 面向对象(Object-Oriented) 面向组件(Component-Oriented) 面向智能体(Agent-Oriented) …… 函数是C语言中模块化编程的最小单位 可以把每个函数看作一个模块 如把编程比做制造一台机器,函数就好比其零部件 可将这些“零部件”单独设计、调试、测试好,用时拿出来装配,再总体调试。 这些“零部件”可以是自己设计制造/别人设计制造/现成的标准产品 例5.1a 计算两个整数的平均数 /* 函数功能: 计算平均数 函数入口参数: 整型x,存储第一个运算数 整型y,存储第二个运算数 函数返回值: 平均数 */ int Average(int x, int y) { int result; result = (x + y) / 2; return result; } 函数调用(Function call) 函数名(表达式1, 表达式2, ……); 调用函数时,提供的表达式叫实际参数(argument) 有返回值时 放到一个数值表达式中 c = max(a,b); 作为另一个函数调用的参数 c = max(max(a,b),c); printf(%d\n, max(a,b)); 无返回值时 函数调用表达式 display(a,b); 函数参数传递 从实参到形参是单向值传递 形参值的改变不会影响对应的实参 如果是多个参数采用自右向左传值 实参和形参必须匹配 数目一致 类型一一对应(会发生自动类型转换) 递归问题的提出 “汉诺塔”(Hanoi) 这是一个必须用递归方法才能解决的问题 n=64时, 18,446,744,073,709,551,615次 1844亿亿次 每次1微秒,需要60万年 递归问题的提出 A→C,A→B,C→B, A→C,B→A,B→C,A→C 递归问题的提出 A→C,A→B,C→B, A→C,B→A,B→C,A→C 递归问题的提出 A→C,A→B,C→B, A→C,B→A,B→C,A→C 递归问题的提出 A→C,A→B,C→B, A→C,B→A,B→C,A→C 递归问题的提出 A→C,A→B,C→B, A→C,B→A,B→C,A→C 递归问题的提出 第一步:将问题简化。 假设A杆上只有2个圆盘,即汉诺塔有2层,n=2。 递归问题的提出 对于一个有 n(n1)个圆盘的汉诺塔,将n个圆盘分为两部分

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档