第3章VisualBasic语言基础学习目标:掌握数据类型、表达式、操作符的正确使用;理解常见内部标准函数;了解简单的应用程序开发。本章导读教学重点和难点:常量和变量的三要素(名称、类型、作用范围),运算符的优先级,常用内部函数的灵活使用。授课学时4课时本章主要内容3.1字符集3.2数据类型3.3常量与变量3.4运算符与表达式3.5常用内部函数3.6VisualBasic语句及书写规则3.7VisualBasic的基本语句重点:1.常量和变量的三要素(名称、类型、作用范围)2.运算符的优先级3.常用内部函数的灵活使用3.1字符集VB采用Unicode字符集。特点:一个汉字和一个英文均为1个字符,占两个字节。系统定义,在语法上有固定的含义。书写时首字母会自动转为大写。如If、Cls、Print、True。1.字符集2.关键字(保留字)(最小语法单位)(语法组成部分)3.2数据类型数据是程序的必要组成部分,在VB中对数据进行分类处理。(因为不同数据类型的操作方式、取值范围、存储空间不同)VisualBasic提供了两种数据类型:标准数据类型(系统定义)自定义数据类型(用户定义)标准数据类型主要有字符串型数据和数值型数据,此外还提供了字节、货币、对象、日期、布尔和变体数据类型。VB标准的数据类型(见P38表3-1)1.字符串数据类型注意:(1)用双引号“”括起来。如“ABC”、“中国”,凡是字符型数据必须用“”括起来。(2)“”表示空字符串,“”表示有一个空格的字符串。(3)字符串的长度(Length)是指它的字符个数,包括空格。(4)由数字组成的字符串是不能计算的。字符包括西文字符与汉字。问?A+b是不是字符串?“VisualBasic”的长度是?10+20是不是等于30呢?应该等于什么?整型、实型(带小数)(1)整型:带正负号的整数。①整型(Integer)(两个字节):十进制取值范围是-32768~32767八进制前面冠以&或&O,由0~7组成。如&O34十六进制前面冠以&H,由0~7,A~F(或a~f)组成。如:&H16②长整型(Long)(4个字节)表示长整数,在数字后加&,如123&。③Byte字节型以一个字节存储无符号整型数。0~255整型数据在存储时占两个字节,长整型占4个字节,长整型存储的数据范围比整型大2.数值数据类型?整型和长整型的区别(2)实型(带小数部分的数)①单精度(Single)(4个字节)精确到7位(有效数字个数为7)十进制。数字后加!,带小数点,科学记数法,如123.45!,123.45,0.12345E+3(相当于0.12345×103)②双精度(Double)(8个字节)精确到15或16位十进制数。表示双精度,数字后加#,在科学记数中用D代替E。如:123.45#,0.12345D-3(相当于0.12345×10-3)③货币型(Currency)(8个字节)多用来表示钱款。精确到小数点后4位(4位以后的数字被舍去,不舍入),小数点前可多达15位。如1234@区别在于所表示数据的精度不同,一个是精确到7位十进制数,一个是精确到15、16位十进制数,还有保存数据的范围不同?单精度和双精度的异同(3)逻辑数据类型:Boolean(2个字节)表示比较和判断的逻辑结果,只有两种值:True(真)或False(假)。如:x=1,y=3,xy的结果为布尔型,False逻辑数据与整型的互转:True→-1False→0非0数→True0→False?3变为逻辑值应该为______,其结果转换成整型又为______(4)日期数据类型:Date用号码符#括起来。凡是日期型数据必须用#括起来。如#11/12/1998#、#23:35:45#VisualBasic中有多种Date和Time格式。例如:#1980-03-16#、#3-6-9313:20##March27,19931:20am#?#11/12/1998#-11结果为#11/01/1998#5.对象数据类型:ObjectObject变量采用32位(4个字节)地址来存储对象,表示图形或OLE等对象。6.变体数型类型:Variant将什么类型的数据赋给它,它就是什么类型,一个变量在使用之前如果没有定义,则系统默认它是变体类型。如:St=label1.captionLabel1.caption=label2.captionLabel2.caption=St自定义数据类型由多个标准数据类型组合而成,有时称记录类型。比如定义一个“学生记录类型”,包括学生的“姓名、年龄、出生日期、是否团员”4项数据,则定义方法为:TypeStu_RecNameAsString*8’姓名Name为8个字符AgeAsInteger’年龄Age为整数型BirthdayAsDate’出生日期Birthda为日期MemberAsBoolean’团员Member为布尔型EndTypeDimstudentasstu_rec这里的Stu_Rec就是一个用户自定义的记录类型。它的具体数据信息定义在Type与EndType之间。(具体使用见第7章)枚举数据类型(Enumeratic)像布尔型Boolean只有2种取值True和False一样,当一种数据类型只有几种可能的取值时,可以定义为枚举型。“枚举型”是指将数据可能的取值一一列举出来,其数据取值只限于列举出来的值的范围。如:{Sun、Mon、Tue、wed、Thur、Fri、Sat}若其中Sun的值设为0,则Wed的值为3。3.3常量与变量常量变量关键在于把握它们的三要素:命名、数据类型、作用范围命了名的存储单元3.3.1常量或变量的命名规则1.以字母、汉字开头,由字母、汉字、数字或下划线组成,长度小于等于255个字符;2.不能使用VB中的关键字(系统专有词汇);如if、cls等。3.不区分变量名的大小写;通常变量名首字母大写,其余字母小写,常量全部大写。4.为增加程序的可读性,可在变量名加一个缩写前缀。如,intCount,strMystring?5a、3x_2、Print、Print_Num、Abc、BB中哪些是合法的变量名。3.3.2常量两种:系统定义,其由VisualBasic系统或引用的对象提供。如:vbRed、vbNormal用户自定义,需要用Const语句来声明。格式:Const常量名[As类型]=表达式(缺省表示变体型)举例:ConstPI=3.14159,G=9.18该语句中用符号PI替代3.14159,G替代9.18。?ConstMAXA%=1ConstONE&=1,TWO#=1这几个变量有何区别?3.3.3变量格式:Dim变量名[As类型](缺省为变体类型)如:DimintXAsinteger,sngAllAssingle等价于:DimintXAsintegerDimsngAllAssingle在VisualBasic中执行应用程序期间,用变量临时存储数据。变量有三要素:名字、数据类型、作用范围。程序使用变量前通常要声明变量,声明时需要指出变量名称和类型,以便系统分配存储单元。1.显式声明(使用Dim)注意:(1)字符串变量类型。有两种定义方法:Dim字符串变量名AsstringDim字符串变量名Asstring*字符数(定长)如DimxyAsString*50(2)定义时可以在变量名后加类型符来代替“As类型”如:dimx!等价于Dimxassingle(3)一条dim语句可同时定义多个变量,但每个变量需要自己的类型说明。如:dimx,yasinteger(4)用DefType语句定义类型如果遇到大量需要定义的变量时,用这种方法。DefType字母范围DefIntA-F’A-F打头的变量均为整型DefDblG-K’G-K打头的变量均为双精度实型在VB中,变量在使用时如果不定义,计算机默认是变体类型Variant。它容易导致一些难以查找的错误。如:temp=aa=bb=tmp两种方法:(1)在程序模块的通用声明段加入语句:OptionExplicit;(2)“工具/选项/编辑器”中,选中“要求变量声明”2.隐式声明推荐使用显式声明。如何保证?过程级变量(局部变量):在过程内部用Dim声明的变量,只在一个过程内部有效。窗体级变量:在窗体的通用对象声明区中声明的变量,其特点是在所定义的模块的各个过程中都有效。例:简单计算器,利用变量。a=val(text1)b=val(text2)3.作用域3.4运算符与表达式程序中对数据的基本加工,是依靠运算符实现的。在VisualBasic中运算符的类型有:算术运算符、比较运算符、连接运算符、逻辑运算符。通过常量、变量、运算符、函数等的组合,由此构成表达式。3.4.1算术运算符与算术表达式用来进行算术运算,按优先级排列为:^-*/\MOD+-乘方取负乘浮点除整数除取余加减同级自左向右顺序运算。注意:①(-8)^(1/3)-8^(1/3)哪个对?②2/6=?2\6=?35.7\(-20.1)=?③2MOD3=?6MOD3=?(如果xMODy等于0,说明什么?)5.3mod-2=?④3.5\2.5=?-6.5mod3.5=??4+5\6*7/8mod95mod2*6^2/6\2a^b,若a为负,则b必须是整数当操作数带有小数点时,首先四舍五入为整型数再计算如果操作数是实数,四舍五入取整,MOD运算结果的符号取决于左操作数的符号。如果xMODy等于0,则表示x能被y整除在整除和取模运算时,若操作数是小数点后为5的数,如0.5,1.5,2.5,等,则:整数部分为奇数的四舍五入,整数部分为偶数的不四舍五入。(奇进偶退)即此时“\”和“MOD”符号两边均是偶数。3.4.2字符串运算符与字符串表达式两个:“&”、“+”,都是将两个字符串拼接。注意:(1)使用“&”时,变量与运算符“&”间应加一个空格;连接符两旁的操作数不管是字符型还是数值型,先转换为字符型,再连接。(2)“+”连接符两旁的操作数必须一致。均为字符型,则连接,若均为数值型则进行算术加运算,否则出错。(3)连接符&和+只能连接前后两个字符串,如果不是字符串,可以用Str函数转换。a&ba&b“abc”+123“abc”&123(注意:“-4”+123)区分正误?privatesubform_click()a=10b=20s=a+b’这个+是算术运算的加c=a+b=Text1.Text=c+s’这个+是字符串的连接符Endsub对不对?如不对,如何改?=或==等于不等于大于小于大于等于小于等于关系运算符的优先级相同,因此自左向右运算。注意:(1)在VB中“非0为True,0为False”。(2)关系表达式在程序中作为“单条件”用来进行判断。(常用于if语句)(3)字符串也可以比较。字符串的比较按字符的ASCII码值大小逐一进行比较,哪个字母不一样时就以它区别大小。?ABCDABCABCAbc“34”=“4”“3“=“3”3.4.3关系运算符与关系表达式3.4.4逻辑运算符与逻辑表达式逻辑运算符(布尔运算)共有6个:Not、And、Or、Xor、Eqv、Imp作用:逻辑运算符用来把多个单条件联合成一个条件,称为“复合条件”。(用在if语句中)如:X10andx90问?(NotTrueorTrue)AndNotTrue的结果A不等于C,并且B大于等于A这个VB表达式如何写?注意:算术运算符两边的操作数应是数值型,如果是数字字符或逻辑型,自动转换成数值型后再运算。如:30-truefalse+10+”4”3.4.5表达式的运算顺序(1)当表达式中有多种运算时,执行顺序为:括号→函数→算术运算→关系运算→逻辑运算,当运算级别一样时,按左到右顺序运算(2)在算术运算中,如果不同数据类型的操作数混合运算,则VB规定运算结果的数据类型采用精度高的数据类型。IntegerLongSingleDoubleCurrency(3)书写表达式的注意事项:①括号可以改变运算顺序。