VisualBasic 程序设计教程 教学课件 ppt 作者 刘莲英 第6章 循环结构程序设计

上传人:E**** 文档编号:89181331 上传时间:2019-05-20 格式:PPT 页数:30 大小:289KB
返回 下载 相关 举报
VisualBasic 程序设计教程 教学课件 ppt 作者 刘莲英 第6章 循环结构程序设计_第1页
第1页 / 共30页
VisualBasic 程序设计教程 教学课件 ppt 作者 刘莲英 第6章 循环结构程序设计_第2页
第2页 / 共30页
VisualBasic 程序设计教程 教学课件 ppt 作者 刘莲英 第6章 循环结构程序设计_第3页
第3页 / 共30页
VisualBasic 程序设计教程 教学课件 ppt 作者 刘莲英 第6章 循环结构程序设计_第4页
第4页 / 共30页
VisualBasic 程序设计教程 教学课件 ppt 作者 刘莲英 第6章 循环结构程序设计_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《VisualBasic 程序设计教程 教学课件 ppt 作者 刘莲英 第6章 循环结构程序设计》由会员分享,可在线阅读,更多相关《VisualBasic 程序设计教程 教学课件 ppt 作者 刘莲英 第6章 循环结构程序设计(30页珍藏版)》请在金锄头文库上搜索。

1、1/30,第 6 章,本章主要内容 6.1 循环结构程序示例 6.2 For.Next语句 6.3 DoLoop语句 6.4 循环的嵌套多重循环结构 6.5 GoTo语句 6.6 循环结构程序举例,循环结构程序设计,2/30,在Visual Basic中,实现循环结构的语句主要有: ForNext语句 Do While/UntilLoop DoLoop While/Until语句 WhileWend语句,第6章 循环结构程序设计,3/30,6.1 循环结构程序示例,【例6-1】编程计算1+2+3+n的值。 算法见图:,4/30,程序代码,Private Sub Form_Click() Dim

2、 sum sum End Sub,5/30,6.2 For.Next语句,1. For.Next语句的语法格式 For 循环变量 = 初值 to 终值 Step 步长 语句序列 Next 循环变量 例如:求1100奇数的和。,For i = 99 To 1 step -2 sum = sum + i Next i,For i = 1 To 99 step 2 sum = sum + i Next i,缺省步长为1,6/30,说明, 如果想提前退出For循环,使用Exit For语句,并且一般应同选择结构一起出现在循环体中。, 关于步长,7/30,2. For.Next语句的简单应用,【例6-2

3、】求n! ,即计算p=123n的值。 思路:求阶乘与求累加的运算处理过程类似,只要将“+”变为“*”。 程序中设置变量i 表示乘数,初值为1,终值为n(n是循环控制终值,需要从键盘输入);变量p 表示累乘器,每次循环令p = p*i。,8/30,程序代码如下:,Private Sub Form_Click() Dim i%, n%, p& p = 1 n = Val(InputBox(“请输入n:“) For i = 1 To n p = p * i Next i MsgBox n & “!=“ & p, , “求阶乘“ End Sub,9/30,1. DoLoop语句的语法格式 当型循环(先

4、判断)的语法格式 Do While|Until 条件 语句序列 Loop,6.3 DoLoop语句,图6-5 Do WhileLoop 图6-6 Do UntilLoop,10/30,6.3 DoLoop语句(续),例如:计算1+2+3+n的值,程序段如下: sum = 0 累加前变量sum为0 i = 1 给控制循环的变量赋初值 Do While i = 100 sum = sum + i i = i + 1 Loop,Do Until i100,11/30,6.3 DoLoop语句(续), 直到型循环(后判断)的语法格式 Do 语句序列 Loop While|Until 条件,12/30,

5、6.3 DoLoop语句(续),例如:计算1+2+3+n的值,程序段如下: sum = 0 累加前变量sum为0 i = 1 给控制循环的变量赋初值 Do sum = sum + i i = i + 1 Loop While i = 100,Loop Until i100,13/30,2. Do.Loop语句的简单应用,【例6-4】求两个整数的最大公约数和最小公倍数。 思路:两个数的最小公倍数为两数乘积除以最大公约数。最大公约数使用辗转相除的方法求解。 辗转相除法:如图6-9所示 以24和60为例: 6024 余数:12 2412 余数:0 结果:最大公约数为12, 最小公倍数为246012=

6、120,14/30,求最大公约数的算法,15/30,Private Sub Form_Click() Dim n%, m%, x%, r%, t% m = Val(InputBox(“m=“) n = Val(InputBox(“n=“) x = m * n If m 0 Print “最大公约数=“, m Print “最小公倍数=“, x / m End Sub,16/30,格式: While 条件 语句序列 Wend,3. While.Wend语句,While I = 100 S = S + I I = I + 1 Wend,该语句的功能与Do While .Loop实现的循环完全相同。

7、,例如: Do While I = 100 S = S + I I = I + 1 Loop,改写后,17/30,6.4 循环的嵌套多重循环结构,如果在一个循环内完整地包含另一个循环结构,则称为多重循环或循环嵌套,嵌套的层数可以根据需要而定。 嵌套一层称为二重循环,嵌套二层称为三重循环。 前面介绍的几种循环控制结构可以相互嵌套。,18/30,循环的嵌套举例,【例6-6】打印九九乘法表。 Private Sub Form_Click() For i = 1 To 9 For j = 1 To i Print Tab(j - 1) * 5 + 1); i * j; Next j Print Nex

8、t i End Sub,外层循环语句,内层循环语句,19/30,循环的嵌套举例,【例6-7】编程序,输出如图6-12所示的图形。,一共有4 行,每行由空格和“”字符组成,空格数按行增加, 按行减少 变量 i 控制输出行数, 从1变化到4 变量 j 控制输出每行的个数,j 从1变化到 9-2*i,每次输出一个,占个字符位置,软键盘的特殊符号中有 使用双重循环实现,思路:,20/30,算法和程序:,Private Sub Form_Click() Dim i%, j% For i = 1 To 4 Print spc(2 * i); For j = 1 To - 2 * i Print “; Ne

9、xt j Print Next i End Sub,21/30,形式: GoTo 标号|行号 作用:无条件地转移到标号或行号指定的那行语句执行。 标号:是一个字母开头的字符序列,以冒号(:)结尾。必须放在行首。 行号:是一个数字序列,在使用行号的模块内,行号必须唯一,且放在行首。 例如: If Then GoTo loop1 Else End If loop1: ,6.5 Goto 语句,尽可能少用或不用 Goto语句!,22/30,【例6-8】用迭代法求a的平方根。 已知求平方根的迭代公式为:,6.6 循环结构程序举例,算法思想如下: 假定初值x0=a/2(估计值),求得x1,x1比初值x0

10、更接近所求的值x; x1x0,重新求得x1,重复这一过程直到 |x1-x0|(某一给定的精度)。此时可将x1作为问题的解。,23/30,Private Sub Form_Click() Dim x0 As Single, x1 As Single, a As Single a = Val(InputBox(“请输入一个数a=?“) If Abs(a) 0.000001 Then 此时a=0 x1 = 0 ElseIf a 0 Then Print “Data Error“ Exit Sub Else,程序代码如下,24/30,x0 = a / 2 x1 = 0.5 * (x0 + a / x0

11、) Do While Abs(x1 - x0) 0.000001 x0 = x1 为下一次迭代作准备 x1 = 0.5 * (x0 + a / x0) Loop End If Print a x1 End Sub,x1 = a / 2 Do x0 = x1 x1 = 0.5 * (x0 + a / x0) Loop While Abs(x1 - x0) 0.000001,25/30,6.6 循环结构程序举例(续),【例6-9】判断一个数是否为素数。 算法思路: 将N分别除以2,3,N-1,若都不能整除,则N为素数。 因为N=Sqr(N)*Sqr(N),所以,当N能被大于等于Sqr(N)的整数整

12、除时,一定存在一个小于等于Sqr(N)的整数,使N能被它整除,因此只要判断N能否被2、3、Sqr(N)整除即可。,26/30,程序代码如下,Private Sub Form _Click() Dim m%, j%, k% m = Val(InputBox(“m=?“) If m = 0 Or m = 1 Then MsgBox m & “不是素数“ Else k = Int(Sqr(m) For j = 2 To k If m Mod j = 0 Then Exit For Next j,27/30,If j k Then MsgBox m & “是素数“ Else MsgBox m & “不

13、是素数“ End If End If End Sub,28/30,【例6-10】编程求解百钱买百鸡问题。鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何? 思路:设变量x、y、z分别表示鸡翁、鸡母、鸡雏的数量,根据题目要求,可以得到如下两个方程: x+y+z=100 5x+3y+z/3=100 当给定一组x、y、z后,判断上面两个方程是否成立,如果成立则得到一组解。用穷举法找出所有满足条件的x、y和z即可。,6.6 循环结构程序举例(续),29/30,Private Sub Form_Click() Dim x%,y%,z% Print “公鸡“, “母鸡“, “

14、小鸡“ For x = 1 To 100 For y = 1 To 100 For z = 1 To 100 If (5 * x + 3 * y + z / 3 = 100) And (x + y + z = 100) Then Print x, y, z End If Next z Next y Next x End Sub,代码可以优化!,30/30,由于z=100-x-y,因此可以省去z循环而用二重循环实现。修改后的循环结构如下: For x = 1 To 20 For y = 1 To 33 z = 100 - x - y If (5 * x + 3 * y + z / 3 = 100) Then Print x, y, z End If Next y Next x,

展开阅读全文
相关资源
相关搜索

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

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号