第五章 循环结构程序设计.ppt_第1页
第五章 循环结构程序设计.ppt_第2页
第五章 循环结构程序设计.ppt_第3页
第五章 循环结构程序设计.ppt_第4页
第五章 循环结构程序设计.ppt_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

第五章循环结构程序设计,用WHILEWEND实现循环,INPUT“n=”;nm=1p=1WHILEp=.00001pi=SQR(sum*6)PRINTpi=;piEND,带WHILE子句循环举例(3),程序(前测型):sum=0i=5DOWHILEi5sum=sum+iLOOPPRINTsumEND执行结果:0,程序(后测型):sum=0i=5DOsum=sum+iLOOPWHILEii。此时循环变量i的值已发生了变化,由一个新值取代了原来的值。“NEXTi”不是“取下一个值i”的意思;返回执行步骤;循环执行终止,接着执行NEXT语句的下一个语句。,FOR-NEXT循环结构举例(1),例:顺序将50名职工的工资输入及输出。编写程序如下:FORi=1TO50INPUTs=;sPRINTsNEXTiEND用FOR语句指定循环次数,共执行循环50次,每次输入一个数给变量s,然后输出该数,(N-S流程图见下)。,FOR-NEXT循环结构举例(2),“水仙花数”是指一个三位数,其各位数字的立方和等于该数,例如153=13+53+33,故153是一个“水仙花数”。请找出100999之间的所有“水仙花数”。分析:题目的关键是如何将一个三位数中的个位、十位和百位分离出来,假设i代表一个由a、b、c三个数字组成的3位数,则:(1)百位数a:a=INT(i/100)(例如:INT(342/100)=3)(2)十位数b:b=INT(i-a*100)/10)(例如:INT(342-3*100)/10)=4(3)个位数c:c=INT(i-a*100-b*10)(例如:INT(342-3*100-4*10)=2或:c=i-INT(i/10)*10(例如:342-INT(342/10)*10=2,关于FOR-NEXT循环结构的说明(1),FOR语句与NEXT语句必须成对出现,缺一不可,FOR语句必须在NEXT语句之前;循环变量初值和终值可以是正值、负值或零;FOR语句中的“循环变量”与NEXT语句中的“循环变量”必须是同一变量,例如FORI=1TO3STEP1:?I:NEXTJ;步长可以是正值或负值。它们可以是整数或小数。但提倡用整数。如果步长为1,则“STEP”可以省略;当步长为零时,循环永不终止,成为“死循环”。下面程序运行时就是“死循环”。FORx=2TO10STEP0PRINTxNEXT终止循环的条件是“循环变量的值超过终值”,而不是“循环变量的值等于终值”,例如FORI=1TO3STEP1:?I:NEXTI.循环次数的计算可以通过公式计算:循环次数=(循环终值-循环初值)/步长+1;,循环变量的作用主要是用来对循环进行控制,根据它的值决定何时终止循环过程。循环变量可以在循环体中被引用,也可以不在循环体中出现(参见:sanp5-17.bas)。在循环体内一般不要对循环变量再赋值,否则将影响原有的循环控制状况。流程可以从循环体内转移到循环体外,但不能从循环体外转到循环体内。FORk=1TO10s=s+k*kIFs200GOTOa:NEXTka:PRINTkEND是合法的。但由于循环有两个出口,不符合结构化原则,故不提倡使用。(另参见:sanp5-15.bas)。,关于FOR-NEXT循环结构的说明(2),FOR-NEXT循环结构举例(3),例:让计算机给小学生出10道题目,要求是100以内的两位整数相加,学生输入答案后自动判断它是否正确。最后输出学生的得分。(每题10分)。题目分析:首先使要让计算机产生两个两位随机整数。在QB中有一个RND函数,可随机产生(01)之间的一个随机小数,不包括0,1。如果将其放大100倍再取整,即INT(100*RND)是0,99,例如随机产生一个0.256847,则INT(100*0.256847)=25;INT(10*RND)得到一个0,9的随机整数;INT(90*RND)得到一个0,89的随机整数;INT(10*RND)+10得到一个10,99的随机整数,即两位整数;利用循环产生10道题目(参见:sanp5-17.bas)!,程序运行时,系统赋一个固定的“随机化种子”,通过该“随机化种子”来产生随机数,所以如果程序每次运行不改变“随机化种子”,就产生相同的随机数。,FOR-NEXT循环结构举例(4),例:判断一个整数n是否是质数(除了1和它本身不能再被其他整数数整除的数)。,1、利用循环从2n-1,分别判断每一个数是否能够整除n;flag=1FORI=2TOn-1IFnMODI=0THENflag=1NEXTIPRINTn;”is”;IFflag=1THENPRINT“NOTaprimenumber.”ELSEPRINT“aprimenumber.”END,2、将n分解为表示为两个数的乘积时,则这两个数中其中的一个,而另一个。因此假设n不是一个素数的话,一定可以表示为两个整数的乘积,而其中一个一定小于,所以循环的次数只有。,基本要求,掌握WHILE-WEND循环、FOR-NEXT循环和DO-LOOP循环的使用,在一个循环体内又完整地包含另一个循环,称为循环的嵌套。前面介绍的几种类型的循环可以互相嵌套。,循环的嵌套,举例:打印出乘法九九表,1234567891|1234567892|246810121416183|3691215182124274|48121620242832365|510152025303540456|612182430364248547|714212835424956638|816243240485664729|91827364554637281,FORb=1TO9PRINTTAB(b*5);b;NEXTbPRINTFORn=1TO50PRINT-;NEXTnPRINTFORa=1TO9PRINTa;|;FORb=1TO9t=a*bPRINTTAB(b*5);t;NEXTbPRINTNEXTa,在使用循环嵌套时,要注意:内外循环不应交叉,如:FORiFORiFORkFORkNEXTkNEXTiNEXTiNEXTk正确不正确内外循环的循环变量名不应相同。例如:FORk=1TO9FORk=1TO9PRINT$;NEXTkNEXTkEND,循环的嵌套的两点说明,有关循环的算法举例(1),用字符组成图案:输出由字符“*”组成的金字塔图案,(参见SAMP5-19.BAS)输出由字符“B”组成的兔子头图案,(参见SAMP5-20.BAS),穷举法(测试所有的方案):例百钱买百鸡:公元5世纪末,我国古代数学家张建丘在算经中提出了“问题”;“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?”此题用代数方法是无法求解的。因为有3个未知数,只有2个方程式。设公鸡x只,母鸡y只,小鸡z只,可以列出方程:x+y+z=1005x+3y+z/3=100由于无法直接用代数方法解,可以用“穷举法”来解此问题。分析一下x,y,z的可能取值范围:公鸡最多能买20只,故0x20;母鸡最多能买33只,所以0y33;在x,y确定后,自然就得出z=100-x-y。(参见SAMP5-21.BAS),有关循环的算法举例(2),递推法:所谓递推就是再前面一个或几个数的基础上推出下一个数的值。例:有一个数列,前两个数是1,1,第三个数是前两个数之和,以后每个数都是其前两个数之和,此数列的前几个数为1,1,2,3,5,8要求输出前30个数。(参见SAMP5-22.BAS),数列称为Fibonacii,斐波那契数列,他提出这样的问题:有一对兔子,从第三个月开始生一对兔子。生下的每一对兔子长道第3个月以后每月又生一对兔子。假设这些兔子都不死亡,问各月有多少对兔子。,月小兔子(1个月)中兔子(2个月)老兔子(3个月以上)合计,11001,20101,31012,41113,52125,63238,有关循环的算法举例(2),递推过程:,112358,(第1次),f1,f2,+,f3,f1,f2,+,f1,f2,+,f1,f2,+,(第2次),(第3次),(第4次),有关循环的算法举例(3),牛顿迭代法:对于一些复杂的函数,无法得到解析解,只能通过一定方法得到其近似的解,如ex-x=0等。这样一些方程的求解过程如下:(参见SAMP5-23.BAS),重复以上步骤,直到|xn-xn-1|,此时可认为xn非常接近f(x)的根。,f(x1),f(x2),f(x3),任选一个根x1;,由x1求出f(x1);,过(x1,f(x1)做f(x)的切线,交x轴与x2;,由x2求出f(x2);,过(x2,f(x2)做f(x

温馨提示

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

评论

0/150

提交评论