第5章 循环结构程序设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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