循环结构(While_Do循环)

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

四. While循环
1.While循环的格式:
While <条件表达式>
循环体
Wend
说明:<条件表达式>为关系或逻辑表达式。

2.执行过程:判断条件;条件满足,执行循环体语句;再继续判断条件,继续执行循环;
直到条件不满足,结束循环。

结合下面我们熟悉的For程序,来说明:
For I = 1 To 10
S = S + I
Next I
Print I
改用While循环表示:
I = 1 ‘初值
While I<=10 ‘循环条件
S=S+I
I=I+1 ‘变量自增,加步长
Wend
Print S
3.While循环的说明
For循环语句必须给出初值、终值、步长值;循环条件也就给出了。

While循环语句中只给出循环条件和终值,所以一定要注意给出初值和增量。

如上面程序段中的3处颜色部分语句。

例如:以下程序段循环几次,y值结果如何。

y = 2
While y < = 8
y = y + y
Wend
Print y
分析:
循环条件:y<=8
执行过程如下:
Y=2,y<=8 满足,执行语句:y = y + y,y=4;遇到Wend返回继续判断条件。

Y=4,y<=8 满足,执行语句:y = y + y,y=8;遇到Wend返回继续判断条件。

Y=8,y<=8 满足,执行语句:y = y + y ,y=16;遇到Wend返回继续判断条件。

Y=16,y<=8 不满足,结束循环。

循环执行了3次。

五.Do循环
Do循环是在While循环基础上做了一点修改。

整个格式结构和执行过程基本一样。

但增加了一种格式:条件不满足就循环,满足就结束循环。

格式1:Do While (条件)
循环体
Loop
I=1
Do While I<4
S=S+1
I=I+1
Loop
Print S
I=1
Do Until I>=40
S=S+1
I=I+1
Loop
格式2:Do
循环体
Loop While (条件)
说明:格式1、格式2和While基本一样,格式2不同在于先执行一次循环,再判断条件是否满足。

格式3:Do Until(条件)
循环体
Loop
格式4:Do
循环体
Loop Until(条件)
说明:Until和While的不同在于条件不满足才循环。

注意:为了避免循环条件的混淆,我们一般是将Until 循环转换为While 循环做题。

即将Until改为While,后面的条件改取相反值条件。

例题:下列VB程序段运行后,变量x 的值为()。

x = 3 :y = 77
Do
x = x + 2
Loop Until x > 8
A、7
B、8
C、9
D、10
解题:y=77,Sqr(y)约为8,循环条件Until x > 8,改为相反情况x<=8 循环,即:x = 3 :y = 77
Do
x = x + 2
Loop While x<=8
第1次循环:x= 3, x=x+2=5 , x <=8, 继续循环。

第2次循环:x= 5,x=x+2=7 , x <=8, 继续循环。

第3次循环:x= 7, x=x+2=9 , >8, 结束循环。

例题.假定有以下循环结构:
Do Until 0 ' 条件不满足循环, 条件满足就不循环循环体
Loop
则正确的描述是()。

条件:x>=10 , 0 就是条件为假
A.如果"条件"是一个为0的常数,则一次循环体也不执行
B.如果"条件"是一个为0的常数,则至少执行一次循环体
C.如果"条件"是一个不为0的常数,则至少执行一次循环体
D.不论"条件"是否为"真",至少要执行一次循环体
注:Until 条件表示《条件不满足循环》,也可以表示为:条件为0就循环。

六.循环的嵌套
在循环语句体内又包含了一个或多个循环称之为多重循环或循环的嵌套。

前面学过的For循环、While循环、Do循环互相之间都可以嵌套。

对于循环的嵌套,要注意以下事项:
(1)在多重循环中,各层循环的循环控制变量不能同名。

(2)外循环必须完全包含内循环,不能骑跨。

例如,以下的嵌套都是允许的:
(1)For I=1 To 10 (2)DO
For J=1 TO 20 For j=1 TO 20
Next J Next J
Next I Loop While I<=10
For循环嵌套时,且多个循环的Next语句连续出现时,Next语句可以合并成一条。

例题:假定有以下程序段:
For M=1 To 3
For N=5 To 1 Step -1
Print M * N
Next N
Next M
则语句Print M*N 的执行次数是()。

A.15
B.16
C.17
D.18
注:外循环M执行3次,内循环N执行5次;共循环3×5=15次。

例编写程序,任意输入两个正整数M和N,求这两个数M和N的最大公约数。

例如:24、16的最大公约数是8。

1 2 4 8
求最大公约数方法一:
两个数m和n同时从小的数开始向下除,找第一个能同时被整除的数。

例如:m =25 : n = 16
同时:
除16、除15、除14、除13、除12、除11、除10、除9、除8被整除,找到,退出。

m = V al(Text1)
n = V al(Text2)
For I = n To 1 Step -1
If m Mod I = 0 And n Mod I = 0 Then Exit For
Next I
Print "最大公约数是:"; I
例如:24和16
同时除16 15 14 13 12 11 10 9 8,同时整除,Exit For退出。

求最大公约数方法二:
For I = 1 To n
If m Mod I = 0 And n Mod I = 0 Then
p = I
End If
Next i
Print "最大公约数是:" ; P
例如:24和16
同时除12 3 4 5 6 7 89 10 11 12 13 14 15 16
方法三:
分析:求两数M和N的最大公约数,可以用“辗转相除法”,描述如下:共式:R = m mod n
例如:求 24和16的最大公约数。

①赋值:m = 24 , n = 16
②求余:R = m mod n ——8
③余数不为0,继续进行。

④m = n (=16) , n =R(=8)
⑤求余:R = m mod n ——0
⑥余数为0, 8(n)为最大公约数
如果第二次的余数不为0,则还要依照此方法继续进行下去,直到余数为0止。

表4.23 求 24和16的最大公约数
程序代码:
Dim m%, n%
m =Text1
n = Text2
R = m Mod n
Do While R <> 0
m = n
n = R
r = m Mod n
Loop
Print “大公约数是:”;n
完善程序:
Dim m%, n%
m =Text1
n = Text2
m1 = m : n1 = n
R = m Mod n
Do While r <> 0
m = n
n = R
R = m Mod n
Loop
Print m1; “和”;n1; “最大公约数是:”;n
说明:
语句m1=m:n1=n的作用是保留初始的m和n值。

因为初始输入的m、n值经过循环运算后,都被改变了。

如果输入的m小,是否要增加语句:If m<n Then t = m :m = n :n = t ?
例题1
For i = 1 To 4
For j = 1 To 5
Print "你好 ";
Next j
Print
Next i
执行过程:
I=1 , 内循环j循环5次,打印5个你好;
I=2 , 内循环j循环5次,打印5个你好;
I=3 , 内循环j循环5次,打印5个你好;
I=4 , 内循环j循环5次,打印5个你好;
例题2
For i = 1 To 4
For j = 1 To 5
Print i * j;
Next j
Print
Next i
执行过程:
I=1 , 内循环j循环5次,打印1、2、3、4、5
I=2 , 内循环j循环5次,打印1、2、3、4、5
I=3 , 内循环j循环5次,打印1、2、3、4、5
I=4 , 内循环j循环5次,打印1、2、3、4、5
说明:一般来说,外循环控制总的行数,内循环控制每行的具体个数。

相关文档
最新文档