第8章-程序VB循环结构程序设计ppt课件.ppt
《第8章-程序VB循环结构程序设计ppt课件.ppt》由会员分享,可在线阅读,更多相关《第8章-程序VB循环结构程序设计ppt课件.ppt(97页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第8章 循环结构程序设计我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物学习重点 ForNext语句、DoLoop语句、WhileWend语句、GoTo语句。循环语句的嵌套使用。掌握常用的循环结构算法。 我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物本章内容8.1 ForNext语句8.2 DoLoop语句8.3 WhileWend语句8.4 GoTo语句8.5 循环嵌套8.6 常用算法及实例本章小结我吓了一跳,蝎子是
2、多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物引言循环:重复进行某些相同或相近的操作 循环结构语句 : 程序自动重复执行代码段。 Visual Basic中的循环结构语句: ForNext语句 DoLoop语句 WhileWend语句 True 循环条件 循环体 False 我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8.1 ForNext语句 ForNext语句(也称步长循环语句) ,常用于在循环开始前能确定循环执行次数的情况。F
3、orNext语句格式如下:For 循环变量=初值 To 终值 Step 步长 语句块 Exit For 语句块Next循环变量功能:以指定次数来重复执行一组语句。 我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物示例代码 :Dim i As IntegerFor i=1 To 10 Step 1 Print i ;Next i执行以上代码将在窗体上输出结果如下:1 2 3 4 5 6 7 8 9 10For 循环变量循环变量=初值初值 To 终值终值 Step 步长步长 语句块语句块 Exit For 语句
4、块语句块Next循环变量循环变量我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物关于循环的几个概念:n循环变量又称为“循环控制变量”、“控制变量”或“循环计数器”,是用做循环计数器的数值变量。这个变量必须为数值型变量,不能是逻辑型数据或数组元素。 n循环体 被重复执行的代码段。n循环次数循环体被重复执行的次数。循环次数必须是有限的,否则称程序陷入“死循环”我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物Dim i As
5、IntegerFor i=1 To 10 Step 1 Print i ;Next i说明:n上述代码中整型变量i是循环变量。 n初值、终值和步长也必须是数值表达式。步长可以是正数或负数,仅当步长为1时,“Step 步长”可以省略。当步长是正数或零时,要求循环变量小于或等于终值;当步长是负数时,要求循环变量大于或等于终值。若不符合以上情况时,不能进入循环执行语句块。在上述代码中循环变量i的初值是1,终值是10,步长是1。 我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物Dim i As IntegerFor
6、 i=1 To 10 Step 1 Print i ;Next iFor和Next中间的语句段称为循环体。在上述代码中循环体仅有一条语句构成。可以在循环体中任何位置放置任意个Exit For语句,随时退出循环。Exit For经常在条件判断之后使用,如IfThen语句之后,并将控制权转移到紧接在Next之后的语句。如将上述代码改为 Dim i As Integer For i=1 To 10 Step 1 Print i ; If i5 Then Exit For Next i 程序的输出就变为1 2 3 4 5。 我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?
7、但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8.1 ForNext语句 ForNext语句执行过程: 首先计算初值、终值和步长表达式的值,并将它们都转换成与循环变量相同的类型。 将计算好的初值表达式的值赋给循环变量,作为循环变量的初值,注意循环变量仅被赋初值一次。 进行判别:判断循环变量的值是否超过终值,即当步长0(步长为正数)时,判别循环变量终值否;当步长0(步长为负数)时,判别循环变量终值否,如果未超过,则进入执行循环体;如果超过了,则正常退出结束循环,去执行Next语句的下一语句。 执行Next语句,使循环变量增加一个步长,即执行循环变量=循环变量+步长;返回步骤继续进行判
8、别。 计算初值、终值和 步长表达式的值 循环变量=初值表达式的值 循环体 循环变量=循环变量+步长 循环变量 超过终值? True False 图8-1 ForNext语句程序流程图 我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物Dim i As IntegerFor i=1 To 10 Step 1 Print i ;Next i上述代码中循环变量的初值是1,以后每次执行到For语句时判断i=10是否成立,成立则执行循环体中的语句,即输出变量i当前的值,否则结束循环,每次执行到Next语句时将循环变量i
9、的值自增1。因此,循环变量i的值从1一直变化到10,并将这些值输出。最后一次执行过Next语句后,变量i的值是11,因为超出终值而结束循环。一般地,若循环体中不出现类似于Exit For和Exit Sub之类的强制跳转语句时,结束For循环时循环变量的值肯定超过了终值。 我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8.1 ForNext语句循环次数的一般计算公式如下:循环次数=Int(Abs(终值-初值)/步长)+1注意,若循环变量在循环体内被重新赋值,则会影响和改变循环次数。示例代码如下: For i
10、=1 to 100 i=i+1Next i 以上循环体中i的值自增了1,而语句Next i还将使i的值增加1,因此在进入后一次循环时i的值比前一次进入循环时共增加了2,因此循环也就执行了50次。 我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8.1 ForNext语句注意:初值、终值和步长值仅在步骤中计算,在循环体内对这三个值所涉及的变量进行值的更改,都不会改变循环进行中的初值、终值和步长值,当然也不会影响循环次数。 以下3段代码中的循环执行次数均为 Int(20-1)/2)+1=10次。 代码1: 代码
11、2: 代码3: For I=1 to 20 step 2c=c+1Next I c=20For I=1 to c step 2c=c+1Next Id=2For I=1 to 20 step dd=d+1Next I执行后c的值是10执行后c的值是30执行后d的值是12我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8.1 ForNext语句格式中Next后面的循环变量有时被省略,但不推荐这样使用。如果省略,则由系统自己去识别该Next对应的循环变量,并对它进行相应的步长运算。如以下代码也是正确的。 For
12、 i=1 To 10 Step 1 Print i ; Next 省略循环变量我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物ForNext举例例8-1 求1+2+3+100 Private Sub Command1_Click() Dim i As Integer, sum As Integer sum=0 变量sum清零 For i=1 To 100 sum=sum + i 累加 Next I Print sumEnd Sub 本题输出结果是5050。思考:如何实现n!=123n? 我吓了一跳,蝎子是多
13、么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物ForNext举例例8-2 输出1200间所有能被3整除的数,要求每行输出10个数。 第第1种方法实现如下:种方法实现如下:Private Sub Command1_Click() Dim x As Integer, n As Integer For x=1 To 200 If x Mod 3=0 Then Print x; n=n + 1 If n Mod 10=0 Then Print End If Next x PrintEnd Sub第第2种方法实现如下:种方法实现如下:
14、Private Sub Command2_Click() Dim x As Integer, n As Integer For x=3 To 200 Step 3 Print x; n=n + 1 If n Mod 10=0 Then Print Next x PrintEnd Sub我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8.2 DoLoop语句 8.2.1 当型循环 8.2.2 直到型循环 我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜
15、测没有错:表里边有一个活的生物8.2.1 当型循环当型DoLoop语句格式如下: Do While 循环条件 语句块 Exit Do 语句块Loop 或 Do 语句块 Exit Do 语句块Loop While 循环条件 功能:当循环条件为True时,重复执行语句块中的命令。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8.2.1 当型循环如用以下代码也可以在窗体上输出1 2 3 4 5 6 7 8 9 10。 Dim i As Integer i=1 Do While i = 10 Print i; i
16、=i + 1 Loop Dim i As Integer i=1 Do Print i; i=i + 1 Loop While i 10 Then Exit Do Loop我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8.2.1 当型循环说明:(5)为了使循环语句在有限的时间内执行完毕,在循环体中至少要有一条语句使得循环条件趋向于假“False”或用Exit Do语句终止循环,否则程序将无休止的执行循环体,直至耗尽系统资源,我们称这种现象为“死循环”。 提示 当程序进入“死循环”或长时间执行某过程时,用户
17、可以使用Ctrl+Break键强行中断程序的运行,将程序从运行状态改为设计状态,并释放程序运行中的临时资源。 我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8.2.1 当型循环说明:(6)可以将ForNext语句改写成DoLoop语句,但仅有已知循环次数的DoLoop语句才可以改写成ForNext语句。在ForNext语句中,格式中包含了对循环变量的赋初值、设置循环进行的条件及循环变量按步长变化等操作,这些在DoLoop语句中都需要编程人员一一考虑并用语句设置。 我吓了一跳,蝎子是多么丑恶和恐怖的东西,为
18、什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8.2.1 当型循环例8-3 验证谷角猜想。对于任意一个自然数n,若n为偶数,则将其除以2;若n为奇数,则将其乘以3,然后再加1。如此经过有限次运算后,总可以得到自然数1。 分析:n由于不能确定要多少步才能结束运算,因此本题中采用当型DoLoop循环语句实现。n使用变量n存放该正整数,每次重新计算出的新值仍然存放在n中。n当n未达到1时继续执行运算,当n等于1时结束循环。 我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活
19、的生物例8-3代码:Private Sub Command1_Click() Dim n As Integer Cls 清屏 n=Val(InputBox(请输入一个正整数) Print n; If n 0 Then Do While n 1 If n Mod 2=1 Then n=n * 3 + 1 Else n=n / 2 End If Print -; n; Loop End IfEnd Sub我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8.2.2 直到型循环 直到型 DoLoop语句格式如下:
20、Do Until 循环条件 语句块 Exit Do 语句块Loop 或 Do 语句块 Exit Do 语句块Loop Until 循环条件 功能:当循环条件为False时,重复执行语句块中的命令;当循环条件为True时,结束循环。 我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8.2.2 直到型循环如用以下代码也可以在窗体上输出1 2 3 4 5 6 7 8 9 10。 Dim i As Integer i=1 Do Until i 10 Print i; i=i + 1 Loop Dim i As In
21、teger i=1 Do Print i; i=i + 1 Loop Until i 10 我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8.2.2 直到型循环说明 :n(1)直到型DoLoop语句也有两种形式。 False 循环条件 循环体 True 循环条件 循环体 False True (a)Do UntilLoop结构流程图 (b)DoLoop Until结构流程图 我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的
22、生物8.2.2 直到型循环说明 :n(2)直到型DoLoop语句格式中的组成和当型DoLoop语句格式基本一致,两者的区别是两者的循环条件正好相反。 n大部分当型DoLoop语句都可以改写成直到型DoLoop语句。n如将例8-3中的Do While n 1 改成Do Until n=1,程序功能完全一致。 我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物例8-4例8-4 随机产生n个随机整数,并求它们的平均值,n由用户输入。 分析:n用户输入信息的有效性过滤:n使用整型变量n接收用户输入的数据,可以过滤掉非
23、数值字符串 n采用Fix函数进行取整可以将用户输入的实数类型数据转换为整数 n使用一个DoLoop循环对负数进行过滤,并由用户选择是否继续输入 我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物例8-4Private Sub Form_Click() Dim n As Integer, x As Integer, i As Integer, sum As Integer n=Fix(Val(InputBox(请输入数据个数) 舍去取整 Do Until n 0 If MsgBox(输入错误,需要重新输入吗?,
24、 vbYesNo)=vbYes Then n=Fix(Val(InputBox(请输入数据个数) Else Exit Sub 结束本事件过程 End If Loop实现数据实现数据n的输入的输入我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物例8-4 sum=0 累加器sum清零 For i=1 To n x=Int(Rnd * 100) sum=sum + x Print x; If i Mod 10=0 Then Print 每行输出5个数据 Next i Print Print n; 个数的平均值=;
25、 sum / nEnd Sub功能实现功能实现求求n个数的平均值个数的平均值 我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8.3 WhileWend语句 语句格式:While 循环条件 循环体Wend在窗体上输出在窗体上输出1 2 3 4 5 6 7 8 9 10。Dim i As Integeri=1While i = 10 Print i; i=i + 1Wend这种结构使用这种结构使用完全类似于完全类似于当型当型DoLoop循环语句循环语句的格式的格式1 我吓了一跳,蝎子是多么丑恶和恐怖的东西,为
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 VB 循环 结构 程序设计 ppt 课件
限制150内