第5章 模块化编程.ppt

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

第五章 模块化编程 模块化程序设计 复杂问题的解决方法一般会是把原问题分解成若干个规模较小的问题加以解决,并可以类推的继续向下分解。 结构化程序设计的基本思想之一是程序的“模块化” (module)。所谓“模块化”就是把一个较为复杂的大程序化分成若干个功能相对独立的程序块,每个程序块实现一个功能。 在C语言中,这样的程序块被称为函数。 函数是C程序的基本模块,C 语言被称为函数式语言。 从一个例子说起:求n个垫圈的面积总和 //求n个垫圈的面积总和 main(){ int n,i; float t,d1,d2,sum=0; printf(垫圈的数量=);scanf(%d,n); for(i=1;i=n;i++){ printf(%2d:外径=,i);scanf(%f,d1); printf( 内径=,i);scanf(%f,d2); t=(d1*d1-d2*d2)/4*3.1415926; sum+=t; } printf(sum=%f,sum); getch(); } float sum(int n); float area(float d1,float d2); main(){ int n; printf(垫圈的数量=);scanf(%d,n); printf(sum=%f,sum(n)); getch(); } 几点体验: 函数sum,area要先声明,后使用; 函数sum,area通过参数表中的参数n,d1,d2传递数据,以return语句从函数名sum,area获得返回的函数值。 函数的参数n,d1,d2都是有类型的。 函数参数的传递遵循NOT原则: Number、Order、Type必须一致 几点体验: The heart and soul of C programming is the function. A function represents a piece of code that is a building block in the problem-solving process. Functions, called modules, allow programmers to modularize a program. Functions support structured programming and offer the following advantages: Hierarchical flow control; Break large tasks into smaller ones; Easy to maintain; Improve software reusability. 例如 float max(float x,float y); main(){ float a,b,c,d,e; printf(a=);scanf(%f,a); printf(b=);scanf(%f,b); c=max(a,b); // 调用函数语句,a,b为实参 printf(max is %f\n,c); getch(); } float max(float x,float y) { //函数定义,x,y 为形参 float z; z=xy?x:y; return z; } 函数的调用方式 语句方式  如:line(); 用于void型函数 表达式方式 如:c=sum(a,b); 参数方式  如:m=max(c,max(a,b)); 被调用的函数必须具备的条件 被调用的函数必须是已经存在的函数 若调用库函数,应该在文件开头用#include命令将所需的信息包含到本文件中来。 如:#include stdio.h 或 #include math.h 若使用自定义函数,该函数与主调函数应该在同一个文件中。 一般应该在文件开头或主调函数中对被调函数进行说明。但有两个例外: ①整型或字符型函数可以不说明 ②被调函数写在主调函数之前可以不说明 float sum(int n); float fac(int a); main ( ){ float x; x=sum(10); printf(“x=%10.1f,x); getch(); } 满足递归关系的函数要有: (1)函数初始条件; (2)初始条件个数不少于递归函数中表 达式的个数。 否则递归没有终结,程序出现死循环。 递归算法的特点: (1)程序执行速度慢于递推算法;2n-2+1 次 (2)算法设计容易,程序可读性好。 以正整数12为例: 12/2=60 图解执行过程

文档评论(0)

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

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

1亿VIP精品文档

相关文档