第2章 程序灵魂——算法.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文档。上传文档
查看更多
BEGIN(算法开始) 2000=y while y=2500 {if y 被4整除 if y 不被100整除 print y; “是闰年” else if y 被400整除 print y;“闰年” else print y;“非闰年” end if end if else print y; “非闰年” end if y+1=y } END(算法结束) 例2.19求1-1/2+1/3-1/4+…+1/99-1/100。 用伪代码表示的算法如下: BEGIN (算法开始) 1= sum 2= deno 1= sign while deno = 100 {(-1)×sign=sign sign×1/deno=term sum+term=sum deno+1=deno } print sum END (算法结束) 从以上例子可以看到:伪代码书写格式比较自由,容易表达出设计者的思想。同时,用伪代码写的算法很容易修改。用伪代码很容易写出结构化的算法。例如上面几个例子都是结构化的算法。但是用伪代码写算法不如流程图直观,可能会出现逻辑上的错误(例如循环或选择结构的范围搞错等)。 以上介绍了常用的表示算法的几种方法,在程序设计中读者可以根据需要和习惯任意选用。软件专业人员一般习惯使用伪代码,考虑到国内广大初学人员的情况,为便于理解,本书在以后各章中主要采用形象化的N-S图表示算法。但是,读者对其他方法也应有所了解,以便在阅读其他书刊时不致发生困难。 2.4.6 用计算机语言表示算法 要完成一件工作,包括设计算法和实现算法两个部分。设计算法的目的是为了实现算法。因此,不仅要考虑如何设计一个算法,也要考虑如何实现一个算法。 至今为止,我们只是描述算法,即用不同的形式表示操作的步骤。而要得到运算结果,就必须实现算法。在例2.1、 例2.6、例2.11和例2.16中用不同的形式表示了求5!的算法,但是并没有真正求出5!的值。实现算法的方式可能不止一种。例如对例2.1表示的算法可以用人工心算的方式实现而得到结果,也可以用笔算或算盘、计算器求出结果,这就是实现算法。 我们的任务是用计算机解题,也就是要用计算机实现算法。计算机是无法识别流程图和伪代码的。只有用计算机语言编写的程序才能被计算机执行(当然还要经过编译成目标程序才能被计算机识别和执行)。因此,在用流程图或伪代码描述出一个算法后,还要将它转换成计算机语言程序。 用计算机语言表示算法必须严格遵循所用语言的语法规则,这是和伪代码不同的。我们将前面介绍过的算法用C语言表示。 例2.20 将例2.16表示的算法(求5!)用C语言表示。 main( ) {int i,t; t=1; i=2; while(i=5) {t=t*i; i=i+1; } printf(%d,t); } 例2.21 将例2.19表示的算法(求级数的值)用C语言表示。 main( ) { int sign=1; float deno=2.0, sum=1.0, term; while (deno=100) {sign=-sign; term=sign/deno; sum=sum+term; deno=deno+1; } printf(%f,sum); } 在这里,不打算仔细介绍以上程序的细节,读者只需大体看懂它即可。在以后各章中会详细介绍C语言有关的使用规则。 应当强调说明的是,写出了C程序,仍然只是描述了算法,并未实现算法,只有运行程序才是实现算法。应该说,用计算机语言表示的算法是计算机能够执行的算法。 2.5 结构化程序设计方法 前面介绍了结构化的算法和三种基本结构。一个结构化程序就是用高级语言表示的结构化算法。用三种基本结构组成的程序必然是结构化的程序,这种程序便于编写、阅读、修改和维护。这就减少了程序出错的机会,提高了程序的可靠性。 结构化程序设计强调程序设计风格和程序结构的规范化,提倡清晰的结构。如果面临一个复杂的问题,是难以一下子写出一个层次分明、结构清晰、算法正确的程序的。结构化程序设计方法的基本思路是,把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。 具体说,采取以下方法保证得到结构化的程序。 (1) 自顶向下;(2) 逐步细化;(3) 模块化设计;(4) 结构化编码。 在接受一个任务后应怎样着手进行呢?有两种不同的方法:一种是自顶向下,逐步细化;一种是自下而上,逐步积累。以写文章为例来说明这个问题。有的人胸有全局,先设想好整个文章分成哪几个部分,然后再进一步考虑每一部分分成哪几节,每一节分成哪几段,每一段应包含什么内容,如图2.36示意。 用这种方法逐步分解,直到作者认为可以直接将

文档评论(0)

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

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

1亿VIP精品文档

相关文档