第5章 循环结构程序设计ppt课件_第1页
第5章 循环结构程序设计ppt课件_第2页
第5章 循环结构程序设计ppt课件_第3页
第5章 循环结构程序设计ppt课件_第4页
第5章 循环结构程序设计ppt课件_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

第5章循环结构程序设计,循环结构和顺序结构、选择结构都是结构化程序设计的基本控制结构。在编程中一些操作并不复杂,但需要反复执行多次的问题,需采用循环结构。如:对全年级1500名学生都进行例4-4介绍的百分制转换为五分制操作。循环结构是指程序中有规律地反复执行某一程序块的现象。被重复执行的程序块称为循环体;循环体的执行与否及次数多少视循环类型与条件而定;无论何种类型的循环结构,都必须确保循环体的重复执行能被终止。VB常用的循环语句有ForNext,WhileWend和DoLoop语句。ForNext用于已知循环次数的情况,而WhileWend和DoLoop主要用于不知道循环次数的情况,在给定的条件满足时执行循环体。,第5章循环结构程序设计,本章内容及要求:熟练掌握实现循环结构的For/Next语句、While/Wend语句、Do/Loop结构的使用,掌握多重循环。重点:循环的实现及其应用。难点:多重循环。,第5章循环结构程序设计,5.1For循环语句,For循环是计数型循环结构,用于控制循环次数预知是循环结构。格式:For=ToStepExitForNext,5.1For循环语句,说明:循环变量:必须为数值型,取值范围在初值和终值之间步长:数值型,一般为正,初值应小于等于终值;若为负,初值应大于等于终值;默认为1。语句块:可以是一句或多句语句,构成循环体。ExitFor:表示当遇到该语句时,退出循环,执行Next行的后继语句。次数m由初值终值步长决定:m=Int(终值-初值)/步长+1),5.1For循环语句,步长为正数,步长为负数,5.1For循环语句,【例5-1】求2+4+6+100的值。分析:进行程序设计应采用累加的方法,用变量sum来存放累加和,用变量i来存放加数。同时i还要作为循环计数器。进行程序设计时,分为界面设计、控件对象属性设置和编写程序代码3个步骤。,5.1For循环语句,【例5-2】求n!,n的值由用户输入。分析:由阶乘的定义可知:n1=123(n-1)n,所以应该采用连乘的方法,用变量fact来存放连乘积,用变量i来存放要连乘的乘数和循环计数器,从1开始到n为止。,5.1For循环语句,循环结构中,最常用的算法:累加、连乘。注意:累加和sum的初值置为0,而连乘积fact的初值置为1,并且它们的赋值操作应该在循环体外、循环开始前完成。,5.1For循环语句,【例5-3】利用多项式e=1+1/1!+1/2!+1/3!+1/n!求自然对数e的近似值,要求计算到第15项。分析:在计算级数的和时,先求第i项的阶乘,再将各项阶乘的倒数进行累加。程序中设计两个变量sum和fact分别作为累加和与连乘积,其赋初值分别为0和1。为防止项数过大阶乘溢出,定义fact和sum为double类型。,5.1For循环语句,【例5-4】参看教材P75。,5.1For循环语句,【例5-5】求Fibonacci数列前15项的值。Fibonacci数列为:1,1,2,3,5,8,。分析:数列的第一项和第二项为1,从第三项开始,每一项都是前两项之和,即:F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n3)在本例中,F1代表当前第一项的值,F2代表第二项的值,F3代表第三项的值,当此轮计算完成后,F2的值将成为第一项的值,F3的值将成为第二项的值,然后可以进行下一轮的运算,直到最后得到所有结果。,5.2While循环语句,格式:WhileWend功能:如果为True(非0值),则执行(即循环体);如果的值是False(值为0),则退出循环。执行流程图:,5.2While循环语句,说明:的组成与If语句中的的组成要求相同。实际进行程序设计时,循环体中语句的执行应能使条件发生改变,以使的值最终可以出现False。否则会出现死循环。例如,如下一段程序:Whileb0c=c+ab=b-1Wend每次执行循环以前,都要测试条件表达式(b0)的值。如果结果为True,则执行循环体。直到条件表达式为False(即b=0)时结束循环,转移到Wend的后继语句。,5.2While循环语句,While循环与For循环的区别是:For循环对循环体执行指定次数,While循环则是给定的条件表达式为True时重复循环体的执行。“While/当循环”可以指定一个循环终止的条件,而For循环只能进行指定次数的重复。因此,当需要由数据的某个条件是否出现来控制循环时,应当使用WhileWend一类的循环。,5.2While循环语句,【例5-6】我国现有人口13亿,按照年增长率1.2%计算,多少年后我国人口达到20亿?分析:我国现有人口13亿,p是n年后我国人口达到的数量(20亿),r是年增长率(1.2%)。求解此问题可根据公式:p=13(1+r)n,利用While循环求得n。,5.2While循环语句,【例5-7】编写程序,输入一个正整数n(n3),判断其是否为素数。分析:只能被1和本身整除的正整数称为素数。判断一个数n是不是素数,最简单的方法就是根据素数的定义,利用2n-1之间的整数依次去除n,如果都不能整除,就n是素数,反之则n不是素数。从数学上,只要n不能被2n/2或2之间的所有整数整除,则n是素数,否则n不是素数。后一种方法可以减少循环的次数,提高执行效率。本例中,设置一个数值型变量flag,flag值为1时表示这个数是素数,为0时表示不是素数。初始flag=1,在循环判断时,若某数n能被2之间的某数整除将flag值设为0。,5.3DoLoop循环语句,导入:DoLoop循环也属于条件型循环,即根据条件的成立与否来决定是否执行循环。DoLoop循环的应用具有很强的灵活性,主要体现在:它既能指定循环开始条件,又能指定循环结束条件;既能构成前测型DoLoop循环语句,又能构成后测型DoLoop循环语句。,5.3.1前测型DoLoop循环语句,格式:DoWhile|UntilExitDoLoop,5.3.1前测型DoLoop循环语句,前测型DoLoop循环的流程图DoWhileLoop流程图DoUntilLoop流程图,5.3.1前测型DoLoop循环语句,说明:DoWhileLoop是当型循环结构。当的值为True时执行循环体;当的值为False时退出循环;DoUntilLoop是直到型循环结构。当的值为False时执行循环体;直到的值为True时退出循环;的组成与If语句中的的组成要求相同;ExitDo语句表示当遇到该语句时,退出循环,执行Loop行的后继语句当省略While|Until子句时,即循环结构仅由DoLoop关键字构成,表示无条件循环,这时在循环体内应该有ExitDo语句,否则为死循环。,5.3.1前测型DoLoop循环语句,【例5-8】用Do循环结构实现例5-2求n!,5.3.1前测型DoLoop循环语句,【例5-9】求满足1+2+3+n1000n的最小值思考:如果本例用DoWhileLoop循环语句实现,代码应如何改动?,5.3.2后测型DoLoop循环语句,格式:DoExitDoLoopWhile|Until,5.3.1后测型DoLoop循环语句,说明:后测型DoLoop循环语句与前测型DoLoop循环语句的主要区别在于:后测型要先执行一次循环体,再判断条件;而前测型要先判断条件,然后根据判断结果决定是否执行循环体。因此对于后测型,不管条件是否满足,循环体至少有一次执行机会。,5.3.1后测型DoLoop循环语句,DoLoopWhile循环流程图DoLoopUntil循环流程图,5.3.1后测型DoLoop循环语句,【例5-10】将400600间能够被3整除的数输出(上机练习)【例5-11】(略),5.4循环嵌套,介绍:一个循环结构中又包含一个或多个循环结构被称为循环嵌套,或称多重循环。多重循环对嵌套的层数没有限制。有几层嵌套,就称为几重循环,如二重循环、三重循环、四重循环等。一般地,把嵌套在一个循环体内部的另一个循环结构称为内循环;这样,嵌套了其他内循环部分的循环结构就称为外循环。为了使多重循环结构具有较好的可读性,通常用缩进方式书写相应的源代码。,5.4循环嵌套,说明:外循环必须完全包含内循环,不能交叉,如表5-1和表5-2所示;内循环变量与外循环变量不能同名;多重循环的执行过程是,外循环每执行一次,内循环要从头到尾执行一遍;在多重循环的任何一层中都可以使用ExitDo或ExitFor退出循环,但要注意只能退出ExitDo或ExitFor语句所对应的最内层循环,而不是一次退出多层循环。,5.4循环嵌套,表5-1正确的循环嵌套结构表5-2错误的循环嵌套结构,5.4循环嵌套,【例5-12】编程,实现要求的图形。,5.4循环嵌套,【例5-13】编程打印九九乘法表,程序运行界面见下图。,5.4循环嵌套,分析:输出九九乘法表,可以用外层循环变量i控制每行的输出,内循环变量j控制各行中的每个等式的输出,而各行中的每个等式正好是“i*j”。此外主要的问题是控制每个等式出现的位置,可以用Tab函数来实现,假设每个等式的宽度为9,第一个等式出现在第1列,第二个等式出现在第10列,依次类推,则每个等式出现的位置就可以这样表示:Tab(j-1)*9+1)。,5.4循环嵌套,【例5-14】编程求不定方程的解。,5.4循环嵌套,【例5-15】如果一个三位数等于其各位数字的立方和,则称这个数为水仙花数,如153=13+53+33,370=33+73+03,试编程找出所有的水仙花数。分析方案一:从100,101,102,999中,对每个数均检测是否符合水仙花数的条件(用单层的循环即可实现)。方案二:假定a、b、c分别为三位整数的百位、十位个位数字,可以得到100,101,999的三位数,同时对其判断是否为水仙花数(用三重循环实现)。,5.4循环嵌套,思考:本例应用了一种常见算法穷举法。该算法根据所提问题,穷举所有可能的情形,并从中找出符合要求的解。因此,穷举法常用于解决“是否存在”以及“有多少种符合要求的解”等类型的问题。由于穷举法需要列举所有

温馨提示

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

评论

0/150

提交评论