当前位置:文档之家› 循环结构程序设计

循环结构程序设计

29
5.4 循环嵌套
表5-1 正确的循环嵌套结构
For I=1 To 10 … For J=1 To 20
… Next J … Next I
Do … For J=1 To 20 … Next J …
While I<=10
For I=1 To 10 Do


Do While J<=20 While J<=20
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语句,否则为死循环。
18
5.3.1 前测型Do…Loop循环语句
格式:
Do [While | Until <条件表达式>] <语句块> [Exit Do] <语句块>
Loop
19
5.3.1 前测型Do…Loop循环语句
前测型Do…Loop循环的流程图
Do While…Loop流程图
Do Until…Loop流程图
20
m = Int((终值-初值)/步长+1)
5
5.1 For循环语句
步长为正数
步长为负数
6
5.1 For循环语句
【例5-1】求2+4+6+……+100的值。 分析:
进行程序设计应采用累加的方法,用变量sum来存放累加和 ,用变量i来存放加数。同时i还要作为循环计数器。 进行程序设计时,分为界面设计、控件对象属性设置和编写 程序代码3个步骤。
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 循环嵌套
介绍:
一个循环结构中又包含一个或多个循环结构被称为 循环嵌套,或称多重循环。 多重循环对嵌套的层数没有限制。有几层嵌套,就 称为几重循环,如二重循环、三重循环、四重循环 等。一般地,把嵌套在一个循环体内部的另一个循 环结构称为内循环;这样,嵌套了其他内循环部分 的循环结构就称为外循环。 为了使多重循环结构具有较好的可读性,通常用缩 进方式书写相应的源代码。
方案二:假定a、b、c分别为三位整数的百位、十位个位数 字,可以得到100,101,…,999的三位数,同时对其判断 是否为水仙花数(用三重循环实现)。
35
5.4 循环嵌套
思考:
本例应用了一种常见算法—穷举法。该算法根据所 提问题,穷举所有可能的情形,并从中找出符合要 求的解。因此,穷举法常用于解决“是否存在”以 及“有多少种符合要求的解”等类型的问题。由于 穷举法需要列举所有可能的情形,因此采用循环是 最有效的实现方法。 【例】如果将一角钱换成零钱(可以包括1分、2分 和5分中的任意多个面值),共有多少种换法?
功能:如果<条件表达式>为True(非0值),则执行<语句块 >(即循环体);如果<条件表达式>的值是False(值为0) ,则退出循环。 执行流程图:
13
5.2 While循环语句
说明:
<条件表达式>的组成与If语句中的<条件表达式>的组成要 求相同。
实际进行程序设计时,循环体中语句的执行应能使条件发 生改变,以使<条件表达式>的值最终可以出现False。否 则会出现死循环。
例如,如下一段程序:
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时重复循环 体的执行。
33
5.4 循环嵌套
【例5-14】编程求不定方程的解。
34
5.4 循环嵌套
【例5-15】 如果一个三位数等于其各位数字的立方 和,则称这个数为水仙花数,如153=13+53+33, 370=33+73+03 ,试编程找出所有的水仙花数。
分析
方案一:从100,101,102,…,999中,对每个数均检测是 否符合水仙花数的条件(用单层的循环即可实现)。
17
5.3 Do…Loop循环语句
导入:
Do…Loop循环也属于条件型循环,即根据条件的 成立与否来决定是否执行循环。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循环语句
Fn = Fn-1 +代表当前第一项的值,F2代表第二项的值,
F3代表第三项的值,当此轮计算完成后,F2的值将成为第一
项的值,F3的值将成为第二项的值,然后可以进行下一轮的
运算,直到最后得到所有结果。
12
5.2 While循环语句
格式: While <条件表达式> <语句块> Wend
7
5.1 For循环语句
【例5-2】求n!,n的值由用户输入。 分析:由阶乘的定义可知:n1=1×2×3×…×(n-1) ×n,所 以应该采用连乘的方法,用变量fact来存放连乘积,用变量i 来存放要连乘的乘数和循环计数器,从1开始到n为止。
8
5.1 For循环语句
循环结构中,最常用的算法:累加、连乘。
28
5.4 循环嵌套
说明:
外循环必须完全包含内循环,不能交叉,如表5-1 和表5-2所示; 内循环变量与外循环变量不能同名; 多重循环的执行过程是,外循环每执行一次,内循 环要从头到尾执行一遍; 在多重循环的任何一层中都可以使用Exit Do或 Exit For退出循环,但要注意只能退出Exit Do或 Exit For语句所对应的最内层循环,而不是一次退 出多层循环。
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)
<语句块>
[Exit For]
<语句块>
Next [<循环变量>]
4
5.1 For循环语句
说明:
循环变量:必须为数值型,取值范围在初值和终值之间 步长:数值型,一般为正,初值应小于等于终值;若为 负,初值应大于等于终值;默认为1。 语句块:可以是一句或多句语句,构成循环体。 Exit For:表示当遇到该语句时,退出循环,执行Next 行的后继语句。 次数m由初值\终值\步长决定:
VB常用的循环语句有For…Next,While…Wend和Do…Loop语 句。For…Next用于已知循环次数的情况,而While…Wend和 Do…Loop主要用于不知道循环次数的情况,在给定的条件满 足时执行循环体。
1
第5章 循环结构程序设计
本章内容及要求:
熟练掌握实现循环结构的For/Next语句、While/Wend语句 、Do/Loop结构的使用,掌握多重循环。
注意:累加和sum的初值置为0,而连乘积fact的初值 置为1,并且它们的赋值操作应该在循环体外、循环 开始前完成。
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循环语句的主要 区别在于:
相关主题