5.1 循环结构概述
循环结构:是指在一定条件控制下重复执行一组指定的语句(程序中最能发挥计算机特长的程序控制结构)
编写程序,求1+2+3+…+10的累加和。 设计要求:在标题为“累加求和”的窗 体Form1上,添加一个标题为“累加” 的命令按钮Command1;然后再添加一 个文本内容为空的文本框Text1。 运行要求:程序运行时,单击“累加” 并将计算结按钮,求1+2+3+…+10的值, 果显示 在Text1中。 顺序结构 循环结构程序代码: Private Sub Command1_Click( ) Dim sum As Integer, i As Integer sum = 0 For i = 1 To 10 Step 1 sum = sum + i Next i Text1.Text = Str(sum) End Sub 案例: 循环结构分类: ? 计数循环:是一种循环次数已知的
循环结构,通常用于事先已经知道操作要重复的次数。 ? 条件循环:是一种由条件控制的循
环结构,通常用于事先不知道操作要重复的次数,但是知道重复结束的条件。 循环结构语句:
? For....Next语句:称为计数循环,
一般用于循环次数事先可预知的情况
? While....Wend语句:称为条件循
环,一般用于循环次数事先不可预知的情况
? Do....Loop语句:与While....Wend
语句一样
5.2.1 For循环
For循环语句:是一种计数循环,一般用于循环次数已知的循环结构,也称为For…Next循环。
【在前面累加1到10的例子,在这个For循环语句中使用了一个有计数器作用的循环变量i来控制循环体的执行次数,每执行一次后,i的值会自动加上步长,直到i超过10循环结束】
语法结构: For循环变量=初值To终值[Step步长] 循环体 Next [循环变量] 注: ? For、To、Next和Step都是关键字,
不可以作为标识符使用
? 循环变量是用于控制循环的变量,
必须是数值型变量,常用字母表示。 ? 初值、终值、步长可是数值型常量、
变量或表达式
? 初值是循环变量的初始值,是赋予
给循环变量的第一个值 ? 终值是循环变量的结束值,当循环
循环体:被重复执行的一组语句,例
如“sum = sum + i”
循环结构流程图:
变量不超过终值时,会一直循环。 ? 步长是循环变量的增量,可以是正
数也可以是负数。当步长为+1,“Step 1”可以省略。
? 循环变量是需要重复执行的程序
代码,可以是一条或多条语句。 ? Next[循环变量]用于结束一次For
循环,并修改循环变量的值,就是将“循环变量+步长”的值赋值给“循环变量”【Next后面的循环变量和For后面的循环变量必须相同,但Next后面的循环变量可以省略】
循环过程:
① 将初值赋予给循环变量 ② 判断循环变量是否超出终值
——循环次数公式是否可以计算出任意For循环语句的循环次数呢?
循环体中出现了改变循环变量的语句 ——如何在循环结束之前提早结束循环?
③ 没有超出终值,就执行循环体语句。
④ 循环变量增加步长(循环变量=循环变量+步长)
⑤ 再判断是否超出终值
⑥ 直到某个条件下循环变量超出终值
案例1:输入一个正整数n,计算n的阶乘。 设计要求:在标题为“计算阶乘 ”的窗体 Form1上,添加一个标题为“请输入n的值” 的标签Label1;然后再添加一个标题为“计 算”的命令按钮Command1;接着再添加一 个文本内容为空的文本框Text1;最后添加 一个标题为空、有边框的标签Label2。 运行要求:程序运行时,在Text1中输入一 个正整数n,单击“计算”按钮,求1×2 ×3×…×n的值,并将计算结果显示在 Label2中。
注:
? 循环变量是专门控制“循环体”执
行的次数
? 循环正常结束后,循环变量的值会
超过终值
? 循环次数表达式:Int((终值-初值)/
步长+1)取整
条件:
1、取值为True或False,可以为关系表达式、逻辑表达式或算术表达式。若为算术表达式,则表达式的值非0时表示True,为0时表示为False。 2、循环体中要有使循环趋于结束的语句 流程图: 案例: 编写程序,求1+2+3+…+10的累加和。 5.2.2 While循环 例:2024年人口约70亿,如果每年 增长率约为1.7%,那么多少年后世界 人口将达到100亿。 案例: 已知两个正整数m和n,用“辗转相 除法”求它们的最大公约数。 案例2:输入一个正整数,判断该整数是否为素数。 设计要求:在标题为“素数判断 ”的窗体Form1上,添加一个标题为“请输入正整数”的标签Label1;然后再添加一个标题为“判断”的命令按钮Command1;接着再添加一个文本内容为空的文本框Text1;最后添加一个标题为空、有边框的标签Label2。 运行要求:程序运行时,在Text1中输入一个正整数n(n≥2),单击“判断”按钮,在Label2中显示判断结果。 While循环是一种先判断条件、再执行
循环体的循环结构。当条件成立(True)时执行循环语句;当条件不成立(False)时结束循环。 语法格式: While 条件表达式 循环体 Wend 设计要求 : 在标题为“最大公约数 ”的窗体Form1 添加两个标题分别为上,“整数m”和“整 n”的标签Label1和Label2;然后再添数 3个文本内容为空的文本框Text1、加 Text2和Text3,其中Text3不可编辑;最 后添加1个标题为“求解”的命令按钮 Command1 运行要求: 程序运行时,在Text1和Text2中输入两 个正整数,单击“求解”按钮,在Text3 中显示这两个整数的最大公约数。 试条件的当型循环。当条件成立
(True)时,执行循环体;知道条件不成立(False)时结束循环。
语法格式:
Do While 条件表达式
循环体
Loop
? 条件表达式:关系表达式、逻辑表
达式、算术表达式 ? 循环体:
循环体中要有使循环趋于结束的语句 Exit Do语句用于无条件退出Do循环 流程图:
【如果初始循环条件不成立,那么循环体一次也不执行。】 案例:编写程序,求1+2+3+…+105.2.3 Do循环 的累加和,使用Do While…Loop循 Do循环语句:是一种条件循环,是根环语句实现。 据条件来决定是否执行循环体,一般
Private Sub Command1_Click() 用于循环次数事先不可预知的情况。 Dim sum As Integer, i As Integer Do循环语句分类:区别在于判断循环
sum = 0 条件先后顺序不同
i = 1 Do While i<=10 sum = sum + i i = i + 1 Loop Text1.Text = Str(sum) End Sub ? 前测型Do循环:是一种先判断条件、再执行循环体的循环结构,它“Exit Do”可以
强制退出Do循环: 的特点是循环体有可能一次也不在循环体的任
If 退出条件 被执行。 何位置出现,一
Exit Do 前测型Do循环又分为Do While…Loop般与条件语句
End If 配合使用 循环和Do Until…Loop循环
? Do While…Loop循环:是一种先测
? Do Until…Loop循环:是一种先测试条件的直到型循环。当条件不成立(False)时,执行循环体;知道条件成立(True)时结束循环。 语法格式 Do Until 条件表达式 循环体
Loop 流程图:
【“Do While i<=10”和”Do Until i >10”是等价的。】
? 后测型Do循环:是一种先执行循
环体、后判断条件的循环结构,它的特点是循环体至少被执行一次。 后测型Do循环又分为Do…Loop While语句和Do…Loop Until语句 ? Do…Loop While语句:
Do…Loop While循环是一种后测试条件的当型循环。先执行循环体,当循环体成立(True)时,继续执行循环体,知道条件不成立(False)时,结束循环。
语法格式
Do
循环体
Loop While 条件表达式 流程图:
【对于Do…Loop While语句,不管条件是否成立,循环体至少执行一次】 ? Do…Loop Until循环语句:
Do…Loop Until循环是一种后测试条件的直到型循环。先执行循环体,当循环体不成立(False)时,继续执行循环体,知道条件成立(True)时,结束循环。 语法格式 Do 循环体
Loop While 条件表达式 流程图:
【对于Do…Loop Until语句,不管条件是否成立,循环体至少执行一次】 案例:编写程序,求1+2+3+…+10 的累加和。 Do…Loop While语句: Private Sub Command1_Click() Dim sum As Integer, i As Integer sum = 0 i = 1 Do sum = sum + i i = i + 1 Loop While i<=10 Text1.Text = Str(sum) End Sub Do…Loop Until Private Sub Command1_Click() 语句: Dim sum As Integer, i As Integer sum = 0 i = 1 Do sum = sum + i i = i + 1 Loop Until i>10 Text1.Text = Str(sum) End Sub 5.3 循环结构嵌套
循环结构嵌套:就是在一个循环语句的循环体中又包含另一个完整的循环语句。
例:求100~200之间的素数和
For i =… For i =… For i =… … … … For j =… Do While… … While|Until… … … Next j Wend … Loop … Next i … Next i Nt i 形式4: 形式5: 形式6: Do Do Do While|Until… While|Until… While|Until… … … … For j =… While… Do … … While|Until… Next j Wend … … … Loop Loop Loop … Loop 注意事项: 1、在使用循环时,内循环变量和外循环变量不能同名 2、外循环必须完整包含内循环,不能交叉。 3、当多重 For…Next循环的Next语句连续出现时,Next语句可以合并成一条。 4、在循环体中,如果使用Exit For或Exit Do来强制退出,只能退出该语句所对应的那层循环 形式1: 形式2: 形式3: 案例: 设计要求:在标题为“阶乘累加 ”的窗体Form1 上,添加一个标题为“请输入n的值”的标签 Label1;然后再添加一个标题为“累加和”的 命令按钮Command1;最后添加两个文本内容 为空的文本框Text1和Text2。 运行要求:程序运行时,在Text1中输入一个 正整数n,单击“累加和”按钮,计算上面表 达式的值,并将计算结果显示在Text2中。 5.4.1计时器
计时器一般用于有规律地重复执行指
定的工作,他适合用于实现每个一定时间间隔自动执行指定的操作。
1、当鼠标移动到计时器的图标中,则会出现“Timer”提示信息。 2、在Visual Basic中要产生动态效果,例如计时、倒
计时、移动等等,一般都要用到计时器控件。
3、计时器控件在程序运行时是不可见的。
? 属性
? Interval属性
Interval(时间间隔)属性用于设定计时器触发事件的时间间隔,单位为ms (0.001s),取值范围为0~65535ms,默认值为0.
注:如果将Interval属性设置为0或者负数,计时器就停止工作 ? Enabled属性
Enabled(可用)属性是计时器的默认属性,用于设置计时器是否有效。 ? True :默认值,而且Interval值大
于0,计时器开始工作 。 ? False :计时器则停止工作 。
5.4.2滚动条
滚动条的两端各有一个滚动箭头,在滚动箭头之间有一个滑块。在Visual
Basic中滚动条有两种有水平滚动条和垂直滚动条
滚动条通常用于协助观察数据或确定位置,也可以表示一个区间范围,而滑块可以表示某个范围内的一个值,所以滚动条可用作数据输入工具,用来提供某一范围内的数值供用户选择。
? 事件
? Timer事件
Timer事件以Interval属性指定的间隔时间发生,可将需要定时重复执行的操作放在该事件过程中完成。
当Enabled属性值为True且Interval属性值大于0时计时器才能响应Timer事件。
可以将需要重复执行的操作放在Timer事件过程中完成。 案例: 设计要求:在标题为“滚动字幕 ”的窗体Form1 上添加一张背景图片vblogo.bmp;接着添加一个标 题为“欢迎使用Visual Basic”标签Label1,其字形 为“粗体”、字号为“小三号”、字体颜色为红色, 标签能自动调整大小,并设置背景样式为透明;然 后再添加两个标题分别为“滚动”和“暂停”的命 令按钮Command1和 Command2;最后添加一个 计时器控件Timer1,其间隔时间为0.1秒,并设为 非活动状态。 运行要求:程序运行时,单击“滚动”按钮,标签 Label1每隔0.1秒向右滚动100,当标签Label1滚 动到窗体外时,就从左端开始滚动;单击“暂停” 按钮,标签Label1停止滚动。 ? 属性
? Max属性
Max(最大值)属性表示滑块处在最大位置所代表的值。
? 取值范围为-32 768~32 767 ? 默认值为32767 ? Min属性
Min(最小值)属性表示滑块处在最小位置所代表的值。
? 取值范围为-32 768~32 767 ? 默认值为0 ? Value属性
Value(数值)属性是滚动条的默认属性,用于返回或设置当前滑块的位置, 其值表示滚动条内滑块当前所处位置的值。
? Value的值一定在Min和Max之间 ? LargeChange属性
LargeChange(大改变)属性用于设定当用户用鼠标单击滚动条的滚动箭头和滑块之间的空白区域时,滑块移动的增量值。
? SmallChange属性
SmallChange(小改变)属性用于设定当用户用鼠标单击滚动条两端箭头时,滑块移动的增量值。 ? 事件
? Change事件
当改变滚动条Value属性值时,触发Change事件。(或者移动滚动条的滑块、单击两端的箭头、单击滚动条的空白处)
? Scroll事件
按住鼠标并且拖动滚动条的滑块时触发Scroll事件。通常用Scroll来跟踪滚动条的动态变化。
——Scroll事件与Change事件的区别在于:
1、单击两端箭头或滚动条的空白处改变滑块位置时,会触发Change事件,但不会触发Scroll事件;而Scroll事件触发的同时,由于拖动滑块时改变了Value值,因此也出发了Change事件 2、当滚动条的滑块滚动时Scroll事件一直发生,而Change事件只是在滚动结束后发生一次。 案例: 设计要求 :在标题为“文本设置 ”的窗体 Form1上,添加一个文本内容为“程序 设计”文本框Text1,其字号为10号;然 后再添加两个标题分别为“字号”和“颜 的标签Label1和Label2;最后添加一色” 个水平滚动条HScroll1和一个垂直滚动条 VScroll1,其中HScroll1的最大值为72, 最小值为5,当前值为10,单击HScroll1 的空白处时,滑块的变化值为10,单击 HScroll1的两端箭头时,滑块的变化值为 VScroll1的最大值为15,最小值为0。2; 运行要求:程序运行时,当改变水平滚动条HScroll1的滑块位置时,可以改变Text1的字体大小;当拖动垂直滚动条VScroll1的滑块时,可以改变Text1的字体颜色。 注:QBColor 函数 返回一个 Long,用来表示所对应颜色值的 RGB 颜色码。 语法: QBColor(color) 必要的 color 参数是一个界于 0 到 15 的整型。 设置值color 参数有以下这些设置: 值 颜色 值 颜色 0 黑色 8 灰色 1 蓝色 9 亮蓝色 2 绿色 10 亮绿色 3 青色 11 亮青色 4 红色 12 亮红色 5 洋红色 13 亮洋红色 6 黄色 14 亮黄色 7 白色 15 亮白色
大学生程序设计visual basic第五讲笔记 - 图文



