VB程序设计基础VB武科大教学.ppt
VB程序设计基础,第三章,计算机技术系 张志辉,2,目标,数据类型常量和变量 变量的作用域运算符和表达式VB常用内部函数数据输入输出,3,3.1 数据类型,数值型字符型布尔型日期型变体型对象型,4,3.1 数据类型,整型数和长整型数可以表示正整数、负整数和零。整型数和长整型数的区别在于占用的字节数不同,可表示的数值范围也不同。一个整数用2个字节来保存,一个长整型用4个字节来保存。,5,单精度型(Single)和双精度型(Double),单精度型数和双精度型数都可以表示带有小数的数,表示的数的范围大单精度数用4个字节来保存,最多可以表示7位有效数字,小数点可位于这些数字的任何位置。单精度数可用指数形式来表示,例如:3.83E8(3.83X108)双精度数用8个字节来保存,最多可以表示15位有效数字,小数点可位于这些数字的任何位置。双精度数可用指数形式来表示,例如:-3.443035D-13(-3.443035X10-13),6,S为100的阶乘,S为整型还是长整型?123456789.123定义为单精度型还是双精度型?,7,3.1 数据类型,货币型数(Currency)是一种专门为处理表示货币的数据而设计的数据类型。一个货币型数据需要用8个字节保存。保存时,小数点后固定4位数字,小数点前15位数字,8,字符型(String)和布尔型(Boolean),字符型(或称字符串型)指用“”括起来的一串字符。例如,”a”,”123”,”汉字”都是有效的字符串。字符串中包含的字符个数称为字符串长度字符串分为变长字符串和定长字符串 定长字符串:长度不变 变长字符串:长度不固定 注:空字符串()和空格字符串()是有区别的,串长不等布尔型(又称逻辑型)只有两种值,分别为True(真)和False(假),常用于表示逻辑判断的结果。布尔型数用2个字节来保存,9,日期型(Date)、对象型(Object)和变体型(Variant),日期型数据用来表示日期和时间,用8个字节来保存。它采用两个”#”符号把日期和时间的值括起来。例如:#08/20/2005#,#2005-08-20#,#08/20/2005 2:55:10 AM#对象型数据可用来表示应用程序中的对象变体型数据是一种可变的数据类型,可以存放任何类型的数据。例如:Temp=“45”Temp=Temp-2 Temp=#01/01/2005#Temp类型随赋值类型不同而不同,其类型转换由VB自动完成,10,3.2 常量和变量,常量是指在程序运行期间其值是不发生变化的量,而变量是指在程序运行期间其值可以发生变化的量,它代表内存中指定的存储单元,11,1.一般常量,一般常量是在程序代码中直接给出的数据,这类常量可从字面形式上直接分辨其类型。如:-9、3、0等都是整型常量,3.14、-2.7、123.456等都是实型常量,“abc”、“123”、“汉字”等都为字符串常量,普通常量,整型常量,实型常量,字符串常量,逻辑型常量,日期型常量,12,整型常量,十进制整数,由带有正号(可省略)或负号一个或几个十进制数字(09)组成。例如-624,436,+256等,十六进制整数,以&H(或&h)开头,后跟一个或几个十六进制数字(09及AF或af)组成。例如&H1A,&H32等,八进制整数,以&O(或&o)开头,后跟一个或几个八进制数字(07)组成。例如&O354,&O1200,13,Visual Basic能自动判断常量类型 例如,在默认情况下,Visual Basic将选择需要内存容量最小的表示方法,值3.14通常被作为单精度数处理。为了显式地指明常数的类型,可以在常数后面加上类型说明符。这些说明符分别为:整型;&长整型;!单精度浮点数;#双精度浮点数;货币型;字符串型。字节、布尔、日期、对象及变体类型没有类型说明符。,14,2.符号常量,在进行Visual Basic程序设计时,经常遇到某个常量在程序中多次使用的情形。此时,可通过设置符号常量的方法解决。定义了符号常量后,凡程序中使用到该常量的地方,都用相应的符号常量来代替,这样不仅书写方便,而且在提高程序可读性的同时,增强了程序的可维护性 Visual Basic中使用关键字Const定义符号常量。一般格式为:,Public|PrivateConst 常量名As数据类型表达式,例如:Const Pi=3.14159,TwoPi=2*Pi Const MAX As Integer=255,15,其中:,“常量名”是一个名字,其构成规则与变量相同关键字As是可选的,用它来定义常量的数据类型。常量的数据类型可以是数值型、日期型、字符串型、逻辑型等“表达式”是必选的,由一般常量、其他符号常量和算术运算符(指数运算符除外)、逻辑运算符组成,也可以是字符串,但不能使用含字符串连接运算符(+或&)的字符串表达式、变量及用户定义的函数或内部函数,16,系统常量,系统常量是系统内部定义的符号常量存放于系统的对象库中,可在“对象浏览器”中的Visual Basic和Visual Basic for Applications(VBA)对象库中找到,这类常量用户随时可以使用,其前缀是“vb”。例如:vbblack、vbred等都是系统常量,17,3.2.2 变量,变量用来存储程序执行过程中可能发生变化的数据变量都有名字。在Visual Basic中,给变量命名时应遵循以下规则:(1)变量名只能由字母、数字和下划线组成。且它的第一个字符必须是英文字母或汉字,最后一个字符可以是类型说明符(2)变量名的最大有效长度为255个字符,且不区分变量名中字母的大小写,如Num,NUM,num指的都是同一个名字(3)不得用Visual Basic的保留字作为变量名。例如,变量Print是非法的(4)命名变量名尽量做到“见名知义”,且在作用域内必须是惟一的 在Visual Basic中,变量名以及过程名、符号常量名、记录类型名等都称为名字,它们的名称统称为“标识符”,它们都必须遵循上述规则,18,变量的声明,定义词 变量名As 数据类型,变量名As 数据类型,“定义词”可以是关键字Dim,Public,Static,Private;“As”是关键字,可选;“类型”可以是Visual Basic中的一切数据类型,说明:,用一个Dim语句声明一个变量后,VB系统会自动为该变量赋初值若变量未定义数据类型,则该变量默认为变体类型,注意:,19,变量与内存每一个变量有名字,类型,大小和值 变量名对应于它在内存中的位置当一个新的值被放进变量时,它将替换掉以前的值从内存中读取变量的值不会改变它A visual representation,变量与内存,以新代旧,20,例如:Dim total As IntegerDim sum As DoubleDim myname As String*4Dim varname As StringDim addDim a As Integer,b As Integer,c As SingleDim a%,b%,c!,变量的声明,21,隐式声明 1)VB允许不加声明就直接使用变量,此时VB会自动创建所用的变量,默认的变量类型为变体类型(Variant)2)在为其赋值之前,该变量的值是Empty;当为它赋值后,该变量的类型为所赋值的类型显式声明 1)采用Dim,Public,Private或Static等语句声明的变量,称为显式声明的变量 2)若要强制进行变量的声明,可在窗体模块、标准模块的声明段中添加下列语句:Option Explicit,变量的声明,22,变量的作用域,变量的作用范围变量的作用范围可分为:过程级和模块级过程级变量模块级变量 公用变量,23,过程级变量,过程级变量指在过程中声明的变量,也称为局部变量。局部变量只能在声明它的过程中使用在过程中可用Dim或Static声明局部变量,语法格式如下:Dim 变量名称 As 类型Static变量名称 As 类型,24,模块级变量,默认情况下,模块级变量可在该模块的所有过程中使用,但不能在其他模块中使用。可在模块顶部的声明段用Dim或Private关键字声明模块级变量,25,公用变量,公用变量也可称全局变量,它在工程中的所有模块中都可以使用。可在模块顶部的声明段用Public关键字声明全局变量Public用来在标准模块中声明变量,不能在过程中使用如果在窗体中定义了全局变量,在其他窗体或模块中可以用“(该全局变量所在的)窗体名.变量名”形式来访问此全局变量。全局变量的作用域最大,26,3.3 运算符和表达式,Visual Basic中有四类运算符,如算术运算符、关系运算符、连接运算符和逻辑运算符。参与运算的数据称为操作数算术运算符与算术表达式连接运算符关系运算符与关系表达式 逻辑运算符与逻辑表达式 运算符的优先级,27,算术运算符与算术表达式,算术运算符 Visual Basic中的算术运算及运算符号,与数学中相应的运算基本相同算术表达式 算术表达式是由各种算术运算符和操作数组成的式子,28,连接运算符,“+”和“&”都可作为字符串连接运算符,把两个字符串直接连接成一个字符串,1000+234结果为12341000+234 结果为1000234ABC+234 出错1000&234结果为10002341000&234 结果为1000234ABC&234 结果为ABC234ABC&234 结果为ABC23433&22 结果为“3322”在做字符串连接运算时,用“&”要比用“”更安全。,29,“&”和“+”在用法上也是有区别的:,“&”运算符用来强制将其两侧的表达式作为字符连接,也就是说,该运算符的两个操作数既可以为字符型也可以为数值型,当是数值型时,系统自动将其转换为数字字符,然后进行连接操作。而“+”运算符是当两个操作数为字符串数据时,才能将两个字符串连接成一个新字符串。否则,两个操作数若其中一个为数字字符串,另一个为数值型数据,则系统自动将数字字符串转化为数值,然后进行加法运算;若其中一个为非数字字符串,另一个为数值型数据,则出错。,30,关系运算符与关系表达式,关系运算符 关系运算符也称为比较运算符,用来对两个数据类型相同或相容的表达式进行大小、等与不等的比较关系表达式 关系运算表达式的值为True(真)或False(假),主要用于逻辑判断,31,逻辑运算符与逻辑表达式,逻辑运算符也称布尔运算符,用于对两个逻辑值进行逻辑运算,其结果仍为逻辑值,即True或False,32,运算符的优先级,各种不同类型运算符间的计算优先级从高到低排列如下:算术运算连接运算关系运算逻辑运算算术运算符的优先顺序按从高到低排列如下:括号乘方()取负(-)乘法(*)和除法(/)整除()求模运算(Mod)加减法(+、-)所有比较运算符的优先级相同逻辑运算的优先顺序从高到低排列如下:NotAndOrXor,33,已知a=2,b=3,c=4,d=5,那么表达式Not aa+c的值为。(False)Print“5*20”的结果是表达式-22+435的值是。4表示X能被2和5整除的数的表达式-表达式#4/14/2004#+5 的值是。表达式4+5 4*9/8 Mod 3的值是。5,34,3.4 VB常用内部函数,Visual Basic提供了大量的内部函数。在这些函数中,有些是通用的,有些则与某种操作有关。标准函数按其功能和用途,可以分为数学函数、转换函数、字符串函数、时间和日期函数、格式函数和测试函数等数学函数类型转换函数 日期时间函数 字符串处理函数,35,数学函数,数学函数用于各种数学运算,包括三角函数、绝对值函数、平方根函数、对数函数,指数函数等。该类函数的参数和返回值都是数值型的。常见的数学函数见表3-4。,36,表3-4 常见的数学函数,37,说明:三角函数的自变量是以弧度为单位。例如:Sin45应写成:Sin(45*3.14159/180)。角度转换为弧度的计算公式为:1/1803.141 59/180(弧度)(2)符号函数Sgn(x),根据x的值返回一个整数。即当x0时,返回1;当x=0时,返回0;当x0时,返回-1。,(3)Log(x)函数返回自变量x以e为底的自然对数。求以10为底的常用对数时,可以用如下换底公式:,38,(4)随机函数Rnd的自变量可以省略不写。利用该函数可以产生给定区间 n,m 上的随机数,其公式为:Int(m-n+1)*Rnd+n)在调用 Rnd 之前,先使用无参数的 Randomize 语句初始化随机数生成器,该生成器具有根据系统计时器得到的种子。,39,转换函数,Visual Basic在完成计算表达式、赋值、传递参数等操作时,如果遇到数据类型不同的情况,会自动进行类型转换。也可在程序中使用类型转换函数完成类型转换。常用的转换函数见表3-7。,表3-7 常用的转换函数,求字符串x中第一个字符的ASCII码,Integer,将十进制数x转换为十六进制,String,40,说明:(1)Val(x)函数将字符串型数据转换为数值型数据。转换时,自 动去掉字符串中的空格、制表符和换行符。该函数还可识别进位制符号&O(八进制)和&H(十六进制)。当遇到非数字字符时即停止转换。例如:Val(123xyz)结果为123 Val(123 89)结果为12389 Val(23.98)结果为23.89,41,(2)Str(x)函数将数值型数据转换为字符串。字符串的第一位一定是空格(x0)或负号(x0),小数点后0将去掉。例如:Str(123)结果为”123”Str(-123.45)结果为”-123.45”Str(-123.450000)结果为”-123.45”,字符串函数 在计算机的各种应用中,有大量的文字处理操作,如字符串的查找、比较、截取等。Visual Basic提供了大量的字符串函数,给编程中的字符处理带来了极大方便。字符串函数见表3-5。,42,表3-5 字符串函数,43,说明:(1)Mid(x,n,m)函数中的参数m省略时,其返回值为由n指定位置开始的所有字符串。如果n的值大于字符串的长度,则返回值为空串。注意:该函数还有一特殊用途,即 Mid(x,n,m)=子字符串其作用是把x中从第n个字符开始的字符用“子字符串”替代。如果含有m参数,则替换的内容是“子字符串”左边的m个字符。(2)InStr(f,x1,x2,k)函数中,f用来设定每次检索的起点,当f为1时可省略。参数k是一整型数,用来指定字符串的比较方法,当k为0(默认),表示区分大小写;若k为1,则不区分大小写。,44,日期、时间函数,Visual Basic提供了丰富的日期、时间函数,利用这些函数可以提取系统的日期、时间。可截取年、月、日、时、分、秒,还可进行日期和时间的计算。日期函数见表3-6。,表3-6 日期函数,45,46,Private Sub Form_Click()x=#5/1/2010#a=x-Date b=Weekday(x)c=Year(Date)d=Month(Date)e=Hour(Time)f=Minute(Time)Print 现在距离世博会开幕还有:;a;天 Print 世博会开幕是:星期;b-1 Print 本月份是:;c;年;d;月 Print 现在是:;e;时;f;分End Sub,47,函数Int(Rnd*10)产生的随机数范围是。表达式Fix(21.5)*2+10 Mod 7 3的值是。LEN(Left(“Visual basic”,6)的函数值,48,格式输出函数,(1)格式输出函数Format可以用来指定数值、字符串、日期、时间等数据的输出格式,广泛用于程序设计中的数据输出控制。其基本格式如下:,Format(expression,format),说明:,该函数的基本功能是按参数“format”指定的格式输出“expression”的值。其中,各个参数的含义如下:,expression参数,必选项。可以是任何有效的表达式。format参数,可选项,可以是有效的命名表达式或用户自定义格式表达式,用来规定Format函数的返回值格式。数据项的显示格式(包括显示区段的长度)就是由这些格式字符决定。,49,(2)Spc函数格式:Spc(n)功能:在输出项之间输出n个空格例如:Print 学号;Spc(2);姓名;Spc(5);成绩 输出结果(表示空格):学号姓名成绩(,格式输出函数,50,格式输出函数,3)Tab函数格式:Tab(n)功能:指定输出项在输出行的位置例如:Print Tab(2);学号;Tab(11);姓名;Tab(21);成绩 输出结果(1个汉字占2个位置):学号姓名成绩,51,Private Sub Form_Click()Print Print Tab(15);学号;Tab(26);姓名;Tab(36);成绩 Print Tab(14);String(27,-)输出27个减号字符“-”Print Tab(14);20011001;Tab(26);张小三;Tab(36);57 Print Tab(14);20011003;Tab(26);李小四;Tab(36);69 Print Tab(14);20011012;Tab(26);马小五;Tab(36);92 Print Tab(14);String(27,-)输出27个减号字符“-”End Sub,52,3.5 数据输入输出,赋值语句赋值语句的一般形式如下:Var=使用赋值语句还可以获取一个对象返回的当前属性值:Var=对象.属性值 属性也存在数据类型,所以在获取对象的属性值时,最好使用具有相同数据类型的变量,53,1.使用InputBox()函数 格式:变量=InputBox$(提示,标题,默认,x坐标,y坐标)功能:打开一个对话框,等待用户键入内容。当用户单击“确定”按钮或按回车键时,函数返回输入的值,其值的类型为字符串。先看下面的例子。例3.1 通过输入框输入姓名,然后在消息框中显示出来 Private Sub Form_click()dim name as string dim age as integer name=InputBox(输入您的姓名”)age=InputBox(“请输入您的年龄”)End Sub,54,说明:“$”:可选项。有此项时,返回的数据类型是字符串型;省略此项,返回的数据类型是变体型。“提示信息”:字符串表达式,必选项。在对话框中作为提示信息,可以是字符或汉字,最大长度为1024个字符,由所用字符的宽度决定。如果提示信息包含多行,则必须在每行末用回车符Chr(13)、换行符Chr(10)或回车换行符的组合Chr(13)&Chr(10)来分隔。“标题”:可选项。显示在对话框标题栏中的字符串表达式。如果省略,则把应用程序名放在标题栏中。,55,“默认”:可选项,显示文本框中的字符串表达式。当在输入对话框中无输入内容时,该缺省值作为输入的内容。如果省略,则文本框为空。“”:可选项,整型表达式,成对出现。X坐标用来指定对话框的左边与屏幕左边的水平距离,Y坐标用来指定对话框的上边与屏幕上边的垂直距离。如果省略该项,则对话框在水平方向居中,在垂直方向距下边大约三分之一的位置。注意:函数中的各项参数次序必须一一对应,除了“提示”一项不能省略外,其余各项均为可选项,如果要省略某些参数,则必须加入相应的逗号分隔符。,56,坐标原点(0,0)在窗体的左上角 坐标轴刻度单位为缇(Twip,567缇为1厘米)当前位置的横坐标(CurrentX)和纵坐标(CurrentY),Y,X,(CurrentX,CurrentY)当前位置,窗体坐标系统,57,例:filename$=InputBox(“请输入文件名(不超过8个字符)”,”文件名”,”vbfile”)将产生一个如下对话框:,输入对话框,58,MsgBox函数,格式:Var=MsgBox(prompt,button,title)例子:Private Sub Form_Click()msg1$=要继续吗?msg2$=Operation Dialog Box r=MsgBox(msg1$,34,msg2$)Print rEnd Sub,59,MsgBox函数也可以写成语句的形式,常用于较简单的信息显示。例如:MsgBox“工程保存成功”执行结果为:,谢谢!,