1、Visual Basic 语言程序设计 第五章 循环结构及相应控件第五章 循环结构及其相应控件 5.1 While语句 5.2 Do-Loop语句 5.3 For-Next语句 5.4 流程转向语句 5.5 循环嵌套 5.6 循环算法 5.7 图片框5.8 图像框5.9 计时器 Visual Basic 语言程序设计 第五章 循环结构及相应控件5.1 While语句 格式如下:While 循环体Wend注意循环的一些要素:循环初值 循环初值是循环的起点,该语句要单独设置循环变量及其初值 循环条件 循环条件决定了循环是否继续和何时终止退出 循环次数 循环次数是循环体执行的次数,直接影响循环的结果
2、 循环体 循环体是循环语句的主体,是被重复执行的部分 几个要素之间相互影响 执行流程是 先计算表达式,如果为True则执行循环体,周而复始 如果表达式的值为False,则退出此循环结构 Visual Basic 语言程序设计 第五章 循环结构及相应控件Private Sub Command1_Click()i=1 循环初值 Sum=0 While i=100 循环条件 Sum=Sum+i 循环体 i=i+1 Wend Print sum=;SumEnd Sub 说明:(1)i=100是循环的条件表达式(2)循环体是重复执行的部分,形式上重复,每个变量的值状态却不一定相同(3)循环条件是控制的关
3、键,通常由包含变量的表达式构成 其中的变量我们经常称之为循环变量,是控制循环的关键变量 有了变量才能使循环条件的结果有变化的可能(4)循环应该是有限次数的循环,否则将出现“死循环”例5.1 求1+2+3+4+5+100 Visual Basic 语言程序设计 第五章 循环结构及相应控件5.2 Do-Loop语句 Do-Loop语句的Do While-Loop 格式:Do While 循环体Loop Do-Loop语句的Do-Loop While格式:Do 循环体Loop While 由于Do-Loop While是先执行循环体后判断循环条件,所以它的循环体至少执行一次,而Do While-Lo
4、op语句的循环体有可能一次也不执行 演示见例5.2 表达式为真循环体是否Visual Basic 语言程序设计 第五章 循环结构及相应控件Do Until-Loop和Do-Loop Until 这是Do-Loop语句的另外两种形式 Do Until-Loop与Do While-Loop相对应 Do-Loop Until与Do-Loop While相对应 使用while和使用until的区别在于循环条件为互逆关系 假如While形式的循环条件是A,则与其等价的Until形式的循环条件是Not A While形式是循环条件成立则继续循环 Until形式是循环条件成立则结束循环,即不成立才继续循环。
5、把例5.2程序中的Loop While i 100,其效果完全相同Visual Basic 语言程序设计 第五章 循环结构及相应控件5.3 For-Next语句 For-Next语句属于“计数”循环,不断地执行循环体,当循环次数达到上限后就退出循环 格式如下:For 循环变量=初值 To 终值 Step 步长 循环体Next 循环变量 执行流程:(1)循环变量赋初值。(2)判断循环变量是否在初值到终值的范围内。如果是,则转到步骤3,否则就结束循环(3)执行循环体。(4)循环变量增加一个步长,然后转到步骤(2)演示见例5.3 Visual Basic 语言程序设计 第五章 循环结构及相应控件Fo
6、r-Next语句的说明(1)步长可以是正数,也可以是负数当步长是正数时,应该满足:初值终值如果步长为负数,则应该满足:终值初值如果省略Step,则步长的默认值是1(2)循环变量的类型必须是数值型,初值、终值和步长的类型都自动转换为循环变量的类型循环次数=Int(终值-初值)/步长)+1函数Int的作用是只取出数据的整数部分,小数部分则丢弃例如循环变量是Single类型,初值是1.1,终值是9.9,步长是1,则循环次数为9(3)如果事先知道循环次数,则尽量采用For-Next语句来设计程序For-Next语句写成的循环可读性最好(4)Next后面的循环变量可以省略,当有多重循环时把循环变量标注清
7、楚可以增加程序的可读性 演示例5.4Visual Basic 语言程序设计 第五章 循环结构及相应控件5.4 流程转向语句 循环有时候需要中途提前跳出,就像我们在操场上跑步突然遇到下雨需要停止退出一样 使用流程转向语句可以实现提前跳出 VB语言提供的流程转向语句有Exit语句和Goto语句,它们往往与If语句配合使用Visual Basic 语言程序设计 第五章 循环结构及相应控件5.4.1 Exit语句 Exit语句可以出现在Do-Loop语句和For-Next语句中,作用是跳出本层循环结构,转去执行下面的语句 其一般形式为Exit Do和Exit For,前者用于跳出Do-Loop语句,后
8、者用于跳出For-Next语句 可以改造例5.1等例题Visual Basic 语言程序设计 第五章 循环结构及相应控件5.4.2 Goto语句 VB语言提供了无条件流程转向语句,即Goto语句 其作用是在不需任何条件的情况下,直接使程序的执行转到该语句标号所标识的语句 格式如下:Goto 语句标号 语句标号语句标号:说明:语句标号用标识符表示,代表Goto语句转向的目标位置 目标位置的语句出现在程序中的任意位置都是允许的 建议在大多数场合下还是不要使用Goto语句,以保证程序结构的清晰性以及程序的可读性 Visual Basic 语言程序设计 第五章 循环结构及相应控件5.5 循环嵌套 循环
9、嵌套又称为多重循环,是指在一个循环结构的循环体中又包含另一个完整的循环结构通常把嵌套在循环体内的循环结构称为内循环,把外层的循环结构称为外循环内循环其实可以看成是外循环的循环体的复杂化 While、Do-Loop和For-Next三种循环语句都可以相互嵌套,例如:For i=Do While Loop Next i 例5.5Visual Basic 语言程序设计 第五章 循环结构及相应控件5.6 循环算法 算法(Algorithm)是对某个问题求解过程的描述,编程时如果没有算法作指导 5.6.1 穷举法穷举法就是穷尽所有的可能,一一列举并进行测试,从中筛选出满足条件的数据 计算机的运算速度极快
10、,因此对计算机而言,穷举法则是行之有效的算法穷举需要使用循环结构,判断所需条件是否可以满足时需要使用选择结构在采用穷举法编写程序时,往往还根据具体情况设置标志和专门用于计数的变量 见例5.6、例5.7Visual Basic 语言程序设计 第五章 循环结构及相应控件5.6.2 迭代法 迭代法的基本思想:不断地从旧值出发推导出新值,或者说新值是由上一次的旧值迭代而来,正所谓“总把新桃换旧符”迭代法由迭代初值、迭代公式和迭代次数等要素构成 迭代初值是设置循环的起点 迭代公式形成循环体 迭代次数则控制循环的次数,直接影响着循环条件。迭代公式是实现迭代算法的难点,关键是要找出当前一项与上一项之间的迭代
11、关系。找到之后,把当前一项和上一项均用同一个变量代替,即可得到循环体 见例5.8Visual Basic 语言程序设计 第五章 循环结构及相应控件5.7 图片框(1)图片框(PictureBox)控件是一种可以容纳其他控件的容器型控件图片框的基本功能是显示图片 图片文件的格式可以是bmp、ico、gif和jpg等图片框还可以作为绘制图形的绘图板,甚至能够输出文本信息 1属性属性 Name、Align、AutoSize、Picture Picture属性值由被显示图片的文件名和路径名组成,既可以在属性窗口中设置,也可以在程序中调用LoadPicture函数进行设置 通过代码载入图片的语法格式:对
12、象.Picture=LoadPicture(图片文件路径)AutoSize的属性值是True时,尽管图片框可以根据显示的图片自动调整尺寸,但是有可能会覆盖窗体中的其他控件 Visual Basic 语言程序设计 第五章 循环结构及相应控件5.7 图片框(2)2事件事件图片框的常用事件是单击(Click)等事件,但是一般不需要在程序中编写图片框控件的事件过程3方法方法窗体的很多方法对于图片框都是适用的,如Print、Cls和Move等,还可以在图片框中调用Point和Line等方法绘图 Visual Basic 语言程序设计 第五章 循环结构及相应控件5.8 图像框 图像框(Image)控件专门
13、用来显示图片,与图片框相比,显示图片时所需资源较少,显示速度也更快 如果只是在界面中显示图片,则应该优先考虑使用图像框控件 说明:说明:(1)程序第一个图像框控件的默认对象名是Image1,第二个图像框控件的默认对象名是Image2,依此类推。(2)Picture属性值的设置方法与图片框相同,也可以在程序中调用LoadPicture函数载入图片。如:Image1.Picture=LoadPicture(D:照片20100101.jpg)(3)当Stretch属性值是False时,图像框可以根据显示的图片自动调整尺寸;当Stretch属性值是True时,图片可以根据图像框自动调整尺寸,但是这有可
14、能导致图片显示时出现变形。Visual Basic 语言程序设计 第五章 循环结构及相应控件5.9 计时器(1)计时器(Timer)控件能够有规律地以一定的时间间隔来触发Timer事件过程,执行指定的操作,从而实现特定的功能 1.属性属性说明:说明:(1)程序第一个计时器控件的默认对象名是Time1,第二个计时器控件的默认对象名是Time2,依此类推(2)当某个计时器的Enabled属性值是True时,计时器开始工作,并每隔一个固定的时间周期就引发Timer事件。当计时器的Enabled属性值是False时,则计时器暂停工作。(3)Interval是计时器最重要的属性,其属性值是一个整数,即设置的时间间隔,单位是毫秒。Interval属性值的取值范围是065535,最大时间间隔大约为65秒,如果为0则计时器无效 Visual Basic 语言程序设计 第五章 循环结构及相应控件5.9 计时器(2)2事件事件计时器控件的事件只有一个Timer事件,每经过一个由Interval属性值设定的时间间隔,就触发Timer事件过程 见例5.9Visual Basic 语言程序设计 第五章 循环结构及相应控件5.10 程序举例 见例5.105.12