Visual Basic 程序设计甘肃农业大学信息科学技术学院
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社第 4章 程序的控制结构及应用
4.1 结构化程序设计
4.2 顺序结构
4.3 数据的输入和输出
4.4 选择结构
4.5 循环结构
4.6 选择性控件
4.7 滚动条和计时器
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.1 结构化程序设计
20世纪 60年代末,著名学者 E.W.Dijkstra首先提出了“结构化程序设计”的思想。这种方法要求程序设计者按照一定的结构形式来设计和编写程序,使程序易阅读、易理解、易修改和易维护。
这个结构形式主要包括两方面的内容:
– 在程序设计中,采用自顶向下、逐步细化的原则
按照自顶向下、逐步细化的原则,应用程序设计过程应自顶向下分成若干层次,逐步加以解决:每一个层次是在前一层的基础上,是对前一层设计的细化,这个过程形成一个树结构。这样,一个较复杂的大问题,就被层层分解成为多个相对独立的、
易于解决的小模块,有利于程序设计工作的分工和组织,也使调试工作比较容易进行。
– 在程序设计中,编写程序的控制结构仅由三种基本的控制结构:顺序结构、选择结构和循环结构组成。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.1 结构化程序设计
顺序结构是一种最简单的程序结构,它是按从上到下的顺序执行程序。
选择结构又称为分支结构,是一种跳转性语句的程序结构。它根据给定的条件判断应该执行那一条分支
循环结构是一种重复执行的结构,它根据给定的条件,判断是否需重复执行循环体。循环结构有两种形式:当型结构和直到型结构
– 当型结构在条件成立时反复执行循环体,否则退出循环结构,先判断后执行。
– 直到型结构反复执行循环体,直到给出的条件成立时退出循环结构,先执行后判断。直到型结构的循环体至少执行一次,而当型结构的循环体有可能一次也不执行。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.1 结构化程序设计
Visual Basic虽然是面向对象的程序设计语言,但它仍然支持结构化程序设计。
实际上,在对象的内部结构中,经常利用结构化的程序设计技术,使代码结构清晰,
具有良好的可读性、可理解性。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社第 4章 程序的控制结构及应用
4.1 结构化程序设计
4.2 顺序结构
4.3 数据的输入和输出
4.4 选择结构
4.5 循环结构
4.6 选择性控件
4.7 滚动条和计时器
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.2 顺序结构
4.2.1 语句的格式
4.2.2 赋值语句
4.2.3 其它常用语句
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.2.1 语句的格式
Visual Basic和其他高级语言一样,编写代码都有一定的书写规则,Visual Basic按自己的约定对语句进行格式化处理。主要规定如下:
– Visual Basic代码中不区分字母的大小写。为了提高程序的可读性,
可在代码中加上适当的空格,Visual Basic的关键字一般自动将首字母转换成大写,其余字母小写。用户自定义的变量名等以第一 次输入为准。
– 每个语句占一行,以回车结束。语句书写自由,多个语句写在同一行时,各语句之间用冒号(:)隔开。
– 若一个语句行不能写下全部语句,或在特别需要时,可以换行。 换行时需在本行后加入续行符,即 1个空格加下划线,_”。
– 一个语句行长度不得超过 1023个字符。
– Visual Basic接受行号和标号。通常不使用行号,在程序转向时需用到标号,标号是以字母开始而以冒号结束的字符串。结构化的程序设计中,尽量不用转向语句。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.2 顺序结构
4.2.1 语句的格式
4.2.2 赋值语句
4.2.3 其它常用语句
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.2.2 赋值语句
给变量赋值和设定属性是 Visual Basic编程中常见的两个任务,赋值语句是程序设计中最基本的语句,也是为变量和事件的属性赋值的最主要的方法。赋值语句的一般形式为:
变量名 = 表达式 或 对象名,属性 = 表达式
赋值语句的作用:
– 计算右边表达式的值,然后赋给左边的变量或控件属性。表达式可以是任何类型的表达式,一般应与变量名的类型一致,当表达式的类型与变量的类型不一致时,强制转换成左边的类型。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.2.2 赋值语句
注意:
– 赋值号与关系运算符等于都用,=”表示,但系统不会产生混淆,会根据所处的位置自动判断是何种意义的符号。也就是在条件表达式中出现的是等号,否则是赋值号。
例如:赋值语句 a=b与 b=a是两个结果不相同的赋值语句,而在关系表达式中 a=b与 b=a两种表示方法是等价的。
– 赋值号左边只能是变量,不能是常量、常数符号、表达式。
– 不能在一条赋值语句中,同时给多个变量赋值。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.2 顺序结构
4.2.1 语句的格式
4.2.2 赋值语句
4.2.3 其它常用语句
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.2.3 其它常用语句
注释语句
– Visual Basic中为了进一步提高程序的可读性,常常在程序适当的位置加上必要的注释。
– 注释语句以 Rem 或单引号“‘”开始。格式:
Rem 注释内容 或 ' 注释内容
– 说明:
注释语句是非执行语句,仅对程序的有关内容起说明作用,注释语句不被解释和编译,但在程序清单中注释被完整地列出。
注释语句不能放在续行符的后面。
任何字符(汉字)都可以放在注释语句行中作为注释内容。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.2.3 其它常用语句
注释语句常用于下列情况:
– 用于程序的开头,说明程序的名称、用途、编写者和日期等。
– 用于过程(子程序)的开头,说明过程的作用、
参数的传递、返回值、使用的方法等。
– 用于一些语句组的开头或某条语句的后面,说明其作用或解释。
– 对一些重要变量,说明其含义、性质、取值等。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.2.3 其它常用语句
暂停语句
– 格式,Stop
– Stop语句用来暂停程序的执行,当执行 Stop语句时,将自动打开“立即窗口”。常在调试程序时用 Stop语句设置断点,其主要作用是把解释程序置为中断( Break)模式,以便对程序进行检查和调试。一旦程序调试结束,就不再需要解释程序的辅助,也不需要进入中断模式,
因此,在编译、生成可执行文件之前,应删去代码中的 Stop语句,否则,在执行,exe文件时,
Stop语句将关闭所有文件。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.2.3 其它常用语句
结束语句
– 格式,End
– 独立的 End语句常用来结束一个程序的执行,
它可以放在任何事件过程中。
– 在 Visual Basic中,还有多种形式的 End语句,
如,End Sub,End Function,End If,End
Select,End Type等,与对应语句配对使用,
用于结束一个过程或块。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社第 4章 程序的控制结构及应用
4.1 结构化程序设计
4.2 顺序结构
4.3 数据的输入和输出
4.4 选择结构
4.5 循环结构
4.6 选择性控件
4.7 滚动条和计时器
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3 数据的输入和输出
一个计算机程序通常包含三个部分,即输入、处理和输出。
输入、输出就是把要加工的初始数据通过某种外部设备(如键盘、磁盘文件等)输入计算机的存储器中,
且把处理结果输出到指定设备(如显示器、打印机或磁盘等),把数据以完整、有效的方式提供给用户。
Visual Basic的输入 \输出有着十分丰富的内容和形式,
常用的输入方式有:
– 两个键盘输入数据的函数 InputBox,MsgBox
– 文本框、列表框、组合框、复选框等控件。
常用的输出方式有:
– 文本框控件、标签控件
– Print方法,MsgBox函数和过程等。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3 数据的输入和输出
4.3.1 Print方法和格式函数
4.3.2 InputBox函数
4.3.3 MsgBox函数和语句
4.3.4 控件间的交互
4.3.5 打印机输出
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.1 Print方法和格式函数
Print 方法
– Print方法可以在窗体上显示文本字符串和表达式的值,并可在其他图形对象或打印机上输出信息。
– 形式:
[对象名称,] Print [ [ Spc(n) | Tab(n)]] [表达式列表 ][; |,]
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.1 Print方法和格式函数
Print 方法
– Print方法可以在窗体上显示文本字符串和表达式的值,并可在其他图形对象或打印机上输出信息。
– 形式:
[对象名称,] Print [ [ Spc(n) | Tab(n)]] [表达式列表 ][; |,]
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.1 Print方法和格式函数
说明:
– ( 1)“对象名称”可以是窗体( Form)、图形框( PictureBox)
或打印机( Pinter)。缺省对象为窗体。
– ( 2) Spc(n)函数:从当前打印位置起空 n个空格。
– ( 3) Tab(n)函数:从最左端开始计算的第 n列。
– ( 4)“表达式列表”是一个或多个表达式,可以是数值表达式或字符串。对于数值表达式,打印出表达式的值;对于字符串则照原样输出。如果省略“表达式表”,则输出一个空行。输出数据时,数值数据的前面有一个符号位,后边有一个空格,但字符串前面既不需要符号位,后面也没有空格。
– ( 5) 分号:定位在上一个被显示的字符之后。
– ( 6) 逗号:定位在下一个打印区开始处 (每个打印区 14列)。
– ( 7) Print语句句尾无分号或逗号,表示输出后换行。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.1 Print方法和格式函数
说明:
– ( 1)“对象名称”可以是窗体( Form)、图形框( PictureBox)
或打印机( Pinter)。缺省对象为窗体。
– ( 2) Spc(n)函数:从当前打印位置起空 n个空格。
– ( 3) Tab(n)函数:从最左端开始计算的第 n列。
– ( 4)“表达式列表”是一个或多个表达式,可以是数值表达式或字符串。对于数值表达式,打印出表达式的值;对于字符串则照原样输出。如果省略“表达式表”,则输出一个空行。输出数据时,数值数据的前面有一个符号位,后边有一个空格,但字符串前面既不需要符号位,后面也没有空格。
– ( 5) 分号:定位在上一个被显示的字符之后。
– ( 6) 逗号:定位在下一个打印区开始处 (每个打印区 14列)。
– ( 7) Print语句句尾无分号或逗号,表示输出后换行。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.1 Print方法和格式函数
注意:
– ( 1) 每个字符不是占有一个定宽的列。例如,大写字母 W占据超过一个定宽的列,而小写字母则占据少于一个定宽的列,汉字字符都超过定宽的列。
– ( 2)一般 Print方法在 Form_Load事件过程中无效果,
原因是窗体的 AutoRedraw属性默认为 False,若在窗体设计时在属性窗口将它设置为 True,就有效果。
– ( 3) Spc函数与 Tab函数的区别是,Tab函数从对象的左端开始记数,而 Spc函数表示两个输出项之间的间隔。若将代码中的 Spc(6)改为 Tab(6),将窗体的
AutoRedraw属性设置为 True,根据程序输出结果,读者可比较 Tab与 Spc函数的异同。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.1 Print方法和格式函数
用于 Print方法的格式输出函数
– 为了使信息按指定的格式输出,除了常用的 Tab,Spc定位函数外,
Visual Basic还提供了与 Print 配合使用的格式输出函数 Format。
– 形式:
Format (表达式 [,"格式字符串 "])
– 功能:
使数值、日期或字符串按指定的格式输出
– 说明:
( 1)“表达式”可以是数值型、日期型或字符型表达式。
( 2)“格式字符串”是一个字符串常量或变量,由专门的格式说明符组成。这些说明字符决定了“表达式”的显示格式和长度。当“格式字符串”是字符串常量的时候,必须放在双引号中。
( 3) 如果省略“格式字符串”,则 Format函数的功能与 Str函数基本相同,唯一的差别是,当把正数转换成字符串时,Str函数在字符串前面留有一个空格,作为正负号空间,而 Format 函数则不留空格。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.1 Print方法和格式函数
– 格式字符串有以下三类。
( 1)数值格式化
– 用 Format函数可以使数值按“格式字符串”指定的格式输出。
( 2)日期格式化
– 日期和时间格式化是将日期类型表达式的值或数值表达式的值以日期、时间的序数值按 "格式字符串 "指定的格式输出。
( 3)字符格式化输出
– Format$函数还可以使字符串按“格式字符串”指定的格式输出。“格式字符串”由表 4.3中所示的用于字符型格式说明字符组成。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.1 Print方法和格式函数
清除方法 Cls
– Cls方法可以清除 Form或 PictureBox中由 Print方法和图形方法在运行时所生成的文本或图形,并把光标移到对象的左上角( 0,0)。
– Cls方法的语法格式为:
[对象名称,] Cls
其中“对象名称”可以是窗体( Form)或图片框
( PictureBox),如果省略“对象名称”,则清除当前窗体上由 Print方法和图形方法在运行时所生成的文本或图形。
– 注意:
在设计时 Form 中使用 Picture 属性设置的背景位图和放置的控件不受 Cls 影响。要清除此时的背景图,需要用
LoadPicture方法。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3 数据的输入和输出
4.3.1 Print方法和格式函数
4.3.2 InputBox函数
4.3.3 MsgBox函数和语句
4.3.4 控件间的交互
4.3.5 打印机输出
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.2 InputBox函数
格式:
InputBox(<prompt>[,<title>][,<default>][,<xpos>][,<ypos>][,helpfile,context])
功能:
– InputBox函数产生一个对话框,作为输入数据的界面,等待用户输入内容,当用户单击“确定”按钮或按回车键,函数返回输入的值,其值的类型为字符串( String)。
说明:
– ( 1) <prompt> (提示 ):必选项。字符串表达式,在对话框中作为提示信息显示,最大长度 1024个字符,可为汉字,可以自动换行;若要按自己的要求显示,必须在每行行末加回车符 Chr(13)、
换行符 Chr(10)符或回车换行符的组合 Chr(13) &Chr(10)的组合来分隔或 vbCrLf符号常数。
– ( 2) <title>(标题):可选项。字符串表达式,制定对话框的标题,在对话框的标题区显示;若省略,默认为工程名。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.2 InputBox函数
说明:
– ( 3) <default>(默认):可选项。字符串表达式,指定默认输入值。当输入对话框中无输入时,则该默认值作为输入的内容。不 指定该项时,InputBox对话框中的文本输入框为空,等待用户键入信息。
– ( 4) <xpos>( x坐标位置),<ypos>( y坐标位置):可选项。
整型表达式,制定弹出对话框的左上角相对于屏幕左上角的 x,y
坐标,单位为 twip。这两个参数必须全部给出或省略,该项省略时,对话框出现在屏幕水平、垂直中间的位置。
– ( 5) helpfile,context,可选项。 Helpfile是一个字符串变量或字符串表达式,用来表示帮助文件的名字; context 是一个数值变量或表达式,用来表示相关帮助主体的帮助目录号。这两个参数必须同时提供或同时省略。当带有参数时,将在对话框中出现一个,帮助”按钮,单击该按钮或按 F1键,可以得到有关的帮助信息。
注意:使用该属性时,必须编写并编译帮助文件,即 helpfile所指的文件,才能真正得到帮助信息。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.2 InputBox函数
在使用 InputBox函数时,还应注意:
– ( 1)各项参数次序必须一一对应,除了 <prompt>(提示)一项不能省略外,其余各项均可省略,处于中间的默认部分要用逗号占位符跳过。
– ( 2)执行 InputBox函数后,产生一个对话框,提示用户输入数据。光标位于对话框底部的输入区内。
– ( 3) InputBox函数的返回值是一个字符串。如果需要引用输入的值参加运算,需要用相应的转换函数,如
Val()把 InputBox函数的返回值转换成数值类型,再参加运算。
– ( 4)每执行一次 InputBox,只能输入一个数据,在实际应用中,如果需要输入多个值,常常与循环语句或数组结合使用。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.2 InputBox函数
【 例 4-1】 编写程序,输入姓名,年龄和两门课的成绩,在窗体上打印姓名,年龄和两门课的总分,用 InputBox函数输入数据
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3 数据的输入和输出
4.3.1 Print方法和格式函数
4.3.2 InputBox函数
4.3.3 MsgBox函数和语句
4.3.4 控件间的交互
4.3.5 打印机输出
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.3 MsgBox函数和语句
MsgBox用于输出数据,它会在屏幕上显示一个对话框。
在对话框中显示消息,等待用户单击按钮,并返回一个值指示用户单击的按钮。
格式,MsgBox ( prompt[,buttons][,title][,helpfile,
context])
说明:
– ( 1) MsgBox 函数各参数意义(表 4.4)
– ( 2) Buttons 参数意义(表 4.5)
– ( 3) MsgBox函数的返回值(表 4.6)
– ( 4)如果同时提供了 helpfile 和 context,则用户可以按 F1 键以查看与上下文相对应的帮助主题。
– ( 5)如果对话框显示取消按钮,则按 Esc键与单击取消的效果相同。如果对话框包含帮助按钮,则有为对话框提供的上下文相关帮助。但是在单击其他按钮之前,不会返回任何值。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.3 MsgBox函数和语句
【 例 4-2】 输入圆的半径,求圆的面积。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.3 MsgBox函数和语句
MsgBox 函数也可以写成语句形式。
– 格式,MsgBox < prompt >
MsgBox语句与 MsgBox函数的区别是,MsgBox语句没有返回值,也不用圆括号“()”,所以常用于较简单的信息显示。其他用法与 MsgBox函数相同。
– 例如:
MsgBox "文件保存完毕,可以退出系统 "
显示如图的对话框,单击“确定”按钮或按回车键,
程序将执行后续语句。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3 数据的输入和输出
4.3.1 Print方法和格式函数
4.3.2 InputBox函数
4.3.3 MsgBox函数和语句
4.3.4 控件间的交互
4.3.5 打印机输出
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.4 控件间的交互
在程序中,输入输出除了用 InputBox、
MsgBox及 Print方法外,更多是利用控件来输入输出信息,同时实现控件之间的交互。
举例如下:
【 例 4-3】 输入圆的半径,求圆的面积。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3 数据的输入和输出
4.3.1 Print方法和格式函数
4.3.2 InputBox函数
4.3.3 MsgBox函数和语句
4.3.4 控件间的交互
4.3.5 打印机输出
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.5 打印机输出
Visual Basic除了可以在屏幕上输出以外,还可以在打印机上输出所需要的信息。 直接输出
– 直接输出就是在打印机上直接输出所需要的信息,其格式为:
Printer.Print[表达式列表 ]
– 运行该语句后,就把“表达式列表”中的内容输出到打印机上。
– 例如,下列语句行将字符串“欢迎使用 Visual Basic”输出到 Windows系统的缺省打印机上。
Printer.Print "欢迎使用 Visual Basic"
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.5 打印机输出
Printer对象包含多种属性和方法用以控制打印的各种特性。许多属性和方法与窗体和控件所用的属性和方法中使用的关键字类似。但是,一个特别之处在于,Printer对象属性与窗体和控件的属性不同:
Printer对象的属性不能在属性窗口中设置,只能在运行时通过程序代码来设置。下面介绍一些 Printer对象常用的属性和方法。
– ( 1) Page属性
Page属性用来保持和返回当前的页号,其格式为:
Printer.Page
每当应用程序开始或在 Printer 对象上使用 EndDoc 语句起,Page属性被设置为 1,每当打印完一页后,Page属性值自动增 1。通常用 Page属性打印页号,
例如:
– Printer.Print "第 "; Printer.Page; "页 "
– ( 2) NewPage方法
NewPage方法用以结束 Printer 对象中的当前页并前进到下一页,也就是实现换页操作,其格式为:
Printer.NewPage
执行 NewPage方法可以强制使打印机前进到下一个打印页,并将打印位置重置到新页的左上角。调用 NewPage方法时,它将 Printer 对象的 Page 属性加 1。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.5 打印机输出
– ( 3) EndDoc 方法
EndDoc方法用于终止发送给 Printer 对象的打印操作,将文档释放到打印设备或后台打印程序,也就是用来结束文件打印,
其格式为:
Printer.EndDoc
执行 EndDoc方法表明打印操作的结束,并向打印机管理程序发送最后一页的退出信号,并把 Page属性重置为 1。
– ( 4) KillDoc方法
KillDoc方法用于立即终止当前打印作业,其格式为:
Printer.KillDoc
执行 KillDoc方法将中断 Print函数的执行,且清除打印缓冲区中的所有信息。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.5 打印机输出
窗体输出
– 除了使用 Print方法直接在打印机上输出以外,还可以使用
PrintForm方法一次将一个窗体的全部内容都输出到打印机上,
其格式为:
[窗体,]PrintForm
– 使用 PrintForm方法可以在窗体中安排好文本、图形及其他用户元素后,再把它们整个输出到打印机上。格式中的“窗体”是要打印的窗体名,如果省略,则打印当前窗体。
– 说明:
(1)使用 PrintForm 方法,需把要输出窗体的 AutoReDraw属性设置为 True,用来保存该窗体上的信息。该属性默认值为 False。
(2) PrintForm方法不仅可以打印窗体上的文本,而且还可以打印出窗体上的任何可见的控件及图形。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社第 4章 程序的控制结构及应用
4.1 结构化程序设计
4.2 顺序结构
4.3 数据的输入和输出
4.4 选择结构
4.5 循环结构
4.6 选择性控件
4.7 滚动条和计时器
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4 选择结构
Visual Basic中的选择结构通过条件语句(也称 If语句)来完成,条件语句有多种形式:
– 单分支、双分支和多分支等。
在程序设计中,条件语句一般使用以下两种格式:
– 单行结构条件语句和块结构条件语句。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4 选择结构
4.4.1 单行结构条件语句
4.4.2 块结构条件语句
4.4.3 多分支控制结构
4.4.4 条件函数
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4.1 单行结构条件语句
单行条件语句,格式如下:
If <条件 > Then <语句 1> [Else <语句 2>]
– 该语句的功能是:程序根据 <条件 >表达式的值执行相应的操作,即执行 Then部分或 Else部分。
在条件成立时,执行语句 1,不成立时执行语句 2。
– If语句的 Else部分可以省略,Else部分省略后,
如果成立,程序执行 Then部分,如果条件不成立,程序执行 If语句的下一句。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4.1 单行结构条件语句
【 例 4-5】 输入 x的值,并打印出其绝对值。
– 代码如下:
Private Sub Command1_Click()
Dim x As Integer
x = Val(InputBox("请输入一个数 "))
If x >= 0 Then Print "x的绝对值是,"; Str(x)
Else x = -x,Print "x的绝对值是,"; Str(x)
End Sub
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4.1 单行结构条件语句
选择结构可以嵌套,即在条件语句中,
Then部分或 Else部分可以是条件语句。
嵌套的深度(即嵌套层数)没有具体规定,
但要受到每行字符数的限制(不超过
1024)。
使用时应注意 If语句与 End If语句的配对使用
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4.1 单行结构条件语句
【 例 4-6】 有以下函数:要求输入 x,并求出 y的值。
– 分析:这个问题可以通过嵌套 If语句来解决。
– 代码如下:
Private Sub Form_Click()
Dim x As Single,y As Single
x=InputBox("请输入 x的值 ")
If x>0 Then y=1 Else If x<0 Then y=-1 Else y=0
Print "x=";x,"y=";y
End Sub
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4 选择结构
4.4.1 单行结构条件语句
4.4.2 块结构条件语句
4.4.3 多分支控制结构
4.4.4 条件函数
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4.2 块结构条件语句
块结构条件语句的语法格式如下:
If <条件 1> Then
语句块 1
[ElseIf <条件 2> Then
语句块 2]
[ElseIf <条件 3> Then
语句块 3]
……
[Else
语句块 n]
End If
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4.2 块结构条件语句
说明:
– ( 1)“条件 1”、“条件 2”和单行结构条件语句中的
“条件”是一样的,都可以是关系表达式、布尔表达式或数值表达式。如果是数值表达式作为条件,则一个为 0的数值被作为 False,其他非 0数值都为 True。
– ( 2) 语句的执行过程是:如果“条件 1”的值为 True,
则执行“语句块 1”;如果“条件 1”的值为 False则检测
“条件 2”,如果“条件 2”的值为 True,执行“语句块
2”;依此类推,当发现某个“条件”为真时,执行与其相关的“语句块”,否则继续向下检测其他“条件”;如果所有 ElseIf子句后的“条件”都为 False,
则执行 Else子句后的“语句块 n”。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4.2 块结构条件语句
说明:
– ( 3)块结构条件语句中的 ElseIf子句和 Else子句都是可选的,可以省略。如果省略了所有的 ElseIf子句,块结构条件语句可以写为:
If <条件 > Then
语句块 1
Else
语句块 2
End If
– 如果省略了所有的 ElseIf子句和 Else子句,块结构条件语句可以写为:
If <条件 > Then
语句块
End If
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4.2 块结构条件语句
【 例 4-7】 输入一个分数,并判断其等级。
– 本程序使用 ElseIf表达多个条件。
【 例 4-8】 编写程序,验证 MsgBox函数的功能
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4 选择结构
4.4.1 单行结构条件语句
4.4.2 块结构条件语句
4.4.3 多分支控制结构
4.4.4 条件函数
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4.3 多分支控制结构
对于分支较多的结构,如果用条件控制语句来实现,则看起来结构不清晰,而且书写比较复杂。
在 Visual Basic中,提供了专门的处理这种多分支结构的情况语句 ——Select Case语句,其语法格式如下:
Select Case 测试表达式
Case 表达式列表 1
语句块 1
[Case 表达式列表 2
[语句块 2]]
……
[Case Else
[语句块 n]]
End Select
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4.3 多分支控制结构
说明:
– ( 1) 测试表达式可以是数值表达式或字符串表达式,一般为变量或常量。
– ( 2)表达式列表用来描述测试表达式的可能取值情况,可以由多个表达式组成,表达式与表达式之间要用“,”隔开,必须与测试表达式的数据类型相同。表达式列表有以下三种形式:
常数形式,Case 常数
常数范围形式,Case 常数 To 常数
比较判定形式,Case Is 关系运算符
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4.3 多分支控制结构
说明:
– ( 3) 语句的执行过程是:先求出测试表达式的值,然后从上到下跟各个 Case子句中的表达式列表进行匹配,
如果找到了相匹配的值,则执行该子句下的语句块,
如果没有任何 Case子句中的表达式列表与之匹配,则执行 Case Else子句中的语句块。
– ( 4)表达式列表的三种形式在数据类型相同的情况下可以混合使用。对于表示常数范围的形式,必须把较小的值写在前面,较大的值写在后面。
– ( 5)如果相同的检测条件在多个 Case子句中出现,
那么执行符合条件的第一个 Case子句下的语句块。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4.3 多分支控制结构
【 例 4-9】 某商店进行购物打折优惠活动促销,根据每位顾客一次性购物的消费额给予不同的折扣,具体方法如下:
(1) 购物 1000元以上的九五折优惠,
(2) 购物 2000元以上的九折优惠,
(3) 购物 3000元以上的八五折优惠,
(4) 购物 5000元以上的八折优惠。
请用 Select Case语句编写程序,输入购物消费额,计算出优惠后应收款。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4 选择结构
4.4.1 单行结构条件语句
4.4.2 块结构条件语句
4.4.3 多分支控制结构
4.4.4 条件函数
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4.4 条件函数
IIF函数
– 使用 IIf函数也可以实现简单的选择结构,其语法格式如下:
result = IIF(条件表达式,True部分,False部分)
说明:
– ( 1),result”是函数的返回值,IIF函数的工作过程如下:当条件表达式为真时,函数返回值为 True(真)
部分,当条件表达式为假时,函数返回值为 False(假)
部分。
– ( 2) True部分和 False部分可以是任何表达式。
IIf函数可以用来实现简单的选择结构,和条件语句的功能类似。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4.4 条件函数
Choose函数
– Choose的形式如下:
Choose(整数表达式,选项列表 )
说明:
– Choose根据整数表达式的值来决定返回选项列表中的某个值。如果整数表达式值是 1,则
Choose会返回列表中的第 1个选项。如果整数表达式值是 2,则会返回列表中的第 2个选项,
以此类推。若整数表达式的值小于 1 或大于列出的选项数目时,Choose函数返回 Null。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社第 4章 程序的控制结构及应用
4.1 结构化程序设计
4.2 顺序结构
4.3 数据的输入和输出
4.4 选择结构
4.5 循环结构
4.6 选择性控件
4.7 滚动条和计时器
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5 循环结构
循环就是即从某处开始规律地反复执行某一程序块的现象,重复执行的程序块称为“循环体”。
Visual Basic提供了多种不同风格的循环结构语句,包括 Do … Loop,
While … Wend,For … Next,For
Each … Next 等,其中最常用的是 Do …
Loop语句和 For … Next 语句。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5 循环结构
4.5.1 For循环结构
4.5.2 Do循环结构
4.5.3 While循环结构
4.5.4 循环的嵌套
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5.1 For循环结构
For循环也称计数循环或 For…Next 循环,
常常用于循环次数已知的场合。其语法格式如下:
For 循环变量 = 初值 To 终值 [Step 步长 ]
[循环体 ]
Next [循环变量 ]
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5.1 For循环结构
For循环也称计数循环或 For…Next 循环,
常常用于循环次数已知的场合。其语法格式如下:
For 循环变量 = 初值 To 终值 [Step 步长 ]
[循环体 ]
Next [循环变量 ]
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5.1 For循环结构
说明:
– ( 1) For语句的执行过程是:把“初值”赋给“循环变量”,检查循环变量的值是否超过终值,如果超过就直接跳出循环结构,否则执行一次循环体。当执行
Next子句时,循环变量的值增加一个步长,同时与终值比较,如果不超过终值,则继续执行循环体,否则跳出循环结构。如此反复执行,直到循环变量的值超越终值,则循环结束,执行下一条语句。
– ( 2)初值和终值是必要参数,只能是数值变量,不能是数组元素。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5.1 For循环结构
说明:
– ( 3)步长为可选参数,如果没有指定,则默认值为 1。
步长可以是正数,也可以是负数,如果为正数则构成递增循环,如果为负数则构成递减循环。如果步长的值为正,则循环变量超过终值的含义为:初值 >终值。
如果步长的值为负,则循环变量超过终值的含义为:
初值 <终值。
– ( 4)如果步长为正,则初值应该小于终值。如果步长为负,则初值应该大于终值。如果不满足上述条件,
循环体一次都不会执行。
– ( 5)初值、终值和步长一般为整数值,但也可以是实数。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5.1 For循环结构
说明:
– ( 6) Next后面的“循环变量”可以省略,如果不省略,则必须同 For后面的循环变量相同。
– ( 7) For循环的循环次数可以由初值、终值和步长决定,其值为:终值减初值再除以步长的绝对值求整后加一。
– ( 8)一般在循环体内不要修改循环变量的值。
如果在循环中改变循环变量的值,将会使程序代码的阅读和调试变得更加困难。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5.1 For循环结构
【 例 4-10】 求 1到 100的和。
【 例 4-11】 求 Fibonacci数列的前 40个数。
这个数列有如下特点:前两个数为 1,从第三个数开始,其值是前两个数的和,即:
F1=1 ( n=1)
F2=1 ( n=2)
Fn= Fn- 1+ Fn- 2 ( n≥3)
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5 循环结构
4.5.1 For循环结构
4.5.2 Do循环结构
4.5.3 While循环结构
4.5.4 循环的嵌套
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5.2 Do循环结构
Do循环结构也是根据条件决定循环的次数,
使用比较灵活,既能指定循环条件,也能指定循环结束条件。即可构成先判断条件形式,也可以构成后判断条件的形式。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5.2 Do循环结构
先判断条件的 Do…Loop 循环
– 先判断条件的循环,有两种格式,习惯上分别称为“当型循环”
和“直到型循环”。
– 格式一:
Do While 条件循环体
Loop
– 这种形式的循环,语句执行过程是:先检测“条件”,如果条件为 True,则执行循环体中语句,否则,退出循环结构。
– 格式二:
Do Until 条件循环体
Loop
– 格式二的执行过程和格式一基本相同,唯一不同的是,它在“条件”为假时重复执行循环体,直到条件为真时退出循环结构。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5.2 Do循环结构
后判断条件的 Do…Loop 循环
– 后判断条件的循环同样有“当型循环”和“直到型循环”两种形式。
– 格式三:
Do
循环体
Loop While 条件
– 语句的执行过程是:首先执行循环体中语句,然后判断“条件”,
如果条件为 True,则继续执行循环体,否则退出循环结构。
– 格式四:
Do
循环体
Loop Until 条件
– 格式四的执行过程和格式三基本一样,也是先执行后判断。唯一不同的是,它在“条件”为假时重复执行循环体,直到条件为真 时退出循环结构。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5.2 Do循环结构
【 例 4-12】 用辗转相除法求两自然数 m,n
的最大公约数和最小公倍数。
– 分析:求最大公约数的算法思想:
( 1)对于已知两数 m,n,使得 m>n;
( 2) m除以 n得余数 r;
( 3)若 r≠0,则令 m ← n,n ← r,继续相除得新的 r;
( 4)直到 r=0求得最大公约数,结束。
– 求得了最大公约数后,最小公倍数就可很方便地求出,即将原两数相乘除以最大公约数。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5.2 Do循环结构
【 例 4-13】 验证“角谷猜想”。
–,角谷猜想”指出,对于一个自然数,若该数为偶数,则除以 2;若该数为奇数,则乘以 3并加 1;将得到的数再重复按该规则运算,最终可得到 1。现给定一个数 n,试用程序来验证该过程。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5 循环结构
4.5.1 For循环结构
4.5.2 Do循环结构
4.5.3 While循环结构
4.5.4 循环的嵌套
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5.3 While循环结构
While循环结构用 While…Wend 语句来实现,其语法格式如下:
While 条件
[循环体 ]
Wend
说明:
– ( 1)“条件” 可以是关系表达式、布尔表达式或数值表达式,
Visual Basic将这个表达式的值解释为 True或 False。如果是数值表达式作为条件,则一个为 0的数值被作为 False,其他非 0数值都为 True。
– ( 2)语句的执行过程是:检测“条件”,如果为 True,则执行循环体中语句,否则退出循环结构。重复执行上述操作,在“条件”
为 True时重复执行循环体,一直到条件为 False时退出循环语句。
– ( 3)如果条件一开始就不成立,则循环体一次也不会被执行。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5.3 While循环结构
【 例 4-14】 利用公式 π/4=1-1/3+1/5-1/7+…,
求 π的近似值,直到最后一项的绝对值小于等于 10-6为止 。
【 例 4-15】 通过键盘输入一个字符串,统计其中 a,b,c出现的次数 。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5 循环结构
4.5.1 For循环结构
4.5.2 Do循环结构
4.5.3 While循环结构
4.5.4 循环的嵌套
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5.4 循环的嵌套
一个循环体内又包含另一个循环语句,称之为循环的嵌套。在内嵌的循环中还可以嵌套循环,这就是多重循环。
【 例 4-16】 打印乘法九九表。
【 例 4-17】 将 1角钱兑换成分币有多少种方案。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社第 4章 程序的控制结构及应用
4.1 结构化程序设计
4.2 顺序结构
4.3 数据的输入和输出
4.4 选择结构
4.5 循环结构
4.6 选择性控件
4.7 滚动条和计时器
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6 选择性控件
4.6.1 单选按钮和复选框
4.6.2 框架
4.6.3 列表框和组合框
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6.1 单选按钮和复选框
在程序设计过程中,有时需要从多个选项中选择一个,各选项间的关系是互斥的,单选按钮
( Option Button)就能完成这个功能。
单选按钮在运行期间可以改变状态,当打开选定的单选按钮时,其余的都处于关闭状态。单选按钮一般用框架进行分组。在一组单选按钮中只能选择其中一个。
复选框( Check Box)的功能类似于单选按钮,
也允许在多个选项中做出选择。但不同的是,多个单选按钮中只允许选择其中的一个,而复选框也可以选择其中的一项,也可以同时选择多项或全部不选。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6.1 单选按钮和复选框
单选按钮和复选框的
– 主要属性
Style
Value
Alignment
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6.1 单选按钮和复选框
【 例 4-18】 利用单选按钮改变文字的颜色。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6.1 单选按钮和复选框
【 例 4-19】 在例 4-18的基础上,调整控件位置,利用复选框改变文字的字形。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6 选择性控件
4.6.1 单选按钮和复选框
4.6.2 框架
4.6.3 列表框和组合框
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6.2 框架
框架控件( Frame)是一个容器控件。
– 用于窗体上的对象分组。可以把不同的对象放在一个框架中,框架提供视觉上的区分和总体上的激活 /屏蔽等特性。
框架的主要属性除 Enable,FontBold、
FontName,FontUnderline,Height,Left,Top、
Visible,Width等外,常用的主要属性有两个,
Caption,Enabled。
框架常用的事件是 Click和 DblClick,它不接受用户输入,不能显示文本和图形,也不能与图形相连。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6.2 框架
为了将控件分组,首先需要绘制框架控件,然后绘制框架控件里面的控件,这样就可以把框架和里面的控件同时移动。如果在框架控件外绘制了一个控件并把它移到框架内部,那么该控件将在框架的上部,不属于框架的一部分,
这时移动框架控件,该控件不会随框架一起移动。如果希望把已经存在的若干控件放在某个框架中,可以先选择所有控件,将它们剪贴到剪贴板上,再把它们粘贴到框架上。
为了选择框架内的控件,必须在框架处于非活动状态时,
按住 Ctrl键,然后用鼠标点击或画一个框,框住要选择的控件。选择多个控件时,也可用这个方法,即按住 Ctrl键,
用鼠标点击多个控件或框住多个控件即可。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6.2 框架
【 例 4-20】 编写程序,通过单选按钮控制输出内容。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6 选择性控件
4.6.1 单选按钮和复选框
4.6.2 框架
4.6.3 列表框和组合框
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6.3 列表框和组合框
列表框( ListBox)以列表形式显示以列数据,利用列表框,可以接受用户对其中需要的项目的选择。
组合框( ComboBox)是文本框和列表框组合。
列表框和组合框是两个进行快速浏览和标准化输入数据的重要控件。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6.3 列表框和组合框
列表框
– 列表框( ListBox)控件是一个可提供选择的列表。缺省时,选项以垂直单列方式显示,也可以设置成多列方式。如果待选项目超过列表框长度,将会自动提供滚动条,以供查看。下图为一个单列的列表框。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6.3 列表框和组合框
列表框支持的属性除 Name,Left,Top,Height,Width、
FontBold,FontItalic,FontName,FontSize、
FontUnderline,BackColor,ForeColor,Enabled、
Visible等通用属性之外,还具有以下主要属性:
– Columns
返回或设置一个值,以决定列表框控件是水平还是垂直滚动以及如何显示列中的项目。
– List
返回或设置控件的列表部分的项目
– ListCount
返回列表框中项目的个数
– ListIndex
返回或设置列表框中已选定项目的位置
– Text
返回列表框最后一次选中的表项的文本
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6.3 列表框和组合框
– Select
返回或设置在列表框控件中的一个项的选择状态
– MultiSelect
返回或设置一个值,该值指示是否能够在列表框控件中选择多个表项以及如何进行选择。
– SelCount
返回在列表框控件中被选中项的数目
– Sorted
用来确定列表框中的项目是否按字母、数字升序排列
– Style
该属性决定控件外观,只能在设计时确定
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6.3 列表框和组合框
列表框接收 Click,DblClick、
GotFocus,LostFocus等事件。
有时不用编写 Click事件过程代码,而是当单击一个命令按钮或发生 DblClick事件时读取 Text
属性。
程序运行时,用户不能向列表框中添加项目,只能在清单中做出选择。在设计时,可以使用 List属性在列表中增加或删除项目,如图所示。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6.3 列表框和组合框
在程序代码中,可以使用 AddItem方法向列表中添加项目,使用 RemoveItem方法删除项目,使用 Clear方法清除列表框中的所有项目,例如产生列表框 (图 4.18)的代码为:
Private Sub Form_Load()
List1.AddItem "研究生 "
List1.AddItem "本科 "
List1.AddItem "专科 "
List1.AddItem "高中 "
List1.AddItem "小学及以下 "
End Sub
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6.3 列表框和组合框
组合框
– 组合框( ComboBox)控件是列表框与文本框的组合而成的控件。也就是说,组合框是一种独立的控件,但它兼有列表框和文本框的功能。
它可以像列表框一样,让用户通过鼠标选择需要的项目,也可以像文本框一样,用键入的方式选择项目。
– 组合框的属性、方法与列表框基本相同。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6.3 列表框和组合框
– 通过 Style属性,可以设置组合框的三种样式,
如图所示
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6.3 列表框和组合框
【 例 4-21】 从提供的选择中,选择相应的字体类型、字体大小、是否黑体、是否加下划线,确定后使文本框中的字符串按选定的字体属性显示。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社第 4章 程序的控制结构及应用
4.1 结构化程序设计
4.2 顺序结构
4.3 数据的输入和输出
4.4 选择结构
4.5 循环结构
4.6 选择性控件
4.7 滚动条和计时器
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.7 滚动条和计时器
4.7.1 滚动条
4.7.2 计时器
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.7.1 滚动条
滚动条常常用于辅助浏览显示内容、确定位置。
主要用在列有较长项目或者大量信息的地方,
这样用户就可以在小区域中巡视到所有的列表项目或者信息等。滚动条也可以用来作为数据输入工具。
在 Visual Basic中,滚动条分为两种,水平滚动条( HscrollBar)和垂直滚动条
( VscrollBar)。
除方向不同以外,水平滚动条和垂直滚动条的结构和操作是一样的。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.7.1 滚动条
滚动条属性
– 垂直滚动条的值从上往下递增,最上端代表最小值,
最下端代表最大值。水平滚动条的值从左往右递增,
最左端代表最小值,最右端代表最大值。滚动条的值均用整数表示,取值范围是 -32 768~32 767。
– 滚动条的坐标与设计长度无关。就像一条有刻度的直尺,最小值和最大值分别在两个端点。
– 滚动条的属性用来识别滚动条的状态,除支持
Name,Enabled,Visible,Top,Left,Height、
Width,Parent,Tag等属性外,还具有以下属性
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.7.1 滚动条
滚动条属性
– Min
返回或设置滚动条滚动范围的下界,即滚动块位于
HscrollBar控件的最左端或 VscrollBar控件的最上端时所代表的值。
– Max
返回或设置滚动条滚动范围的上界,即滚动块位于
HscrollBar控件的最右端或 VscorllBar控件的最下端时所代表的值。
– Value
返回或设置滚动条的当前位置,其返回值始终介于 Max
和 Min 属性值之间,包括这两个值。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.7.1 滚动条
滚动条属性
– LargeChange
返回和设置当用户单击滚动条和滚动箭头之间的区域时,滚动条控件( HscrollBar 或 VscrollBar)的 Value 属性值的增量或减量
– SmallChange
返回或设置当用户单击滚动箭头时,滚动条控件的 Value 属性值的改变量
– 对于以上两个属性,值都可以指定在 1~32767之间(包括 1和 32767)的整数值。默认值都设为 1。一般在设计时设置这两个属性的值。当滚动条的状态必须改变时,
也可以在运行应用程序时对其进行重新赋值设置。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.7.1 滚动条
滚动条常用事件
– 滚动条控件最常用的事件是 Change事件。在应用程序运行时,只要滚动条的 Value属性值发生变化,
就会触发 Change事件。可以在代码中改变 Value属性值,但更多的是由于用户用鼠标拖动滚动块、单击滚动块两侧或者单击滚动条两侧的箭头按钮而导致 Value属性的值的改变。
– 除 Change事件以外,与滚动条控件有关的事件还有 Scroll事件。当在滚动条内拖动滚动块时会触发
Scroll事件,单击滚动条箭头或滚动条时不发生该事件。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.7.1 滚动条
【 例 4-22】 例如,可以通过滚动条来改变一个物体的运行速度,如图所示 。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.7 滚动条和计时器
4.7.1 滚动条
4.7.2 计时器
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.7.2 计时器
计时器控件( Timer)是一个很特殊的控件,
它主要有两个功能:一个是用于定时完成某项任务,即按一定时间间隔触发事件,有规律地隔一段时间执行一次相同的代码;另一个是进行某种后台处理。
计时器控件运行时不可见,所以它的位置无关紧要,通常用户只需在工具箱中双击它即完成了创建。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.7.2 计时器
计时器控件除了具有一般的属性 Name和
Enabled外,其最重要的属性是 Interval属性,该属性是指触发计时器两个事件之间的毫秒数,取值范围为 1~65 535。如果该属性设置为 0(缺省值),则计时器控件失效。
计时器控件的最常用事件是 Timer事件,也就是控件对象在间隔了一个 Interval设定的时间后所触发的事件。无论何时,只要 计时器控件的
Enabled 属性被设置为 True 而且 Interval 属性大于 0,则 Timer 事件以 Interval 属性指定的时间间隔发生。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.7.2 计时器
【 例 4-23】 用计时器控件建立一个数字计时器,在窗体上显示当前系统时间。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社学完本章你应能够,
了解结构化程序设计的三种基本结构及语句的书写规则等;
掌握简单程序中的数据输入、输出方法;
掌握选择结构的格式及执行过程;
掌握循环结构的格式及执行过程;
正确理解选择结构和循环结构的嵌套;
掌握选择控件的使用。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社思 考 题
1,选择结构和循环结构的作用是什么?
2,If语句嵌套时要注意什么问题?
3,若事先不知道循环次数,如何用 For循环实现?
4,选项控件和复选框控件功能上的主要区别是什么?
5,框架的作用是什么?如何在框架中建立控件?
6,有哪几种方法可以在列表框中添加选项?列表框中的选项在程序运行期间能否
修改?
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社第 4章 程序的控制结构及应用
4.1 结构化程序设计
4.2 顺序结构
4.3 数据的输入和输出
4.4 选择结构
4.5 循环结构
4.6 选择性控件
4.7 滚动条和计时器
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.1 结构化程序设计
20世纪 60年代末,著名学者 E.W.Dijkstra首先提出了“结构化程序设计”的思想。这种方法要求程序设计者按照一定的结构形式来设计和编写程序,使程序易阅读、易理解、易修改和易维护。
这个结构形式主要包括两方面的内容:
– 在程序设计中,采用自顶向下、逐步细化的原则
按照自顶向下、逐步细化的原则,应用程序设计过程应自顶向下分成若干层次,逐步加以解决:每一个层次是在前一层的基础上,是对前一层设计的细化,这个过程形成一个树结构。这样,一个较复杂的大问题,就被层层分解成为多个相对独立的、
易于解决的小模块,有利于程序设计工作的分工和组织,也使调试工作比较容易进行。
– 在程序设计中,编写程序的控制结构仅由三种基本的控制结构:顺序结构、选择结构和循环结构组成。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.1 结构化程序设计
顺序结构是一种最简单的程序结构,它是按从上到下的顺序执行程序。
选择结构又称为分支结构,是一种跳转性语句的程序结构。它根据给定的条件判断应该执行那一条分支
循环结构是一种重复执行的结构,它根据给定的条件,判断是否需重复执行循环体。循环结构有两种形式:当型结构和直到型结构
– 当型结构在条件成立时反复执行循环体,否则退出循环结构,先判断后执行。
– 直到型结构反复执行循环体,直到给出的条件成立时退出循环结构,先执行后判断。直到型结构的循环体至少执行一次,而当型结构的循环体有可能一次也不执行。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.1 结构化程序设计
Visual Basic虽然是面向对象的程序设计语言,但它仍然支持结构化程序设计。
实际上,在对象的内部结构中,经常利用结构化的程序设计技术,使代码结构清晰,
具有良好的可读性、可理解性。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社第 4章 程序的控制结构及应用
4.1 结构化程序设计
4.2 顺序结构
4.3 数据的输入和输出
4.4 选择结构
4.5 循环结构
4.6 选择性控件
4.7 滚动条和计时器
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.2 顺序结构
4.2.1 语句的格式
4.2.2 赋值语句
4.2.3 其它常用语句
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.2.1 语句的格式
Visual Basic和其他高级语言一样,编写代码都有一定的书写规则,Visual Basic按自己的约定对语句进行格式化处理。主要规定如下:
– Visual Basic代码中不区分字母的大小写。为了提高程序的可读性,
可在代码中加上适当的空格,Visual Basic的关键字一般自动将首字母转换成大写,其余字母小写。用户自定义的变量名等以第一 次输入为准。
– 每个语句占一行,以回车结束。语句书写自由,多个语句写在同一行时,各语句之间用冒号(:)隔开。
– 若一个语句行不能写下全部语句,或在特别需要时,可以换行。 换行时需在本行后加入续行符,即 1个空格加下划线,_”。
– 一个语句行长度不得超过 1023个字符。
– Visual Basic接受行号和标号。通常不使用行号,在程序转向时需用到标号,标号是以字母开始而以冒号结束的字符串。结构化的程序设计中,尽量不用转向语句。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.2 顺序结构
4.2.1 语句的格式
4.2.2 赋值语句
4.2.3 其它常用语句
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.2.2 赋值语句
给变量赋值和设定属性是 Visual Basic编程中常见的两个任务,赋值语句是程序设计中最基本的语句,也是为变量和事件的属性赋值的最主要的方法。赋值语句的一般形式为:
变量名 = 表达式 或 对象名,属性 = 表达式
赋值语句的作用:
– 计算右边表达式的值,然后赋给左边的变量或控件属性。表达式可以是任何类型的表达式,一般应与变量名的类型一致,当表达式的类型与变量的类型不一致时,强制转换成左边的类型。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.2.2 赋值语句
注意:
– 赋值号与关系运算符等于都用,=”表示,但系统不会产生混淆,会根据所处的位置自动判断是何种意义的符号。也就是在条件表达式中出现的是等号,否则是赋值号。
例如:赋值语句 a=b与 b=a是两个结果不相同的赋值语句,而在关系表达式中 a=b与 b=a两种表示方法是等价的。
– 赋值号左边只能是变量,不能是常量、常数符号、表达式。
– 不能在一条赋值语句中,同时给多个变量赋值。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.2 顺序结构
4.2.1 语句的格式
4.2.2 赋值语句
4.2.3 其它常用语句
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.2.3 其它常用语句
注释语句
– Visual Basic中为了进一步提高程序的可读性,常常在程序适当的位置加上必要的注释。
– 注释语句以 Rem 或单引号“‘”开始。格式:
Rem 注释内容 或 ' 注释内容
– 说明:
注释语句是非执行语句,仅对程序的有关内容起说明作用,注释语句不被解释和编译,但在程序清单中注释被完整地列出。
注释语句不能放在续行符的后面。
任何字符(汉字)都可以放在注释语句行中作为注释内容。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.2.3 其它常用语句
注释语句常用于下列情况:
– 用于程序的开头,说明程序的名称、用途、编写者和日期等。
– 用于过程(子程序)的开头,说明过程的作用、
参数的传递、返回值、使用的方法等。
– 用于一些语句组的开头或某条语句的后面,说明其作用或解释。
– 对一些重要变量,说明其含义、性质、取值等。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.2.3 其它常用语句
暂停语句
– 格式,Stop
– Stop语句用来暂停程序的执行,当执行 Stop语句时,将自动打开“立即窗口”。常在调试程序时用 Stop语句设置断点,其主要作用是把解释程序置为中断( Break)模式,以便对程序进行检查和调试。一旦程序调试结束,就不再需要解释程序的辅助,也不需要进入中断模式,
因此,在编译、生成可执行文件之前,应删去代码中的 Stop语句,否则,在执行,exe文件时,
Stop语句将关闭所有文件。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.2.3 其它常用语句
结束语句
– 格式,End
– 独立的 End语句常用来结束一个程序的执行,
它可以放在任何事件过程中。
– 在 Visual Basic中,还有多种形式的 End语句,
如,End Sub,End Function,End If,End
Select,End Type等,与对应语句配对使用,
用于结束一个过程或块。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社第 4章 程序的控制结构及应用
4.1 结构化程序设计
4.2 顺序结构
4.3 数据的输入和输出
4.4 选择结构
4.5 循环结构
4.6 选择性控件
4.7 滚动条和计时器
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3 数据的输入和输出
一个计算机程序通常包含三个部分,即输入、处理和输出。
输入、输出就是把要加工的初始数据通过某种外部设备(如键盘、磁盘文件等)输入计算机的存储器中,
且把处理结果输出到指定设备(如显示器、打印机或磁盘等),把数据以完整、有效的方式提供给用户。
Visual Basic的输入 \输出有着十分丰富的内容和形式,
常用的输入方式有:
– 两个键盘输入数据的函数 InputBox,MsgBox
– 文本框、列表框、组合框、复选框等控件。
常用的输出方式有:
– 文本框控件、标签控件
– Print方法,MsgBox函数和过程等。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3 数据的输入和输出
4.3.1 Print方法和格式函数
4.3.2 InputBox函数
4.3.3 MsgBox函数和语句
4.3.4 控件间的交互
4.3.5 打印机输出
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.1 Print方法和格式函数
Print 方法
– Print方法可以在窗体上显示文本字符串和表达式的值,并可在其他图形对象或打印机上输出信息。
– 形式:
[对象名称,] Print [ [ Spc(n) | Tab(n)]] [表达式列表 ][; |,]
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.1 Print方法和格式函数
Print 方法
– Print方法可以在窗体上显示文本字符串和表达式的值,并可在其他图形对象或打印机上输出信息。
– 形式:
[对象名称,] Print [ [ Spc(n) | Tab(n)]] [表达式列表 ][; |,]
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.1 Print方法和格式函数
说明:
– ( 1)“对象名称”可以是窗体( Form)、图形框( PictureBox)
或打印机( Pinter)。缺省对象为窗体。
– ( 2) Spc(n)函数:从当前打印位置起空 n个空格。
– ( 3) Tab(n)函数:从最左端开始计算的第 n列。
– ( 4)“表达式列表”是一个或多个表达式,可以是数值表达式或字符串。对于数值表达式,打印出表达式的值;对于字符串则照原样输出。如果省略“表达式表”,则输出一个空行。输出数据时,数值数据的前面有一个符号位,后边有一个空格,但字符串前面既不需要符号位,后面也没有空格。
– ( 5) 分号:定位在上一个被显示的字符之后。
– ( 6) 逗号:定位在下一个打印区开始处 (每个打印区 14列)。
– ( 7) Print语句句尾无分号或逗号,表示输出后换行。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.1 Print方法和格式函数
说明:
– ( 1)“对象名称”可以是窗体( Form)、图形框( PictureBox)
或打印机( Pinter)。缺省对象为窗体。
– ( 2) Spc(n)函数:从当前打印位置起空 n个空格。
– ( 3) Tab(n)函数:从最左端开始计算的第 n列。
– ( 4)“表达式列表”是一个或多个表达式,可以是数值表达式或字符串。对于数值表达式,打印出表达式的值;对于字符串则照原样输出。如果省略“表达式表”,则输出一个空行。输出数据时,数值数据的前面有一个符号位,后边有一个空格,但字符串前面既不需要符号位,后面也没有空格。
– ( 5) 分号:定位在上一个被显示的字符之后。
– ( 6) 逗号:定位在下一个打印区开始处 (每个打印区 14列)。
– ( 7) Print语句句尾无分号或逗号,表示输出后换行。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.1 Print方法和格式函数
注意:
– ( 1) 每个字符不是占有一个定宽的列。例如,大写字母 W占据超过一个定宽的列,而小写字母则占据少于一个定宽的列,汉字字符都超过定宽的列。
– ( 2)一般 Print方法在 Form_Load事件过程中无效果,
原因是窗体的 AutoRedraw属性默认为 False,若在窗体设计时在属性窗口将它设置为 True,就有效果。
– ( 3) Spc函数与 Tab函数的区别是,Tab函数从对象的左端开始记数,而 Spc函数表示两个输出项之间的间隔。若将代码中的 Spc(6)改为 Tab(6),将窗体的
AutoRedraw属性设置为 True,根据程序输出结果,读者可比较 Tab与 Spc函数的异同。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.1 Print方法和格式函数
用于 Print方法的格式输出函数
– 为了使信息按指定的格式输出,除了常用的 Tab,Spc定位函数外,
Visual Basic还提供了与 Print 配合使用的格式输出函数 Format。
– 形式:
Format (表达式 [,"格式字符串 "])
– 功能:
使数值、日期或字符串按指定的格式输出
– 说明:
( 1)“表达式”可以是数值型、日期型或字符型表达式。
( 2)“格式字符串”是一个字符串常量或变量,由专门的格式说明符组成。这些说明字符决定了“表达式”的显示格式和长度。当“格式字符串”是字符串常量的时候,必须放在双引号中。
( 3) 如果省略“格式字符串”,则 Format函数的功能与 Str函数基本相同,唯一的差别是,当把正数转换成字符串时,Str函数在字符串前面留有一个空格,作为正负号空间,而 Format 函数则不留空格。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.1 Print方法和格式函数
– 格式字符串有以下三类。
( 1)数值格式化
– 用 Format函数可以使数值按“格式字符串”指定的格式输出。
( 2)日期格式化
– 日期和时间格式化是将日期类型表达式的值或数值表达式的值以日期、时间的序数值按 "格式字符串 "指定的格式输出。
( 3)字符格式化输出
– Format$函数还可以使字符串按“格式字符串”指定的格式输出。“格式字符串”由表 4.3中所示的用于字符型格式说明字符组成。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.1 Print方法和格式函数
清除方法 Cls
– Cls方法可以清除 Form或 PictureBox中由 Print方法和图形方法在运行时所生成的文本或图形,并把光标移到对象的左上角( 0,0)。
– Cls方法的语法格式为:
[对象名称,] Cls
其中“对象名称”可以是窗体( Form)或图片框
( PictureBox),如果省略“对象名称”,则清除当前窗体上由 Print方法和图形方法在运行时所生成的文本或图形。
– 注意:
在设计时 Form 中使用 Picture 属性设置的背景位图和放置的控件不受 Cls 影响。要清除此时的背景图,需要用
LoadPicture方法。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3 数据的输入和输出
4.3.1 Print方法和格式函数
4.3.2 InputBox函数
4.3.3 MsgBox函数和语句
4.3.4 控件间的交互
4.3.5 打印机输出
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.2 InputBox函数
格式:
InputBox(<prompt>[,<title>][,<default>][,<xpos>][,<ypos>][,helpfile,context])
功能:
– InputBox函数产生一个对话框,作为输入数据的界面,等待用户输入内容,当用户单击“确定”按钮或按回车键,函数返回输入的值,其值的类型为字符串( String)。
说明:
– ( 1) <prompt> (提示 ):必选项。字符串表达式,在对话框中作为提示信息显示,最大长度 1024个字符,可为汉字,可以自动换行;若要按自己的要求显示,必须在每行行末加回车符 Chr(13)、
换行符 Chr(10)符或回车换行符的组合 Chr(13) &Chr(10)的组合来分隔或 vbCrLf符号常数。
– ( 2) <title>(标题):可选项。字符串表达式,制定对话框的标题,在对话框的标题区显示;若省略,默认为工程名。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.2 InputBox函数
说明:
– ( 3) <default>(默认):可选项。字符串表达式,指定默认输入值。当输入对话框中无输入时,则该默认值作为输入的内容。不 指定该项时,InputBox对话框中的文本输入框为空,等待用户键入信息。
– ( 4) <xpos>( x坐标位置),<ypos>( y坐标位置):可选项。
整型表达式,制定弹出对话框的左上角相对于屏幕左上角的 x,y
坐标,单位为 twip。这两个参数必须全部给出或省略,该项省略时,对话框出现在屏幕水平、垂直中间的位置。
– ( 5) helpfile,context,可选项。 Helpfile是一个字符串变量或字符串表达式,用来表示帮助文件的名字; context 是一个数值变量或表达式,用来表示相关帮助主体的帮助目录号。这两个参数必须同时提供或同时省略。当带有参数时,将在对话框中出现一个,帮助”按钮,单击该按钮或按 F1键,可以得到有关的帮助信息。
注意:使用该属性时,必须编写并编译帮助文件,即 helpfile所指的文件,才能真正得到帮助信息。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.2 InputBox函数
在使用 InputBox函数时,还应注意:
– ( 1)各项参数次序必须一一对应,除了 <prompt>(提示)一项不能省略外,其余各项均可省略,处于中间的默认部分要用逗号占位符跳过。
– ( 2)执行 InputBox函数后,产生一个对话框,提示用户输入数据。光标位于对话框底部的输入区内。
– ( 3) InputBox函数的返回值是一个字符串。如果需要引用输入的值参加运算,需要用相应的转换函数,如
Val()把 InputBox函数的返回值转换成数值类型,再参加运算。
– ( 4)每执行一次 InputBox,只能输入一个数据,在实际应用中,如果需要输入多个值,常常与循环语句或数组结合使用。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.2 InputBox函数
【 例 4-1】 编写程序,输入姓名,年龄和两门课的成绩,在窗体上打印姓名,年龄和两门课的总分,用 InputBox函数输入数据
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3 数据的输入和输出
4.3.1 Print方法和格式函数
4.3.2 InputBox函数
4.3.3 MsgBox函数和语句
4.3.4 控件间的交互
4.3.5 打印机输出
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.3 MsgBox函数和语句
MsgBox用于输出数据,它会在屏幕上显示一个对话框。
在对话框中显示消息,等待用户单击按钮,并返回一个值指示用户单击的按钮。
格式,MsgBox ( prompt[,buttons][,title][,helpfile,
context])
说明:
– ( 1) MsgBox 函数各参数意义(表 4.4)
– ( 2) Buttons 参数意义(表 4.5)
– ( 3) MsgBox函数的返回值(表 4.6)
– ( 4)如果同时提供了 helpfile 和 context,则用户可以按 F1 键以查看与上下文相对应的帮助主题。
– ( 5)如果对话框显示取消按钮,则按 Esc键与单击取消的效果相同。如果对话框包含帮助按钮,则有为对话框提供的上下文相关帮助。但是在单击其他按钮之前,不会返回任何值。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.3 MsgBox函数和语句
【 例 4-2】 输入圆的半径,求圆的面积。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.3 MsgBox函数和语句
MsgBox 函数也可以写成语句形式。
– 格式,MsgBox < prompt >
MsgBox语句与 MsgBox函数的区别是,MsgBox语句没有返回值,也不用圆括号“()”,所以常用于较简单的信息显示。其他用法与 MsgBox函数相同。
– 例如:
MsgBox "文件保存完毕,可以退出系统 "
显示如图的对话框,单击“确定”按钮或按回车键,
程序将执行后续语句。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3 数据的输入和输出
4.3.1 Print方法和格式函数
4.3.2 InputBox函数
4.3.3 MsgBox函数和语句
4.3.4 控件间的交互
4.3.5 打印机输出
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.4 控件间的交互
在程序中,输入输出除了用 InputBox、
MsgBox及 Print方法外,更多是利用控件来输入输出信息,同时实现控件之间的交互。
举例如下:
【 例 4-3】 输入圆的半径,求圆的面积。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3 数据的输入和输出
4.3.1 Print方法和格式函数
4.3.2 InputBox函数
4.3.3 MsgBox函数和语句
4.3.4 控件间的交互
4.3.5 打印机输出
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.5 打印机输出
Visual Basic除了可以在屏幕上输出以外,还可以在打印机上输出所需要的信息。 直接输出
– 直接输出就是在打印机上直接输出所需要的信息,其格式为:
Printer.Print[表达式列表 ]
– 运行该语句后,就把“表达式列表”中的内容输出到打印机上。
– 例如,下列语句行将字符串“欢迎使用 Visual Basic”输出到 Windows系统的缺省打印机上。
Printer.Print "欢迎使用 Visual Basic"
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.5 打印机输出
Printer对象包含多种属性和方法用以控制打印的各种特性。许多属性和方法与窗体和控件所用的属性和方法中使用的关键字类似。但是,一个特别之处在于,Printer对象属性与窗体和控件的属性不同:
Printer对象的属性不能在属性窗口中设置,只能在运行时通过程序代码来设置。下面介绍一些 Printer对象常用的属性和方法。
– ( 1) Page属性
Page属性用来保持和返回当前的页号,其格式为:
Printer.Page
每当应用程序开始或在 Printer 对象上使用 EndDoc 语句起,Page属性被设置为 1,每当打印完一页后,Page属性值自动增 1。通常用 Page属性打印页号,
例如:
– Printer.Print "第 "; Printer.Page; "页 "
– ( 2) NewPage方法
NewPage方法用以结束 Printer 对象中的当前页并前进到下一页,也就是实现换页操作,其格式为:
Printer.NewPage
执行 NewPage方法可以强制使打印机前进到下一个打印页,并将打印位置重置到新页的左上角。调用 NewPage方法时,它将 Printer 对象的 Page 属性加 1。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.5 打印机输出
– ( 3) EndDoc 方法
EndDoc方法用于终止发送给 Printer 对象的打印操作,将文档释放到打印设备或后台打印程序,也就是用来结束文件打印,
其格式为:
Printer.EndDoc
执行 EndDoc方法表明打印操作的结束,并向打印机管理程序发送最后一页的退出信号,并把 Page属性重置为 1。
– ( 4) KillDoc方法
KillDoc方法用于立即终止当前打印作业,其格式为:
Printer.KillDoc
执行 KillDoc方法将中断 Print函数的执行,且清除打印缓冲区中的所有信息。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.3.5 打印机输出
窗体输出
– 除了使用 Print方法直接在打印机上输出以外,还可以使用
PrintForm方法一次将一个窗体的全部内容都输出到打印机上,
其格式为:
[窗体,]PrintForm
– 使用 PrintForm方法可以在窗体中安排好文本、图形及其他用户元素后,再把它们整个输出到打印机上。格式中的“窗体”是要打印的窗体名,如果省略,则打印当前窗体。
– 说明:
(1)使用 PrintForm 方法,需把要输出窗体的 AutoReDraw属性设置为 True,用来保存该窗体上的信息。该属性默认值为 False。
(2) PrintForm方法不仅可以打印窗体上的文本,而且还可以打印出窗体上的任何可见的控件及图形。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社第 4章 程序的控制结构及应用
4.1 结构化程序设计
4.2 顺序结构
4.3 数据的输入和输出
4.4 选择结构
4.5 循环结构
4.6 选择性控件
4.7 滚动条和计时器
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4 选择结构
Visual Basic中的选择结构通过条件语句(也称 If语句)来完成,条件语句有多种形式:
– 单分支、双分支和多分支等。
在程序设计中,条件语句一般使用以下两种格式:
– 单行结构条件语句和块结构条件语句。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4 选择结构
4.4.1 单行结构条件语句
4.4.2 块结构条件语句
4.4.3 多分支控制结构
4.4.4 条件函数
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4.1 单行结构条件语句
单行条件语句,格式如下:
If <条件 > Then <语句 1> [Else <语句 2>]
– 该语句的功能是:程序根据 <条件 >表达式的值执行相应的操作,即执行 Then部分或 Else部分。
在条件成立时,执行语句 1,不成立时执行语句 2。
– If语句的 Else部分可以省略,Else部分省略后,
如果成立,程序执行 Then部分,如果条件不成立,程序执行 If语句的下一句。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4.1 单行结构条件语句
【 例 4-5】 输入 x的值,并打印出其绝对值。
– 代码如下:
Private Sub Command1_Click()
Dim x As Integer
x = Val(InputBox("请输入一个数 "))
If x >= 0 Then Print "x的绝对值是,"; Str(x)
Else x = -x,Print "x的绝对值是,"; Str(x)
End Sub
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4.1 单行结构条件语句
选择结构可以嵌套,即在条件语句中,
Then部分或 Else部分可以是条件语句。
嵌套的深度(即嵌套层数)没有具体规定,
但要受到每行字符数的限制(不超过
1024)。
使用时应注意 If语句与 End If语句的配对使用
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4.1 单行结构条件语句
【 例 4-6】 有以下函数:要求输入 x,并求出 y的值。
– 分析:这个问题可以通过嵌套 If语句来解决。
– 代码如下:
Private Sub Form_Click()
Dim x As Single,y As Single
x=InputBox("请输入 x的值 ")
If x>0 Then y=1 Else If x<0 Then y=-1 Else y=0
Print "x=";x,"y=";y
End Sub
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4 选择结构
4.4.1 单行结构条件语句
4.4.2 块结构条件语句
4.4.3 多分支控制结构
4.4.4 条件函数
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4.2 块结构条件语句
块结构条件语句的语法格式如下:
If <条件 1> Then
语句块 1
[ElseIf <条件 2> Then
语句块 2]
[ElseIf <条件 3> Then
语句块 3]
……
[Else
语句块 n]
End If
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4.2 块结构条件语句
说明:
– ( 1)“条件 1”、“条件 2”和单行结构条件语句中的
“条件”是一样的,都可以是关系表达式、布尔表达式或数值表达式。如果是数值表达式作为条件,则一个为 0的数值被作为 False,其他非 0数值都为 True。
– ( 2) 语句的执行过程是:如果“条件 1”的值为 True,
则执行“语句块 1”;如果“条件 1”的值为 False则检测
“条件 2”,如果“条件 2”的值为 True,执行“语句块
2”;依此类推,当发现某个“条件”为真时,执行与其相关的“语句块”,否则继续向下检测其他“条件”;如果所有 ElseIf子句后的“条件”都为 False,
则执行 Else子句后的“语句块 n”。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4.2 块结构条件语句
说明:
– ( 3)块结构条件语句中的 ElseIf子句和 Else子句都是可选的,可以省略。如果省略了所有的 ElseIf子句,块结构条件语句可以写为:
If <条件 > Then
语句块 1
Else
语句块 2
End If
– 如果省略了所有的 ElseIf子句和 Else子句,块结构条件语句可以写为:
If <条件 > Then
语句块
End If
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4.2 块结构条件语句
【 例 4-7】 输入一个分数,并判断其等级。
– 本程序使用 ElseIf表达多个条件。
【 例 4-8】 编写程序,验证 MsgBox函数的功能
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4 选择结构
4.4.1 单行结构条件语句
4.4.2 块结构条件语句
4.4.3 多分支控制结构
4.4.4 条件函数
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4.3 多分支控制结构
对于分支较多的结构,如果用条件控制语句来实现,则看起来结构不清晰,而且书写比较复杂。
在 Visual Basic中,提供了专门的处理这种多分支结构的情况语句 ——Select Case语句,其语法格式如下:
Select Case 测试表达式
Case 表达式列表 1
语句块 1
[Case 表达式列表 2
[语句块 2]]
……
[Case Else
[语句块 n]]
End Select
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4.3 多分支控制结构
说明:
– ( 1) 测试表达式可以是数值表达式或字符串表达式,一般为变量或常量。
– ( 2)表达式列表用来描述测试表达式的可能取值情况,可以由多个表达式组成,表达式与表达式之间要用“,”隔开,必须与测试表达式的数据类型相同。表达式列表有以下三种形式:
常数形式,Case 常数
常数范围形式,Case 常数 To 常数
比较判定形式,Case Is 关系运算符
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4.3 多分支控制结构
说明:
– ( 3) 语句的执行过程是:先求出测试表达式的值,然后从上到下跟各个 Case子句中的表达式列表进行匹配,
如果找到了相匹配的值,则执行该子句下的语句块,
如果没有任何 Case子句中的表达式列表与之匹配,则执行 Case Else子句中的语句块。
– ( 4)表达式列表的三种形式在数据类型相同的情况下可以混合使用。对于表示常数范围的形式,必须把较小的值写在前面,较大的值写在后面。
– ( 5)如果相同的检测条件在多个 Case子句中出现,
那么执行符合条件的第一个 Case子句下的语句块。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4.3 多分支控制结构
【 例 4-9】 某商店进行购物打折优惠活动促销,根据每位顾客一次性购物的消费额给予不同的折扣,具体方法如下:
(1) 购物 1000元以上的九五折优惠,
(2) 购物 2000元以上的九折优惠,
(3) 购物 3000元以上的八五折优惠,
(4) 购物 5000元以上的八折优惠。
请用 Select Case语句编写程序,输入购物消费额,计算出优惠后应收款。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4 选择结构
4.4.1 单行结构条件语句
4.4.2 块结构条件语句
4.4.3 多分支控制结构
4.4.4 条件函数
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4.4 条件函数
IIF函数
– 使用 IIf函数也可以实现简单的选择结构,其语法格式如下:
result = IIF(条件表达式,True部分,False部分)
说明:
– ( 1),result”是函数的返回值,IIF函数的工作过程如下:当条件表达式为真时,函数返回值为 True(真)
部分,当条件表达式为假时,函数返回值为 False(假)
部分。
– ( 2) True部分和 False部分可以是任何表达式。
IIf函数可以用来实现简单的选择结构,和条件语句的功能类似。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.4.4 条件函数
Choose函数
– Choose的形式如下:
Choose(整数表达式,选项列表 )
说明:
– Choose根据整数表达式的值来决定返回选项列表中的某个值。如果整数表达式值是 1,则
Choose会返回列表中的第 1个选项。如果整数表达式值是 2,则会返回列表中的第 2个选项,
以此类推。若整数表达式的值小于 1 或大于列出的选项数目时,Choose函数返回 Null。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社第 4章 程序的控制结构及应用
4.1 结构化程序设计
4.2 顺序结构
4.3 数据的输入和输出
4.4 选择结构
4.5 循环结构
4.6 选择性控件
4.7 滚动条和计时器
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5 循环结构
循环就是即从某处开始规律地反复执行某一程序块的现象,重复执行的程序块称为“循环体”。
Visual Basic提供了多种不同风格的循环结构语句,包括 Do … Loop,
While … Wend,For … Next,For
Each … Next 等,其中最常用的是 Do …
Loop语句和 For … Next 语句。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5 循环结构
4.5.1 For循环结构
4.5.2 Do循环结构
4.5.3 While循环结构
4.5.4 循环的嵌套
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5.1 For循环结构
For循环也称计数循环或 For…Next 循环,
常常用于循环次数已知的场合。其语法格式如下:
For 循环变量 = 初值 To 终值 [Step 步长 ]
[循环体 ]
Next [循环变量 ]
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5.1 For循环结构
For循环也称计数循环或 For…Next 循环,
常常用于循环次数已知的场合。其语法格式如下:
For 循环变量 = 初值 To 终值 [Step 步长 ]
[循环体 ]
Next [循环变量 ]
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5.1 For循环结构
说明:
– ( 1) For语句的执行过程是:把“初值”赋给“循环变量”,检查循环变量的值是否超过终值,如果超过就直接跳出循环结构,否则执行一次循环体。当执行
Next子句时,循环变量的值增加一个步长,同时与终值比较,如果不超过终值,则继续执行循环体,否则跳出循环结构。如此反复执行,直到循环变量的值超越终值,则循环结束,执行下一条语句。
– ( 2)初值和终值是必要参数,只能是数值变量,不能是数组元素。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5.1 For循环结构
说明:
– ( 3)步长为可选参数,如果没有指定,则默认值为 1。
步长可以是正数,也可以是负数,如果为正数则构成递增循环,如果为负数则构成递减循环。如果步长的值为正,则循环变量超过终值的含义为:初值 >终值。
如果步长的值为负,则循环变量超过终值的含义为:
初值 <终值。
– ( 4)如果步长为正,则初值应该小于终值。如果步长为负,则初值应该大于终值。如果不满足上述条件,
循环体一次都不会执行。
– ( 5)初值、终值和步长一般为整数值,但也可以是实数。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5.1 For循环结构
说明:
– ( 6) Next后面的“循环变量”可以省略,如果不省略,则必须同 For后面的循环变量相同。
– ( 7) For循环的循环次数可以由初值、终值和步长决定,其值为:终值减初值再除以步长的绝对值求整后加一。
– ( 8)一般在循环体内不要修改循环变量的值。
如果在循环中改变循环变量的值,将会使程序代码的阅读和调试变得更加困难。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5.1 For循环结构
【 例 4-10】 求 1到 100的和。
【 例 4-11】 求 Fibonacci数列的前 40个数。
这个数列有如下特点:前两个数为 1,从第三个数开始,其值是前两个数的和,即:
F1=1 ( n=1)
F2=1 ( n=2)
Fn= Fn- 1+ Fn- 2 ( n≥3)
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5 循环结构
4.5.1 For循环结构
4.5.2 Do循环结构
4.5.3 While循环结构
4.5.4 循环的嵌套
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5.2 Do循环结构
Do循环结构也是根据条件决定循环的次数,
使用比较灵活,既能指定循环条件,也能指定循环结束条件。即可构成先判断条件形式,也可以构成后判断条件的形式。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5.2 Do循环结构
先判断条件的 Do…Loop 循环
– 先判断条件的循环,有两种格式,习惯上分别称为“当型循环”
和“直到型循环”。
– 格式一:
Do While 条件循环体
Loop
– 这种形式的循环,语句执行过程是:先检测“条件”,如果条件为 True,则执行循环体中语句,否则,退出循环结构。
– 格式二:
Do Until 条件循环体
Loop
– 格式二的执行过程和格式一基本相同,唯一不同的是,它在“条件”为假时重复执行循环体,直到条件为真时退出循环结构。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5.2 Do循环结构
后判断条件的 Do…Loop 循环
– 后判断条件的循环同样有“当型循环”和“直到型循环”两种形式。
– 格式三:
Do
循环体
Loop While 条件
– 语句的执行过程是:首先执行循环体中语句,然后判断“条件”,
如果条件为 True,则继续执行循环体,否则退出循环结构。
– 格式四:
Do
循环体
Loop Until 条件
– 格式四的执行过程和格式三基本一样,也是先执行后判断。唯一不同的是,它在“条件”为假时重复执行循环体,直到条件为真 时退出循环结构。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5.2 Do循环结构
【 例 4-12】 用辗转相除法求两自然数 m,n
的最大公约数和最小公倍数。
– 分析:求最大公约数的算法思想:
( 1)对于已知两数 m,n,使得 m>n;
( 2) m除以 n得余数 r;
( 3)若 r≠0,则令 m ← n,n ← r,继续相除得新的 r;
( 4)直到 r=0求得最大公约数,结束。
– 求得了最大公约数后,最小公倍数就可很方便地求出,即将原两数相乘除以最大公约数。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5.2 Do循环结构
【 例 4-13】 验证“角谷猜想”。
–,角谷猜想”指出,对于一个自然数,若该数为偶数,则除以 2;若该数为奇数,则乘以 3并加 1;将得到的数再重复按该规则运算,最终可得到 1。现给定一个数 n,试用程序来验证该过程。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5 循环结构
4.5.1 For循环结构
4.5.2 Do循环结构
4.5.3 While循环结构
4.5.4 循环的嵌套
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5.3 While循环结构
While循环结构用 While…Wend 语句来实现,其语法格式如下:
While 条件
[循环体 ]
Wend
说明:
– ( 1)“条件” 可以是关系表达式、布尔表达式或数值表达式,
Visual Basic将这个表达式的值解释为 True或 False。如果是数值表达式作为条件,则一个为 0的数值被作为 False,其他非 0数值都为 True。
– ( 2)语句的执行过程是:检测“条件”,如果为 True,则执行循环体中语句,否则退出循环结构。重复执行上述操作,在“条件”
为 True时重复执行循环体,一直到条件为 False时退出循环语句。
– ( 3)如果条件一开始就不成立,则循环体一次也不会被执行。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5.3 While循环结构
【 例 4-14】 利用公式 π/4=1-1/3+1/5-1/7+…,
求 π的近似值,直到最后一项的绝对值小于等于 10-6为止 。
【 例 4-15】 通过键盘输入一个字符串,统计其中 a,b,c出现的次数 。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5 循环结构
4.5.1 For循环结构
4.5.2 Do循环结构
4.5.3 While循环结构
4.5.4 循环的嵌套
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.5.4 循环的嵌套
一个循环体内又包含另一个循环语句,称之为循环的嵌套。在内嵌的循环中还可以嵌套循环,这就是多重循环。
【 例 4-16】 打印乘法九九表。
【 例 4-17】 将 1角钱兑换成分币有多少种方案。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社第 4章 程序的控制结构及应用
4.1 结构化程序设计
4.2 顺序结构
4.3 数据的输入和输出
4.4 选择结构
4.5 循环结构
4.6 选择性控件
4.7 滚动条和计时器
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6 选择性控件
4.6.1 单选按钮和复选框
4.6.2 框架
4.6.3 列表框和组合框
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6.1 单选按钮和复选框
在程序设计过程中,有时需要从多个选项中选择一个,各选项间的关系是互斥的,单选按钮
( Option Button)就能完成这个功能。
单选按钮在运行期间可以改变状态,当打开选定的单选按钮时,其余的都处于关闭状态。单选按钮一般用框架进行分组。在一组单选按钮中只能选择其中一个。
复选框( Check Box)的功能类似于单选按钮,
也允许在多个选项中做出选择。但不同的是,多个单选按钮中只允许选择其中的一个,而复选框也可以选择其中的一项,也可以同时选择多项或全部不选。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6.1 单选按钮和复选框
单选按钮和复选框的
– 主要属性
Style
Value
Alignment
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6.1 单选按钮和复选框
【 例 4-18】 利用单选按钮改变文字的颜色。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6.1 单选按钮和复选框
【 例 4-19】 在例 4-18的基础上,调整控件位置,利用复选框改变文字的字形。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6 选择性控件
4.6.1 单选按钮和复选框
4.6.2 框架
4.6.3 列表框和组合框
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6.2 框架
框架控件( Frame)是一个容器控件。
– 用于窗体上的对象分组。可以把不同的对象放在一个框架中,框架提供视觉上的区分和总体上的激活 /屏蔽等特性。
框架的主要属性除 Enable,FontBold、
FontName,FontUnderline,Height,Left,Top、
Visible,Width等外,常用的主要属性有两个,
Caption,Enabled。
框架常用的事件是 Click和 DblClick,它不接受用户输入,不能显示文本和图形,也不能与图形相连。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6.2 框架
为了将控件分组,首先需要绘制框架控件,然后绘制框架控件里面的控件,这样就可以把框架和里面的控件同时移动。如果在框架控件外绘制了一个控件并把它移到框架内部,那么该控件将在框架的上部,不属于框架的一部分,
这时移动框架控件,该控件不会随框架一起移动。如果希望把已经存在的若干控件放在某个框架中,可以先选择所有控件,将它们剪贴到剪贴板上,再把它们粘贴到框架上。
为了选择框架内的控件,必须在框架处于非活动状态时,
按住 Ctrl键,然后用鼠标点击或画一个框,框住要选择的控件。选择多个控件时,也可用这个方法,即按住 Ctrl键,
用鼠标点击多个控件或框住多个控件即可。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6.2 框架
【 例 4-20】 编写程序,通过单选按钮控制输出内容。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6 选择性控件
4.6.1 单选按钮和复选框
4.6.2 框架
4.6.3 列表框和组合框
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6.3 列表框和组合框
列表框( ListBox)以列表形式显示以列数据,利用列表框,可以接受用户对其中需要的项目的选择。
组合框( ComboBox)是文本框和列表框组合。
列表框和组合框是两个进行快速浏览和标准化输入数据的重要控件。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6.3 列表框和组合框
列表框
– 列表框( ListBox)控件是一个可提供选择的列表。缺省时,选项以垂直单列方式显示,也可以设置成多列方式。如果待选项目超过列表框长度,将会自动提供滚动条,以供查看。下图为一个单列的列表框。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6.3 列表框和组合框
列表框支持的属性除 Name,Left,Top,Height,Width、
FontBold,FontItalic,FontName,FontSize、
FontUnderline,BackColor,ForeColor,Enabled、
Visible等通用属性之外,还具有以下主要属性:
– Columns
返回或设置一个值,以决定列表框控件是水平还是垂直滚动以及如何显示列中的项目。
– List
返回或设置控件的列表部分的项目
– ListCount
返回列表框中项目的个数
– ListIndex
返回或设置列表框中已选定项目的位置
– Text
返回列表框最后一次选中的表项的文本
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6.3 列表框和组合框
– Select
返回或设置在列表框控件中的一个项的选择状态
– MultiSelect
返回或设置一个值,该值指示是否能够在列表框控件中选择多个表项以及如何进行选择。
– SelCount
返回在列表框控件中被选中项的数目
– Sorted
用来确定列表框中的项目是否按字母、数字升序排列
– Style
该属性决定控件外观,只能在设计时确定
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6.3 列表框和组合框
列表框接收 Click,DblClick、
GotFocus,LostFocus等事件。
有时不用编写 Click事件过程代码,而是当单击一个命令按钮或发生 DblClick事件时读取 Text
属性。
程序运行时,用户不能向列表框中添加项目,只能在清单中做出选择。在设计时,可以使用 List属性在列表中增加或删除项目,如图所示。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6.3 列表框和组合框
在程序代码中,可以使用 AddItem方法向列表中添加项目,使用 RemoveItem方法删除项目,使用 Clear方法清除列表框中的所有项目,例如产生列表框 (图 4.18)的代码为:
Private Sub Form_Load()
List1.AddItem "研究生 "
List1.AddItem "本科 "
List1.AddItem "专科 "
List1.AddItem "高中 "
List1.AddItem "小学及以下 "
End Sub
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6.3 列表框和组合框
组合框
– 组合框( ComboBox)控件是列表框与文本框的组合而成的控件。也就是说,组合框是一种独立的控件,但它兼有列表框和文本框的功能。
它可以像列表框一样,让用户通过鼠标选择需要的项目,也可以像文本框一样,用键入的方式选择项目。
– 组合框的属性、方法与列表框基本相同。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6.3 列表框和组合框
– 通过 Style属性,可以设置组合框的三种样式,
如图所示
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.6.3 列表框和组合框
【 例 4-21】 从提供的选择中,选择相应的字体类型、字体大小、是否黑体、是否加下划线,确定后使文本框中的字符串按选定的字体属性显示。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社第 4章 程序的控制结构及应用
4.1 结构化程序设计
4.2 顺序结构
4.3 数据的输入和输出
4.4 选择结构
4.5 循环结构
4.6 选择性控件
4.7 滚动条和计时器
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.7 滚动条和计时器
4.7.1 滚动条
4.7.2 计时器
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.7.1 滚动条
滚动条常常用于辅助浏览显示内容、确定位置。
主要用在列有较长项目或者大量信息的地方,
这样用户就可以在小区域中巡视到所有的列表项目或者信息等。滚动条也可以用来作为数据输入工具。
在 Visual Basic中,滚动条分为两种,水平滚动条( HscrollBar)和垂直滚动条
( VscrollBar)。
除方向不同以外,水平滚动条和垂直滚动条的结构和操作是一样的。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.7.1 滚动条
滚动条属性
– 垂直滚动条的值从上往下递增,最上端代表最小值,
最下端代表最大值。水平滚动条的值从左往右递增,
最左端代表最小值,最右端代表最大值。滚动条的值均用整数表示,取值范围是 -32 768~32 767。
– 滚动条的坐标与设计长度无关。就像一条有刻度的直尺,最小值和最大值分别在两个端点。
– 滚动条的属性用来识别滚动条的状态,除支持
Name,Enabled,Visible,Top,Left,Height、
Width,Parent,Tag等属性外,还具有以下属性
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.7.1 滚动条
滚动条属性
– Min
返回或设置滚动条滚动范围的下界,即滚动块位于
HscrollBar控件的最左端或 VscrollBar控件的最上端时所代表的值。
– Max
返回或设置滚动条滚动范围的上界,即滚动块位于
HscrollBar控件的最右端或 VscorllBar控件的最下端时所代表的值。
– Value
返回或设置滚动条的当前位置,其返回值始终介于 Max
和 Min 属性值之间,包括这两个值。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.7.1 滚动条
滚动条属性
– LargeChange
返回和设置当用户单击滚动条和滚动箭头之间的区域时,滚动条控件( HscrollBar 或 VscrollBar)的 Value 属性值的增量或减量
– SmallChange
返回或设置当用户单击滚动箭头时,滚动条控件的 Value 属性值的改变量
– 对于以上两个属性,值都可以指定在 1~32767之间(包括 1和 32767)的整数值。默认值都设为 1。一般在设计时设置这两个属性的值。当滚动条的状态必须改变时,
也可以在运行应用程序时对其进行重新赋值设置。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.7.1 滚动条
滚动条常用事件
– 滚动条控件最常用的事件是 Change事件。在应用程序运行时,只要滚动条的 Value属性值发生变化,
就会触发 Change事件。可以在代码中改变 Value属性值,但更多的是由于用户用鼠标拖动滚动块、单击滚动块两侧或者单击滚动条两侧的箭头按钮而导致 Value属性的值的改变。
– 除 Change事件以外,与滚动条控件有关的事件还有 Scroll事件。当在滚动条内拖动滚动块时会触发
Scroll事件,单击滚动条箭头或滚动条时不发生该事件。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.7.1 滚动条
【 例 4-22】 例如,可以通过滚动条来改变一个物体的运行速度,如图所示 。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.7 滚动条和计时器
4.7.1 滚动条
4.7.2 计时器
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.7.2 计时器
计时器控件( Timer)是一个很特殊的控件,
它主要有两个功能:一个是用于定时完成某项任务,即按一定时间间隔触发事件,有规律地隔一段时间执行一次相同的代码;另一个是进行某种后台处理。
计时器控件运行时不可见,所以它的位置无关紧要,通常用户只需在工具箱中双击它即完成了创建。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.7.2 计时器
计时器控件除了具有一般的属性 Name和
Enabled外,其最重要的属性是 Interval属性,该属性是指触发计时器两个事件之间的毫秒数,取值范围为 1~65 535。如果该属性设置为 0(缺省值),则计时器控件失效。
计时器控件的最常用事件是 Timer事件,也就是控件对象在间隔了一个 Interval设定的时间后所触发的事件。无论何时,只要 计时器控件的
Enabled 属性被设置为 True 而且 Interval 属性大于 0,则 Timer 事件以 Interval 属性指定的时间间隔发生。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
4.7.2 计时器
【 例 4-23】 用计时器控件建立一个数字计时器,在窗体上显示当前系统时间。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社学完本章你应能够,
了解结构化程序设计的三种基本结构及语句的书写规则等;
掌握简单程序中的数据输入、输出方法;
掌握选择结构的格式及执行过程;
掌握循环结构的格式及执行过程;
正确理解选择结构和循环结构的嵌套;
掌握选择控件的使用。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社思 考 题
1,选择结构和循环结构的作用是什么?
2,If语句嵌套时要注意什么问题?
3,若事先不知道循环次数,如何用 For循环实现?
4,选项控件和复选框控件功能上的主要区别是什么?
5,框架的作用是什么?如何在框架中建立控件?
6,有哪几种方法可以在列表框中添加选项?列表框中的选项在程序运行期间能否
修改?