第三章 程序设计基础.docx
《第三章 程序设计基础.docx》由会员分享,可在线阅读,更多相关《第三章 程序设计基础.docx(50页珍藏版)》请在冰点文库上搜索。
第三章程序设计基础
第三章程序设计基础
本章将介绍VisualBasic中有关基本语句、程序的书写规则、变量、常数、流程控制等基本内容,之所以有编程语言之说,就是因为编程和说话一样,都是用某种语法和词汇对自己想法的表达,程序员掌握的“语法和词汇”越多,就越能够让程序完整顺畅地体现自己的想法。
3.1赋值语句=
对象属性或变量=表达式
含义:
将等号右边表达式的值传送给等号左边的变量或者对象属性
如:
form1.caption=”两数相乘”
3.2程序的书写规则
1.注释:
程序员可以使用注释来说明自己编写某段代码或某个变量的目的,便于阅读理解程序。
格式1:
’注释文字
格式2:
Rem注释文字
说明:
注释可以和语句在同一行并写在语句的后面,也可占据一整行。
如:
’下面的语句是赋值语句和注释的示例
Form1.width=300’将窗体的宽度设置为300
2.断行:
将长语句分成多行。
续行符“_”(一个空格紧跟一条下划线)
如:
strtemp=”问君归期未有期,”&_
”巴山夜雨涨秋池。
”&_
“何当共剪西窗烛,”&_
“却话巴山夜雨时。
”
注意:
(1)在同一行内,续行符后面不能加注释
(2)续行符不应将变量名和属性分割在两行
(3)原则上,续行符应加在运算符的前后
3.将多行语句写在一行上
一行中写下多条语句,可用“:
”作为分割符。
如:
Form1.width=300:
temp=form1.width:
form1.caption=”你好!
”
3.3变量
变量是指程序运行中其值可以变化的量。
一、变量的命名规则:
在VisualBasic中命名一个变量要遵循如下的规则,否则系统不能正确的辨识。
⑴必须是以字母、汉字开头的字母、汉字、数字、下划线组成的字符串,不能在变量名中出现句点”。
”、空格或者嵌入下列字符:
!
、#、@、$、%、&。
⑵变量名最长为255个字符。
⑶大小写字母同等对待,不能使用系统保留字
⑷在同一个范围内变量名必须是唯一的。
二、变量的声明:
所谓声明一个变量即事先将变量的有关信息通知程序,以便系统可以确定变量的存储格式。
在一般的高级语言中,使用变量必须遵循“先声明,后使用”的原则,但在VB中,变量在使用时不一定“先声明,后使用”,它有显式声明、隐式声明之分。
隐式声明:
即不声明而直接使用,变量以Variant类型处理。
显式声明:
情况一是在程序开头加入OptionExplicit强制显式声明语句;
情况二是不加强制显式声明语句,对变量声明。
格式:
Static|Dim变量名[AS类型]
其中:
[AS类型]表示可缺省,类型为数据类型
Static定义的变量为静态变量
Dim定义的变量为一般变量
当执行过程时,用Dim定义的变量初值为0。
而用Static定义的变量除第一次调用时初值为0,以后变量不会被初始化。
如:
subform_click()
dimtempasinteger
temp=2‘显式声明情况二
a=4‘隐式声明
endsub
‘显式声明情况一
optionexplicit
subform_click()
dimaasinteger
dimbasinteger
a=4
b=5
endsub
‘用Static声明变量
subform_click()
staticaasinteger
a=a+1
printa
endsub
三、变量的数据类型:
VB提供了6类12种标准数据类型,还可以由用户自定义数据类型。
我们首先介绍标准数据类型:
数值型、字符型、逻辑型、日期型、对象型、变体
1.数值(Numeric)数据类型
整型数、浮点数、货币型数、字节型数
(1)整型数:
是指不带小数点和指数符号的数,整型数运算速度快、精确,但表示数的范围小。
整型Integer(%):
存储长度为2个字节(16位),数的表示范围是-32768~+32767。
长整数Long(&):
存储长度为4个字节(32位),范围是-2147483648~2147483647。
(2)浮点数:
浮点数由三部分组成:
符号、尾数(Q)以及指数(J),即±QE(或)J。
指数分别用“E”表示单精度、“D”表示双精度。
浮点数的符号均占1位。
单精度浮点数Single(!
):
以4字节形式存储(32位),可以精确到7位十进制数,而单精度数的范围如下:
负数的范围是:
-3.402823E+38~-1.401298E-45。
正数的范围是:
+10401298E-45~+3.402823E+38。
双精度浮点数Double(#):
以8字节形式存储(64位)。
可以精确到15~16位十进制数。
而双精度数的范围如下:
负数的范围是:
-1.797693134862315D+308~-.9406564584112465D-324
正数的范围是:
+4.940656458412465D-324~+1.797693134862315D+308
浮点数表示的数的范围大,但有误差,在做浮点数的运算时,应尽量使每一次运算的结果都在有效位数范围内;尽量不要使两个相差很大的数值直接相加或相减。
(3)货币型数:
Currency(@):
是定点数,在内存中存储为64位(8个字节)整型的数值形式,其小数点左边有15位数字,右边有4位数字。
范围:
-922,337,203,685,477.5808~922,337,203,685,477.5807。
Currency数据类型在货币计算与定点计算中很有用,因为在这种场合精度特别重要。
(4)字节型数:
Byte:
是二进制数。
其存储为单精度型、无符号整型、8位(1个字节)的数值形式,范围在0至255之间。
Byte数据类型在存储二进制数据时很有用。
2.字符(String)数据类型
String($):
存放字符数据,所谓字符型数据就是用双引号括住的字符串,如:
"Abcde"、"VisualBasic欢迎你!
"等。
VB有两种字符串:
变长字符串和定长字符串。
在字符串中每个字符占1个字节,字符数据的范围以字符串长度的大小来度量。
变长字符串所占的空间大小为10个字节加字符串,最多可包含大约20亿(231)个字符;
定义格式:
DIM变量名ASString
如:
DIMstrtempASstring
定长字符串所占字节就是字符串的长度,可包含1~大约64K(216)个字符。
定义格式:
DIM变量名ASString*字符串长度
如:
DIMstrnameASstring*8
3.逻辑(Boolean)数据类型
Boolean:
该类型变量主要用来进行逻辑判断,它的存储位数是16位。
数据只有两个值:
True(真)或False(假)。
注意:
在VB中,逻辑数据可以转换成整型数据。
这时,True转换为-1,False转换为0;而当其他类型的数据转换成逻辑数据时,非零数转换成True,0转换为False。
4.日期(Date)数据类型
Date:
是用来表示和存储日期和时间的数据,它是按8个字节的浮点数存储。
任何字面上可被认作日期和时间的字符(除汉字外),只要用磅号(#)括起来都可以认作为日期型数据。
如:
#1Jan,97#、#January1,1999#、#1999―8―112:
30:
12PM#
日期表示的范围是:
从公元100年1月1日~9999年12月31日;
时间表示的范围是:
从0:
00:
00~23:
59:
59。
注意:
当其他数据转换成日期型数据时,小数点左边的数值代表日期,而小数点右边的数值代表时间:
0为午夜12点,0.5为中午12点;负数代表的是1899年12月31日之前的日期和时间。
【例3.1】下面程序在用户单击窗体后,可显示出由数据转化的日期和时间。
(教材P30例2.1)
5.对象(Object)数据类型
Object:
存储为32位(4个字节)的数值形式,作为对象的引用。
利用Set语句,声明为Object的变量可以赋值为任何对象的引用。
如:
Subform_click()
DimTempASObject
SetTemp=form1
EndSub
6.变体(Variant)数据类型
Variant:
也称为万用数据类型,这是一种特殊的数据类型,它对数据的处理(即所需类型)可以根据上下文的变化而变化,除了定长的String数据及用户定义的类型之外,可以处理任何类型的数据而不必进行数据类型的转换。
是对所有未定义的变量的缺省数据类型的定义。
Variant类型的数据可以根据运算的实际情况而“变体”,VB提供了一个函数VarType专门用来检测Variant中保存的数据类型,例如:
VarType(123)的返回值为2,表示为整型。
VarType函数的返回值与数据类型的关系如表3.1所示。
表3.1VarType函数数据类型检测
内部常数
VarType
返回值
数据类型
vbEmpty
vbNull
vbInteger
vbLong
vbSingle
vbDouble
vbCurrency
vbDate
vbString
vbObject
vbError
vbBoolean
vbVariant
vbDataObject
vbByte
vbArray
0
1
2
3
4
5
6
7
8
9
10
11
12
13
17
8192
空(Empty)
无效(Null)
整型(Integer)
长整型(Long)
单精度(Single)
双精度型(Double)
货币型(Currency)
日期型(Date)
字符型(String)
OLE自动化对象(OLEAutomationObject)
错误(Error)
逻辑型(Boolean)
变体数组(Variant)
非OLE自动化对象(Non-OLEAutomationObject)
字节型(Byte)
数组(Array)
3.4常数
常数是在程序运行中其值不变的量。
VisualBasic中包含三种常量:
文字常量、符号常量、系统常量。
1.文字常量
包含数值常量、字符串常量、逻辑型常量和日期型常量。
2.符号常量
用一个符号(一个字母组合)来代替长长的数字常量
声明格式:
Const字符常量名[AS类型]=表达式
其中:
字符常量名:
是有效符号名,其命名规则与变量名相同。
一般使用大写,尽量选择易记、有意义的名称。
AS类型:
说明了该常量的数据类型,若省略该选项,则数据类型由表达式决定。
也可用在符号常量名后加类型说明符来决定。
表达式:
可以是数值常数、字符常数、时间日期以及运算符组成的表达式。
注意:
⑴表达式中不能调用函数,即其中不能有函数元素。
⑵可以用先前定义过的符号常数定义新常数。
如:
ConstPI=3.1415926'声明了常量PI,代表3.1415926,单精度型
ConstMAXAsInteger=&H21ED'声明了常量MAX,代表十六进制整型数21ED
ConstCOUNT#=53.78'声明了常量COUNT,代表53.78,双精度型
ConstBIRTHDAY=#3/22/72#
ConstPI2=PI*2
3.系统常量
是由VB提供的并能够识别的、具有专用名称和作用的常数。
VB6.0提供了如:
颜色常数、控件常数、窗体常数、绘图常数、图形常数、键码常数等32类近千个常数,这些常数位于VB的对象库中。
如下表:
表3.2VB的常用颜色常数
常数
值
描述
常数
值
描述
vbBlack
vbRed
vbGreen
vbYellow
&H0
&HFF
&HFF00
&HFFFF
黑色
红色
绿色
黄色
vbBlue
vbMagentavbCyan
vbWhite
&HFF0000
&HFF00FF
&HFFFF00
&HFFFFFF
蓝色
洋红
青色
白色
3.5表达式与运算符
表达式是指由变量、常量、函数和运算符按一定的规则组成的一个字符序列。
在VB6中可以进行4种运算:
算术运算、比较运算、连接运算和逻辑运算。
3.5.1算术运算
算术运算就是加减乘除及指数等数学运算。
表3.3显示了VB6所有的算术运算及示例:
表3.3算术运算符
运算符
说明
示例
优先级
-
取负值
Test=-7
高
由高到低
自左到右
括号优先
低
^
指数
Test=3^2‘表示3的2次方,结果为9
*,/
乘法,浮点数除法
Test=37*16
Test=37/16‘结果为2.3125
\
整数除法
Test=37\16‘结果为2
先四舍五入为整数后再相除。
Mod
求余数
Test=37mod16‘结果为5。
先四舍五入为整数后再求余数。
+,-
加法、减法
Test=37+16
Test=37-16
如:
设X=2.5,A=7,Y=4.7,求下面表达式的值。
X+(A\3)*(X+Y)^2-3.5MOD2/2‘表达式必须写在同一水平上
27.2
51.84
103.681
0
106.18
106.18
3.5.2比较运算
比较运算(关系运算)就是比较大小,结果为真(True)、假(False)和Null。
表3.4比较运算符
运算符
说明
>
大于
<
小于
>=
大于或等于
<=
小于或等于
=
等于
<>
不等于
运算规则:
如果两个操作数都是数值型,则按其大小比较。
如果两个操作数都是字符型,则按字符的ASCII码值从左到右一一比较,即首先比较两个字符串的第一个字符,其ASCII码值大的字符串大;如果第一个字符相同,则比较第二个字符,依此类推,直到出现不同的字符为止。
③如果一个表达式是数值型,另一个表达式是不能转换成数值的字符型,则不能进行比较。
④关系运算符的优先级相同,运算时从左到右依次进行。
⑤两个操作数中有一个是Null,则运算结果为Null。
关系表达式:
用关系运算符及括号将操作数连接的式子
如:
(3>1)=(4<2);0=(4<2);18.5<15.4
3.5.3连接运算
连接运算就是将两个表达式连接在一起。
运算符有:
&:
用来强制两个表达式作字符串连接。
+:
如果两个表达式都为字符串,则将两个字符串连接;若一个为字符串而另一个为数字则进行相加运算。
如下表:
表3.5两种连接运算符“&”和“+”的比较
表达式1
表达式2
&
+
“123”
“3”
“1233”
“1233”
123
3
“1233”
126
“123”
3
“1233”
126
“123a”
3
“123a3”
报错
3.5.4逻辑运算(布尔运算)
逻辑运算通常用来表示比较复杂的关系,如:
女工程师,表示为:
性别=“女”AND职称=“工程师”。
结果为真(True)和假(False)。
表3.6列出了VB中所有的逻辑运算符和它们表示的逻辑关系。
表3.6逻辑运算符和它们表示的逻辑关系
运算符
说明
优先级
说明
例
结果
Not
逻辑非
1
当操作数为假时,结果为真
NotF
T
And
逻辑与
2
操作数均为真时,结果才为真
TAndF
TAndT
F
T
Or
逻辑或
3
操作数中有一个为真时,结果为真
TOrF
FOrF
T
F
Xor
逻辑异或
4
操作数相反时,结果才为真
TXorF
TXorT
T
F
Eqv
逻辑等于
5
操作数相同时,结果才为真
TEqvF
FEqvF
F
T
Imp
逻辑蕴含
6
第一个操作数为真,第二个操作数为假时,结果才为假,其余结果都为真
TImpF
TImpT
F
T
如:
计算下面表达式的值:
①(15>3)And(6>2)结果为True
②(7>3)Or(2>6)结果为True
③Not(2>6)And(6>2)结果为True
④("a">"A")Xor("b">"B")结果为False
⑤(7.8>3.2)Eqv(16.8>7.2)结果为True
⑥(16.3>7.0)Imp(4.5>19.2)结果为False
⑦(4.5>19.2)Imp(16.5>7.0)结果为True
注意:
逻辑运算一般是对关系表达式或逻辑量进行的,但也可以对数值进行运算。
在对数值进行运算时,是以数字的二进制值逐位进行逻辑运算的。
如:
10And7
10的二进制数为1010;7的二进制数为0111,对它们逐位进行逻辑运算得到二进制数为0010,结果是十进制数2。
3.5.5运算的优先顺序
当一个表达式中出现多种运算符时,即同时出现算术、关系和逻辑时,如何决定运算的次序呢?
这就需要考察一下这三类运算符的优先次序。
优先级高的运算符先运算,运算符的优先级相同时,从左向右进行运算。
VB运算符的优先级见下表:
表3.7VB运算符的优先级
优先级
1
2
3
算术运算符
关系运算符
逻辑运算符
1
-(负号)
=
Not
2
^
<>
And
3
*,/
<
Or
4
\
>
Xor
5
Mod
<=
Eqv
6
+,-
>=
Imp
7
&
如:
用一个逻辑表达式表示满足闰年的条件。
解:
闰年的条件是:
①能被4整除,但不能被100整除的年份都是闰年。
②能被100整除,又能被400整除的年份是闰年。
用Year表示一个年份,则有如下的判断条件:
YearMod4=0AndYearMod100<>0OrYearMod400=0
3.6流程控制语句
程序的执行就象水在管道中流动,如果不加以控制,只能从上流到下。
使用控制结构就可控制程序执行的流程。
在VB中,控制程序执行的基本结构有三种:
顺序结构、选择结构和循环结构。
程序中所体现出的“智能”就是通过条件判定和循环语句来实现的。
下面我们就要自己动手编程了,首先学习算法的表示,再学习三种基本结构。
3.6.1算法的表示
算法:
即对一个问题的解决方法和步骤。
任何一个问题能否用计算机解决,一个关键的步骤就是看能否设计出它的算法,有了合适的算法,再使用合适的计算机语言,就能方便地编写出程序来。
一、算法的特点
(1)有穷性:
一个算法必须在执行有穷个计算步骤后终止;
(2)确定性:
一个算法给出的每个计算步骤,必须都是精确定义的、无二义性的;
(3)能行性:
算法所要执行的每一个计算步骤,都是可以在有限时间内做完的;
(4)输入:
一个算法一般要求有一个或多个输入信息,这些输入信息是算法所需的初始数据;
(5)输出:
一个算法一般要求有一个或多个输出信息,这些信息一般就是对输入信息计算的结果。
二、算法的表示
表示算法的形式很多,如传统流程图、自然语言、N-S结构化流程图等等。
我们用直观、形象的流程图来表示算法。
.起止框,表示算法的开始或结束。
.处理框,表示初始化或运算赋值等操作。
.输入输出框,表示数据的输入输出操作。
.判断框,表示根据条件决定程序的流向。
.流程线,表示流程的方向。
【例3.2】:
将某班级中计算机、英语、数学三门课成绩总和大于等于270分的学生发给奖学金200元,并显示这些学生的姓名、奖学金。
若成绩总和小于270分,则显示该学生没有奖学金。
当从键盘输入完最后一名学生的成绩后,输入一个特殊符号“#”。
如何着手编程?
1.分析问题,理清解题思路
2.画出流程图
3.设计程序界面
4.编写必要的应用程序
5.运行、调试
分析:
⑴由键盘输入学生的姓名、三门课的成绩。
⑵判断是否输入了一个特殊符号“#”。
是,程序结束。
否,继续执行⑶。
⑶求三门课的总成绩。
⑷判断总成绩是否大于270分。
否,显示没有奖学金。
是,继续执行⑸。
⑸奖学金发200元,显示该学生的姓名和奖学金。
⑹再次输入学生的姓名,流程返回到⑴继续执行。
流程图:
图3.1例3.1流程图
3.6.2顺序结构
顺序结构是一种最简单、最基本的程序控制结构,任何程序必须包含顺序结构。
它的特点是,在这个结构内各语句块是按照它们出现的顺序从上到下依次执行的。
图3.2顺序结构
例:
实现两数A,B交换。
T=A
A=B
B=T
3.6.3选择结构
条件判定语句在程序运行中起的是水龙头的作用,只有满足条件的,才会执行某些语句,否则程序将按照另一个流程执行。
图3.3选择结构
VB支持的条件判定结构有3种,它们是:
●If…Then
●If…Then…Else
●SelectCase
一、If…Then结构
1.只选择执行一条语句:
If条件Then语句块1[Else语句块2]
如:
Ifx>=ythenx=x+y:
sum=sum+xelsex=x-y:
sum=sum-x
注:
这条语句必须在一行中写完
2.需要执行多条语句:
If条件Then
语句块
EndIf
如:
IfName=“Text1”Then
Text1.text=“欢迎使用VisualBasic6.0系统”
EndIf
二、If…Then…Else结构
使用If…Then…Else结构可以从几个程序流程分支中选择一个执行。
格式:
If条件1then
语句块1
[ElseIf条件2Then
语句块2]
[ElseIf条件3Then
语句块3]
.....
[Else
语句块n]
EndIf
流程图:
图3.4If…Then…Else结构
除此之外,条件还可以是下面的形式:
TypeOf控制变量Is对象类型
它测试某个控制变量是否为某种对象类型,如果是,则条件满足,返回True;否则条件不满足,返回False。
例如:
IfTypeOfListvarIsListBoxThen
表示如果Listvar控制是一个列表框类型的控制,则执行Then后面的语句块;否则执行下面的语句。
【例3.4】判断某年是否为闰年。
计算闰年的方法是,如果某年份能