VB第3章:Visual-Basic程序设计基础.ppt
- 文档编号:802983
- 上传时间:2023-04-30
- 格式:PPT
- 页数:89
- 大小:685.50KB
VB第3章:Visual-Basic程序设计基础.ppt
《VB第3章:Visual-Basic程序设计基础.ppt》由会员分享,可在线阅读,更多相关《VB第3章:Visual-Basic程序设计基础.ppt(89页珍藏版)》请在冰点文库上搜索。
1,第3章VisualBasic程序设计基础,数据类型常量与变量运算符和表达式常用内部函数代码编写规则数据的输入与输出,2,数据:
计算机能够处理数值、文字、声音、图形、图像等信息,均称为数据。
数据类型:
根据数据描述信息的含义,将数据分为不同的种类,对数据种类的区分规定,称为数据类型。
数据类型的不同,则在内存中的存储结构也不同,占用空间也不同,3,3.1数据类型,数值型整数-整型、长整型浮点数-单精度浮点型、双精度浮点型字节型和货币型字符串定长字符串变长字符串逻辑型其他数据类型日期型、对象型、变体型,4,数值型,整型(Integer)在计算机中存储占2个字节,取值范围在-32,768到32,767之间,类型声明符是%如-268、32767、189%都表示整型数,5,数值型,长整型(Long)整型的最大值为32767,大于此数,程序运行时就会因为溢出产生中断。
此时可使用长整数。
在计算机中存储占4个字节,取值范围在-2,147,483,648到2,147,483,647之间,类型声明符:
&如32768、-159687、189&都表示长整型数,6,数值型,单精度浮点型(Single)在计算机中存储占4个字节,类型声明符是!
如0.0598、1943.56、-0.000319!
均是单精度数单精度浮点型(Single):
精度为7位。
双精度浮点型(Double)在计算机中存储占8个字节,类型声明符是#如3.14159265、-0.00005#均是双精度数双精度浮点型(Double):
精度为16位。
7,数值型,浮点数也可以用指数形式来表示,由符号、指数和尾数三部分组成单精度数和双精度数分别用E(或e)和D(或d)将尾数和指数隔开,例如:
3.56E8表示单精度数,其中3.56是尾数,8是指数,其值相当于3.56108,3.56E8中的E8还可表示为e8、e+8、E+8;3.56D-3表示双精度数,其值相当于3.5610-3注意:
以指数形式表示的单精度数和双精度数中的指数和尾数都不可以省略,如E-6、D3都是错误的。
8,数值型,货币型该类型以Currency表示,在计算机中存储占8个字节,类型声明符是最多保留小数点左边15位和右边4位字节型以Byte表示,其取值范围是0到255,在存储二进制数据时很有用,9,字符型(String),字符型用于存储字符型的数据,也被称为字符串,可以是西文字符和汉字其类型声明符是$在VB中将字符串放在双引号内,如abc123,basic,高级语言都是字符串。
10,字符型,分类:
定长字符串和变长字符串定长字符串的长度固定,而变长字符串的长度可变定义定长字符串的一般格式是:
String*n,其中n表示定长字符串的长度。
11,逻辑型(Boolean),逻辑型又称布尔型,有两种取值True或False,在计算机中存储占两个字节当将逻辑型数据转为其他数值类型时,False转为0,True转为-1;将其他数值类型转换为逻辑型时,0转为False,其余非0值会转为True。
12,日期型(Date),用来表示日期和时间;可以表示的日期范围从100年1月1日到9999年12月31日,而时间可以从0:
00:
00到23:
59:
59必须用符号#括起来如#January1,2010#、#1Jan93#、#12/3/2010#、#12/3/201011:
43:
35AM#等都是合法的日期型数据,13,变体型(Variant),可以表示除了定长字符串类型和用户自定义类型之外的任何类型的数据是所有未定义变量的默认数据类型,注意:
变体型所需存储空间比其他数据类型要多,而且处理速度也相对较慢,因此尽量根据实际需要选择合适的数据类型。
14,3.2常量与变量,常量在程序中取值始终不变的数据变量程序运行过程中取值随时都可发生变化的数据以符号的形式出现,15,常量,直接常量符号常量系统常量,16,直接常量,根据其数据类型的不同,分为数值常量、字符串常量、逻辑常量和日期常量四种例如:
数值型常量:
1590.816-1.23E49D-26字符型常量:
359123.ab欢迎学习VB逻辑型常量:
TrueFalse日期型常量:
#April9,2010#1:
41:
36PM#12/3/201011:
43:
35AM#,17,符号常量,符号常量用来代替程序中经常出现的很大的数据或很长的字符串。
一般格式:
Public|PrivateConst常量名AsType=表达式例如:
ConstchAsSingle=1.39,s$=abcch是单精度型常量,s是字符型常量PrivateConstmax%=23PrivateConstmaxAsInteger=8,18,符号常量,Public用于在标准模块中声明在所有模块中对所有过程都可使用的常量,Private用于在模块中声明只能在该模块内使用的常量,这两个参数都不能在过程中使用;常量声明后,在程序中只能对其引用,而不能通过语句改变常量的值;若需要在一行中定义多个常量,必须用逗号作为分隔符,19,系统常量,系统常量系统定义的符号常量,在程序代码中可以直接使用如vbCrLf是回车换行符组合常量,等同于回车换行符操作,即Chr(13)&Chr(10)表示颜色的系统常量:
Vbred、Vbgreen等,20,变量,变量命名规则首字符必须是字母,变量名可以包含字母、数字或下划线,不能包含点号、空格或类型声明符%、&、!
、#、$;长度不超过255个字符;不能使用VB中的关键字、控件属性名、方法名、公共函数名等作为变量名,但将其嵌入到变量名中是允许的,如Print_mc、input_sub等;在作用域内必须唯一;不区分大小写,如sum、Sum、SUM表示同一变量。
习惯上采用大小写混合的格式,首字母大写,如TjSum。
最好能表示一定的含义,便于代码的阅读和修改,21,以下是一些非法的标识符的例子:
4yz数字开头xz不允许出现减号xy.t不允许出现小数点If不允许关键字Print$不允许关键字,22,变量的定义,定义变量的目的:
系统根据变量所定义的数据类型决定为它分配多少存储空间。
变量名表示内存位置(存储单元的代号),23,其格式为:
Public|Private|Dim|StaticAs,As,例如:
DimXAsInteger,YAsDoubleStaticDAsIntegerPublicKAslongDima,basinteger,思考:
a,b是什么数据类型,变量定义方法:
用声明语句声明变量,24,变量的作用域,局部变量模块级变量全局变量,25,局部变量:
在过程中定义的变量,仅在说明它的过程中有效格式:
Dim|Static变量名As类型名,说明:
Dim过程执行完毕,释放内存空间;(只在过程执行期间才存在)。
Static静态变量。
程序启动时分配内存空间,程序结束时清除。
(在整个应用程序运行期一直存在),26,模块级变量(窗体变量和标准模块变量):
模块级变量:
在定义该变量的模块内的所有过程内均有效。
该变量在窗体或标准模块通用声明段中说明。
格式:
Private|Dim变量名As类型名Private、Dim等价(一般用Private),27,全局变量:
在标准模块或窗体模块的通用段中说明,在工程内的所有过程中都有效(其值可用于应用程序的所有过程)。
格式:
Public变量名As类型名,说明:
全局变量也是在程序启动时创建,程序结束时被清除。
访问本模块中定义的全局变量时,可直接使用变量名;访问其他窗体模块中定义的全局变量时,必须在变量名前加“模块名.”;,如在Form1窗体的通用声明部分定义了全局变量APublicAasinteger在Form2中使用全局变量AB=Form1.A+8,28,变量作用域总结,29,1、定义一个变量后,系统自动为该变量赋予一个初值:
说明:
例如:
DimxAsInteger,yAsBoolean那么x的初值为0,y的初值为False,30,2、变量声明时,可以用类型声明符来代替“As数据类型”,类型声明符与变量名之间不能有空格。
例如:
Dima%,b&,c!
d#,e,s$等价于语句:
DimaAsInteger,bAsLong,cAsSingle,dAsDouble,eAsCurrency,sAsString,31,3、字符型的变量可以定义为定长也可以为变长例如:
Dims1AsStringDims2AsString*30若赋给字符串s2的字符个数少于30,则在字符串的右边补空白字符,保证其总长度是30;若赋给字符串s2的字符个数大于30,则保留前30个字符,截去其余超出部分的字符。
注意:
标准模块中的定长字符串变量可以说明为public或private,在窗体模块中只能将定长字符串变量说明为private,32,4、定义变量时,必须根据实际需要来选择合适的数据类型,尽量选择存储空间小的类型,如能选择整型就不要设置为浮点型,浮点数精确度要求不高,就设置为单精度型,尽量避免定义变体型变量,这样可以节省存储空间,提高程序的运行效率。
33,变量,变量隐式声明在使用一个变量之前不必先声明这个变量,这就是变量的隐式声明OptionExplicit语句在模块中使用“OptionExplicit”语句可以强制显式声明模块中的所有变量,一旦使用未声明的变量在编译时就会出现错误。
34,3.3运算符和表达式,算术运算符和算术表达式关系运算符和关系表达式逻辑运算符和逻辑表达式连接运算符和连接表达式运算符的优先顺序,35,算术运算符和算术表达式,36,例题:
设A=7,B=4,C=6,则表达式AMod3+B3/C5的值为A1B2C3D出错,小数在进行mod、运算时,vb会先将前后的两个数四舍五入取整(就是全部转化成long型),然后再运算。
37,当小数部分正好等于0.5时,Clng()函数总是将其转换成最接近该数的偶数例如:
clng(31.5)=32clng(32.5)=32clng(33.5)=34clng(34.5)=34.,38,说明:
1、乘和浮点除是同级运算,加和减是同级运算,如碰到同级运算符,则按从左到右的顺序依次进行,在运算过程中,如果有括号的话,则优先处理括号中的数据,如果有多层括号,则优先处理最内层括号中的数据。
2、算术运算的操作数应是数值型,如果在运算中出现只包含数字的字符或者逻辑型操作数,则将其自动转换为数值型再进行运算。
如果其他类型的数据无法自动进行类型转换的话,系统会给出类型不匹配的出错提示。
例如:
15.3+True+FalseFalse转为0,True转为-1,结果为14.312.a+1+True出错:
类型不匹配,字符串12.a和True都无法转为数值,39,3、进行数值运算时,运算结果的数据类型与操作数中存储空间较大的数据类型保持一致特殊情况:
当一个单精度数和一个长整型数进行运算时,其结果为双精度型除法运算和幂运算其结果一般都是双精度型。
如果运算结果的值超出了该数据类型所能表示的数据范围,系统会报错。
例如:
print32767+1执行以上语句后,系统会报溢出错误,40,例:
假设变量Lng为长整形变量,下面不能正常执行的语句是ALng=16384*2BLng=4*0.5*16384CLng=1902DLng=32768*2,运算结果为两个运算对象中存储长度较长的那个对象的类型,41,4、在书写表达式时,要遵循一些规则。
在VB表达式中,只有圆括号,没有其他类型的括号,而且一定要成对出现。
乘号不能省略,如a乘以b,就不能写成ab,一定要写成a*b。
42,关系运算符和关系表达式,关系运算符也叫比较运算符,用来将两个操作数进行比较,返回值是布尔型,关系成立返回True,关系不成立返回False,43,运算符含义关系表达式结果=等于3*4=12True大于abcdeabrFalse=大于等于5*6=24True不等于dDTrueLike字符串匹配fistlikef*“True,关系运算符,44,注意:
(1)关系运算符“=”与赋值运算符“=”不同。
赋值语句是独立的一条语句,而关系表达式必须与VB中其他的代码一起来实现相应的功能。
例如:
x=5赋值语句Printa=2关系表达式ifa=bthenprinta关系表达式,45,
(2)日期按先后比较(日期在前为小),字符串按ASCII码值比较大小。
首先比较两个字符串的第一个字符,ASCII码值较大的字符所在的字符串大。
若相同则比较的二个,自左至右按照“逐个比较,遇大则大,长大短小,完全相同,才是相等”的原则进行。
汉字字符大于西文字符(3)关系运算符的优先级相同。
(4)注意有些运算符与数学中的符号的区别xyxy3x5x=3Andx=5,46,逻辑运算符和表达式,False,47,写出逻辑表达式:
选拔优秀生的条件:
三门功课英语(C1)、数学(C2)、计算机(C3),总分至少265分,或C2、C3分别大于90分且C1不低于80分。
C1+C2+C3=265OR(C180andC290andC390),四个逻辑运算符的优先顺序依次为:
NotAndOrXor,48,连接运算符和表达式,VB中有两个连接运算符,分别是“&”和“+”运算符“&”是强制进行字符串连接“12”&“34”字符串强制连接,结果为“1234”“12”&34字符串强制连接,结果为“1234”运算符“+”有些情况作为算术运算符加号,而有些情况作为字符串连接符“12”+“34”字符串连接,结果为“1234”“12”+34执行加法操作,结果为4612+34执行加法操作,结果为46,49,运算符的优先顺序,算术运算符和连接运算符:
-*和/Mod+和-&关系运算符:
=逻辑运算符:
NotAndOrXor,50,例题:
设a=2,b=3,c=4,d=5,下列表达式的值是Notaa+cA)-1B)1C)TrueD)False,51,3.4常用内部函数,分类数学函数字符函数日期和时间函数转换函数格式化函数Format调用函数的一般格式:
函数名(参数列表),52,数学函数,53,数学函数,54,数学函数,Log函数返回的是以e为底的自然对数,而不是以10为底的对数,log(x)相当于数学中的lnxExp函数是求e的x次方,其返回值的类型是双精度型三角函数Sin、Cos、Tan中参数的单位是弧度,55,数学函数,Rnd函数返回大于等于0且小于1的随机数,为了生成某个范围内的随机数,可以用公式:
Int(上限下限+1)*Rnd+下限)如要随机生成20到50之间的任意整数,可用下列语句来实现:
Int(Rnd*31)+20为了使每次运行时产生的随机序列不同,可在生成随机数之前执行Randomize语句,56,字符函数,57,字符函数,58,字符函数,59,例题:
执行下面语句后,Len函数值最大的是DimIAAsInteger,BAsSingle,SAsString*5,ChAsStringIA=32767:
B=23.5:
S=”A”:
Ch=”abcd”ALen(IA)BLen(B)CLen(S)DLen(Ch),60,日期和时间函数,61,日期和时间函数,62,转换函数,63,转换函数,64,例题.函数CIntIntFix都返回整数值,以下能正确地描述它们返回整数值大小关系的是()。
A.CInt(-4.51)=Int(-4.51)Fix(-4.51)B.Int(-4.51)CInt(-4.51)Fix(-4.51)C.CInt(-4.51)Fix(-4.51)Int(-4.51)D.Int(-4.51)Fix(-4.51)=CInt(-4.51),1、Cint(x):
将数值型数据X的小数部分四舍五入取整;2、Int(X):
取小于等于X的最大整数;3、Fix(X):
将数值型数据X的小数部分舍去。
思考:
Cint(4.5)的值是多少?
65,格式化函数Format,格式化函数用于将数值、日期和时间数据按照指定的格式输出一般格式为:
Format(表达式,格式字符串),66,格式化函数Format,格式字符串是由一些说明数据格式的字符构成的,主要包括#0.,%+-$等#:
数位控制符,如果数值小数部分的位数大于符号#的个数,则需要四舍五入,如果小数部分的位数小于符号#的个数,则显示原数值的小数部分即可;0:
数位控制符,与符号#类似,区别在于如果0的个数大于数值的位数,需要补足0;.、,、%:
分别显示小数点、千位分隔符和百分号,其他符号如+、-、$等都必须按格式字符串的原样显示出来,67,例:
变量x=1234.5678,执行下列语句:
PrintFormat(x,#.#)PrintFormat(x,0000000.00)PrintFormat(x,#,000.#00)PrintFormat(x,-#00.0%),在当前窗体上显示的内容分别为:
1234.570001234.571,234.568-123456.8%,68,3.5代码编写规则,语句及语法代码书写规则,69,语句及语法,赋值语句注释语句结束语句,70,语句及语法,赋值语句的作用是将表达式的值赋给变量或者对象的属性,赋值语句的格式Letvarname=表达式例如:
Command1.Caption=“确定”Sum=Val(Text1.Text)Text1.Text=CStr(Sum)Text2.Text=Text1.Text,71,语句及语法,赋值语句赋值号“=”和数学上的等号有区别不可以用连等号来给多个变量赋值例如:
a=b=c=1的功能就不是将变量a、b、c的值都赋为1,该语句中只将左边第一个“=”看作是赋值号,其余的“=”都看作是关系运算符。
赋值号左边只能是变量,不能是常量或表达式,72,语句及语法,不同数据类型之间的赋值1、变量和表达式均为数值类型,但精度不同,如:
DimxAsIntegerx=4.52、将非字符型的表达式赋值给字符型的变量,则将表达式转换为字符型,如:
DimsAsString,tAsBooleant=Trues=t,73,语句及语法,3、将字符型的表达式赋值给数值型的变量如表达式中的字符串能转为数值类型而且不溢出,则将字符型的表达式转换为数值型赋值给左边的变量,例如:
DimsAsIntegers=327如表达式中的字符串中包含有非数字的字符或者空串,则提示错误为类型不匹配DimsAsIntegers=12vb,74,语句及语法,4、将逻辑型的表达式赋值给数值型的变量逻辑型True转换为-1False转换为05、将数值类型的表达式赋值给逻辑型的变量所有非0值转换为True0转换为False,75,语句及语法,注释语句非执行语句,对程序的执行没有任何作用两种表示形式Rem注释内容用一个撇号()来代替关键字Rem如果在其他语句行之后用Rem注释语句,必须在语句行和注释语句之间用冒号(:
)隔开,如:
prime=False:
Remprime赋初值为False,76,语句及语法,结束语句独立的End语句用于结束一个程序的运行,可以放在过程中的任何位置用来关闭代码执行、关闭以Open语句打开的文件并清除变量多种形式的End语句与其他语句配对使用用来结束过程或者语句块的执行,例如:
EndSubEndFunctionEndIfEndSelectEndType,77,语句及语法,代码书写规则一般情况下,输入代码时一条语句一行。
续行符将一条语句分成几行显示,VB中的续行符是“_”(空格加下划线)多条语句显示在一行中,各条语句间用冒号“:
”隔开采用缩进格式编写,78,3.6数据的输入与输出,InputBox函数MsgBox函数和MsgBox语句Print方法,79,InputBox函数-输入框,作用:
打开一个对话框,等待用户输入内容。
单击确定,返回输入值(字符型数据)格式:
变量名=InputBox(提示,标题,默认值,X,Y),例:
设置一个输入框:
提示用户输入查询学号。
80,InputBox函数,DimStuIDAsString定义一个字符型变量StuIDStuID=InputBox(“请输入你的学号:
”&vbCrLf&“有效学号是7位,学生登录,9712001),提示:
若提示内容中需要换行显示:
在换行处加chr(13)&chr(10)各项参数位置必须一一对应,InputBox函数-输入框,81,按钮:
可选。
整型表达式,缺省值为0指定信息框中按钮数目、类型、图标类型,缺省按钮等,Msgbox函数-信息框,变量=MsgBox(提示内容,按钮,标题)MsgBox提示内容,按钮,标题,提示内容:
必要。
字符表达式,即显示在对话框中的信息,MsgBox函数的常用参数的说明,标题:
可选。
在对话框标题栏中显示的内容。
省略此项,则将应用程序名放在标题栏中,语法,82,值按钮的设置对应按钮名称0vbOKOnly-确定1vbOKCancel-确定、取消2vbAbortRetryIgnore-终止、重试、忽略3vbYesNoCancel-是、否、取消4vbYesNo-是、否5vbRetryCancel-重试、取消,Msgbox函数-Buttons参数的设置方法(如图例),1、按钮的类型和数目的设置Buttons参数值=按钮设置值+图标设置值+缺省按钮值,Buttons参数值=1或vbOKCancel,83,2.图标的样式Buttons参数值=按钮设置值+图标设置值+缺省按钮值,16vbCritical-,32vbQuestion-,48vbExclamation-,64vbInformation-,Buttons参数值=1+64或vbOKCancel+vbInformation,Msgbox函数-Buttons参数的设置方法(如图例),84,3.说明哪一个是缺省按钮Buttons参数值=按钮设置值+图标设置值+缺省按钮值,0VbDefaultButton1,256VbDefaultButton2,512VbDefaultButton3,Buttons参数值=65(1+64+0)或vbOKCancel+vbInformation+VbDefaultButton1,Msgbox函数-Buttons参数的设置方法(如图例),85,设计一个如下所示的提示框:
练一练,86,符号常量返回值对应按钮,4.Msgbox的函数返回值用于确定用户选择对话框的哪一个按钮,以作出不同的响应。
vbOK1-确认,vbCancel2-取消,vbNo7-否(N),vbAbort3-终止(A),vbRetry4-重试(R),vbIgnore5-忽略(I),vbYes6-是(Y),Msgbox函数-信息框的返回值,87,练习,编制一个帐号与密码的检验程序:
要求:
帐号不超过6个数字,密码4个字符(设密码为VB06),密码框中不显示实际输入字符帐号(如:
非数字)不正确时,提示有关信息,并清除原内容,得到焦点,再输入密码不正确时,单击“重试”,密码框清空,得到焦点重新输入,若单击“取消”,停止运行,88,数据的输入与输出,MsgBox语句与函数比较:
各个参数的含义和作用与MsgBox函数相同不同之处在于:
MsgBox函数有返回值,通过返回值可以获知用户的选择,而MsgBox语句没有返回值,只是简单的消息框提示MsgBox函数需要将参数放在括号中,而MsgBox语句则不需要,89,数据的输入与输出,Print方法Print方法的作用是在各类对象中输出文本,这里的对象主要包括窗体、图片框、立即窗口以及打印机一般格式为:
对象名.P
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB Visual Basic 程序设计 基础
![提示](https://static.bingdoc.com/images/bang_tan.gif)