资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,1.,问题的提出,2.,循环概念,3.,Goto,语句,4.,前测型循环,5.,后测型循环,6.,实例分析,7.,计数型循环,8.,常用算法,9.,对象集合,For EachNext,语句,10.,控件,:,列表框(,ListBox,),组合框(,ComboBox,),第,5,章 循环结构程序设计,主 要 内 容,1.,问题的提出,问题,1:,求前,N,项和。,例如:,1+2+3+.+99+100,问题,2:,求正整,N,的阶乘。,例如:,5!=12345,问题,3:,从,N,个数据中查找极值。,例如:查找,10,个数中最大值。,问题,4:,处理有限数据集合中符合命题要求的数据。,例如,:,分别统计某班,N,个学生的考试成绩为“优、良、可、差”的人数,。,.,问题,N,:,.,2.,循环基本概念,(1),上述问题中的共性:,程序设计中需要按照某种规律反复不断执行某一段程序;能够完成此功能的程序结构成为,“,循环结构,”,,被反复执行的“程序段”成为“循环体语句”。,(2),循环结构的三要素:,A.,构成循环的基本条件是什么?,B.,循环体要完成的功能是什么?,C.,在什么情况下结束循环过程,?,3.,GoTo,型控制,Goto,语句又称为无条件转向语句,它的一般形式为,Goto,语句标号,或,Goto,行号,说明:,语句标号或行号必须存在,否则会出现错误。,语句标号是一个标识符,在标识位置上,其后紧跟一个冒号。行号是一个整数。语句标号的命名规则与变量名相同。例如,,Goto,ab,Goto,a1,Goto 123,是合法的(,ab,a1,是语句标号,,123,是行号),而,Goto,a%,Goto,10a,是非法的,。,基本循环语句结构(例如:累加和问题),Do,Loop,说明:,循环结构的关键是,“,有始有终,”,。,问题关键:,如何根据实际要求设置条件来限定循环次数?,解决方案:在,Do.Loop,循环结构中添加分支语句,Do,If Then Exit Do,Loop,解释:当满足设定条件时退出循环,执行,Loop,之后的语句。,例:,求,1+2+3+.+100,设累加和变量,Sum,累计求和;计数器变量,C,累计循环次数,当循环,100,次时,结束。(,C=100,),4.,当型循环,(1),循环语句结构,Do While ,Loop,(2),说明:,A.,逻辑表达式作为进入循环的条件,当条件成立时进入循环,.,B.,循环体由若干条语句构成,在循环体中至少包含一条不断修正逻辑表达式的语句,使得循环过程朝退出的方向发展。,C.,一直循环到逻辑表达式不成立为止。,条件成立否?,循环体,False,True,Do,Loop,(3),流程框图,实例:,(1),求,N,的阶乘,设计思路:,设累乘积变量,T,保存阶乘值,,T,初始值为,1,;,设循环次数由循环控制变量,I,控制,取值范围:,1N,(2),找出,10,个正整数中最小值,设计思路:,A.,随机数产生,10,个,(0100),正整数,存放在列表框中。,B.,设保存最小值变量,Min,,,初值为,10,个数中的第一个数。,C.,从第,2,个数开始每次循环将,Min,与其进行比较,小者保存在变量,Min,中。,D.,一直循环到第,10,个数据后结束,输出,Min,值。,5.,直到型循环,功能:先执行循环体,后判断条件的循环结构,(1),循环语句结构,Do,Loop,Until ,(2),流程框图:,循环体,条件成立否,?,True,False,(3),说明:,无条件进入循环体,循环到逻辑表达式成立为止。,(4),实例:,10,个数任意数,去掉其中的最大、最小值,求其余,8,个数据的平均值。,设计思路:,A.,设累加和变量,Sum,,,累加,10,个数据之和;,B.,设,Max,、,Min,分别保存最大、最小值;,C.,循环中分别累计求和、找最大值及最小值。,D.,循环结束后计算结果,(Sum-Max-Min)/8,(5),总结:,A.,用两种不同的循环结构处理相同命题时,前测,While,型循环与后测,Until,型循环的逻辑表达式为互逆。,B.Do.Loop,循环常用于循环次数不确定的情况,,例如:限定输入的数据,N,必须正整数,则有:,当型循环:,N=,Val(InputBox(“Enter,N:”),Do While N,Int(N,),N=,Val(InputBox(“Enter,N:”),Loop,直到型循环:,Do,N=,Val(InputBox(“Enter,N:”),Loop Until N=0 And N=,Int(N,),6.,实例分析,某班,35,名学生参加计算机考试,要求统计各分数段人数,;,找出考试成绩的最高分数、最低分数及学生,。,*算法分析:,(1),程序框架:,用循环结构按学号,(135),顺序循环一遍;,(2),在循环体中,用多分支程序结构统计四个分数段人数;,(3),在循环体中查找最高分和最低分,同时保存学生学号,。,*,算法实现,:,(1),由随机函数产生考试分数保存在列表框,List1,中,列表框各数据项的顺序号,(,索引号,),表示学号,第一个数据项的索引号为,0,,对应学号为,1,的学生。,(2),由,Do.Loop,构成循环,当最后一名学生,(,学号为,35),统计完毕后结束循环。,(3),循环体中统计四个分数段的人数,用,Select Case,结构实现多分支结构,设置,4,个累计人数的变量,C1,、,C2,、,C3,和,C4,,,用于分别统计四个分数段的人数。,(4),循环体中查找最高分数、最低分数,需要两个变量,Max,Min,始终跟踪大数。为保存学生学号,另需要两个变量:,StuMax,StuMin,。,(5),循环结束后将各项统计结果显示在标签中。,思考题:,如果使用终止标识数据,1,作为循环结束,应如何修改本程序?,7.,计数型循环,计数型循环常用于循环次数确定的场合,1).,计数型循环三要素,B.,循环控制变量初始值,(,循环起始位置,),C.,循环控制变量终止值,(,循环结束条件,),D.,循环控制变量步长,(,循环控制变量的增量,),2).,循环语句结构及流程框图,For I=To Step ,Next I,是否超出终止值,?,执行循环体,循环控制变量,+,步长,循环控制变量赋初始值,True,False,程序出口,入口,For,语句,Next,语句,3).,实例:设计一个循环,10,次的计数型循环,注意:循环结束后的循环控制变量值,(1),For i=1 To 10 Step 1,Debug.Print i;,Next i,(2),For i=10 To 1 Step,1,Debug.Print i,Next i,4).,循环次数计算公式,:,C=,(,ABS(,终止值 初始值,)/,步长),1,仍为循环,10,次循环:,For i=1 To 19 Step 2,Print i,Next i,Print i,问题:,循环结束后,循环控制变量值?,小结:,三种循环结构的比较,5).,实例:分别累计,100,之内奇数及其偶数之和,方法,1,:,For i=1 to 100,if i/2 int(i/2)Then,Sum1=Sum1+i,Else,Sum2=Sum2+i,End if,Next i,方法,2,:,For i=1 to 99 Step 2,Sum1=Sum1+i,Sum2=Sum2+(i+1),Next i,方法,3:,用当型循环实现,方法,4,:用直到型循环实现,6).,循环嵌套多重循环结构,(1),语句结构,For i.,For j.,Next j,Next i,(2),嵌套中需要注意的问题,A.,嵌套循环语句结构要匹配;,B.,嵌套循环控制变量要对称;,C.,循环嵌套的循环次数为:,第,1,层循环次数*第,2,层循环次数*,.*,第,N,层循环次数,(3),嵌套实例,求:,E1+1/1!+1/2!+1/3!+1/4!+1/5!+1/6!,改进:如需将精度控制在,0.000001,条件设置为,1/N!0 And,Int(n,)=n,lgfact,=1,For i=n to 1 step-1,lgfact,=,lgfact,*i,Next i,9.,对象集合,For EachNext,语句,语句格式:,For Each In,Next,说明:,For Each.Next,循环与,For.Next,循环类似,但它的循环控制变量不是数值型变量,而是象,Screen,、,Printer,等对象。,当对象元素作为循环控制变量时,循环次数是由对象集合中所拥有的对象元素个数所确定。,循环体内主要涉及对象元素的处理。,注:,Screen,、,Printer,分别为,VB,系统中默认的屏幕与打印机对象。,10.,控件:列表框、组合框,1,、列表框,ListBox,1,)主要特点,可以动态添加或删除用户的选择项,并同时具备多选一或多选多的功能。特别是在大量的数据选择时,使用列表框非常方便。,2,)常用属性,List,属性,用于保存列表中各个数据项。通常有两种向列表框添加数据项的方法。,第一种:在设计阶段选中列表框属性表中的,List,选项,单击向下箭头,向文本框中输入一项数据后接着按,CTRL+ENTER,组合键换行,输入下一项数据。第二种方法是在程序中用,AddItem,方法向列表框中添加数据。,用,List,属性可访问列表框中全部数据项。,list(0),表示列表框中的第一项的内容,为“,Item1”,,,list,(,1,)的值为“,Item2”.,。其中,括号中的数据是数据项的索引。索引值为,0,表示列表框第一个数据项的索引,,依此类推。,ListIndex,属性,ListIndex,属性的值表示在程序执行时,用户选择的列表项的索引值。如果未选定任何数据项,,ListIndex,属性为,1,,选中列表的第一项时,ListIndex,的值为,0,。,ListCount,属性,使用,ListCount,属性返回列表框数据项数,例如:下列语句用,ListCount,属性判断列表框中的项目数,Columns,属性,指定列表框中的列数,此属性取值如下:,值描述,0,垂直滚动的单列列表框。,1,水平滚动的单列列表框。,1,水平滚动的多列列表框。,MultiSelect,属性,设置,MultiSelect,属性来处理标准列表框中的多项选择,使用户可从列表中选择多个项目。,MultiSelect,属性取值为,0,时,只能选中一项。而,MultiSelect,属性取值为,1,,可同时选中多项。,Sorted,属性,该属性只能在设计阶段使用。可以将,Sorted,属性设置为,True,,使列表框中的项目按字母顺序进行排列,排序时不区分大小写,Selected,属性,该属性只能用于程序的运行阶段,可快速检查在列表中哪些项已被选中。也可以从代码中使用该属性选中或取消选中列表中的一些项。它是一个逻辑数组,表示它所对应的项是否被选中。例如:第一项被选中,则,selected,(,0,)的值为,True,,可以编程序实现检索被选中的列表项。,Text,属性,通常,获取当前选定项值的最简单方法是使用,Text,属性。当鼠标单击选中某数据项时,被选中的数据项直接体现在,Text,属性。,AddItem,方法,向列表框中添加数据项,语法格式如下:,列表框名称,.,AddItem,Item,index,说明:,Item,被添加到列表框中的字符串表达式。,Index,:指定在插入到列表中索引位置。,Index,为,0,表示第一个位置,若省略,index,,则将列表框末尾插入。,RemoveItem,方法,从列表框中删除项目。语法格式如下:,列表框名称,.,RemoveItem,Index,2,、组合框,组合框控件(,ComboBox,)将文本框控
展开阅读全文