探讨算法中的循环结构_第1页
探讨算法中的循环结构_第2页
探讨算法中的循环结构_第3页
探讨算法中的循环结构_第4页
探讨算法中的循环结构_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、探讨算法中的循环结构数学科卢丽英200508问题一:什么叫循环结构?何时用循环结构?在一些算法中,经常会出现从某处开始,按照一定条件,反复执行某一处步骤的情况,这就是循环结构。反复执行的处理步骤称为循环体。问题二:循环结构有哪些类型?根据对条件的不同处理,循环结构分为如下两种,(一)当型(while型)。当型循环在每次执行循环体前对控制循环条件进行判断,当条件满足时执行循环体,不满足时则停止。当型循环有时也称为“前测试型”循环。满足条件循环体是否图1当型循环结构(二)直到型(until型)。在执行了一次循环体之后,对控制循环条件进行判断,当条件不满足时执行循环体,满足时则停止。直到型循环又称为

2、“后测试型”循环。满足条件循环体是否图2直到型循环结构对同一个问题,一般来说既可以用当型,又可以用直到型。当然其流程图(即程序框图)会有所不同。例1 设计一个计算1+2+3+100的值的程序框图。其程序框图有图3,图4两种开始I=1Sum=0I>100?输出SumSum=Sum+II=I+1结束是否图4直到型循环结构开始I=1Sum=0I<=100?输出SumSum=Sum+II=I+1结束是否图3当型循环结构 循环结构不能是永无终止的“死循环”,一定要在某个条件下终止循环,这就需要条件结构来作出判断,因此,循环结构中一定包含条件结构。从以上例子还可看出当型循环的判断条件“I<

3、;=100?”与直到型循环的判断条件 “I>100?”刚好是相反的。问题三:如何把握和设计循环结构的退出条件?这里就先介绍计数变量,计数变量是用于记录循环次数,同时它的取值还用于判断循环是否终止。累加变量(或称累积变量)用于输出结果。(一)累加变量(或称累积变量)和计数变量一般是同步执行的,累加(或累积)一次,计数一次。对于例1中“I”是计数变量,“Sum”是累加变量。如下的题中可类似地设计其计数变量与累加变量。1 设计一个算法求12+22+992+1002的值,并画出程序框图。2 某高中男子体育小组的50米跑成绩(单位:s)为:6.4,6.5,7.0,6.8,7.1,7.3,6.9,7

4、.4,7.5设计一个算法,从这些成绩中搜索出小于6.8s的成绩,并画出程序框图。3 编写流程图,计算函数f(x)=x2-3x+5当x=1,2,3, ,20时的函数值。4 编写流程图,输入正整数n,计算它的阶乘n!(n!=nx(n-1)xx3x2x1)5 编写流程图,计算下面n个数的和:2,.6 对任意正整数n,设计一个算法求S=1+的值,并画出程序框图。7 组合数计算,设计一个程序框图,用上述公式计算组合数。8 写出求(共7个3)的值的一个算法,并画出流程图。9 已知数列an,满足a1=a2=1,an=an-2+an-1(n3,nN),画出计算an的程序框图。(如图5)开始s=0,i=1i是奇

5、数?输出ss=s-i2i=i+1结束是否s=s+i2i>100?否是图610 用N1表示第1个学生的学号,Ni代表第i个学生的学号,Gi代表第i个学生的成绩,利用当型循环画出打印60名学生总分在90分(或90分)以上的学生的学号和分数的流程图。开始A=1,B=1,K=2A=B,B=CK<n?输入nK=K+1C=A+B结束是否输出C图511 画出求12-22+32-42+992-1002的值的算法的程序框图。(如图6)开始p=0,i=1p=p+ii>31?输出pi=i+2结束是否图7注意,在第9题流程图是当型循环,K是计数变量,C是累加变量,循环体中有A,B的重新赋值的语句;在

6、第11题流程图是直到型循环,i是计数变量,s是累加变量,循环体中有条件结构。(二)有时计数变量并没有准确记录循环次数,如:例2 设计求1+3+5+7+31的流程图。开始p=0,i=1,t=0p=p+ii>46?输出pt=t+1结束是否i=i+t图8例2流程图(如图7)用的是直到型循环,当中的p是累加变量,当中的i是计数变量,i>31(即i=33)时要退出循环体,但循环次数却只有15次;(三)有时计数变量有两个,一个用来准确记录循环次数,另一个用来判断循环是否结束,如:例3 设计求1+2+4+7+46的程序框图。例3程序框图(图8)是直到型循环,当中的i是判断循环是否终止, t是控制

7、循环次数,可以说t是计数变量,当i>46(即t=9,i=56) 时,退出循环体,此时循环次数刚好是9次。(四)有时要退出循环,有计数变量还是无法真正退出循环结构的,如例4 任意给定一个大于1的整数n,试设计一个程序或步骤对n是否为质数做出判定。算法如下:第一步,判断n是否等于2。若n=2,则n是质数;若n>2,执行第二步。第二步,依次从2(n-1)检验是不是n的因数,即整除n的数。若有这样的数,则n不是质数;若没有这样的数,则n是质数。根据算法直接画出的程序框图(如图9)(但当中红色粗线部分问题还没解决)开始输入nd=2n>2?结束是否输出“n是质数”d整除n?是否d=d+1

8、如何退出循环?d>n-1?否是输出“n不是质数”输出“n是质数”图9 这时要增加一个变量flag,它是判断是否为质数的一个变量,这变量的取值只有两个,“1”和“0”,若flag=1,则是质数;否则不是质数。flag并没有实质的含义,那就象一个人的姓名能代表他本人,其外号也可代表他,学号也能代表他,一般来说用学号更方便管理。这里的“flag=1”只是质数的一个代号,代号当然可以选别的,如“flag=0是质数的代号也可以”,又或者不用flag变量,而用b变量,“b=3是质数的代号,而当b3时则不是质数”等等都行。其正确框图如图10(是直到型循环):开始输入nd=2n>2?结束是否输出“

9、n不是质数”d整除n?是否d=d+1d>n-1或flag=0?否是flag=1flag=0flag=1?输出“n是质数”是否图10作为上例有计数变量d,d与flag的取值都是用于判断循环是否终止,在这里两变量缺一不可。我们在这里就把类似于 “flag” 这样的变量叫做标志变量。标志变量一般用来控制循环体何时结束的,其例子有例5用二分法设计一个求方程x2-2=0的正近似根的算法(精确到0.005)。第一步:令f(x)= x2-2,因为f(1)<0,f(2)>0,则根在区间(1,2),所以设x1=1,x2=2,即根在区间(x1 ,x2)。第二步:令m=,判断f(m)是否为0。若是

10、,则m为所求根;若否,则继续执行以下步骤。开始f(x)=x2-2m=f(m)=0?输出mx1=m结束输入误差和初值x1,x2f(x1)·f(m)>0?x2=ma<?否否是是是否m=a=|x1 -x2|图11第三步:若f(x1)f(m)>0,知f(m) f(x2)<0,根在区间(m, x2),则令x1=m;否则根在区间(x1 ,m)则令x2= m。第四步:判断|x1x2|<0.005是否成立?若是,则x1,x2之间的任意取值均满足条件的近似根;若否,则返回第二步。其框图如图11(是直到型),这里用来判断循环是否终止的标志变量a。问题四:循环结构与其他结构有何联系?任何一个流程图都有顺序结构,其次有1 循环结构嵌套着条件结构,如图6,图10,图11。2 循环结构嵌套着循环结构,如编写一个关于九九乘法表的流程图。(如图12是当型循环套当型循环)开始k=1,i=1k=ii=i+1结束NYa=ixki<=9?图12k<=9?输出“ixk=a”k=k+1YN最后要说说编循环结构的流程图时的注意事项:1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论