首页 循环结构的三要素及其他

循环结构的三要素及其他

举报
开通vip

循环结构的三要素及其他摘要:循环结构是结构化程序设计中最为复杂的一种结构,本文提出构成循环结构的三个要素,论述运用循环结构三要素进行程序设计的方法,以及循环与递归的关系。关键词:算法;程序结构;循环;递归1问题的提出结构化程序设计中,只有三种基本的结构:顺序、选择和循环。顺序结构是程序设计过程中自然形成的,也是三种结构中最简单的一种。选择结构与我们日常中使用的自然语言“如果...则...否则...”十分相近,只是其嵌套时的二义性在形式上必须有一个明确的规定。而循环结构是三者中最为复杂的,也是使用最多的。一个算法往往要用循环结构来描述,一...

循环结构的三要素及其他
摘要:循环结构是结构化程序设计中最为复杂的一种结构,本文提出构成循环结构的三个要素,论述运用循环结构三要素进行程序设计的方法,以及循环与递归的关系。关键词:算法;程序结构;循环;递归1问题的提出结构化程序设计中,只有三种基本的结构:顺序、选择和循环。顺序结构是程序设计过程中自然形成的,也是三种结构中最简单的一种。选择结构与我们日常中使用的自然语言“如果...则...否则...”十分相近,只是其嵌套时的二义性在形式上必须有一个明确的规定。而循环结构是三者中最为复杂的,也是使用最多的。一个算法往往要用循环结构来描述,一个程序能否正确编写又往往取决于对循环结构的正确理解和使用。因此,有必要深入对循环结构做一个分析。本文从循环结构的三个要素、循环结构与程序的阅读、循环与递归的联系等三个方面进行分析与论述,而这些在目前的教学中往往很少提到,甚至是被忽略的。2循环结构的三要素初学程序设计的人,对于如何在程序中使用循环结构实现算法,总觉得不知从何入手,有时即使编出程序,也不尽人意。下面我们从一个简单的典型实例说起。为了说明问题,本文对有关编程的问题都以C语言函数的方式列出解答。2.1一个典型实例及其两种解答例2.1鸡兔同笼,有h个头,f只脚,求鸡兔各多少。这是我国古代一个典型的算术问题。现在要设计一个函数,求出兔子的数目(求出兔子的数目,自然就可以得到鸡的数目)。不妨设这个函数为:inthab(inth,intf);函数的定义如下:intrabbit(inth,intf)//h为头数,f为脚数{inti;i=h;while(i>=0){if(i*4(h-i)*2==f)break;i--;}returni;//-1 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示该该问题无解。}这个程序的运行结果是正确的,但是很遗憾,这并不是一个完美的程序,尽管很多教科 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 也是这样写的。我们再来看看下面的另一种解法:intrabbit(inth,intf)//h为头数,f为脚数{inti;i=hwhile((i>=0)&&(i*4(h-i)*2!=f))i--;returni;//-1表示该问题无解。}以上两个程序都用到循环结构,第一个程序在循环结构中嵌套了一个选择结构,并且使用了break语句。而在第二个程序中,无需这样做。无论从程序的结构,还是从程序的可读性来说,后者显得比前者要好得多。那么问题出在哪里呢?2.2深入分析比较两个程序可以发现,关键是对条件表达式(i*4(h-i)*2!=l)的运用。前者把条件表达式放在循环体中,后者把它作为循环条件。看来,有必要对循环结构做深入的分析。不管一个循环结构有多复杂,都可以从以下三个方面来分析:1)初始状态:所有参与循环的变量在循环之前都必须有一个确定的值。2)循环条件:当条件满足时,循环继续,否则循环终止。循环条件应是一个逻辑表达式。3)循环体:每次循环要执行的语句。这就是我们所讲的循环结构三要素。从这个角度再来分析上面的例子,就很容易找到问题的结症:(i*4(h-i)*2!=l)是循环条件之一,因此不应放在循环体内使用。第一种方法虽然也能得到正确的结果,但并不是好的方法,甚至是不正确的方法。2.3一个应用实例例2.2裴波那契序列数的递归表示如下:f0=0f1=1fn=fn-2fn-1(n>=2)对于任意给定的正整数x,判别其是否在裴波那契序列中。现在 要求 对教师党员的评价套管和固井爆破片与爆破装置仓库管理基本要求三甲医院都需要复审吗 判别一个给定的正整数x是否在裴波那契序列中,一个直观的判别方法是从f0和f1出发,不停地求后面的裴波那契序列数。每得到一个裴波那契序列数,就同这个待判别数进行比较,直到相等时输出“真”。或当得到一个裴波那契序列数大于这个待判别数时,输出“假”。要实现这个算法,需用到循环结构。我们来分析一下这个循环结构的三个要素:(1)初始状态:f0=0;f1=1,x=?;(2)循环条件:当前求得的裴波那契序列数<待判别数x;(3)循环体:计算一个新的裴波那契序列数。根据以上的分析,判别一个给定的正整数x是否在求裴波那契序列中的C函数如下:intin_fib(intx){intf0=0,f1=1;while(f1<x){t=f1f0;f0=f1;f1=t;}return(x==f1||x==f0);}3循环结构与程序的阅读3.1阅读的意义对于计算机程序的阅读,著名的计算机科学家克努特曾说过:阅读他人的计算机程序获得技巧是极其重要的,但在许许多多的计算机课程中这样一种训练却可悲地被忽视了,因此导致计算机极其低效率的使用。学习一种计算机程序设计语言,不管是汇编语言还是高级语言,一个重要而又常用的方法就是阅读:阅读书中的例题,阅读别人写的程序,更多的是阅读自已写的程序。在某种意义上来说,一个程序是“被阅读”的。首先是被计算机阅读,这是毫无疑义的,但更多时候是被人阅读。3.2阅读的方法阅读的目的是为了分析程序中的语句是如何实现算法的。对于一些较为复杂的程序,如果一开始就去分析每一个语句的功能,就很容易掉进“迷宫”。因此在分析一个程序时应该先分析程序的结构,然后再对每个结构中的语句逐一进行跟踪阅读。1.程序结构的分析程序结构的分析过程分为两个步骤:第一是找出组成程序的各种结构,第二是找出这些结构之间的连接方式。程序结构的分析应符合结构化程序设计的原则。一种结构化程序设计语言(如C语言,Pascal),只包含三种基本结构:顺序、选择和循环。每种结构只有一个入口和一个出口。而各个结构之间的连接方式有两种:积木式和嵌套式。积木式的连接是一个结构的出口与另一个结构的入口的连接,而嵌套式的连接是在一个结构的内部嵌套另一个结构。一般来说,我们应先分析出程序中积木式连接的各个结构,然后再找出这些结构中的嵌套式连接的结构。分析程序结构时可以借用一些工具,如N-S图、伪代码等,即根据源程序画出能反映程序结构的N-S图或写出等效的伪代码。这是一个与编程过程刚好相反的过程。2.语句的跟踪阅读对于顺序结构的语句,阅读是不成问题的。而对于选择结构的语句,由于与我们平时所用的自然语言比较一致,也不是太大的困难。关键在于,当有两个选择结构连接时,采用积木式的连接与采用嵌套式连接的差别是很大,有时甚至使得程序运行的结果截然相反。循环结构是三种结构中最为复杂的一种,对这种结构的跟踪阅读可以用列表的方法,将循环过程中各语句执行的结果一一列出。这个表包含了循环结构的三个要素。
本文档为【循环结构的三要素及其他】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_654168
暂无简介~
格式:doc
大小:19KB
软件:Word
页数:8
分类:
上传时间:2022-08-05
浏览量:1