资源预览内容
第1页 / 共72页
第2页 / 共72页
第3页 / 共72页
第4页 / 共72页
第5页 / 共72页
第6页 / 共72页
第7页 / 共72页
第8页 / 共72页
第9页 / 共72页
第10页 / 共72页
亲,该文档总共72页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Visual Basic程序设计主讲人:马正元山东大学物理微电子学院Date1Visual Basic程序设计第十讲第四章 程序流程(三)Date24.4 循环结构For Next 循环DoLoop 循环Date34.4 循环结构循环结构是算法语言中一种重要的 结构,它的应用非常广泛,把要重复执 行的语句放在循环结构中,就可避免多 次重复输入。在使用循环结构时,有些 循环的次数事先可以确定,这种循环称 为确定性循环。有些循环的循环次数是 不能事先确定,需要根据条件来决定是 否继续循环,我们称这种循环为不确定 循环。 Date4在VB程序设计语句中有二种 形式的循环结构。其中For循环结构用来设计循环次 数可以事先确定的循环结构。即循 环次数已知循环结构。而DoLoop循环结构一般用来设 计循环次数无法事先确定的循环结 构。 Date54.4.1 For循环结构 For 循环结构的一般形式:For 循环控制变量= 初值 To 终值Step 步长语句组1 Exit For 循环体语句组2Next 循环控制变量Date6For 循环结构 -格式 说明:For循环以For语句开始,以Next语句结束。循环变量用来控制循环次数;初值代表循环变量的初始被赋的值;终值代表循环变量最终能继续进行循环的值 ;步长代表每循环一次循环变量增长的值。Date7循环的次数可以从循环初值、终值、和 步长计算出来:R=INT(终值-初值+步长)/步长)例如: For I=1 To 10 Step 2循环次数 R=INT(10-1+2)/2)=INT(5 .5)=5For I=5.0 To 25. Step 0.5R=INT(25.-5.0+0.5)/0.5)=INT(41.0)=41For循环结构-循环次数的计算Date8For循环结构 -循环结构的一些规定1、循环变量初值 、终值和步长分别可以是常数、变量和表达式。如果是变量,则它应是预先被赋值。如果是表达式,则应先计算表达式的值。2、初值 、终值和步长的值可以为正或负,初值 、终值可以为零。但步长不能为零。例如: For I= -1 To 3 Step -1的循环次数为: R=INT(-3-(-1)+(-1)/-1)=3。Date9即当I的值为-1,-2,-3时,执行正常 循环,当I的值变成-4时不再执行循环时 。3、脱离循环的条件是:循环变量沿变化的方向超过终值。 如果步长的值为正,则“超过”意味着 “大于”,如果步长为负,则“超过” 意味着“小于”。For 循环结构-循环结构的一些规定Date104、如果计算出循环次数R0,则执行循环体。 4、执行终端语句时,循环变量增值步长。 循环次数R-1。 5、返回前面步骤3,重复执行步骤3,4。For循环结构-循环结构的执行过程Date136、其中Exit For为在满足一定条件下退出 For循环结构。 若For循环的语句为: For 循环变量=e1 To e2 Step e3循环体 Next 循环变量则其执行过程可用下页的流程图表示:For循环结构-循环结构的执行过程Date14图4-15 For循 环执行 过程流 程图.计算e1,e2,e3的值e1=循环变量计算应循环次数RR0执行循环体循环次数R减1 循环变量增值e3执行Next语句的下一个语句NY当R jYN输出n为素数 输出n为非素数 i = i+1 图4-17 判断自然数n 是否为素数的 程序流程YNDate18(3)编写代码 编写单击Command1命令按钮“判断”所执 行的代码 Private Sub Command1_Click()Dim i As Long, j As Long, n As Longn = Val(Text1.Text)j = Clng(Sqr(n)Debug.Print jDate19For i = 2 To jIf n Mod i = 0 Then Exit ForNext iDebug.Print iIf i j ThenLabel2.Caption = Text1.Text 表示从第2* i 列开 始输出内容。编写代码如下:Date32Option Explicit Private Sub Command1_Click() Dim a As String, i As Integer, j As Integer a = “*“ Form1.FontSize = 14For i = 1 To 10Print Tab(2 * i);Print aNext i End Sub 表示从每 一行的第 2* i 列开 始输出变 量a的值 。 Date33例4-11在窗体上输出下列图案Date34问题分析:该图案共有十行,每行有不同的星号 。第一行有一个“*”,第二行有三个“*”, 第三行有五个“*”,要想输出该图案应 使用双层 For 循环结构,外层循环决定输出 的行数,内层循环决定每行输出的星号数 。可以先用变量a存放一个星号。使用语句 : a=“*”由于要输出的是一个等腰三角形,每 一行的起始位置比上一行位置少一列。因 此要使用Tab函数来确定每一行的起始位置 。语句Print Tab(18- i) ;表示从第18-i 列开始 输出内容。编写代码如下:Date35编写代码如下: Option Explicit Private Sub Form_Click()Dim a As StringDim i As Integer, j As Integera = “*“Form1.FontSize = 14Date36For i = 1 To 10Print Tab(18 - i);For j = 1 To 2 * i - 1Print a;Next jPrintNext i End Sub外循环决定 共输出几行内循环决定每行共 有几个“*”第一行是 1个“*”,第二行是3 个“*”,第n是 2*n-1个“*”。输出的位置Date37例4-12在窗体上输出乘法九九表Date38Option Explicit Private Sub Form_Click()Dim i As Integer, j As Integer, k As IntegerDim m As IntegerFontSize = 12Print Tab(25); “乘法九九表“Print: PrintPrint “* “;For i = 1 To 9Print Tab(i * 6); i;Next iPrint 输出表头Date39For j = 1 To 9Print j; “ “;For k = 1 To jPrint Tab(k * 6); j * k; “ “;Next kPrintNext jEnd Sub内循环决定输出乘积及个数外循环决定共输出几行Date40例4-13打印下列图案分析:上面的图案可分成两个等腰三角形 。上面的三角形有5行第1行为一个“*”,第 2行为三个“*”,第3行为五个第5行有 2*5-1个“*”。代码编写如下页所示。Date41Option Explicit Private Sub Form_Click()Dim i As Integer, j As IntegerDim a As StringFor i = 1 To 5Print Tab(20 - i);For j = 1 To 2 * i - 1Print “*“;Next jPrintNext i 输出上三角形Date42For i = 4 To 1 Step -1Print Tab(20 - i);For j = 1 To 2 * i - 1Print “*“;Next jPrintNext i End Sub输出下三角形Date434.4.3 Do Loop循环结构 Do Loop循环结构也是常用的循 环结构。对于一些无法事先确定循环次数 的程序,可用Do Loop型循环结构。 它的格式有两种: 格式1:先测型 Do While| Until Exit Do Loop Date44格式2:后测型Do Exit Do Loop While | Until Date452. 说明: (1)格式1中“Do While Loop语句”,是先测型当型 循环。即先判断While后面的条件 是否为“真”,如果为“真”则执行 循环体里面的各语句,如果为“假 ”,则退出循环,循环直到条件为 “假”终止。 Date46(2)格式2中“Do Loop While 语句”是后测型当型循环。与前 者的区别在于,它不管条件的真假, 都会先执行“Do”后面的语句,也就是 循环体,当执行到Loop While 语句时,再判断的真假,如果 为“真”则返回执行循环体里面的各语 句,如果为“假”,则退出循环,循环 直到条件为“假”终止。也就是说,它 至少执行循环体一次。Date47在两种格式中While语句都可以用 Until语句代替,它是直到条件为真时则终 止循环。注意While 语句后面的条件和 Until语句的条件正好互补。例如:求5!如果使用当型循环则While 后的条件 是(N5)。为了避免混淆,所以我们建议只 用Do While循环即可。 Date48(3)格式中 Exit Do 为可选项,在上面两种Do 循环结构中,可以有一个或多个Exit Do语句,以便在满足一定的条件下,随时退出循环体。下页中分别给出前测型Do WhileLoop 和Do Until Loop循环结构的逻辑框图。同学们可自己画出后测型的两种逻辑框图。Date49开始计算“条件”值“条件”为真吗?执行循环体结束YN开始计算“条件”值“条件”为真吗?执行循环体结束NYDo WhileLoop循环逻辑框图Do UntilLoop循环逻辑框图Date50【例4-14】任意输入一个自然数,编 程输出其各个因子。工程设计步骤 如下: (1)新建“标准EXE”工程,在出现 的界面上添加三个标签、一个文本 框、和两个命令按钮如图4-18所示 。 DoLoop循环举例Date51(2)设置窗体及控件的属性。标签1 的Caption属性为“请输入一个自然 数”;标签2的Caption属性为“N的 因子是:”;标签3的Caption属性 为空,在运行时赋值。另外标签3 的Autosize属性为True,以便在运 行时赋值能根据实际内容自动适应 。其他属性如下页图4-18所示。 Date52图4-18求自然数因子的工程界面及属性设置Date53输入一个数y图4- 19 输出某个自然数y的所有因子流程图i=2y Mod i=0While y 1If y Mod i = 0 Thenx = x & “* “ & Str(i) & Chr(13)y = y iElsei = i + 1End If LoopLabel3.Caption = xLabel2.Caption = Text1.Text & “的因子是:“ End Sub为找下一个 因子做准备 。Date56(4)运行结果。按F5执行工程,当 出现运行界面时,从文本中输入一 个自然数,然后单击命令按钮“计 算”就会得到如图4-20所示的结果 。即在标签3中输出了自然数的各 个因子相乘的结果;另外,标签2 的内容也根据输入的数自动改变如 图4-20所示。 Date57图4-20 求自然数因子的运行结果 Date58【例4-15】用牛顿迭代
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号