




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章VisualBasic2005语言基础2.1VB2005数据类型2.2VB2005的变量2.3VB2005的常量2.4运算符与表达式2.5常用的内部函数2.6程序语句1.第2章VisualBasic2005语言基础2.1VB2005是一种面向对象程序设计语言,它提供了功能强大的可视化控件,可以使应用程序的界面非常漂亮。在利用窗体和控件为应用程序建立界面的同时还需要编写程序代码,代码对事件做出响应以执行预期的任务。数据是计算机程序代码处理的对象,是程序的基础,也是运算产生的结果,所以应该首先认识VB2005能处理哪些数据,掌握各种形式数据的表示方法。本章主要介绍VB2005的数据类型,变量和常量,各种表达式和常用系统函数,以及基本语句的格式。前言2.VB2005是一种面向对象程序设计语言,它提供了功能强大的2.1数据类型在现实生活中存在各种各样的数据,数字可以进行比较大小,可以进行加减乘除。字符不能进行加减乘除,只是表示特殊含义的信息。在计算机中要描述这些数据,就必须有能够表示不同类型数据的数据类型。VB2005定义了许多种数据类型。每种数据类型对应一个类型名,并且每种数据类型仅限于存放某种特定的信息,每种类型的数据都有一个上限和下限。本节主要介绍VB2005的数据类型。3.2.1数据类型在现实生活中存在各种各样的数据,数字可以进2.1.1通用类型系统在.NET中要实现平稳的跨语言集成,所有的语言必须使用一个通用类型系统。通用类型系统(CommonTypeSystem,CTS)定义了公共语言运行时环境所支持的数据类型。VB2005使用的数据与CTS中的数据类型直接对应,而且某些类型的数据可以直接相互转换。不同的语言使用不同的关键字来展示这些类型。通用类型系统定义了如何在公共语言运行环境(CLR)中声明、使用和管理数据类型。通用类型系统在.NET中要实现平稳的跨语言集成CTS执行以下功能:建立一个支持跨语言集成、类型安全和高性能代码执行的框架。提供一个支持多种编程语言的面向对象的模型。定义各语言必须遵守的规则,有助于确保用不同语言编写的对象能够交互作用。CTS支持两种类型:值类型和引用类型。值类型直接包含数据。值类型包括:所有的数值数据类型、Boolean、Char、Date、所有结构、枚举类型。引用类型数据包含指向对象实例的引用或指针。引用类型包括:String、所有数组和类。5.CTS执行以下功能:VB2005的基本数据类型VB2005的基本数据类型通常可以分为以下几种:1.数值数据类型2.字符数据类型3.布尔数据类型4.日期数据类型5.对象数据类型VB2005的基本数据类型VB2005的基1.数值数据类型(1)整数类型整数类型分为有符号和无符号整型两种。有符号的整数类型包括:有符号字节型SByte(1字节)、短整型Short(2字节)、整型Integer(4字节)、长整型Long(8字节)。无符号的整数类型包括:无符号字节型Byte(1字节)、无符号短整型UShort(2字节)、无符号整型UInteger(4字节)、无符号长整型ULong(8字节)。例如:DimNum1AsInteger'变量Num1被声明为Integer数据类型Num1=2567.1.数值数据类型7.(2)非整数类型非整数类型包括:定点数型Decimal(16字节)、单精度浮点数型Single(4字节)和双精度浮点数型Double(8字节)。它们都是有符号类型。数值数据类型的默认值是数值0。例如:DimdAsDecimal'变量d被声明为Decimal数据类型d=-2147483.48DimsAsSingle'变量s被声明为Single数据类型s=342143576.8'变量s输出显示时为3.421436E+088.(2)非整数类型8.2.字符数据类型字符数据类型用以处理可显示和打印的字符。字符数据都必须用双引号(“”)括起来,字符数据都是无符号类型。(1)Char类型在只需保存单个字符时,使用Char数据类型。Char类型数据的默认值是码位为0的字符。例如:DimynAsChar'变量yn被声明为Char数据类型yn="y"'把字符"y"赋给Char型数据9.2.字符数据类型9.(2)String类型可使用String数据类型存储多个字符,String的默认值为空字符(“”)。例如:'变量str1,str2被声明为String数据类型Dimstr1,str2AsStringstr1="hello"'把字符串"hello"赋给变量str1str2=""'把空字符串""赋给变量str210.(2)String类型10.VB2005在定义数据类型时,还提供了值类型标识符。这些标识符可在声明中指定变量或常量的数据类型,还可以在表达式中使用,是值类型的数据类型名称的简写形式。标识符类型字符数据类型示例%IntegerDimSum%&LongPublicValue&@DecimalPublicsalary@=80.5!SingleDimvar!#DoublePrivateK#$StringDimMyName$="Tom"表2-111.VB2005在定义数据类型时,还提供了值类型标识符。这些标3.布尔数据类型布尔数据类型用Boolean关键字定义。Boolean型数据只有两个值:True(真)和False(假)。经常被用来表示逻辑判断的结果。布尔数据类型的默认值是False。False可用0表示,True可用0以外的任何数值表示。例如:DimbAsBoolean'变量b被声明为Boolean数据类型b=True'变量b被赋值True(真)12.3.布尔数据类型12.4.日期数据类型日期数据类型只有日期型Date(8字节)一种。Date型数据表示日期时间。使用Date型数据包含日期值、时间值,或日期和时间值。Date类型数据在书写时,必须将文本括在数字符号(##)内,必须以M/d/yyyy格式指定日期值。指定时间值默认为12小时制。日期数据类型的默认值是公元1年1月1日的午夜,即0:00:00。例如:Dimd1,d2AsDate'变量d1,d2被声明为Date数据类型d1=#07/31/200610:50:40PM#'变量d1被赋值日期时间d2=#1:15:30PM#'变量d2被赋值时间13.4.日期数据类型13.5.对象数据类型对象(Object)数据类型(4字节)指向应用程序或其他应用程序中的一个对象。Object类型是一种万能数据类型,因为任何东西都可以是.NET框架中的一个对象。当其中包含值类型时,Object类型数据被作为值类型处理;当其中包含引用类型时,Object类型数据被作为引用类型处理。对象数据类型的默认值是空,即没有任何对象。例如:Dimx,yAsObject'变量x和y被声明为Object数据类型Dimd'变量d没有指明数据类型,默认为Object数据类型x=100'变量x为Integer数据类型y="world"'变量y为String数据类型d=#9/10/2006#'变量d为Date数据类型14.5.对象数据类型数据类型的转换将数据从一种数据类型改变为另外一种数据类型的过程称为数据类型转换。根据涉及的类型和代码语法的不同,转换可分为扩展型转换或紧缩型转换,也可分为隐式转换或显式转换。数据类型的转换将数据从一种数据类型改变为另外一1.扩展型转换和紧缩型转换扩展型转换:扩展型转换将值更改为可提供原始数据的任何可能值的数据类型。扩展转换总会成功。标准扩展转换见表2-3。16.1.扩展型转换和紧缩型转换16.数据源类型目标数据类型ByteByte,Short,Long,Decimal,Single,DoubleCharChar,StringChar数组Char数组、StringDecimalDecimal,Single,DoubleDoubleDoubleIntegerInteger,Long,Decimal,Single,DoubleLongLong,Decimal,Single,DoubleNothing任意数据类型或对象类型SByteSByte,Short,Integer,Long,Decimal,Single,DoubleShortShort,Long,Decimal,Single,DoubleSingleSingle,DoubleUIntegerUInteger,Long,ULong,Decimal,Single,DoubleULongULong,Decimal,Single,DoubleUShortUShort,Integer,UInteger,Long,ULong,Decimal,Single,Double任意枚举类型(Enum)其基础整型和基础类型扩大到的任何类型任意类型Object任意派生类型源类型的基类型17.数据源类型目标数据类型ByteByte,Short,Long(2)紧缩型转换紧缩转换包括扩展转换的反向转换。紧缩转换不一定总会成功,也就是说它们在运行时可能会执行失败。如果目标类型不能接收被转换的值,则将产生错误。例如,Long型数据转换为Integer型数据时就可能会导致数据溢出。不论是扩展型还是紧缩型转换,都使用类型转换函数。18.(2)紧缩型转换18.2.隐式转换和显式转换(1)隐式(自动)转换隐式转换指不需要在代码中使用任何特殊语法(如转换函数)就可以进行数据类型转换。VB2005提供了转换开关,OptionStrict(on/off),决定数据类型是否可以进行隐式(自动)转换,系统默认为off。OptionStrictOff'允许做隐式转换OptionStrictOn'禁止做隐式转换19.2.隐式转换和显式转换19.(2)显式转换显式转换指需要使用类型转换关键字(也称为转换函数)进行数据类型转换。类型转换函数见表2-4。20.(2)显式转换20.转换类型关键字转换为目标数据类型可用的表达式数据类型CBoolBoolean任何数值类型(包括Byte、SByte和枚举类型)、String、ObjectCByteByte任何数值类型(包括Byte、SByte和枚举类型)、String、Object、BooleadCCharCharString、ObjectCDateDateString、ObjectCDblDouble任何数值类型(包括Byte、SByte和枚举类型)、String、Object、BooleadCDecDecimal任何数值类型(包括Byte、SByte和枚举类型)、String、Object、BooleadCIntInteger任何数值类型(包括Byte、SByte和枚举类型)、String、Object、BooleadCLngLong任何数值类型(包括Byte、SByte和枚举类型)、String、Object、BooleadCObjObject任意类型CSByteSByte任何数值类型(包括Byte和枚举类型)、Boolean、String、ObjectCShortShort任何数值类型(包括Byte、SByte和枚举类型)、String、Object、BooleadCSngSingle任何数值类型(包括Byte、SByte和枚举类型)、String、Object、BooleadCStrString任何数值类型(包括Byte、SByte和枚举类型)、String、Object、Boolead、Char、Char()、Date、数组CType逗号后的指定类型当转换为基础类型时,允许用相同类型的转换关键字;当转换为复合类型时,转换结果是由它实现的接口及其基类CUIntUInteger任何数值类型(包括Byte、SByte和枚举类型)、Boolean、String、ObjectCULngULong任何数值类型(包括Byte、SByte和枚举类型)、Boolean、String、ObjectCUShortUShort任何数值类型(包括Byte、SByte和枚举类型)、Boolean、String、Object21.转换类型关键字转换为目标数据类型可用的表达式数据类型CBoo例如:DimdAsDated=#1/1/2006#Dims1,s2AsStrings1=CType(d,String)'将日期型数据转换为字符型数据s2=CStr(d)'将日期型数据转换为字符型数据Console.WriteLine(s1)Console.WriteLine(s2)Console控制台类表示控制台应用程序的标准输入流、输出流和错误流。Console控制台类常用的方法有Write方法和WriteLine方法。Write方法将指定值的文本表示形式写入标准输出流输出到输出窗口,WriteLine方法将指定的数据(后跟当前行结束符)写入标准输出流输出到输出窗口。22.例如:22.VB2005还提供了VarType函数来判断数据类型。VarType函数返回一个整数,整数值表示所对应的数据类型。如表2-5所示。23.VB2005还提供了VarType函数来判断数据类型。Va常数值说明VariantType.Empty0Empty(未初始化)VariantType.Null1Null(无有效数据)VariantType.Short2Short数据类型VariantType.Integer3Integer数据类型VariantType.Single4Single数据类型VariantType.Double5Double数据类型VariantType.Currency6Currency数据类型VariantType.Date7Date数据类型VariantType.String8String数据类型VariantType.Object9Automation对象VariantType.Error10错误VariantType.Boolean11Boolean数据类型VariantType.Variant12Variant(只和变量数组一起使用)VariantType.DataObject13数据访问对象VariantType.Decimal14Decimal数据类型VariantType.Byte17Byte数据类型VariantType.Char18Char数据类型VariantType.Long20Long数据类型VariantType.UserDefinedType36结构VariantType.Array8192数组24.常数值说明VariantType.Empty0Empty(未例如:Console.WriteLine(VariantType.Integer)'输出结果为:3Console.WriteLine(VariantType.Date)'输出结果为:7Console.WriteLine(VariantType.String)'输出结果为:8Dimi,j,k'声明没有具体数据类型变量i=10j=#10/20/1990#k="你好"Console.WriteLine(VarType(i))'输出结果为:3Console.WriteLine(VarType(j))'输出结果为:7Console.WriteLine(VarType(k))'输出结果为:825.例如:25.2.2VB2005的变量在程序中处理数据时,对于输入的数据、参加运算的数据、运行的结果等临时数据,通常将它暂时存储在计算机的内存中,变量就是命名内存的内存单元位置。对于变量,在程序执行的每个瞬间,变量的值都是确定的、已知的,但在程序执行的整个过程中它的值可以变化的。变量有两个特性:名字和数据类型。变量的名字用于在程序中标识变量和使用变量的值。数据类型则确定变量中能保存哪种数据。在VB2005中,变量有两种形式:属性变量和内存变量(简称为变量)。属性变量是系统自动创建的,例如命令按钮Button1的属性变量Enabled的数据类型已由系统自动创建为布尔型,即属性变量Enabled只能取值True或False。而内存变量则要靠程序员根据程序需要创建。本节主要介绍VB2005的变量的使用。26.2.2VB2005的变量在程序中处理数据时,对于输入的2.2.1变量的命名规则在使用变量之前必须声明它们。为了方便程序员操作内存数据,每个变量都是有名字的。程序员可以通过变量名字来引用变量。1.变量名的命名规则变量名的第1个字符必须是字母、汉字或下划线。如果以下划线开头,则后必须包含至少一个字母、汉字或十进制数字。例如sum,_a,姓名,x3。变量名只能包含字母、汉字、十进制数字和下划线。变量名中不能包含空格、小数点以及各种符号。组成变量名的字符数不能超过1023个字符。变量名不能是关键字。例如If,Integer等。变量名在同一范围内必须是惟一的。变量的命名规则在使用变量之前必须声明它们。为了2.声明变量名时的注意事项给变量取名最好使用有明确实际意义,还应该使名称尽可能地短。变量名称不区分大小写。公有变量名中每个独立的单词都应以大写字母开头。合理使用缩写。当声明局部或私有变量时,第一个单词的首字母应小写。变量名不能与过程名和符号常量名等关键字相同。如果是方法变量名或类变量名,习惯上以动词、动词短语开始开头。28.2.声明变量名时的注意事项变量的声明在默认情况下,VB2005编译器强制使用变量声明,即在使用变量前,必须声明变量。1.隐式声明和显式声明VB2005提供了控制声明的开关——OptionExplicit(on/off)。指定变量是否可以隐式声明,即无需声明即可使用变量。OptionExpliciton:‘启用隐式声明检查,变量必须先定义再使用(显式声明)。OptionExplicitoff:‘禁用隐式声明检查,变量可以不声明就使用(隐式声明)。变量的声明在默认情况下,VB2005编译器强30.30.2.声明变量使用声明变量可以声明变量的名称和特性。其语法格式如下:<Dim|Public|Friend|Private|Shared|Static|Protected>〈变量名〉[As〈类型〉]【例2-1】在过程中声明1个名为sum的Integer型局部变量,代码如下:PrivateSubForm1_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesMyBase.ClickDimsumAsInteger '在过程中声明一个名为sum的Integer类型变量sum=100 '给变量赋值sum=sum+1 '变量值加1EndSub31.2.声明变量【例2-1】在过程中声明1个名为sum的Int3.变量的作用域即变量的生命周期,或变量的适用范围。如果在变量作用域之外使用该变量,会产生编译错误。影响变量作用域的因素:变量声明的位置(控制块、过程、模块、类、结构)用来声明变量的关键字(Dim、Public、Friend、Private、Shared、Static、Protected)32.3.变量的作用域32.各关键字的定义的变量类型:Dim:声明变量所在位置的局部变量,退出模块不保留变量值,变量值将被初始化。Static:保留局部变量的值,只能在控制块或过程级使用。Private:定义模块级私有变量。Public:定义解决方案级变量,该变量没有访问限制。若该变量在窗体模块中定义,在其它模块中引用时要加窗体前缀,如Form1.k。Friend:该变量可从包含其声明的程序集内访问。Shared:该变量与一个类或结构在整体上相关联。Protected:该变量只能被其自身的类或派生类访问,只能在类级使用Protected。Private、Public、Friend、Shared、Protected仅可以在模块、接口或类级别使用。33.各关键字的定义的变量类型:33.【例2-2】在窗体类中声明1个名为str1的String型变量,在过程中声明1个名为str2的String型变量,代码如下:PublicClassForm1Dimstr1AsString="北京" PrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.LoadDimstr2AsString'在过程中声明一个名为str2的String类型变量str2="欢迎你!"Console.Write(str1+str2) '输出表达式的值EndSubEndClass【例2-3】在过程中声明一个名为num的Integer型静态变量,代码如下:PrivateSubForm1_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesMyBase.ClickStaticnumAsInteger'在过程中声明一个Integer类型的静态变量num=num+1EndSub
34.【例2-2】在窗体类中声明1个名为str1的String型变2.2.3变量的属性在VB2005中,任何变量都被看作是一个对象,这是面向对象编程语言的最大特点。系统将数据类型也看作是一个类。当程序员声明一个变量,就生成了一个由该类派生出来的,名为该变量名的对象,所以变量也可以称为变量对象。变量的属性在VB2005中,任何变量都被看作2.3VB2005的常量编写程序代码时经常会反复使用同一个数据值,这时使用常量能够大大提高程序的可读性和易维护性。常量又称为常数,是指在程序运行过程中始终保持不变的常数、字符串等。定义了常量,就可以将这些常量置于代码中。在VB2005中,有两种形式的常量:直接常量和符号常量。本节主要介绍VB2005中两种形式的常量。36.2.3VB2005的常量编写程序代码时经常会反复使用同2.3.1直接常量直接常量是直接由数字或字符构成的常量,不用声明。1.字符串常量字符串常量就是用双引号括起来的一串字符。这些字符可以是除双引号和回车、换行符以外的所有字符。例如,“A”,“123”,“你好”。2.数值常量数值常量有两种数值类型:整数和非整数。例如,12。3.布尔常量布尔常量只有两个值:True和False。4.日期时间常量日期时间常量是用两个“#”括起来的表示日期时间的常量,但是该常量一定要符合日期时间书写格式,一般形式为“#mm/dd/yyyyhh:mm:ssam|pm”或“#yyyy-mm-ddhh:mm:ssam|pm”。例如,#05/16/2007#,#2007-05-1618:52:38#。直接常量直接常量是直接由数字或字符构成的常量,2.3.2符号常量符号常量是一个替代文本并在整个程序中保持此相同值的有意义名称。当OptionStrict为On时,必须使用数据类型显式声明所有常量。符号常量又分为两种:系统内部定义的符号常量和用户定义的符号常量。1.系统内部定义的符号常量内部或系统定义的常量是VB2005和控件提供的。这些常量可以与应用程序的对象、方法和属性一起使用,在代码中可以直接使用它们。例如,VB2005定义了一些颜色常数,vbBlack表示黑色,vbRead表示红色。VB2005在进行输出显示时,还定义了一些输出和显示常数,例如vbCr表示回车符。符号常量符号常量是一个替代文本并在整个程序中保2.用户定义的符号常量用户定义的符号常量是由程序员本人根据需要自行创建的符号常量。用户定义的符号常量使用Const语句来给常量分配名字、值和类型。其语法格式如下:[Public|Private|Friend|Protected|ProtectedFriend]Const〈常量名〉[As〈数据类型〉]=〈表达式〉【例2-4】在过程中声明一个名为PI的数值型常量,来计算圆的面积。代码如下:PrivateSubForm1_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)_HandlesMyBase.ClickConstPI=3.14Dimr,sAsDecimalr=5.2s=PI*r*rConsole.Write(s)EndSub39.2.用户定义的符号常量【例2-4】在过程中声明一个名为PI2.3.3常量的属性在VB2005中,任何常量也都被看作是一个对象。当程序员声明一个常量,系统就生成了一个名为该常量名的对象。在代码编辑窗口中,在常量名后输入“.”,系统会自动弹出一个下拉列表框提示该常量的属性和方法。如图2-8所示。程序员可以直接输入属性或方法名,或者选择下拉列表框中的属性或方法名。常量的属性在VB2005中,任何常量也都被看2.4运算符与表达式表达式用来表示某个求值规则,它由运算符和配对的圆括号将常量、变量、函数、对象等操作数以合理的形式组合而成。表达式可用来执行运算、操作字符或测试数据,每个表达式都产生惟一的值。表达式的类型由运算符的类型决定。VB2005中有5类运算符和表达式:算术运算符和算术表达式字符串运算符和字符串表达式位运算符和位运算表达式关系运算符和关系表达式布尔运算符和布尔表达式本节主要介绍这些运算符和表达式的格式和使用规则。41.2.4运算符与表达式表达式用来表示某个求值规则,它由运算2.4.1算术运算符和算术表达式算术表达式也称为数值型表达式,由算术运算符、数值型常量、变量、函数和圆括号组成,其运算结果为一数值。语法格式如下:〈数值1〉〈算术运算符〉〈数值2〉[〈算术运算符2〉〈数值3〉…]运算符名称表达式例子结果^乘方2^38*乘法5*630/浮点除法8/24\整数除法9\42Mod求余的模运算24Mod73+加法或正号10.3+12.56,+622.86,6-减法或负号10–4,-3.56,-3.5表2-8算术运算符和算术表达式算术表达式也称为数值型表算术运算符必须按照规定先后运行,这就是算术运算符的优先级。算术运算符按优先级顺序由高到低排列为^(乘方)、-(负号)或+(正号)、*(乘)或/(除)、\(整除)、Mod(求模)、+(加)或-(减)。同级运算按照从左向右进行。必要时可以用括号来确定运算顺序。【例2-5】使用算术表达式计算结果,代码如下:PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.ClickDimx,y,zAsDecimalx=10.62y=2.9z=(x+y)*10/2-xMod6Console.WriteLine(z)'输出结果为:62.98EndSub43.算术运算符必须按照规定先后运行,这就是算术运算符的优先级。算2.4.2字符串运算符和字符串表达式一个字符串表达式由字符串常量、字符串变量、字符串函数和字符串运算符组成。其语法格式如下:〈字符串1〉〈字符串运算符〉〈字符串2〉[〈字符串运算符〉〈字符串3〉…]字符串比较运算符没有优先级,按照从左向右进行,必要时可以用括号来确定运算顺序。使用+运算符时,有可能无法确定是做加法还是做字符串连接。将&运算符用于连接以消除多义性并提供自动生成代码。运算符名称表达式例子结果&连接字符串"计算机"&"学院""计算机学院"+连接字符串"1"+"2"+"3""123"表2-9字符串运算符和字符串表达式一个字符串表达式由字例2-6
PublicClassForm1PrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.LoadConsole.WriteLine(1+2)Console.WriteLine(1&2)Console.WriteLine("1"+"2")EndSubEndClass45.例2-6PublicClassForm关系运算符和关系表达式关系表达式(比较表达式)由各种表达式和关系运算符(比较运算符)组成。关系表达式通常用于控制结构(IF语句)的条件中,返回True或False值。其语法格式如下:〈表达式1〉〈关系运算符〉〈表达式2〉[〈关系运算符〉〈表达式3〉…]关系运算符没有优先级,按照从左向右进行。必要时可以用括号来确定运算顺序。运算符名称表达式例子结果=等于5=6False<>不等于31<>18True<小于9<20True<=小于或等于10<=10True>大于(4+6*3)>6^2False>=大于或等于(9–5)>=20False关系运算符和关系表达式关系表达式(比较表达式)2.4.4布尔运算符和布尔表达式布尔表达式(逻辑表达式)由表达式和布尔运算符(逻辑运算符)组成。布尔运算符通常与比较运算符一起使用,生成控制结构的条件,返回True或False值。其语法格式如下(双操作数):〈表达式1〉〈布尔运算符〉〈表达式2〉[〈布尔运算符〉〈表达式3〉…]布尔运算符有优先级。Not的优先级最高,And、AndAlso其次,Or、OrElse再次之,Xor最低。布尔运算符和布尔表达式布尔表达式(逻辑表达式)运算符名称表达式例子结果And与FalseAndTrueFalseOr或5>6Or7<9TrueNot非NotFalseTrueAndAlso对两个表达式执行逻辑合取5>6AndAlso7<9FalseOrElse对两个表达式执行逻辑析取FalseOrElseTrueTrueXor异或10>5Xor10>3FalseIsFalse确定一个表达式是否是False不能在代码中显式调用IsTrue确定一个表达式是否是True不能在代码中显式调用表2-12布尔运算符和布尔表达式AndAlso(逻辑合取)运算逻辑表exp1exp2resultTrueTrueTrueTrueFalseFalseFalse不计算FalseOrElse(逻辑析取)运算逻辑表exp1exp\2resultFalseTrueTrueFalseFalseFalseTrue不计算True48.运算符名称表达式例子结果And与FalseAndTrue注意:如果AndAlso表达式中的第一个表达式计算为False,则不计算第二个表达式,并且为该AndAlso表达式返回False。如果OrElse表达式中的第一个表达式计算为True,则不计算第二个表达式,并且为该OrElse表达式返回True。49.注意:如果AndAlso表达式中的第一个表达式计算为Fals例2-7PublicClassForm1PrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.LoadDimb1,b2,b3,b4,b5,b6AsBooleanb1=2And2b2=(5>9)OrFalseb3=5Xor6b4=NotTrueb5=(3<2)AndAlso5>7b6=(3>2)OrElse5<7Console.WriteLine(b1)Console.WriteLine(b2)Console.WriteLine(b3)Console.WriteLine(b4)Console.WriteLine(b5)Console.WriteLine(b6)EndSubEndClass50.例2-7PublicClassForm位运算符和位运算表达式位运算表达式由表达式(只能是数值型数据)和位运算符组成。运算时要先将操作数转换成二进制数。其语法格式如下:〈表达式1〉〈位运算符〉〈表达式2〉[〈位运算符〉〈表达式3〉…]运算符名称表达式例子结果And按位合取5And64AndAlso按位合取5AndAlso6TrueNot按位取反Not9-10Or按位析取13Or2929OrElse按位析取13OrElse29TrueXor按位异或9Xor714<<按位左移34<<2<<1272>>按位右移34>>2>>14表2-13位运算符和位运算表达式位运算表达式由表达式(只2.4.6运算符优先级运算符优先级^1+(正号),-(负号)2*、/3\4Mod5+(加号),-,+(字符串连接)6&7所有的关系运算符8Not9And、AndAlso10Or、OrElse11Xor12表2-14运算符优先级运算符优先级^1+(正号),-(负2.5常用内部函数函数是一种特定的运算,在程序中使用一个函数时,只要给出函数名并给出一个或多个参数,就能得到它的函数值。在VB2005中,有两类函数:内部函数和用户自定义函数。用户自定义函数是由用户自己根据需要定义的函数。内部函数也称为标准函数,是VB2005系统内部已经封装好的,供程序员使用的功能完善的函数。内部函数根据其用途的不同,可分为:数学函数、字符串函数、日期时间函数、随机函数和转换函数。本节主要介绍VB2005常用的内部函数。53.2.5常用内部函数函数是一种特定的运算,在程序中使用一个2.5.1数学函数数学函数主要用于各种数学运算。在VB2005中全部的数学函数都被封装到System.Math类中。我们可以用Imports关键字引用该类。函数名称功能说明示例示例结果Abs返回表达式的绝对值Math.Abs(-9)9Atan返回反正切值Math.Atan(1)0.78539816Cos返回余弦值Math.Cos(0)1Exp返回以e为底的幂,即exMath.Exp(3)20.086Log返回自然对数Math.Log(10)2.3Pow计算次幂Math.Pow(2,3)8Round返回四舍五入的结果Math.Round(10.234,1)10.2Sign返回数字符号Math.Sign(-9)-1Sin计算正弦值Math.Sin(0)0Sqrt求平方根Math.Sqrt(9)3Tan求正切值Math.Tan(0)0表2-15数学函数数学函数主要用于各种数学运算。在VB2.5.2字符串函数字符串函数主要用于各种字符串处理。有些字符串函数在调用时需要引用其命名空间Microsoft.VisualBasic。如Right、Left函数。例如:Microsoft.VisualBasic.Left(“abc”,2)字符串函数字符串函数主要用于各种字符串处理。5函数功能说明示例结果Instr返回字符串在给定的字符串中出现的位置InStr("abcde","cd")3InStrRev返回某一字符串从另一字符串的右侧开始算起第一次出现的位置InStrRev("Thisisthedog.","the")9Lcase返回以小写字符组成的字符串Lcase("aBcdE")"abcde"Left返回从字符串左端开始的指定数目的字符Left("abcde",3)"abc"Len返回字符串的长度Len("abcde")5Ltrim返回删除字符串左端空格后的字符串Ltrim("abcde")"abcde"Mid返回从字符串指定位置开始的指定数目字符Mid("abcde",2,3)"bcd"Replace返回一个字符串,其中的指定子字符串已由另一个子字符串替换了指定的次数Replace("VB2005","VB","C#")"C#2005"Right返回从字符串右端开始的指定数目的字符Right("abcde",3)"cde"Rtrim返回删除字符串右端空格后的字符串Rtrim("abcde")"abcde"Space返回由指定数目空格字符组成的字符串Space(6)""StrComp返回两个字符串的比较结果StrComp("计算","计算机")-1StrConv转换字符串StrConv("Tom",VbStrConv.Lowercase)tomStrReverse返回指定字符串的字符顺序是相反的字符串StrReverse("ABCDEFG")"GFEDCBA"Trim返回删除字符串前导和尾随空格后的字符串Trim("abcde")"abcde"Ucase返回以大写字符组成的字符串Ucase("aBcdE)"ABCDE"表2-1656.函数功能说明示例结果Instr返回字符串在给定的字符串中出现2.5.3日期时间函数日期时间函数主要是向用户显示日期和时间信息。在VB2005中,日期时间函数已经不再是函数了,而是系统的某种属性,但习惯上仍称为函数。日期时间函数日期时间函数主要是向用户显示日期和函数名称功能说明示例示例结果Now返回当前系统日期和时间Now形式为:05-12-2611:37:06Hour返回小时Hour(#05-12-2611:37:06#)11Minute返回分钟Minute(Now)37Second返回秒数Second(Now)06Year返回年份Year(Now)2005Month返回月份Month(Now)12DateAdd返回一个Date值,其中包含已添加指定时间间隔的日期和时间值。DateAdd(DateInterval.Month,3,#5/21/2006#)2006-8-21DateDiff返回一个Long值,该值指定两个Date值之间的时间间隔数。DateDiff(DateInterval.Day,#1/1/2000#,#1/1/2008#)2922Day返回日期Day(Now)26WeekDay返回星期几(周日为1)WeekDay(Now)2Today返回系统当前日期Today05-12-26Timeofday返回系统当前时间Timeofday11:37:0658.函数名称功能说明示例示例结果Now返回当前系统日期和时间No2.5.4随机函数Rnd函数返回大于等于0小于1的随机单精度Single类型数据。
函数和语句名称功能说明示例示例结果Randomize语句产生随机数的种子RandomizeRnd函数产生0~1之间的随机数Rnd0~1之间的双精度数产生给定范围的随机整数:
CInt((upperbound-lowerbount+1)*Rnd()+lowerbound)随机函数Rnd函数返回大于等于0小于1的随机单2.5.5转换函数函数名称功能说明示例示例结果Asc将字符转换为ASCII码值ASC("A")65Hex将指定的数转换为16进制Hex(100)"64"Oct将指定的数转换为8进制Oct(100)"144"Str返回数字的String表示形式Str(456)"456"Val将字符串转换为数值Val("1234")+10002234转换函数可将指定参数转换为特定数据类型。转换函数函数名称功能说明示例示例结果Asc将字2.5.6格式输出函数对于数值、日期和时间,都有公认的格式。但也可以用格式输出函数使数值、日期或字符串型数据按指定格式输出。Format函数返回根据格式String表达式中包含的指令设置格式的字符串。其语法格式为:Format(〈表达式〉,〈格式字符串〉)要格式化的内容执行的操作数字使用预定义的数值格式或创建用户定义的数值格式日期和时间使用预定义的日期/时间格式或创建用户定义的日期/时间格式日期和时间序列数使用日期和时间格式或数字格式格式输出函数对于数值、日期和时间,都有公认的格字符说明0数字占位符。显示一个数字或0。如果表达式在格式字符串中出现0的位置上有数字,则显示该数字;否则在该位置显示0。如果数字的位数少于格式表达式中0的个数(小数点任一侧),则显示前导零或尾随零。#数字占位符。显示一个数字或不显示任何数字。如果表达式在格式字符串中出现#字符的位置上有数字,则显示该数字;否则该位置不显示任何数字。该符号与0占位符的作用相似。.小数点占位符。%百分比占位符。,千位分隔符。$前导字符。表2-21格式化数值所需的常用的占位符62.字符说明0数字占位符。显示一个数字或0。如果表达式在格式字符字符说明:时间分隔符。/日期分隔符。%用于表明不论尾随什么字母,随后字符都应该以单字母格式读取。也用于表明单字母格式应以用户定义格式读取。d1个d将日显示为不带前导零的数字(如1)。2个d将日显示为带前导零的数字(如01)。3个d将日显示为缩写形式(例如六)。4个d将日显示为全名(例如星期六)。M(大写)1个M将月份显示为不带前导零的数字(如一月表示为1)。2个M将月份显示为带前导零的数字(例如01/12/01)。3个M将月份显示为缩写形式(例如Jan)。4个M将月份显示为完整月份名(例如January)。h1个h使用12小时制将小时显示为不带前导零的数字(例如1:15:15PM)。2个h使用12小时制将小时显示为带前导零的数字(例如01:15:15PM)。为了显示AM或PM(汉化系统显示上午或下午),还需要字符t(或tt)H1个H使用24小时制将小时显示为不带前导零的数字(例如1:15:15)。2个H使用24小时制将小时显示为带前导零的数字(例如01:15:15)。为了显示AM或PM(汉化系统显示上午或下午),也需要字符t(或tt)y1个y将年份(0-9)显示为不带前导零的数字。2个y以带前导零的两位数字格式显示年份(如果适用)。3个y以四位数字格式显示年份。4个y以四位数字格式显示年份。表2-22格式化日期时间所需的常用的占位符63.字符说明:时间分隔符。/日期分隔符。%用于表明不论尾随什么字2.6语句语句是程序设计的基础,是各种语言的基本元素之一。VB2005的程序中,一行代码称为一条语句或程序语句。本节主要介绍VB2005的程序中语句的基本规则。64.2.6语句语句是程序设计的基础,是各种语言的基本元2.6.1程序语句VB2005程序中的一行代码称为一条程序语句,是执行具体操作的指令,是程序的基本功能单位,每个语句行以回车(Enter)键结束。一个语句行的长度最多不能超过1023个字符。建立程序语句时,必须遵从的构造规则称为语法。编写正确程序语句的前提就是学习语言元素的语法,并在程序中使用这些元素正确地处理数据。具体的语法规则将在第3章详细讲解。注释语句用“’”或REM限定。程序语句VB2005程序中的一行代码称为一条2.6.2语句的书写规则在编写程序代码时要遵循一定的规则,这样写出的程序既能够被VB2005正确地识别,又能增加程序的可读性。默认情况下,在输入语句的过程中,VB2005将自动对输入内容进行语法检查,如果发现语法错误,将弹出一个信息框提示出错的原因。VB2005还会按约定对语句进行简单的格式化处理,一般情况下,输入程序时要求一行写一个语句。但是也可以使用复合语句行,即把多个语句放在一行,但各语句之间必须用冒号“:”隔开。当一条语句很长时,可以使用续行功能,用续行符“_”将一个较长的语句分为多个程序行。注意:在使用续行符时,在它前面至少要加一个空格,且续行符只能出现在行尾。语句的书写规则在编写程序代码时要遵循一定的规则2.6.3命令格式的符号约定为了便于解释语句、方法和函数,本书语句、方法和函数格式中的符号采用统一约定。在语句、方法、函数的语法格式和功能说明中,以尖括号〈〉、方括号[]、花括号{}、竖线|、逗号加省略号,…作为专用符号。符号含义〈〉必选参数表示符。尖括号中的中文说明由使用者根据问题的需要提供具体参数。如果缺少必选参数,语句则发生语法错误。[]可选参数表示符。方括号中的内容选与不选由使用者根据具体情况决定,且都不影响语句本身的功能,如省略,则默认为缺省值。|多中取一表示符。含义为“或者选择”。竖线分隔多个选择项,必须选择其中之一。{}包含多中取一的各项。,…表示同类项目的重复出现。…表示省略了在当时叙述中不涉及的部分。命令格式的符号约定为了便于解释语句、方法和函数第2章VisualBasic2005语言基础2.1VB2005数据类型2.2VB2005的变量2.3VB2005的常量2.4运算符与表达式2.5常用的内部函数2.6程序语句68.第2章VisualBasic2005语言基础2.1VB2005是一种面向对象程序设计语言,它提供了功能强大的可视化控件,可以使应用程序的界面非常漂亮。在利用窗体和控件为应用程序建立界面的同时还需要编写程序代码,代码对事件做出响应以执行预期的任务。数据是计算机程序代码处理的对象,是程序的基础,也是运算产生的结果,所以应该首先认识VB2005能处理哪些数据,掌握各种形式数据的表示方法。本章主要介绍VB2005的数据类型,变量和常量,各种表达式和常用系统函数,以及基本语句的格式。前言69.VB2005是一种面向对象程序设计语言,它提供了功能强大的2.1数据类型在现实生活中存在各种各样的数据,数字可以进行比较大小,可以进行加减乘除。字符不能进行加减乘除,只是表示特殊含义的信息。在计算机中要描述这些数据,就必须有能够表示不同类型数据的数据类型。VB2005定义了许多种数据类型。每种数据类型对应一个类型名,并且每种数据类型仅限于存放某种特定的信息,每种类型的数据都有一个上限和下限。本节主要介绍VB2005的数据类型。70.2.1数据类型在现实生活中存在各种各样的数据,数字可以进2.1.1通用类型系统在.NET中要实现平稳的跨语言集成,所有的语言必须使用一个通用类型系统。通用类型系统(CommonTypeSystem,CTS)定义了公共语言运行时环境所支持的数据类型。VB2005使用的数据与CTS中的数据类型直接对应,而且某些类型的数据可以直接相互转换。不同的语言使用不同的关键字来展示这些类型。通用类型系统定义了如何在公共语言运行环境(CLR)中声明、使用和管理数据类型。通用类型系统在.NET中要实现平稳的跨语言集成CTS执行以下功能:建立一个支持跨语言集成、类型安全和高性能代码执行的框架。提供一个支持多种编程语言的面向对象的模型。定义各语言必须遵守的规则,有助于确保用不同语言编写的对象能够交互作用。CTS支持两种类型:值类型和引用类型。值类型直接包含数据。值类型包括:所有的数值数据类型、Boolean、Char、Date、所有结构、枚举类型。引用类型数据包含指向对象实例的引用或指针。引用类型包括:String、所有数组和类。72.CTS执行以下功能:VB2005的基本数据类型VB2005的基本数据类型通常可以分为以下几种:1.数值数据类型2.字符数据类型3.布尔数据类型4.日期数据类型5.对象数据类型VB2005的基本数据类型VB2005的基1.数值数据类型(1)整数类型整数类型分为有符号和无符号整型两种。有符号的整数类型包括:有符号字节型SByte(1字节)、短整型Short(2字节)、整型Integer(4字节)、长整型Long(8字节)。无符号的整数类型包括:无符号字节型Byte(1字节)、无符号短整型UShort(2字节)、无符号整型UInteger(4字节)、无符号长整型ULong(8字节)。例如:DimNum1AsInteger'变量Num1被声明为Integer数据类型Num1=25674.1.数值数据类型7.(2)非整数类型非整数类型包括:定点数型Decimal(16字节)、单精度浮点数型Single(4字节)和双精度浮点数型Double(8字节)。它们都是有符号类型。数值数据类型的默认值是数值0。例如:DimdAsDecimal'变量d被声明为Decimal数据类型d=-2147483.48DimsAsSingle'变量s被声明为Single数据类型s=342143576.8'变量s输出显示时为3.421436E+0875.(2)非整数类型8.2.字符数据类型字符数据类型用以处理可显示和打印的字符。字符数据都必须用双引号(“”)括起来,字符数据都是无符号类型。(1)Char类型在只需保存单个字符时,使用Char数据类型。Char类型数据的默认值是码位为0的字符。例如:DimynAsChar'变量yn被声明为Char数据类型yn="y"'把字符"y"赋给Char型数据76.2.字符数据类型9.(2)String类型可使用String数据类型存储多个字符,String的默认值为空字符(“”)。例如:'变量str1,str2被声明为String数据类型Dimstr1,str2AsStringstr1="hello"'把字符串"hello"赋给变量str1str2=""'把空字符串""赋给变量str277.(2)String类型10.VB2005在定义数据类型时,还提供了值类型标识符。这些标识符可在声明中指定变量或常量的数据类型,还可以在表达式中使用,是值类型的数据类型名称的简写形式。标识符类型字符数据类型示例%IntegerDimSum%&LongPublicValue&@DecimalPublicsalary@=80.5!SingleDimvar!#DoublePrivateK#$StringDimMyName$="Tom"表2-178.VB2005在定义数据类型时,还提供了值类型标识符。这些标3.布尔数据类型布尔数据类型用Boolean关键字定义。Boolean型数据只有两个值:True(真)和False(假)。经常被用来表示逻辑判断的结果。布尔数据类型的默认值是False。False可用0表示,True可用0以外的任何数值表示。例如:DimbAsBoolean'变量b被声明为Boolean数据类型b=True'变量b被赋值True(真)79.3.布尔数据类型12.4.日期数据类型日期数据类型只有日期型Date(8字节)一种。Date型数据表示日期时间。使用Date型数据包含日期值、时间值,或日期和时间值。Date类型数据在书写时,必须将文本括在数字符号(##)内,必须以M/d/yyyy格式指定日期值。指定时间值默认为12小时制。日期数据类型的默认值是公元1年1月1日的午夜,即0:00:00。例如:Dimd1,d2AsDate'变量d1,d2被声明为Date数据类型d1=#07/31/200610:50:40PM#'变量d1被赋值日期时间d2=#1:15:30PM#'变量d2被赋值时间80.4.日期数据类型13.5.对象数据类型对象(Object)数据类型(4字节)指向应用程序或其他应用程序中的一个对象。Object类型是一种万能数据类型,因为任何东西都可以是.NET框架中的一个对象。当其中包含值类型时,Object类型数据被作为值类型处理;当其中包含引用类型时,Object类型数据被作为引用类型处理。对象数据类型的默认值是空,即没有任何对象。例如:Dimx,yAsObject'变量x和y被声明为Object数据类型Dimd'变量d没有指明数据类型,默认为Object数据类型x=100'变量x为Integer数据类型y="world"'变量y为String数据类型d=#9/10/2006#'变量d为Date数据类型81.5.对象数据类型数据类型的转换将数据从一种数据类型改变为另外一种数据类型的过程称为数据类型转换。根据涉及的类型和代码语法的不同,转换可分为扩展型转换或紧缩型转换,也可分为隐式转换或显式转换。数据类型的转换将数据从一种数据类型改变为另外一1.扩展型转换和紧缩型转换扩展型转换:扩展型转换将值更改为可提供原始数据的任何可能值的数据类型。扩展转换总会成功。标准扩展转换见表2-3。83.1.扩展型转换和紧缩型转换16.数据源类型目标数据类型ByteByte,Short,Long,Decimal,Single,DoubleCharChar,StringChar数组Char数组、StringDecimalDecimal,Single,DoubleDoubleDoubleIntegerInteger,Long,Decimal,Single,DoubleLongLong,Decimal,Single,DoubleNothing任意数据类型或对象类型SByteSByte,Short,Integer,Long,Decimal,Single,DoubleShortShort,Long,Decimal,Single,DoubleSingleSingle,DoubleUIntegerUInteger,Long,ULong,Decimal,Single,DoubleULongULong,Decimal,Single,DoubleUShortUShort,Integer,UInteger,Long,ULong,Decimal,Single,Double任意枚举类型(Enum)其基础整型和基础类型扩大到的任何类型任意类型Object任意派生类型源类型的基类型84.数据源类型目标数据类型ByteByte,Short,Long(2)紧缩型转换紧缩转换包括扩展转换的反向转换。紧缩转换不一定总会成功,也就是说它们在运行时可能会执行失败。如果目标类型不能接收被转换的值,则将产生错误。例如,Long型数据转换为Integer型数据时就可能会导致数据溢出。不论是扩展型还是紧缩型转换,都使用类型转换函数。85.(2)紧缩型转换18.2.隐式转换和显式转换(1)隐式(自动)转换隐式转换指不需要在代码中使用任何特殊语法(如转换函数)就可以进行数据类型转换。VB2005提供了转换开关,OptionStrict(on/off),决定数据类型是否可以进行隐式(自动)转换,系统默认为off。OptionStrictOff'允许做隐式转换OptionStrictOn'禁止做隐式转换86.2.隐式转换和显式转换19.(2)显式转换显式转换指需要使用类型转换关键字(也称为转换函数)进行数据类型转换。类型转换函数见表2-4。87.(2)显式转换20.转换类型关键字转换为目标数据类型可用的表达式数据类型CBoolBoolean任何数值类型(包括Byte、SByte和枚举类型)、String、ObjectCByteByte任何数值类型(包括Byte、SByte和枚举类型)、String、Object、BooleadCCharCharString、ObjectCDateDateString、ObjectCDblDouble任何数值类型(包括Byte、SByte和枚举类型)、String、Object、BooleadCDecDecimal任何数值类型(包括Byte、SByte和枚举类型)、String、Object、BooleadCIntInteger任何数值类型(包括Byte、SByte和枚举类型)、String、Object、BooleadCLngLong任何数值类型(包括Byte、SByte和枚举类型)、String、Object、BooleadCObjObject任意类型CSByteSByte任何数值类型(包括Byte和枚举类型)、Boolean、String、ObjectCShortShort任何数值类型(包括Byte、SByte和枚举类型)、String、Object、BooleadCSngSingle任何数值类型(包括Byte、SByte和枚举类型)、String、Object、BooleadCStrString任何数值类型(包括Byte、SByte和枚举类型)、String、Object、Boolead、Char、Char()、Date、数组CType逗号后的指定类型当转换为基础类型时,允许用相同类型的转换关键字;当转换为复合类型时,转换结果是由它实现的接口及其基类CUIntUInteger任何数值类型(包括Byte、SByte和枚举类型)、Boolean、String、ObjectCULngULong任何数值类型(包括Byte、SByte和枚举类型)、Boolean、String、ObjectCUShortUShort任何数值类型(包括Byte、SByte和枚举类型)、Boolean、String、Object88.转换类型关键字转换为目标数据类型可用的表达式数据类型CBoo例如:DimdAsDated=#1/1/2006#Dims1,s2AsStrings1=CType(d,String)'将日期型数据转换为字符型数据s2=CStr(d)'将日期型数据转换为字符型数据Console.WriteLine(s1)Console.WriteLine(s2)Console控制台类表示控制台应用程序的标准输入流、输出流和错误流。Console控制台类常用的方法有Write方法和WriteLine方法。Write方法将指定值的文本表示形式写入标准输出流输出到输出窗口,WriteLine方法将指定的数据(后跟当前行结束符)写入标准输出流输出到输出窗口。89.例如:22.VB2005还提供了VarType函数来判断数据类型。VarType函数返回一个整数,整数值表示所对应的数据类型。如表2-5所示。90.VB2005还提供
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论