VB课件第3章顺序结构.docx
《VB课件第3章顺序结构.docx》由会员分享,可在线阅读,更多相关《VB课件第3章顺序结构.docx(25页珍藏版)》请在冰豆网上搜索。
VB课件第3章顺序结构
第三章 顺序结构程序设计
§1、预备知识
一、结构化程序设计的三种基本结构:
顺序结构、分支结构、循环结构
顺序结构:
就是从头到尾依次执行每一个语句
分支结构:
根据不同的条件执行不同的语句或者语句体
循环结构:
重复的执行语句或者语句体,达到重复执行一类操作的目的
二、语句概念:
语句是执行具体操作的指令。
VB程序中一行代码称为一条语句。
例如:
Let A=3
程序中的每条语句都必须遵从语句的语法规则和格式。
1、语句格式的符号规定
<> 尖括号;必选项
[]方括号;可选项
|竖线;用来分隔多个选择项,选其中之一项
…省略号;表示同类项目的重复出现
例如:
[<对象名>.]Print[<表达式表>]
2、语句书写规则
(1)每行通常写一条语句;若将几个语句写在一行,语句间需要用冒号分隔;
例如:
A=3:
B=4
(2)一个语句行不能超过1023个字符,如果太长,可用 “ _”续行;
例如:
Form1.print“Iama_
Student.”
(3)与其他高级语言一样,在VB中使用的分号、引号、括号等符号都是英文状态下的半角符号,而不能使用中文状态下的全角符号。
例如:
Ifa<5Thenx=10
Print"x=";x
不能写成
Ifa〈5Thenx=10
Print“x=”;x
§2、顺序结构的基本语句和方法
一、赋值语句 Let
格式:
[Let] <变量名>=<表达式>
[〈对象名〉.]<属性名>=<表达式>
功能:
首先计算赋值号右边表达式的值,然后,将值赋予左边变量或对象属性。
例 1+4=?
程序
PrivateSubForm_Activate()
Dima&,b&,m&
a=1:
b=4
m=a+b
Printm
EndSub
例3_2_1
PrivateSubForm_Click()
DimaAsLong,bAsString,cAsBoolean
a=100.23
b="100.23"
a=b
c=1>5And-1
EndSub
说明:
(1)当数值赋值于字符变量时,自动转换为字符,但是字符数据赋值与数值变量时,必须为数字,否则出错。
例如:
b=”123abc”
(2)“=”是给变量或属性赋值的符号,与关系运算符的“=”(等于)不同。
例如:
赋值语句a=b和b=a表示两个结果不同的赋值语句。
(3)赋值号左边只能是变量,不能是常量、常数符号或表达式。
下面均为错误的赋值语句:
x+y=3‘左边是表达式
5=sqr(s)‘左边是常量
(4)不能在一句赋值语句中,同时给多个变量赋值。
例如:
x=y=z=1是不正确的。
正确书写应分别用三条赋值语句完成。
z=1:
y=z:
x=z
二、输出方法:
Print
格式:
[〈对象名〉.]Print [〈表达式〉[,|;[〈表达式〉] ...]]
功能:
首先计算各个表达式的值,然后,在指定对象上按格式依次显示各个表达式的值。
说明:
(1)对象名为:
窗体(Form)、图片框(PictureBox)和打印机(Printer)
例如:
Form1.Print “Iamastudent.”
Picture1.Print “Iamastudent.”
若对象名缺省(或“Me”),默认为当前窗体,即在当前窗体上输出。
(2)分隔符为逗号(,)时,称为“标准格式”输出。
“标准格式”输出:
将每个输出行分为若干固定段,每段为14(15)个字符,所以也称作“固定格式”。
(3)分隔符为逗号(;)时,称为“紧凑格式”输出。
“紧凑格式”输出:
输出的表达式值之间,如果是字符串和字符串间没有空格,数值与数值之间留有一个空格分隔。
“紧凑格式”也称作“自由格式”。
例如:
Print “ABC”,”DEF”,12345
输出结果:
ABC︼︼︼︼︼︼︼︼︼︼︼DEF︼︼︼︼︼︼︼︼︼︼︼︼12345
Print“ABC”;”DEF”
输出结果:
ABCDEF
Print1;2;-3
输出结果:
︼1︼︼2︼-3
Print“ABC”;1;”DEF”;-23;”GH”
输出结果:
ABC︼1︼DEF-23︼GH
(4)语句末尾如果有分隔符(逗号或分号)时,之后的输出方法的输出内容在同一行显示;
例如:
Print “X+Y=”;
………
Print5+10
输出结果:
X+Y=︼15
(5)如果关键字Print后面没有任何输出项,其作用为强制换行;
例如:
Print “X+Y=”;
Print
Print5+10
输出结果:
X+Y=
15
三、和Print方法有关的函数
1、Tab函数
格式:
Tab(<数值表达式>)
功能:
指定该函数后面的表达式值的输出起始位置。
例如:
PrintTab(5);“ok”;tab(15);”hi”
输出结果:
︼︼︼︼ok︼︼︼︼︼︼︼︼hi
说明:
当后面Tab函数表达式值小于前面的时,自动换行输出。
例如:
PrintTab(15);“ok”;tab(5);”hi”
输出结果:
︼︼︼︼︼︼︼︼︼︼︼︼︼︼hi
︼︼︼︼ok
2、Spc函数
格式:
Spc(<数值表达式>)
功能:
在下一个输出项前面留出若干空格。
例如:
PrintTab(5);“ok”;Spc(5);”hi”
输出结果:
︼︼︼︼ok︼︼︼︼︼hi
说明:
Spc函数仅能在Print方法中使用,如果在赋值语句中使用,须使用Space函数,否则出错,但是Space函数可用于Print方法。
格式:
Space(<数值表达式>)
例如:
A=”abc”+space(5)+”def”‘正确
A=”abc”+spc(5)+”def”‘错误
PrintTab(5);“ok”;Space(5);”hi”‘正确
3、Format函数
格式:
Format(<表达式>,<格式字符串>)
功能:
按照<格式字符串>指定格式显示表达式的值。
表达式数据类型为:
数值、字符、日期。
(龚P68)
(1)数值格式符
字符
说明
0
数字占位符。
显示一位数字或是零。
如果表达式在格式字符串中0的位置上有一位数字存在,那么就显示出来;否则,就以零显示。
如果数值的位数少于格式表达式中零的位数(无论是小数点的左方或右方),那么就把前面或后面的零补足。
如果数值的小数点左方位数多于格式表达式中小数点左面零的位数,那么多出的部分都会显示出来。
如果数值的小数点右方位数多于格式表达式中小数点右面零的位数,那么就四舍五入到格式符限定位数。
#
数字占位符。
显示一位数字或什么都不显示。
如果表达式在格式字符串中“#”的位置上有数字存在,那么就显示出来;否则,该位置就什么都不显示。
此格式符号和“0”数字占位符大致相同,不同之处是在当表达式中数值的位数少于“#”的位数(无论是小数点左方或右方)时,不会把前面或后面的零显示出来。
.
小数点占位符。
%
百分比符号占位符。
表达式值乘以100。
而百分比字符(%)会插入到格式字符串中出现的位置上。
千分位符号占位符。
E-
E+
e-
e+
科学计数法格式。
格式表达式中在E-、E+、e-或e+的右方含有至少一个数字占位符(0或#)。
-
+
$
显示一个原义字符。
如想显示那些列出的字符之外的字符时,可以用反斜杠“\”字符括起来。
例:
PrintFormat(-123456.456,"#.#####")
PrintFormat(-123456.456,"#.#")
PrintFormat(-123456.456,"0.0")
PrintFormat(-123456.456,"000000000.0000")
PrintFormat(-123456.456,"###,###.###E+##")
PrintFormat(-123456.456,"###########.###E+##")
计算结果:
-123456.456
-123456.5
-123456.5
-000123456.4560
-123,456.456E+0
-12345645600.E-5
(2)字符串格式符
字符
说明
@
字符占位符。
显示字符或是空白。
如果字符串在格式字符串中@的位置有字符存在,那么就显示出来;否则,就在那个位置上显示空白。
&
字符占位符。
显示字符或什么都不显示。
如果字符串在格式字符串中和号(&)的位置有字符存在,那么就显示出来;否则,就什么都不显示。
<
强制小写。
将所有字符以小写格式显示。
>
强制大写。
将所有字符以大写格式显示。
!
强制由左而右填充字符占位符。
缺省值是由右而左填充字符占位符。
例:
PrintFormat("hello","@@@@@@@@@@")+"|"
PrintFormat("hello","&&&&&&&&&&")+"|"
Print Format("hello",">")+"|"
Print Format("hello","!
@@@@@@@@@@")+"|"
计算结果:
hello|
hello|
HELLO|
hello|
日期/时间格式符
字符
说明
d
以没有前导零的数字来显示日(1 – 31)。
dd
以有前导零的数字来显示日(01 – 31)。
ddd
以简写来表示星期(Sun –Sat)。
dddd
以全称来表示星期(Sunday –Saturday)。
ddddd
以完整日期表示法显示(包括年、月、日),日期的显示要依系统的短日期格式设置而定。
缺省的短日期格式为yyyy-mm-dd。
dddddd
以完整日期表示法显示日期系列数(包括年、月、日),日期的显示要依系统识别的长日期格式而定。
缺省的长日期格式为
yyyy年mm月dd日。
w
将一周中的日期以数值表示(1代表星期日~7代表星期六)。
ww
将一年中的星期以数值表示(1 – 54)。
m
以没有前导零的数字来显示月(1 – 12)。
如果m是直接跟在h或hh之后,那么显示的将是分而不是月。
mm
以有前导零的数字来显示月(01 – 12)。
如果m是直接跟在h或hh之后,那么显示的将是分而不是月。
mmm
以简写来表示月(Jan –Dec)。
mmmm
以全称来表示月(January –December)。
q
将一年中的季以数值表示(1 – 4)。
y
将一年中的日以数值表示(1 – 366)。
yy
以两位数来表示年(00 – 99)。
yyyy
以四位数来表示年(0100 – 9999)。
h
以没有前导零的数字来显示小时(0 – 23)。
hh
以有前导零的数字来显示小时(00– 23)。
n
以没有前导零的数字来显示分(0 –59)。
nn
以有前导零的数字来显示分(00 –59)。
s
以没有前导零的数字来显示秒(0 –59)。
ss
以有前导零的数字来显示秒(00 –59)。
ttttt
以完整时间表示法显示(包括时、分、秒)。
如果时间是在10:
00A.M.或P.M.之前,那么将显示有前导零的时间。
缺省的时间格式为h:
mm:
ss。
AM/PM
在中午前以12小时配合大写AM符号来使用;在中午和11:
59P.M.间以12小时配合大写PM来使用。
am/pm
在中午前以12小时配合小写am符号来使用;在中午和11:
59P.M.间以12小时配合小写pm来使用。
A/P
在中午前以12小时配合大写A符号来使用;在中午和11:
59P.M.间以12小时配合大写P来使用。
a/p
在中午前以12小时配合小写a符号来使用;在中午和11:
59P.M.间以12小时配合小写p来使用。
AMPM
或ampm
在中午前以12小时配合“上午”符号来使用;在中午和11:
59P.M.间以12小时配合“下午”来使用。
。
例:
PrintFormat(Date,"ddd")
PrintFormat(Date,"dddd")
Print Format(Date,"mmm")
PrintFormat(Date,"mmmm")
计算结果:
Sun
Sunday
Sep
September
四、清屏方法 CLS
格式:
[〈对象名〉.]CLS
功能:
清除Print方法显示的文本和绘图语句显示图形,并将光标移到对象坐标(0,0)位置。
对象名为:
窗体(Form)、图片框(PictureBox)和打印机(Printer);选项缺省为当前窗体。
例2_4_1、清屏例
五、注释语句 Rem
格式:
Rem[〈注释内容〉]
‘[〈注释内容〉]
功能:
非执行语句,仅作为注释。
例:
S=3‘将3赋予S
S=3:
Rem将3赋予S
六、结束语句 End
格式:
End
功能:
结束一个程序的运行。
释放所有使用的变量,关闭所有数据文件。
七、程序暂停语句 Stop
格式:
Stop
功能:
暂停程序执行,用于监视和调试程序。
继续“F5”键。
说明:
(1)立即窗口:
显示断点处指定中间变量值;
(2)监视窗口:
显示断点处预设(拖入)的中间变量值;
(3)本地窗口:
显示断点处所有中间变量值;
§3、数据输入输出函数InputBox和MsgBox (龚 P76)
VB提供了两个函数,用户使用InputBox可以从键盘直接输入数据,使用MsgBox可以将数据输出到一个对话框中。
一、数据输入函数InputBox
格式:
InputBox(<提示>[,<标题>][,<默认内容>][,][,])
功能:
弹出一个输入对话框,并返回用户键盘输入的内容。
(字符型)
说明:
提示信息为字符表达式,长度≤1023个字符。
可以使用VB常数VbCrLf或CHR(13)+CHR(10)使提示信息写为多行。
例:
strName=InputBox(“请输入你的姓名”+vbCrLf+“然后单击确定”,“输入框”)
也可以:
strS1="请输入你的姓名"+Chr(13)+Chr(10)+"然后单击确定"
strName=InputBox(strS1,"输入框",,100,100)
当键盘输入“王晓明”后,变量strName获得键盘输入的值.
例3_3_1、键盘输入一个摄氏温度值,计算它的华氏温度值。
转换公式:
程序:
PrivateSubForm_Activate()
Dimc%,f#
c=InputBox("请输入摄氏温度")
f=9/5*c+32
Print"C=";c,"F=";f
EndSub
二、数据输出函数MsgBox和MsgBox过程
格式:
MsgBox(<提示>[,<类型>[,<标题>]])
过程形式:
MsgBox<提示>[,<类型>[,<标题>]]
功能:
弹出一个信息对话框,并根据用户选择点击的按钮,返回一个正数值。
说明:
(1)输出提示信息和标题格式于InputBox函数相同;
(2)类型设置显示按钮的数目和形式,图标样式和默认按钮。
缺省值为0。
分组
VB常数
按钮值
描述
按钮数目
vbOkOnly
0
只显示“确定”按钮
vbOkCancel
1
显示“确定”、“取消”按钮
vbAbortRetryIgnore
2
显示“终止”、“重试”、“忽略”按钮
vbYesNoCancel
3
显示“是”、“否”、“取消”按钮
vbYesNo
4
显示“是”、“否”按钮
vbRetryCancel
5
显示“重试”、“取消”按钮
图标类型
vbCritical
16
关键信息图标“X”,
vbQuestion
32
询问信息图标“?
”,
vbExclamation
48
警告信息图标“!
”,
vbInformation
64
信息图标“i”,
默认按钮
VbDefaultButton1
0
第一个按钮为默认
VbDefaultButton2
256
第二个按钮为默认
VbDefaultButton3
512
第三个按钮为默认
函数返回所选按钮整数值:
VB常数
返回值
被按下的按钮
vbOk
1
确定
vbCancel
2
取消
vbAbort
3
终止
vbRetry
4
重试
vbIgnore
5
忽略
vbYes
6
是
vbNo
7
否
例3_3_2、A+B=?
程序:
PrivateSubForm_Click()
Dima%,b%
a=InputBox("A=")
b=InputBox("B=")
c=a&"+"&b&"="&a+b
d=MsgBox(c,0,"计算1+4=?
的算术题")
EndSub
✧过程形式:
MsgBoxc,,"计算1+4=?
的算术题"
例3_3_3、鸡兔同笼问题。
鸡有两条腿,兔子有四条腿。
已知鸡和兔子一共有h只,总腿数有f条,问鸡、兔各有多少只?
分析:
设鸡有x只,兔有y只,则
x+y=h
2x+4y=f
整理,得:
程序:
PrivateSubCommand1_Click()
Dimh%,f%
h=InputBox("鸡和兔总只数")
f=InputBox("鸡和兔总脚数(偶数)")
x=(4*h-f)/2
y=(f-2*h)/2
a="笼中鸡、兔总只数为:
"&h&",总脚数为:
"&f
a=a&vbCrLf&"则笼中鸡有:
"&x&"只,兔有:
"&y&"只"
d=MsgBox(a,0,"鸡兔同笼问题")
EndSub
试输入:
51,176
✧过程形式:
MsgBoxa,,"鸡兔同笼问题"
§4、窗体(龚P22-P29)
窗体是VB的一个重要对象。
●窗体除了具有自己的属性、事件和方法外,还象一个容器一样,可以在它的上面放置其它控件。
比如:
各种按钮、文本框、图片框等。
窗体移动时,其上面的控件也随之移动,窗体隐藏时,其上控件也随之隐藏。
●窗体可以作为文件形式存放在磁盘上,扩展文件名为:
.frm
一、窗体的主要属性
窗体和其他控件一样,都具有相同的属性和不同的属性,可以人为将属性分为:
外观属性:
Caption、ForeColor、BackColor、BackStyle……
位置属性:
Left、Top、Width、Height……
字体属性:
(Font)FontName、FontSize、FontBold……
行为属性:
Enabled、Visible、AutoRedraw……
杂项:
Name、Tag……
✧属性可以通过属性窗口或代码方式设置和修改:
格式:
[<对象名>.]<属性名>=<表达式>
例如:
Form1.Caption=“VB程序例”
✧也可以在代码方式下访问:
格式:
<对象名>[.<属性名>]
例如:
Form1.PrintForm1.Caption
1、Name(名称)
标识符。
给窗体定义名称。
默认名:
formX(X=1,2,……)
2、Caption(标题)
字符型。
标题栏文本。
默认值:
formX
例如form1.Caption=”我的第一个程序”
3、ForeColor/BackColor(前景/背景颜色)
设置控件的前/背景颜色(即正文颜色),可以使用下面的办法。
(1)十六进制数值。
值域:
&H000000&~&HFFFFFF&
基本颜色:
颜色
十六进制值
R
G
B
VB常数
黑
&H0&
0
0
0
VBBlack
蓝
&HFF0000&
0
0
255
VBBlue
绿
&HFF00&
0
255
0
VBGreen
青
&HFFFF00&
0
255
255
VBCyan
红
&HFF&
255
0
0
VBRed
洋红
&HFF00FF&
255
0
255
VBMagenia
黄
&HFFFF&
255
255
0
VBYellow
白
&HFFFFFF&
255
255
255
VBWhite
例:
Form1.BackColor=&HFF00&‘背景色为绿色
(2)RGB函数
格式:
RGB(r,g,b)
其中r,g,b分别表示一种基色,取值:
0~255
例:
Form1.BackColor=RGB(0,255,0)‘背景色为绿色
(3)VB常数
例:
Form1.BackColor=VBGreen‘背景色为绿色
(4)QBColor函数
格式:
QBColor(<数字表达式>)
其中数值表达式取值:
0~15
颜色
值
颜色
值
黑
0
灰
8
蓝
1
亮蓝
9
绿
2
亮绿
10
青
3
亮青
11
红
4
亮红
12
洋红
5
亮洋红
13
黄
6
亮黄
14
白
7
亮白
15
例:
Form1.BackColor=QBColor
(2)‘背景色为绿色
4、Font属性
(1)FontName(字体)
字符型。
取值:
中、英文字体库名称。
缺省值:
“宋体”
例:
Form1.FontName=”楷书_GB2312”
(2)FontSize(字号)
数字型。
缺省值:
9(小五号字)
例:
FontSize=30
中英字号对照表:
字号
初号
小初
一号
小一
二号
小二
三号
小三
四号
小四
五号
小五
六号
小六
七号
八号
磅值
42
36
26
24
22
18
16
15
14
12
10.5
9
7.5
6.5
5.5
5
(3)FontBold、FontItalic、FontUnderline、FontStrikethru
加粗斜体下划线删除线
布尔型。
取值:
True(-1)|False(0)缺省值:
False
例3_4_2Font属性综合例
5、Enabled(允许响应)
布尔型。
决定对象在运行时是否响应事件。
即控件是否可操作.当设置为false时,禁止用户进行操作。
缺省值:
True
例:
PrivateSubForm_Load()
Form1.Enabled=False
EndSub
PrivateSubForm_Click()
Pr