VB编程6.0 循环结构
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
茂
名
院
学
与前面所学While 循环的不同
Private Sub Command1_Click() N = Val(Text1.Text)
VB
程
Sum = 0
序
设
计
i=1
——
While i<=100
For i = 1 To N
循
环
Sum=Sum+i
Sum = Sum + i
结
构
i=i+1
Wend
Next
结 构
F0 = F0 + F1
F1 = F1 + F0
Print F0 , F1
Next
End Sub
茂
名
院
学
【例4】判断一自然数其是否为素数。
*遍历法
VB
Clear
程 a=Val(inputbox(“请输入一自然数:”))
序
设
正常出口
计 For i=2 to a-1
i>a-1 素数
——
循 环 结 构
循环条件
程 序
While i<=100
设 计
Sum=Sum+i
循环变量增值
i=i+1
循环终值
——
循 环 结 构
Wend
循环体
Label3.Caption = Sum
End Sub
茂
名
院
学
❖特点: 先判断表达式,后执行循环体
❖说明:
VB
循环体有可能一次也不执行
程 序
循环体可为任意类型语句
设 计
退出while循环
茂
名
院
学
循环结构程序设计
VB
本章要点:
程
序 设
➢While ... Wend循环
计
➢For...Next循环
——
循
➢Do...Loop循环
环
结
构 特点: 重复相同或相似的操作步骤
结构: 循环体—要重复执行的语句序列。
循环控制部分—规定循环的重复条件或重复次数,确
定循环范围的语句
茂
名
院
学
§1
While循环结构(循环次数未知)
序
j=0
设
For i = 3 To 500
计 3. 在带水平滚动条文本框中显If 示(i 1M到od指3定=N0)之T间he所n 有能被3
——
循 和7同时整除的数。
环
结 构
For i=21 to n step 1 ?
Print i; j=j+1 If j = 10 Then j = 0: Print
——
循
环 格式一、二:在循环起始处判断条件,为当型循环
结
构 格式三、四:在循环终止处判断条件, 为直到型循环
茂
名
院
学
格式一:
Do While <条件>
[<语句组1>]
[Exit Do]
当循环格式:
While 循环条件
VB
程
语句块
序 设
Wend
计
执行过程:
——
循 环
(1) 判断循环条件是否为真
结
(2) 若是,执行循环体(语句块)
构
(3) 然后返回While语句
再次判断循环条件是否为真
(4)重复1~3步骤。
(5)否则,结束循环
循环条件 F T
语句块
茂
名
院
学
【例1】求1+2+3+4+…+N √
Label3.Caption = Sum End Sub
茂
名
院
学
【例2】求 N!( N!=1×2×3×…×N)
累乘分析:
初始化: F=i
循环体: F= F × i (i=1,2,3……N)
VB
程
程序:
序 设
Private Sub Command1_Click()
计
Dim N %, i As Integer, F! ’F AS Long
格式四: Do
[<语句组1>] [Exit Do] [<语句组2>] Loop Until<条件>
茂
名
院
学
2. 功能
使用While <条件>: 条件为True时,执行循环体
VB
条件为False时,退出循环
程
序 使用Until <条件>: 条件为False时,执行循环体
设
计
条件为True时,退出循环
N = Val(Text1.Text)
可以吗?
——
Sum = 0
循 环
For i = 1 To N
结 构
Sum = Sum + i
Next i
Label3.Caption = Sum 循环体的执行次数是多少 ?
End Sub
i=1执行多少次? i<=N执行多少次?
最后 i 的值是多少 ?
Text1 Label3
即满足递推关系
VB
——
程 序 设 计
算法:
循 环 结 构
Fn=Fn-1+Fn-2, (n>1) F0=0,F1=1
已知F0=0 : F1=1 F2=F1+F0 F3=F2+F1 F4=F3+F2 F5=F4+F3 ……
已知F0=0 : F1=1 F0=F1+F0 F1=F0+F1
F0=F1+F0 F1=F0+F1 ……
程 序
Print i ,
设 计
Next
i
Print “i=“, i
yes i>13
no
——
循
环 结
循环执行次数
构 输出 i的值分别为:
执行循环体(Print i ) i=i+3
2 5 8 11
出了循环输出为: i=14
后续语句 Print “i=“,i
茂
名
院
学
❖ 在循环体内对循环控制变量可多次引用;但最好不要
VB
N=Val(inputbox(“请输入一个数:”))
Байду номын сангаас程 序
max=N : min=N
设 计
For i=1 to 9
——
N=Val(inputbox(“请输入一个数:”))
循 环
if max<N then max=N
结 构
if min>N then min=N
Next
Print max , min
设 计
4:用For循环编程输出10行“**********”
——
循 环 结 构
茂
名
院
学
【例3】打印斐波那契(Fibonacci)数列的前20项
VB
斐波那契数列如下:
程 序
0,1,1,2,3,5,8,13,…
设 计
分析:
——
即从第三项起每一项是其前两项之和。
循 环 结 构
茂
名
院
学
斐波那契数列:
0,1,1,2,3,5,8,13,…
构
1 3 3 5 5 7 2k 1 2k 1
F=F *4*I*I/(2*I-1)/(2*I+1);循环变量I,循环终值K
茂
名
院
学
思考2:
1. 求12+22+32+42+……+1002
2. 求13+33+53+……+n3
VB
程 3. 求1-3+5-7+…+(-1)n+1(2n-1)
序 设
1.Sum=Sum+I*I; 3.Sum=Sum+(-1)^(I+1)*(2*I-1);
End if
Next
a=0
循环变量赋初值k=1
循环变量<=终值
F
K<=10
T
语句块
T Exit For
F
语句块
Next循环变量=循环变量+步长k=k+1
茂
名
院
学
3. 说明
(1)循环变量——数值变量
(2)初值,终值,步长——数值表达式
a=0 For k=1 to 10
a=a+k Next
VB
程 序
设 (3)步长
End Sub
正常情况:i= 1, 3, 5, 7, 9, 11, 13, 15, 17, 19
现在:i= 4, 9, 14, 19
茂
名
院
学
应用举例:
1:用For循环编程5+5+…..+5(20个5之和)
VB
2:用For循环编程计算s=1+2+3+…+100
程 序
3:用For循环编程同行输出10个“*”
——
条件表达式不成立,值为.F.
循
环
无限循环: While(.T.)
结
构
循环体
Wend
茂
名
院
学
【例2】显示1~10的平方 √
VB
Private Sub Form_Click()
程
k=1
运行结果:
序
设
While k<=10
计
1*1=1 2*2=4
Print str(k)+”*”+str(k)+”=“+3s*t3r(=k9*k)
也可以省略
茂
名
院
学
【例1】求1+2+3+4+…+N √
累加分析: 已知量:累加器(变量)初值 Sum=0 N(输入)
初值、终值和增量: 1、N、1
VB
重复执行(循环体) Sum=Sum+i (i=1,2,…,N)
程 Private Sub Command1_Click()
序 设 计
Dim N%, i As Integer, Sum初%值与终值换位
计
——
循 环
4. 求 1 1 1 (1)n1 1
13 5
2n 1
结 构
5. 求
1 1 1
1
12 23 34
n(n 1)
4. Sum=Sum+(-1)^(I+1)/(2*I-1); I=2,…,
茂
名
院
学
要注意:
❖ 出了循环,循环控制变量值的问题。
例程序段:
i=2
VB
For i=2 To 13 Step 3
——
循
k=k+1
环
结
Wend
构
End Sub
4*4=16 5*5=25 6*6=36 7*7=49
8*8=64
9*9=81
10*10=100
茂
名
院
学
§2
For循环结构(循环次数为已知)
1. 格式(For循环语句)
VB
For <循环变量>=<初值> To <终值> [Step <步长>]
程 序
<语句组1>
——
N = Val(Text1.Text)
循 环
F=1
结
For i= 1 To N
构
F=F*i
Next i
label3.caption = F
End Sub
text1 label3
茂
名
院
学
【例3】从键盘输入10个数,输出其中的最大值与最小值。
Private Sub Command1_Click()
VB
程
Text1
序
设 计
Label3
——
循 环 结 构
累加分析: 累加器(变量)初值 Sum=0 循环体(重复执行) Sum=Sum+i (i=1,2,…,N)
茂
名
院
学
Private Sub Command1_Click()
N = Val(Text1.Text) : Sum = 0
VB
循环初值
i=1
( If(i mod 21=0)print i;)E及nd显I示f 前边的内容
Next i
茂
名
院
学
§
3
Do…Loop循环结构(循环次数未知)
VB
问题: 求12+22+32+42+…小于某数N的最大值,N由用户
程
指定。
序
设 特点: 已知循环条件、未知循环次数,用Do … Loop循环
计
结构实现
——
循 环 结 构
计
> 0 ,初值< 终值(=1 时,可省略) < 0 ,初值> 终值 = 0 ,死循环
——
循 (4) 循环次数=Max{ Int(终值-初值)/步长 +1),0 }
环 结
构 (5)Exit For——退出循环,常放在条件语句中,又称 “非正
常出口”
(6)Next之后的循环变量应与For语句中的循环变量应一致,
设 计
[Exit For]
<语句组2>
循 环 体
——
循 环
Next [<循环变量>]
结
构
茂
名
院
学
2. 功能:
执行过程如流程图所示
VB
例:求1~1000的和,但当
程 序
和超过3000时停止。
设 计
s=0
——
For k=1 to 1000
循 环
s=s+k
结 构
if s>3000 then
Exit For
茂
名
院
学
打印斐波那契(Fibonacci)数列的前20项
斐波那契数列如下:
0,1,1,2,3,5,8,13,…
VB
即从第三项起每一项是其前两项之和。
程 序
分析: ……
设 Private Sub Form_Click()
计
F0 = 0 : F1 = 1
——
循
Print F0 , F1
环
For i= 1 To 9
对其赋值,否则影响原来的循环控制规律。√
VB
程 例 改变循环控制变量对循环的影响。
序 Private Sub Command1_Click()
设 计
j=0
For i = 1 To 20 Step 2
——
i=i+3
循 环
j=j+1
结
Print "第"; j; "次循环i="; i
构
Next i
Print "退出循环后i="; i
环 结
X=6
构
For K = 1 To 10 Step -2
X=X+K
Next K
Print K,X
茂
名
院
学
思考1:
1.求1×3 ×5 ×7……(共N项)。
VB
F=F*(2*I-1) ;循环变量I,循环终值N
程
序 设 计
2. 求: 1 1 1 1 1 3 5 2n 1
——
循 环 结
3. 求: 2 2 4 4 6 6 2k 2k
End Sub
茂
名
院
学
将初值赋给循环变量
例: 判断以下程序段的执行结果: 判断循环变量是否超过终值
For i = 5 To 1 Step -1
Print i * i;
VB
程
Next i
序
设 计
Print i
修改循环变量,继续判断循 环变量是否大于终值
——
循 例: 判断以下程序段的执行结果
iF a mod i=0 then 非
Exit For
正 常
Endif
出
口
Next
i<=a-1 不是素数
iF i>a-1 then
Print a,”是素数。”
Endif
茂
名
院
学
思考:
1. 在窗体上打印1、3、5、7、9、…、N。
VB
2. 在窗体上显示1到500之间所有能被3整除的数,每行
程 10个数。
茂
名
院
学
1. 格式
VB
程 序 设 计
格式一: Do While <条件>
[<语句组1>] [Exit Do] [<语句组2>] Loop
——
循 环
格式三:
结
Do
构
[<语句组1>]
[Exit Do]
[<语句组2>]
Loop While <条件>
格式二: Do Until <条件>
[<语句组1>] [Exit Do] [<语句组2>] Loop