第五章 循环结构.ppt

上传人:boatfragile160 文档编号:380128 上传时间:2018-10-09 格式:PPT 页数:30 大小:523.50KB
下载 相关 举报
第五章 循环结构.ppt_第1页
第1页 / 共30页
第五章 循环结构.ppt_第2页
第2页 / 共30页
第五章 循环结构.ppt_第3页
第3页 / 共30页
第五章 循环结构.ppt_第4页
第4页 / 共30页
第五章 循环结构.ppt_第5页
第5页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、第五章 循环结构,教学内容 循环语句 Timer控件和滚动条的使用,教学目标 掌握循环语句 掌握Timer控件和滚动条,5.1 循环语句,VB.Net主要提供了三种循环控制方式:ForNext WhileEnd While DoLoop,5.1.1 ForNext循环,For循环语句通常用于将一组语句重复执行指定的次数。 For循环的重复次数,可以由设定一个计数变量及其上、下限来决定。 语句形式如下(方括号中的内容为可选项): For 循环变量 = 初值 To 终值 Step 步长 语句块 Exit For 语句块 Next 循环变量 其中: 循环变量为必选项。其类型通常是 Integer,但

2、也可以是支持大于号 ()、小于号 () 和加号 (+) 的任何基本数值类型。 步长,每次循环后循环变量的增量。一般为正,初值小于终值;若为负,这时初值大于终值;如果省略了该项,则步长的默认值为1。 语句块是放在 For 和 Next 之间的一条或多条语句,亦被称为循环体。它们将被执行指定的次数。 Exit For,当遇到该语句时,退出循环(无论是否执行完指定次数),执行 Next 语句后面的语句。,例如:编写一个计算正整数的阶乘的程序。对任意正整数K,K!符号代表阶乘表达式,我们有:为了解决这个问题,可以用一个For循环中的循环变量表示K的变化范围,在循环体中计算当前K值的阶乘。新建工程Fac

3、torial,在窗体上添加一个Button和一TextBox控件。,为BtnStart按钮的click事件过程,添加下面的代码: Private Sub BtnStart_Click(ByVal_ sender As System.Object, _ ByVal e As System.EventArgs) Handles BtnStart.ClickDim lngResult As LongDim i As Integer TxtOutput.Clear()lngResult = 1For i = 1 To 15lngResult = lngResult * iTxtOutput.Text

4、+= i.ToString() + “!=“ + lngResult.ToString() _+ vbCrLfNext End Sub,阶乘程序的运行结果,如果一个三位数的个位数、十位数和百位数的立方和等于该数自身, 则称该数为水仙花数。编一程序求出所有的水仙花数。显然,水仙花数要在100999的范围内去找。我们对于这个范围内所有的数一一检验其是否符合水仙花数的定义。项目的建立同上,代码如下: Private Sub BtnStart_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles BtnS

5、tart.ClickDim intMumber As IntegerDim intHandred As IntegerDim intTen As IntegerDim intSingle As IntegerTxtOutput.Clear()For intMumber = 100 To 999intHandred = intMumber 100intTen = (intMumber 10) Mod 10intSingle = intMumber Mod 10If intMumber = intHandred 3 + intTen 3 + intSingle 3 ThenTxtOutput.Te

6、xt += intMumber.ToString() + “ = “ + _ intHandred.ToString() + “3 + “ + intTen.ToString() _+ “3 + “ + intSingle.ToString() + “3“ + vbCrLfEnd IfNext End Sub,水仙花数的运算,5.1.2 While.End While 循环,While.End While 循环用于对一条件表达式进行计算,如果值为True,则执行循环体。每一次循环结束后,重新计算条件表达式。 While.End While与For循环的差别在于: For循环循环次数是不变的,执

7、行一定次数后结束循环。While循环的循环次数依赖与条件表达式的值,在不同情况下循环次数不一样。While型循环结构使用While语句实现,语句形式如下:While 语句块End While 其中: 条件表达式的值必须为 True 或 False。 如果表达式的值为 Nothing,则结果将作为 False 处理。 当表达式的值True时,则执行While后的循环体直到遇到 End While 语句。随后控制返回到 While 语句并再次检查表达式结果。如果表达式仍为 True,则重复上面的过程。如果为 False,则从 End While 语句后面的语句开始执行。在设计While型循环时要注

8、意在其循环体内应该在适当的时候使条件表达式的值为False, 确保在执行了一定次数之后可以退出循环, 否则就成了“死循环”, 一旦程序进入这里, 将永远在循环结构中反复执行而无法结束。,编写一程序,计算1到100的整数和(1+2+3+100)。这道题非常简单,可以通过公式(1+100)*100/2立刻计算出结果。但这里采用逐项累加算法。新建和Factorial同样界面的项目,为BtnStart的Click事件编码如下: Private Sub BtbStart_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs)

9、 Handles BtbStart.ClickDim intSum As IntegerDim i As IntegerintSum = 0i = 1While i = 100intSum = intSum + ii = i + 1End WhileTxtOutput.Text = “1 + 2 + 3 + . + 100 = “ + intSum.ToString() End Sub,累加程序的运行结果,5.1.3 DoLoop循环,Do循环同样也是通过一个条件表达式来控制循环次数的循环结构。此种语句有两种语法形式,条件前置的DoLoop结构和条件后置的DoLoop结构: Do While

10、| Until 语句块 Exit Do 语句块 Loop Do语句块 Exit Do 语句块 Loop While | Until 其中:当条件表达式前置时,先计算表达式的值,因此当表达式的值在第一次计算时就为False时,循环体一次也不执行。当条件表达式后置时,先执行一次循环体再计算表达式的值,因此循环体至少被执行一次。关键字 While 和 Until必选其一且只能选一个。While 用于指明条件表达式的值为True时就执行循环体中的语句;Until正好相反。Exit Do 语句将执行 Loop 语句后面的语句。也就是使得循环立即结束。可以在 Do 循环中的任何位置放置任何数量的 Exit

11、 Do 语句。,利用Do循环求 的近似值。利用公式: 计算,直到最后一项的绝对值小于104为止。新建和前面一样的项目,为BtnStart的Click事件编写如下代码: Private Sub BtnStart_Click(ByVal sender As System.Object,_ ByVal e As System.EventArgs) Handles BtnStart.ClickDim dblPI As Double = 0Dim dblTolerance As Double = 1Dim intTerm As Integer = 1Dim shortSign As Short = 1D

12、odblPI += dblToleranceintTerm += 2shortSign = -shortSigndblTolerance = shortSign / intTermLoop While Math.Abs(dblTolerance) 0.0001dblPI *= 4TxtOutput.Text = “pi = “ + dblPI.ToString() End Sub,Pi值的计算结果,5.2 Exit 语句,在程序中强制改变程序流程。如:强制跳转至某个程序,或强制脱离循环。VB .Net提供了Exit语句来满足这些要求。语句形式如下: Exit Do | For | Functi

13、on | Property | Select | Sub | Try | While 使用中途跳转语句,可以为某些循环体或过程设置明显的出口,能够增强程序的可读性,符合结构化程序设计的要求。,Exit For 立即退出所在的For循环。继续执行Next语句后面的语句。只能在For.Next或For Each.Next循环内使用Exit For。当在嵌套的For循环中使用Exit For时,Exit For会将控制传送到Exit For所在循环的外层循环。 Exit While 立即退出所在的While循环。继续执行End While语句后面的语句。只能在While 循环内使用Exit Whil

14、e。当在嵌套的While循环中使用Exit While时,Exit While将控制传送到Exit While所在循环的外层循环。 Exit Do 立即退出所在的Do循环。继续执行Loop语句后面的语句。只能在Do循环内使用 Exit Do。在嵌套的Do循环中使用Exit Do时,Exit Do会将控制传送到 Exit Do所在循环的外层循环。 Exit Sub 立即退出所在的Sub过程。继续执行调用Sub过程的语句后面的语句。只能在Sub 过程内使用 Exit Sub。 Exit Function 立即退出所在的Function过程。继续执行调用Function过程的语句后面的语句。只能在F

15、unction过程内使用Exit Function。 Exit Property 立即退出所在的Property过程。继续执行调用Property过程的语句,即继续执行请求或设置属性值的语句。只能在Property过程内使用Exit Property。 Exit Select 立即退出所在的Select Case。继续执行End Select语句后面的语句。只能在Select Case 语句内使用Exit Select。 Exit Try 立即退出所在的Try或Catch块。如果有Finally块,则继续执行Finally块,否则继续执行End Try语句后面的语句。只能在Try.Catch.

16、Finally语句内使用Exit Try。,5.3 多重循环,多重循环:一个循环体内包含一个完整的循环结构,内嵌的循环中还可以包含其他循环。 前面介绍的三种循环语句都可以嵌套。例如,要统计用1、2、3、4这四个数可以组成的四位数。列出所有可能组成的四位数(四位数字可以相同),并统计出四位数的个数。这个问题可以用四重循环来解决每层循环的初值为1,终值为4,总的循环次数就是所有四位数的个数。,新建一个和前面一样的项目,并将ScrollBars的属性设置为VerticalBtnStart(目的是添加一个垂直滚动条)。BtnStrat的Click事件代码如下: Private Sub BtnStart

17、_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)_ Handles BtnStart.ClickDim i As IntegerDim j As IntegerDim k As IntegerDim l As IntegerDim intSum As Integer = 0Dim intNumber As IntegerFor i = 1 To 4For j = 1 To 4For k = 1 To 4For l = 1 To 4intNumber = 1000 * i + 100 * j + 10 * k +

18、 lintSum += 1TxtOutput.Text += intNumber.ToString() + “ “If intSum Mod 6 = 0 ThenTxtOutput.Text += vbCrLfEnd IfNextNextNextNextTxtOutput.Text += vbCrLf + “sum=“ + intSum.ToString() End Sub,4个数字可以组合成的4位数,又例:公元5世纪末,我国古代数学家张丘建在他编写的算经里提出了一个不定方程问题,世界数学史上称为“百鸡问题”。题目是这样的:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一。百钱买百鸡,间鸡翁、母

19、、雏各几何?译成现代汉语就是说每只公鸡价值5个钱,每只母鸡价值3个钱,每3只小鸡价值1个钱。现有100个钱想买100只鸡,问公鸡、母鸡和小鸡各应买几只?根据题意,设x,y分别为鸡翁,鸡母,鸡雏的数目,则可得如下方程:5x + 3y + z3100 x + y + z160三个未知数,只有两个方程,因此这是一个不定方程问题。,新建一个和前面同样界面的项目HundredCock,为BtnStart添加下列代码; Private Sub BtnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

20、 BtnStart.ClickDim intCock As IntegerDim intHen As IntegerDim intChicken As IntegerFor intCock = 1 To 20For intHen = 1 To 34 - intCockintChicken = 100 - intCock - intHenIf intCock * 5 + intHen * 3 + intChicken / 3 = 100 ThenTxtOutput.Text += “Cock:“ + intCock.ToString() + _“ Hen:“ + intHen.ToString() + “ Chicken:“ _+ intChicken.ToString() + vbCrLfEnd IfNextNext End Sub,百鸡问题,通过验证每一个可能的解,最终找到全部正确的解。因为20只公鸡的价钱是100元,33.3只母鸡的价钱是100元。就是说,100元钱最多能买20只公鸡或者34只母鸡。因此,循环的次数最大分别取到20以及34公鸡数。程序的运行结果如右。,5.4 其它辅助控制语句,5.4.1 GoTo语句,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学课件 > 大学教育

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1