《Visual Basic可视化程序设计教程》电子教案 第6章循环结构程序设计

上传人:E**** 文档编号:89401694 上传时间:2019-05-24 格式:PPT 页数:44 大小:255.50KB
返回 下载 相关 举报
《Visual Basic可视化程序设计教程》电子教案 第6章循环结构程序设计_第1页
第1页 / 共44页
《Visual Basic可视化程序设计教程》电子教案 第6章循环结构程序设计_第2页
第2页 / 共44页
《Visual Basic可视化程序设计教程》电子教案 第6章循环结构程序设计_第3页
第3页 / 共44页
《Visual Basic可视化程序设计教程》电子教案 第6章循环结构程序设计_第4页
第4页 / 共44页
《Visual Basic可视化程序设计教程》电子教案 第6章循环结构程序设计_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《《Visual Basic可视化程序设计教程》电子教案 第6章循环结构程序设计》由会员分享,可在线阅读,更多相关《《Visual Basic可视化程序设计教程》电子教案 第6章循环结构程序设计(44页珍藏版)》请在金锄头文库上搜索。

1、第6章 循环结构程序设计,本章要点: 1计数循环(ForNext循环的使用 2当循环(WhileWend循环)的应用3多重循环的应用,6.1 循环结构控制语句,6.2 循环的嵌套,返回,退出,6.3 循环程序应用举例,6 循环结构,6.1 循环结构控制语句,6.1.1 循环概述,6.1.2 For循环语句,6.1.3 While循环语句,返回,6.1.1循环概述,在程序中,凡是需要重复相同或相似的操作步骤,都可以使用循环结构来实现。循环结构由两部分组成:循环体,即要重复执行的语句序列;循环控制部分,即用于规定循环的重复条件或重复次数,同时确定循环范围的语句。 要使计算机能够正常执行某循环,由循

2、环控制部分所规定的循环次数必须是有限的。 VB提供了三种不同风格的循环结构,分别是: 计数循环(ForNext循环) 当循环(WhileWend循环) Do循环(DoLoop循环) 其中计数循环常用于已知循环次数的循环,而当循环和Do循环适合于循环次数未知,只知道循环结束条件的循环。,返回,6.1.2 FOR循环,格式: For 循环变量=初值 To 终值 Step 步长 循环体 Next 循环变量 格式说明: (1)“循环变量”:被用作循环计数器的数值变量。 (2)“初值”、“终值”:都是数值型,可以是数值表达式。 (3)“步长”:是数值型,可以是数值表达式。 步长不能为0。如果步长是1,则

3、Step 1可以省略不写。 (4)“循环体”:在For和Next之间一条或多条语句,他们将被执行指定的次数。 (5)Next后面的循环变量与For语句中的循环变量必须相同。,For循环的执行过程如下 为: (1)系统将初值赋给循环变量,并自动记下终值和步长。 (2)判断循环变量是否超过终值:未超过终值,执行一次循环体;否则,结束循环 (3)执行Next语句,将循环变量加上一个步长。 (4)转到(2),继续执行。 (5)结束循环,执行Next后面的语句。,以“顺序输出10以内所有奇数”为例,来进一步理解For循环的执行过程。,程序语句及执行过程如下:,上述程序语句在执行时,共进行6次判断,执行5

4、次循环体,分别输出1、3、5、7、9这5个奇数,循环变量的值最终为11。,在第6次进行判断时,循环变量i的值为11,超过了终值10,所以结束循环,执行Next后面的语句。,具体执行过程为:,功能说明: (1)在执行过程第二步中,所说的“超过”包含两种情况: l 步长为正数时,循环变量大于终值为“超过”。 l 步长为负数时,循环变量小于终值为“超过”。 (2)终值和初值的取值有以下情况: l 步长为正数时,终值应该大于初值,否则循环体不会被执行。 l 步长为负数时,终值应该大于初值,否则循环体不会被执行。 l 当终值等于初值时,不管步长是正数是负数,均执行一次循环体。 (3)循环次数由初值、终值

5、和步长确定,计算公式为: 循环次数 = Int(终值-初值)/ 步长)+ 1 利用该公式可以方便的计算出循环体执行的次数。 如上述“输出奇数”的实例,它的循环次数就是int(10-1)/ 2)+1即5次。 (5)循环变量用来控制循环过程,在循环体内可以被引用,但不应被重新赋值,否则将无法确定循环次数,同时也降低了程序的结构化程度。,利用循环结构解决问题时,需要考虑清楚哪些语句应该作为循环体,循环体应该执行多少次。,【例6.1】编写程序,在窗体上输出一行由6个“*”组成的图形。 Private Sub Form_Click() For I = 1 To 6 Print “*“; Next I E

6、nd Sub 这是一个非常简单的程序,语句Print “*“;每执行一次输出一个星号,要输出6个星号,只需要将其作为循环体连续执行6次即可,因为6个星号要在一行上输出,所以,语句的最后需要加上分号。,可以看出,在上面的程序中,循环控制变量只是充当了计数的作用。,【例6.2】计算S=1+2+3+n。(n由用户输入) 这是一个“累加求和”的问题。解决这类程序时,通常是引入一个用来存放“和”值的单元S,然后循环地向S中加入一个加数,最后,在变量S中存放的就是累加的结果。 程序代码如下: n = InputBox(“input n“) S = 0 For I = 1 To Val(n) S = S +

7、 I Next I Print S 在这个程序中就是循环地向S中加了n次数,第1加的是1,第2次加的是2,第n次加的是n,即每次的累加项总是与次数相同,因为循环控制变量I表示了次数,所以,在循环体中累加项用I来表示。为了使结果不受到影响,所以将S的初始值设置为0。,在“累加”问题中,关键在于设置了一个用来表示累加和的变量,然后通过循环依次的向其中放入一个有规律变化的累加项就可以了。除此以外,还有“累乘求积”的问题,累乘与累加的区别除了运算不同之外,就是用来表示积的变量的初始值应设置为1,因为1不影响运算的结果。在解决这类问题时关键在于确定循环次数和找到每次要加或乘的项与循环变量之间的关系。 有

8、的累加或累乘问题中,每次的累加项或累乘项与循环变量之间不存在任何关系,这种情况下可以单独的设置一个变量,来表示这个项。,【例6.3】编写程序,实现累乘:要求使用For循环求N !(N为自然数)。 (1)分析:由阶乘的定义得出:N ! = 1 * 2 * * ( N 2 ) * ( N 1 ) * N = (N-1) ! * N 由此可以看出,一个自然数的阶乘,等于该自然数与前一个自然数阶乘的乘积。 重复执行语句“f = f * i ”,并且让i的值从1到N逐步加1,可以实现求N !的累乘功能。 先让f = 1、i = 1。使用IputBox函数得到N,重复执行N次“f = f * i ”,在重

9、复中,让i的值不断加1,即可实现例题要求。,(2)编写:新建工程,双击窗体,在Form的事件列表中选择Click项,输入代码如下。 Private Sub Form_Click() 单击窗体时执行 Dim i%, f f End Sub 输入完成后,运行程序。单击窗体,弹出输入框,保持默认值“5”不变,单击“确定”按钮,显示结果。,6.1.3 while循环,While循环的格式如下: While 循环体 Wend 该循环格式中的一般为布尔表达式,也可以是数值和字符表达式,结果为True或False,用来表示一个判断条件。,该语句的执行过程是:首先计算给定的的值,如果结果为 True(非0值)

10、,则执行循环体,当遇到Wend语句时,控制返回并继续对进行测试,如果仍然为True,重复上述过程;如果的结果为False,则不执行循环体,直接执行Wend后面的语句。,While循环流程图,这种循环结构的循环体内一般应该包括对“条件”进行改变的语句,使的结果发生变化。否则,若初始条件成立,则每次执行完循环体后再检验条件,条件仍然成立,再执行循环体,这样无限执行下去,不能结束,就形成了所谓的“死循环”。若初始条件不成立,则循环体一次也不执行,循环就毫无意义。 While循环与For 循环的区别在于:For循环对循环体执行指定的次数;而While循环则是在给定的条件为真时重复一组语句的执行。这就是

11、说,通过While循环可以指定一个循环终止的条件,而使用For循环只能进行指定次数的重复。因此,当需要由数据的某个条件是否满足来控制循环时,使用While循环比较灵活。,【例6.4】从键盘上输入字符,并对输入的字符进行计数,当输入的字符为“”时,表示输入结束,停止计数并输出结果。 分析:程序要求连续的输入字符,但由于需要输入的字符个数没有指定,无法用For循环来控制。停止输入和计数的条件是输入的字符为“”,可以用While循环来实现。 Private Sub Form_Click() ch = InputBox(“input a character“) n = 0 While ch “#“ n

12、 = n + 1 ch = InputBox(“input a character“) Wend Print n End Sub,【例6.5】找出1000以下的能够被13和7整除的最大的10个数并将它们输出。 分析:从1000开始,循环的找满足条件的整数,直到找到10个为止,所以,应专门设一个变量found来记录当前找到的数的个数,只要found的值小于10,说明还没有找够所有的数,循环就要继续进行。 Private Sub Form_Click() a = 1000 found = 0 While (found 10) a = a - 1 If a Mod 13 = 0 And a Mod

13、7 = 0 Then found = found + 1 Print a End If Wend End Sub,【例6.6】编写程序,找到一个正整数N,要求N的阶乘最接近1000但又不大于1000。 (1)分析:此程序不能预知循环次数,故使用While循环来实现程序功能。 在While循环的循环体中,使用累乘顺序求出自然数1的阶乘、2的阶乘、3的阶乘直到某数的阶乘第一次大于1000时结束循环,那么此数的前一个数就是要找的正整数N。 (2)编写:新建工程,双击窗体,在Form的事件列表中选择Click项,输入代码 。,显示结果,程序代码如下: Private Sub Form_Click()

14、单击窗体时执行 Dim n%, f% n = 0 一般情况下,累加时变量初值应该为0 f = 1 一般情况下,累乘时变量初值应该为1 While f = 1000为止 n = n + 1 f = f * n Wend Print n; “! =“; f 显示阶乘第一次大于1000的数及其阶乘 f = f / n 求此数前一个数的阶乘 n = n - 1 求此数的前一个数 Print n; “! =“; f 显示阶乘最接近1000但又不大于1000的数及其阶乘 Print “ N =“; n 显示要找的正整数N End Sub,返回,6.2 循环的嵌套,在一个循环体内又出现另外的循环语句称为循环

15、嵌套,也称为多重循环。在嵌套结构中,对嵌套的层数没有限制,有几层嵌套,就说是几重循环。 多重循环的执行过程是,外循环每执行一次,内循环都要从头到尾执行一遍。 例如: For I = 1 To 5 For J = 1 To 3 Print I, J, I + J Next J Next I 在以上的双重循环中,外循环变量I取1时,内循环就要执行3次(内循环变量J依次取1、2、3),接着,外循环变量取值2,内层循环同样要重新执行3次(J再一次取1、2、3)这样下去,循环体一共执行了5*3次,即15次。,嵌套时,内层循环必须完全包含在外层循环之内,不能相互“骑跨”。,正确的嵌套,错误的嵌套,说明:

16、(1)For循环的嵌套是经常使用的循环嵌套语句,其形式通常有以下两种:,1)一般形式 For I1= For I2= For I3 Next I3 Next I2 Next I1,2)省略Next后面的循环变量 For I1= For I2= For I3= Next Next Next,其中,每层For循环的Next语句都不可省略。但当多重循环的Next语句连续出现时,Next语句可以合并成一条,在其后跟着各循环控制变量,循环变量名不能省略。内层循环变量写在前面,外层循环变量写在后面。例如: For I1= For I2= For I3= Next I3, I2, I1 (2)在循环的嵌套中,内层循环和外层循环应该使用不同的循环控制变量。 (3)在多重循环的任何一层循环中都可以使用Exit Do或Exit For退出循环,但要注意只能退出Exit Do或Exit For 语句所对应的最内层循环,而不是一次退出多层循环

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

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

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