页数:37页文件大小:396.8 KB来源: VB程序设计ppt课件
本课件讲解循环结构程序设计,先给出循环结构三要素,再分别介绍For…Next、While...Wend与Do…Loop三种循环的格式与执行过程,说明多重循环的书写规则,最后归纳累加连乘、穷举、递推与求最值等常用算法。
第6章 循环结构程序设计
第6章循环结构程序设计▲*本章要点:For...Next循环While...Wend循环Do...Loop循环
引入:重复执行的代码段
Dim S As IntegerS=0S=S+1S=S+2……S=S+(n-2)S=S+n为解决某问题,可能某一段代码需要有条件的连续重复执行许多次,这就是循环程序结构。
需重复执行的一段代码,我们称之为循环体。循环控制结构问题1:计算S= 1+2+3+······+nS=S+nn=n+1S=S+nn=n+1S=0:n=1FTn在终值内
循环结构三要素
6.1 For…Next循环结构
初值循环变量6.1For…Next循环结构1.格式For<循环变量>=<初值>To<终值>[Step<步长>]<语句组1>[Exit For]<语句组2>Next[<循环变量>]循环变量值超过终值?
执行循环体循环变量+步长循环变量后续语句YesNo2.功能:执行过程如流程图所示
For…Next循环的说明
For…Next循环执行结果
例:判断以下程序段的执行结果:
For i = 5 To 1 Step-1 Print i * i; Next iPrint Print i例:判断以下程序段的执行结果:X = 6 For K = 1 To 10 Step-2X = X + K Next K Print K,XK=1;超过终值不进入循环累加求和示例
Text1Label3累加分析:累加器(变量)初值S=0循环体(重复执行)S=S+I (I=1,2,…,N)
Private Sub Command1_Click() Dim N As Integer, I As Integer, S As IntegerN = Val( Text1.Text)S = 0 For I = 1 To NS = S + I Next I Label3.Caption = S End Sub【例6-1】求1+2+3+4+…+N思考:累加与累乘练习
【例6-2】求N!
【例6-2】求N!( N!=1×2×3×…×N)累乘分析:初始化:F=1循环体:F=F×I (I=1,2,3……N)程序:
Private Sub Command1_Click() Dim N As Integer, I As Integer, F As LongN = Val( Text1.Text)F = 1 For I = 1 To NF =F* I Next I Text2.Text = F End Sub思考:累乘练习
思考:1.求1×3×5×7……(共N项)。2.求:3.求:
6.2 While...Wend循环结构
6.2While...Wend循环结构问题:求1+2+3+4+…小于某数N的最大值,N由用户指定。特点:已知循环条件、未知循环次数,用While...Wend循环结构实现较方便1.格式While <条件>[<语句组>]Wend2.功能F条件?语句组T
用While...Wend求累加和
问题1:计算s= 1+2+3+······+100(用While Wend改写如下)Dim s As Integer, count As Integers = 0 ‘初始化count = 1 ‘初始化Whilecount <= 100‘循环开始s = s + count‘循环体语句count = count + 1‘循环体语句Wend‘循环结束print s
【例】用格里高利公式求π
6.3.1 Do…Loop While
Do〈循环体〉[Exit Do]〈循环体〉Loop While〈条件表达式〉6.3.1 Do … Loop While|Until语句TF条件循环体Do〈循环体〉[ExitDo]〈循环体〉LoopUntil〈条件表达式〉TF条件循环体
6.3.2 Do While…Loop
Do While〈条件表达式〉〈循环体〉[ Exit Do]〈循环体〉 Loop6.3.2 Do While|Until … Loop语句TF条件循环体DoUntil〈条件表达式〉〈循环体〉[ExitDo]〈循环体〉 LoopFT条件循环体用Do While改写累加程序
问题1改造成DoWhile结构:PrivateSubForm_Click()DimSum,CountAsIntegerSum=0Count=1DOWhileCount<=100Sum=Sum+countCount=Count+1LOOPText1.Text=SumEndSub当型格式问题1改造成DoUntil结构:PrivateSubForm_Click()DimSum,CountAsIntegerSum=0Count=1DOUntilCount>100Sum=Sum+countCount=Count+1LOOPText1.Text=SumEndSub直到型格式
【例6-5】按精度累加求近似值
【例6-5】求直至最后一项的值≤10-4为止。分析:用Sum表示累加和,初值:Sum=0重复:Sum=Sum+Term用N表示1,3,5,7,……初值:N=1重复:N=N+2用Term表示每一项,则Term=1/(N*N)归纳:初始化N=1,Sum=0重复Term=1/(N*N) , Sum=Sum+Term ,N=N+2循环终止条件Term<=0.0001
【例6-5】的代码实现
设单击窗体时开始计算,结果打印在窗体上。
Private Sub Form_Click()N = 1 : Sum = 0DoTerm = 1 / (N * N)Sum = Sum + TermN = N + 2 Loop Until Term <= 0.0001 Form1.FontSize = 12'设窗体的字体CurrentY = 200'设当前显示位置 Print "运算结果为:";Sum Print "最后一项的值为:";Term End Sub【例6-7】求最大公约数与最小公倍数
【例6-7】的界面设计
设计界面如下图所示:Text1Text2Label3Label4Command1Command2
【例6-7】的界面设计(代码)
Dim A As Integer, B As Integer, N As Integer, _M As Integer, R As Integer
Private Sub Command1_Click()M = Val( Text1.Text):N = Val( Text2.Text)A = M:B = NR = M Mod N Do While R <> 0M = NN = RR = M Mod N Loop Label3.Caption = N End Sub Private Sub Command2_Click()Label4.Caption = A * B / N End Sub6.4 多重循环
多重循环的书写规则
For ii =1 To 10 For jj=1 To 20… Next ii Next jj For ii =1 To 10 For ii=1 To 20… Next ii Next ii For ii =1 To 10 For jj=1 To 20… Next jj Next ii For ii =1 To 10… Next ii For ii =1 To 10… Next ii【例6-9】求累加和数列
Private Sub Form_Click()N = Val( Text1.Text)Sum = 0 For I = 1 To NSum1 = 0 For J = 1 To ISum1 = Sum1 + J Next JSum = Sum + Sum1 Next I Text2.Text = Sum End Sub6.5 循环结构程序举例
6.5循环结构程序举例自学
6.6常用算法
1.累加、连乘1~100的5或7的倍数的和Sum=0Fori=1To100IfiMod5=0OriMod7=0ThenSum=Sum+iEndIfNextiPrintSum3~10的乘积t = 1Fori=3To10t=t*iNextiPrintt思考:若把循环体前面置各变量初值的语句放在循环体内,程序运行时会产生什么情况?
算法是对某个问题求解过程的描述.
练习:求自然对数e的近似值
练习[6-15]求自然对数e的近似值,要求误差小于10-6,近似公式为:
Private Sub Form_Click() Dim i%,n&, t!, e!e = 0 : n = 1‘ e存放累加和、n存放阶乘i = 0 : t = 1‘ i计数器、t第i项的值 Do While t > 0.00001e = e + t : i = i + 1‘累加、连乘n = n * i : t = 1 / n Loop Print "计算了"; i; "项的和是"; e End Sub该例题涉及两个问题:(1)用循环结构求级数和的问题。本例根据某项值的精度来控制循环的结束与否。(2)累加:e=e+t循环体外对累加和的变量清零e=0连乘:n=n*i循环体外对连乘积变量置1n=1穷举法
穷举法(代码)
2.穷举法
Private Sub Form_DblClick() Dim x%, y%, z%Forx = 1 To 19 For y= 1 To 33z = 100-x-yIf5 * x + 3 * y + z / 3 = 100Then Print "公鸡:"; x, "母鸡"; y, "小鸡"; z End If Next yNextx End Sub递推法
求最大值与最小值
4.求最小、最大值在若干个数中求最大值,一般先假设一个较小的数为最大值的初值,若无法估计较小的值,则取第一个数为最大值的初值;然后将每一个数与最大值比较,若该数大于最大值,将该数替换为最大值;依次逐一比较。
例:随机产生10个100~200之间的整数,求最大值。
Private Sub Command1_Click()Max = 100 For i = 1 To 10x = Int(Rnd * 101 + 100) Print x; If x > Max Then Max = x Next iPrint Print "最大值="; Max End Sub本章小结
1.For…Next循环结构For<循环变量>=<初值>To<终值>[Step<步长>]<语句组1>[Exit For]<语句组2>Next[<循环变量>]
第6章 小结(续)
2. While...
Wend循环结构 While <条件>[<语句组>] WendDo [{While|Until}<条件>][<语句组1>][ Exit Do][<语句组2>] LoopDo[<语句组1>][ Exit Do][<语句组2>] Loop [{While|Until}<条件>]3.Do… Loop循环结构上机练习
【练习6-11】、【练习6-16】。增加题:打印以下格式乘法九九表。思考:打印上三角或下三角程序如何改动?要打印下三角?
For i = 1 To 9 For j = 1 To 9se = i & "×" & j & "=" & i * j Print Tab((j-1) * 9 + 1); se; Next jPrint Next i下载地址:{{downurl}}
{{{a}}}
{{#b}}{{{b}}}
{{/b}} {{/title}} {{#nolog}}登陆注册
{{/nolog}} {{#djsx}}点我刷新
{{/djsx}} {{#gocz}} {{/gocz}} {{#ffqr}} {{/ffqr}}