第2章编 程 基 础.ppt

上传人:sccc 文档编号:5913703 上传时间:2023-09-03 格式:PPT 页数:209 大小:1.26MB
返回 下载 相关 举报
第2章编 程 基 础.ppt_第1页
第1页 / 共209页
第2章编 程 基 础.ppt_第2页
第2页 / 共209页
第2章编 程 基 础.ppt_第3页
第3页 / 共209页
第2章编 程 基 础.ppt_第4页
第4页 / 共209页
第2章编 程 基 础.ppt_第5页
第5页 / 共209页
点击查看更多>>
资源描述

《第2章编 程 基 础.ppt》由会员分享,可在线阅读,更多相关《第2章编 程 基 础.ppt(209页珍藏版)》请在三一办公上搜索。

1、第2章 编 程 基 础,第1章通过一个简单程序实例介绍了用VB.NET 2005设计应用程序的一般过程。语句是构成VB.NET程序的最基本成分,所有语句的集合就是VB.NET语言。用VB.NET语句进行有机组合完成某个特定功能就是程序。“界面+程序”就能解决某个应用问题。本章介绍构成VB.NET语句的基本元素,包括数据类型、常量、变量、内部函数、运算符、表达式、输入/输出语句和控制结构等。,编 程 基 础,基本数据类型 常量和变量运算符和表达式常用内部函数 数据输入与输出 程序控制结构 综合应用,基本数据类型,在应用程序中总要处理各种不同的数据,比如,编写“学生成绩管理系统”程序时,就要对学生

2、的姓名、性别、年龄、成绩等数据进行处理。这些不同类型的数据,取值范围各异,如成绩取值是0100的整数,而性别只能取“男”或“女”两个值。对于这些不同的数据,应该用不同大小的存储空间进行存储,否则会造成很大的存储空间的浪费。因此,编程语言通过规定一些数据类型来存储不同类型的数据。在VB.NET应用程序中,每个变量、常数、属性、过程参数和过程返回值都具有某种数据类型。VB.NET内置了12种基本数据类型,每个类型拥有一个固定名字,表2.1列出了所有的基本数据类型。这12种类型可以分为三大类:字符、数值和其他数据类型。下面分别对这三类数据类型进行介绍。,字符数据类型,字符数据类型包括字符型(Char

3、)和字符串型(String)两种类型。,1字符型(Char),Char数据类型是单个双字节(16位)Unicode字符,以16位(2个字节)无符号的数值形式存储,即一个Unicode字符用2个字节数值存储。一般来说,Char数据类型用于存储单个字符,如下面代码将字符“A”赋值给chrMyChar变量:Dim chrMyChar As CharchrMyChar=A采用这种方式,可以将单个符号存入定义为Char类型的变量中,且它以065535之间的数字形式存储,但如果显示Char类型变量内容的话,用户看到的仍然是一个文本符号。,注意:,Unicode是以数字形式表示符号的国际标准码,它克服了不同

4、编码系统存在的问题。Unicode与语言、平台及程序无关。读者通过www.unicode.org可以了解更多信息。虽然Char数据类型是以无符号的数值形式存储,但是不能直接在Char类型和数值类型之间进行转换,可以使用AscW和ChrW函数完成转换。,表2.1 12种VB.NET 基本数据类型,2字符串型(String),字符串是一个字符序列,以不带符号的16位(2个字节)数字序列形式存储,每个数字的取值范围是065535,每个数字表示一个Unicode字符。一个字符串可以存储0231(约21亿)个Unicode字符。String类型的字符串放在一对西文双引号内,其中长度为0的字符串(不含任何

5、字符)称为空字符串。例如,下面的代码将“张三”赋值给strMyName变量,为strMyStr变量赋值为空字符串,将“2.0”赋值给strMyNumStr变量:Dim strMyName As StringDim strMyStr As StringDim strMyNumStr As StringstrMyName=张三 strMyStr=strMyNumStr=2.0,数值数据类型,数值数据类型包括字节型(Byte)、短整型(Short)、整型(Integer)、长整型(Long)、小数型(Decimal)、单精度浮点型(Single)和双精度浮点型(Double)7种类型。,1字节型(B

6、yte),字节型是无符号整型数据类型,以1个字节(8位)来存储数值,用于存储0255(=28-1)范围的整数。例如,下面的代码将128 赋值给bytMyByte变量:Dim bytMyByte As BytebytMyByte=128,Byte是非常有用的数据类型,字节是计算机的基本存储单元,以字节为单位的处理或算术运算速度较快。,2短整型(Short),短整型是整型数据类型,以2个字节(16位)来存储数值,用于存储带符号的整数,其可表示的整数范围是-32768+32767,即-215+215-1。例如,下面的代码将-20128赋值给shoMyShort变量:Dim shoMyShort As

7、 ShortshoMyShort=-20128,3整型(Integer),整型也用于存储带符号整数,它以4个字节(32位)来存储数值,其可表示的整数范围是-2147483648+2147483647,即-231+231-1。例如,下面的代码将200012 赋值给intMyInteger变量:Dim intMyInteger As IntegerintMyInteger=200012,4长整型(Long),长整型以8个字节(64位)来存储带符号的整数,其可表示的整数范围是-9223372036854775808+9223372036854775807,即-263+263-1。例如,下面的代码将2

8、00012 赋值给lngMyLong变量:Dim lngMyLong As LonglngMyLong=200012,5小数型(Decimal),小数型是非整型数据类型,用来存储小数,它以16个字节(128位)来存储数值。当小数位为0时,它所支持的最大可能值为+/-79228162514264337593543950335。对于28位小数而言,最大支持数非常小,为+/-7.9228162514264337593543950335,而最小的非0值为+/-0.0000000000000000000000000001(28位小数)。例如,下面的代码将0.00012 赋值给decMyDecimal变量

9、:Dim decMyDecimal As DecimaldecMyDecimal=0.00012,Decimal数据类型比较适合财务类数据的计算,即需要记录的数的位数很大,但又不允许出现四舍五入的计算误差。,6单精度浮点型(Single),单精度浮点型用来存储单精度浮点数,它以4个字节(32位)来存储数值,其中符号占1位,指数占8位,其余23位表示尾数。单精度浮点型比小数型支持的有效位少,但它可以表示的范围比小数型要大,且可能会导致四舍五入误差。单精度浮点数可以精确到7位十进制数,其负数的取值范围为-3.402823E+38-1.401298E-45,正数的取值范围为1.401298E-453

10、.402823E+38。例如,下面的代码将-1.4E06 赋值给sngMySingle变量:Dim sngMySingle As SinglesngMySingle=-1.4E06,注意:,浮点数可以用mmmEeee格式来表示,其中mmm表示尾数部分(有效数字),eee表示指数部分(10的幂)。,7双精度浮点型(Double),双精度浮点型用来存储双精度浮点数,它以8个字节(64位)来存储数值,其中符号占1位,指数占11位,其余52位表示尾数。双精度浮点数比单精度浮点数支持更大的数据范围。双精度浮点数可以精确到15或16位十进制数,其负数的取值范围为-1.79769313486232E+308

11、-4.94065645841247E-324,正数的取值范围为4.94065645841247E-3241.79769313486232E+308。例如,下面的代码将1.4000123E106赋值给dblMyDouble变量:Dim dblMyDouble As DoubledblMyDouble=1.4000123E106,2.1.3 其他数据类型,其他数据类型包括布尔型(Boolean)、日期型(Date)和对象型(Object)3种类型。,1布尔型(Boolean),布尔型变量以2个字节(16位)的数值形式存储逻辑值,其值只能是True或False。在VB.NET中,如果将这两个逻辑值转

12、换成数值类型,对应的值分别为-1和0。当将数值类型转换为布尔值时,0转换为False,其他值则转换为True。布尔变量的值可用于记录布尔型变量的状态,一个布尔型变量的状态如果不是True,就是False。当用户要完成某一任务(如打开一个窗口)时,可将变量设置成布尔型变量,并通过变量的值确定具体的执行过程。例如,下面的代码根据布尔型变量blnMyBoolean的值确定执行A操作还是B操作:Dim blnMyBoolean As BooleanblnMyBoolean=FalseIf blnMyBoolean=False Then 执行A操作Else 执行B操作End If,注意:,永远不要编写依

13、赖True和False的等价数值的代码。即只要有可能,就应当限定将Boolean变量作为逻辑值使用,而不要用与其等价的数值1或0来使用。,2日期型(Date),日期型变量以8个字节(64位)的整数值形式存储。VB.NET对Date数据类型的处理与数值类型区分开来。Date数据类型必须以mm/dd/yyyy(月/日/年)的格式定义,如12/15/1986。日期文字串必须以一对“#”括起来,如#12/15/1986#,该类型可表示的日期范围从公元1年1月1日到公元9999年12月31日。例如,可以按以下方式定义存储日期变量:Dim datMyDate1 As DatedatMyDate1=#12/

14、15/1986#,Date数据类型也用于存储时间信息,所存储的时间范围可以是00:00:00到23:59:59之间的任意值,时间数据必须以hh:mm:ss(小时:分钟:秒)格式定义,如16:20:09。例如,可以按以下方式定义时间变量:,Dim datMyDate2 As DatedatMyDate2=#16:20:09#,Date数据类型也可同时存储日期时间信息,日期时间数据必须以“mm/dd/yyyy hh:mm:ss”(月/日/年 小时:分钟:秒)格式定义。例如,可以按以下方式定义日期时间变量:,Dim datMyDate3 As DatedatMyDate3=#12/6/2004 10

15、:30:00#,3对象型(Object),对象型变量以4个字节(32位)地址形式存储,此地址为对象引用。可以为声明是Object类型的变量分配任何引用类型(字符串、数组、类或接口),Object变量也可引用其他任何数据类型的数据(数值、Boolean、Char、Date、结构或枚举)。以上介绍了VB.NET的基本数据类型。除了基本数据类型外,在VB.NET中还可以使用枚举、数组、结构、集合等其他一些复合数据类型,这些数据类型将在第3章介绍。,常量和变量,在程序中需要处理各种类型的数据,数据的形式可以是常量,也可以是变量。,常量,常量也叫常数,是指在程序执行期间其值不变的量,它可以是任何数据类型

16、。在VB.NET中常数分为一般常数和符号常数。,1一般常数,一般常数包括:数值常数、字符常数、逻辑常数和日期常数。下面先看各种一般常数的实例。数值常数(由正/负号、数字和小数点组成):123,-265,-75.32。字符常数(用双引号括起来):abC,李明,你好!。逻辑常数(只有两个):True(真),False(假)。日期常数(用“#”括起来的日期):#15/3/2000#,#January 1,1993#。数值整数大多数都是十进制数(基数为10),但有时也用十六进制数(基数为16)或八进制数(基数为 8)。各种数值常数表示的实例如下:十进制数:123,-456,0。八进制数:用前缀&O表示

17、八进制数,如&O123。十六进制数:用前缀&H表示十六进制数,如&H123。表2.2为十进制、八进制和十六进制整数的5个实例的对应关系表。,浮点数:用尾数、指数符号、指数来表示,用指数符号E表示单精度浮点数,用D表示双精度浮点数。例如,123.45E-3表示单精度浮点数,它的值为123.4510-3;而236D5表示双精度浮点数,它的值为236105。VB.NET规定,根据输入的常数的形式来决定保存它所使用的数据类型。在默认情况下,VB.NET把整数常量作为Integer数据类型处理,把小数常量作为Double数据类型处理。,例如,根据输入值的形式来决定数据类型,Var1=30 此值为Inte

18、ger类型Var2=18.4 此值为Double类型Var3=True 此值为Boolean类型,为了显式地指定常数的类型,可以用VB.NET提供的值类型字符来指定常数的类型,方法是在值的后面加上类型字符。表2.3列出了值类型字符及用法示例。,表2.3值类型字符及用法示例,注意:,表中未列出的其他数据类型,没有相应的值类型字符。,2符号常数,在VB.NET中可以用定义的符号常数来代替数值或字符串。定义符号常数的语法格式如下:Public|Private Const 常量名As 类型=表达式,常量名As 类型=表达式.其中:(1)Public或Private,可选项。Public表示所定义的常数

19、在整个项目中都是可见的;Private表示所定义的常数只在所声明的程序模块中是可见的。(2)常量名,必选项。它代表所定义的常数的符号名称,命名规则应符合VB.NET变量命名规则。(3)As 类型,可选项。类型可以是VB.NET支持的所有数据类型,每个常量都必须用单独的As子句,若省略该项,则默认为Object类型。(4)表达式,必选项。“表达式”由文字常量、算术运算符(指数运算符 除外)、逻辑运算符组成,也可以使用如Hello world之类的字符串,但不能使用字符串连接符、变量、用户定义的函数或内部函数。,例如,下面两条语句分别定义了一个字符串常量和一个整型常量:,Public Const

20、MyVar1 As String=hello 定义字符串常数Private Const MyVar2 As Integer=18 定义整型常量,也可以在一条语句中定义两个以上的符号常量,示例如下:Public Const MyVar3 As Integer=18,Const MyVar4 As Double=MyVar3+13.2,除了使用“As 类型”子句来指定常数的类型外,还可以用VB.NET提供的值类型字符(见表2.3)或类型说明符(见表2.6)来指定常数的类型,示例如下:,Public Const PAI=3.1415926 定义实数常数Const NIAN=365L 定义整型常量,上

21、例中定义了一个符号常量PAI,通过在其常量名后加上类型说明符“”,表明定义了一个Decimal类型的常量,值为3.1415926;另外还定义了一个符号常量NIAN,通过在其值的表达式后加上值类型字符“L”,表明定义了一个Long类型的常量,值为365。,变量,变量(Variable)是指在程序运行过程中其值可变的量,变量实际代表内存中指定的存储单元。变量具有名称和数据类型,名称表示内存的位置,通过名称可以访问变量中的数据;数据类型则决定了该变量的存储方式。,1变量命名,变量名是表示数据的一个名称,通过变量来引用它所存储的值。给变量命名必须遵循下列规则:(1)变量名必须以英文字母开头,不能以数字

22、或其他字符开头。例如,6ABC、$ABC都是不合法的。最后一个字符可以是类型声明字符(%、$、#、&、!)。(2)变量名只能由字母、数字或下划线(_)组成,不能包含句号(。)或者空格。例如,ab.、a%b、How are、A$B等都是不合法的。(3)变量名最长不能超过 255 个字符。(4)变量名不能和VB.NET的关键字同名。例如,Or、If、Loop、Len、Abs、Mod等都是关键字,不能作为变量名。另外,变量名也不能是末尾带有类型声明字符的关键字,如变量Object和Object$都是非法的;但可以把关键字嵌入变量名中,如变量Object_Object是合法的。实际上,在 VB.NET

23、中变量名及过程名、结构类型名、数组名、元素名和符号常量名都必须遵循上述规则。在 VB.NET中变量名的大小写是不敏感的,即VB.NET不区分变量名中字母的大小写。例如,counter和COUNTER被解释为同一变量。为了便于阅读,在给变量命名时,每个单词的第一个字母一般用大写,如PrintText。,2命名约定,如果在一个程序中有许多变量,那么需要一种方式,以知道变量包含什么类型的数据,比如是整数还是字符串,然而仅从变量的名称来判别是不够的。为了让程序员一眼就能从变量名看出变量的类型,对变量的命名应采用良好的约定。命名约定不是强制性的,通常取决于程序员所使用的命名习惯,目前最为常用的命名约定是

24、匈牙利标记法(Hungarian Notation),它用变量名的前3个小写字母表示数据类型,第4个字母大写,表示从这开始是变量的具有实际意义的名字。表2.4列出了本书建议的变量命名约定。,表2.4 变量命名约定,3变量声明,VB.NET需要精确定义数据的类型。任何变量都具有一定的数据类型,用户可以通过声明来定义不同的数据类型。变量的声明分为“显式声明”和“隐式声明”。,(1)显式声明,显式声明是在变量使用之前,用 Dim、Public、Private、Static、Protected、Friend Protected、Friend、Shared等语句声明变量。其中Dim是常用的声明变量的语句

25、,它可以声明一个变量或多个变量。Dim语句的语法格式如下:Dim 变量名 As 数据类型Dim 变量名 As 数据类型,变量名 As 数据类型,例如,下面两行代码中,分别声明了一个字符串类型的变量strSomeString和一个日期类型的变量datSomeDate:,Dim strSomeString As StringDim datSomeDate As Date,在一个声明语句中也可以声明多个变量,变量的类型可以不同。若变量是相同类型的,只需使用一个As子句。例如,下面两行代码中,第一行采用一次声明多个不同类型的变量,第二行采用一次声明多个Char类型的变量:,Dim strX As St

26、ring,datY As Date,intZ As IntegerDim chrA,chrB,chrC As Char,变量允许具有初始值,可以在声明变量的同时对它们初始化。例如,在下面代码中,声明了一个Integer变量、一个Boolean变量、一个Object变量,并分别将它们初始化为80、True、新创建的Label类实例:,Dim intScore As Integer=80Private blnSex As Boolean=TrueProtected objLabel As New Label,也可以在声明多个不同类型变量的同时对它们初始化。例如,在下面代码中,声明了一个Intege

27、r变量、一个Boolean变量,并分别将它们初始化为80、True:,Dim intScore As Integer=80,blnSex As Boolean=True,但是,在声明多个同类型变量的同时不能对它们初始化。例如,下面两行代码都是错误的:,Dim intScore=80,intAge=20 As IntegerDim intScore,intAge As Integer=50,如果在声明时没有指定变量的初始值,VB.NET将把它们初始化为相应数据类型的默认值。各种数据类型的默认初始值见表2.5。,显式声明可以是Static、Public、Private、Protected、Frie

28、nd、Friend Protected、Shared等语句,它们声明变量的方法与Dim语句类似。,注意:应该将所有声明语句放在变量所出现的区域(如模块或过程)的开头。如果声明语句要初始化变量的值,则应在其他语句引用该变量之前声明。,(2)隐式声明隐式声明是在使用一个变量之前不需要声明这个变量,而是用一个特殊的类型说明符加在变量名后面来说明数据类型,表2.6给出了数据类型与类型说明符的对应关系。,表2.6 数据类型与类型说明符对应表,在默认情况下,VB.NET编译器强制使用显式声明。也就是说,每个变量在使用前必须声明,否则会出错。利用编译器选项,可以改变这种限制。在VB.NET中,可以通过Opt

29、ion Exlpicit语句控制编译器的行为方式,以便根据不同的要求设置相应的默认操作。Option Exlpicit语句的语法格式如下:Option Explicit On|OffOption Exlpicit语句后面可以使用一个参数On或Off,若为On,则要求每个变量必须先声明后使用;若为Off,则编译器不检查变量是否已声明,可以使用隐式声明的变量;如果省略参数,则默认为On。,例如,下面代码允许使用隐式声明变量:,变量strMyCountry被“隐式声明”为字符串型,值为“中国”;变量intMyAge被“隐式声明”为整型,值为20。,Option Explicit OffstrMyCo

30、untry$=中国intMyAge%=20,注意:,尽管隐式声明比较方便,但如果将变量名拼错的话,就会导致难以查找的错误。除了用上述方法设置Option Exlpicit选项外,还可以采用以下方法:选择“工具”菜单中“选项”命令,单击“编辑器”选项卡,选择“要求变量声明”复选框,就可以在任何新模块中自动插入 Option Explicit 语句。,4变量的作用域,变量的作用域是指变量有效的范围,即变量的“可见性”。每一个变量都有一个使用范围,超出这个范围,该变量将不可访问。根据定义变量的位置和语句的不同,VB.NET将变量分为4个级别,即代码块级变量、过程级变量、模块级变量和全局变量。(1)代

31、码块级变量代码块是一个程序段,它一般是指一个控制结构,如IfEnd If、ForNext、DoLoop等。在代码块中声明的变量称为代码块变量,它只在代码块中有效,其作用域为所在的代码块。可以用 Dim 关键字来声明它们,其语法格式如下:Dim 变量名 As 数据类型,例如,下面是声明代码块变量的一个例子:,在上面的程序段中,变量sngX是代码块级变量,其作用域是ForNext程序段,若在代码块外引用变量sngX将会出错。,Dim i As IntegerDim aver As Single,sum As SingleFor i=1 To 100Dim sngX As Single 定义代码块级

32、变量sum=sum+isngX=sum Next iaver=sngX 此句出错,(2)过程级变量,在过程(通用过程或事件过程)内声明的变量称为过程级变量,也称局部变量。过程级变量的作用域是它所在的过程,用户无法在其他过程中访问或改变该变量的值。局部变量可以用 Dim或 Static关键字来声明它们,其语法格式如下:Dim 变量名 As 数据类型Static 变量名 As 数据类型,例如,下面的例子是在事件过程内声明局部变量:,Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)

33、_Handles Button1.ClickDim intSum As Integer 定义过程级变量Static dblScore As Double 定义过程级变量End Sub,在上面的程序段中,定义了一个整型变量intSum和一个双精度型的静态变量dblScore,它们都是过程级变量。对任何临时的计算,采用局部变量是最佳选择。例如,有多个不同的过程,每个过程都包含变量名为 i 的变量。只要每个 i 都被声明为局部变量,尽管变量名相同,但每个过程只识别它自己的变量 i,改变它自己的变量i的值,而不会影响其他过程中的变量i。因此,不同过程中定义的同名局部变量之间没有任何关系。,注意:,在S

34、ub过程中显式定义的变量(使用 Dim语句)都是局部变量,而没有在过程中显式定义的变量,除非其在该过程外更高级别的位置显式定义过,否则也是局部变量。,(3)模块级变量,在VB.NET中,模块通常指一个类。例如,窗体是一个类,称为窗体模块。模块级变量是在模块中所有的过程和代码块之外声明的变量。模块级变量必须先声明后使用,即不能隐式声明。按照默认规定,模块级变量对该模块的所有过程都有效,模块中的任何过程都可以访问该变量,但对其他模块的过程则不可用。通常在窗体模块和标准模块顶部用Dim或Private关键字声明模块级变量,其语法格式如下:Dim变量名As数据类型Private变量名As数据类型,例如

35、,下面代码在模块Form1的窗体文件Form1.vb程序代码中创建了一个模块级变量strComm:,Private strComm As String 声明一个模块级变量Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)_Handles Button1.Click strComm=学号 在过程中访问模块级变量End Sub,(4)全局变量,全局变量也称公用变量,其作用范围是应用程序的所有过程。全局变量只能在模块顶部的声明段中用Public关键字声明。模块可以通过“项目”菜单中的

36、“添加模块”命令来建立。声明全局变量的语法格式如下:Public变量名As数据类型,例如,创建标准模块并声明全局变量数组sngSalary1和sngSalary2。标准模块文件Module1.bas程序代码如下:,Option ExplicitPublic sngSalary1 As Single,sngSalary2 As Single,5变量的生存期,变量除了使用范围要求外,还有生存期,即变量能够保持其值的时间限。模块级变量和全局变量的生存期是整个应用程序运行期间。在过程中用 Dim语句声明的局部变量仅当本过程执行期间存在,当一个过程执行完毕,它的局部变量的值就不存在了,局部变量所占用的内

37、存也被释放。当下一次执行该过程时,所有局部变量将重新初始化。要将局部变量定义成静态变量可以在过程中使用 Static 关键字来声明变量,其用法和 Dim 语句完全一样。静态变量在过程结束后仍保留变量的值,即其占用的内存单元未释放。,比较下面两段代码的输出结果可以看出静态变量的作用:,Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)_Handles Button1.ClickStatic intScore As Integer 定义静态变量 MsgBox(intScore)显示

38、静态变量intScore的值intScore=intScore+10End Sub,面的程序运行后,单击命令按钮,在弹出的对话框中显示0,再单击一下,显示10,依此下去,显示20、30、,上面的程序运行后,单击命令按钮,在弹出的对话框中显示0,以后无论单击多少次,始终显示0,因为Dim定义的intScore变量每次进 入过程时都被初始化为0,而用Static定义的intScore变量进入过程时,其上一次的结果仍然存在,所以它们的区别就在这里。,Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.Ev

39、entArgs)_Handles Button1.ClickDim intScore As Integer 定义局部变量 MsgBox(intScore)显示局部变量intScore的值intScore=intScore+10End Sub,2.3 运算符和表达式,运算符是操作数据的符号表示。表达式是用运算符和数据连接而成的式子,如X-8、Y+Sin(a)、Z=A+B等都是表达式,单个变量或常量也可以看成是一个表达式。VB.NET的运算符有算术运算符、赋值运算符、关系运算符、连接运算符、逻辑运算符和复合运算符,2.3.1 算术运算符,算术运算符是用于数值计算的运算符。表2.7列出了VB.NET

40、的算术运算符。表2.7 算术运算符,算术表达式是用算术运算符将运算元素连接起来的式子,其表达式的值是数值型的。例如:,MyValue=2 2 返回 4MyValue=10/4 返回 2.5MyValue=11 4 返回 2MyResult=10 Mod 3 返回 1,【例2.1】根据华氏温度计算出摄氏温度。采用以下公式:式中,F表示华氏温度,C表示摄氏温度。图2.1 例2.1界面设计功能要求:单击命令按钮“计算”(btnStart),计算出华氏温度为78时的摄氏温度值,在文本框(txtTemperature)中显示出计算的摄氏温度的结果。界面设计:由三个控件组成,分别是标签(labF)、文本框

41、(txtTemperature)和命令按钮(btnStart),界面设计如图2.1所示。图2.1 例2.1界面设计,程序代码如下:,Private Sub btnStart_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)_Handles btnStart.Click 计算温度Dim f As Single,c As Singlef=78c=5/9*(f-32)txtTemperature.Text=cEnd Sub,程序分析:,变量f和c用于计算温度值,有小数部分,因此使用单精度型(Single)。计算结果c显示

42、在文本框中,“txtTemperature.Text=c”语句自动转换为字符串型。,赋值运算符,赋值运算符即赋值语句,用“=”符号表示,它用于将运算符右侧的值赋给运算符左侧的变量或属性。其语法格式如下:变量或属性名=值其中,语句左侧可以是任何变量或可写的属性,语句右侧的值可以是任何文本、常数、表达式或有返回值的函数等。,例如,给文本框的Text属性赋值:,Text1.Text=你好例如,给MyStr变量赋值:Dim MyStr As StringMyStr=Hello World例如,引用符号常量CONPI赋值给变量dblSquare:Const CONPI=3.14159265358979D

43、im dblSquare As DoubledblSquare=CONPI*5*5,如果赋值运算符两边的数据类型不一致,系统将按下面4个原则进行处理。,(1)当赋值运算符右边的表达式为数值型但与左边的变量类型不同时,系统将强制把表达式值转换成左边的类型和精度。但是当Option Strict为On时,由高到低转换可能会引发编译错误。,例如,下面代码由低到高转换能正确执行:Dim X As DoubleDim Y As Integer=2Dim Z As Integer=3X=Y+Z 编译成功然而,下面代码由高到低转换就会出错:Dim X As IntegerDim Y As Double=2D

44、im Z As Double=3X=Y+Z 编译出错,注意:,由高到低转换可能会丢失数据,在程序中应尽量避免出现这种情况。,(2)当赋值运算符右边的表达式是数字字符串而左边的变量是数值类型时,系统自动把表达式转换为数值类型后,再赋值给左边的变量。但是当表达式中有非数字字符串或空格时,将会出错。例如,下面代码X能正确得到值,而Y和Z会出错:,Dim X,Y,Z As DoubleX=100 转换成功,X=100Y=12a3 类型不匹配,出错Z=类型不匹配,出错,(3)当逻辑表达式赋值给数值型变量时,True转换为-1,False转换为0;反之,当数值型表达式赋值给逻辑型变量时,0转换为False

45、,非0值转换为True。示例如下:,Dim X As Double=6Dim Y As Boolean=FalseY=XY值为TrueX=YX值为-1,(4)任何非字符类型值赋值给字符类型,自动转换为字符类型。示例如下:,Dim X As StringDim Y As CharY=150Y值为字符串150X=12.05X值为字符串12.05,注意:,“=”是给变量或属性赋值的符号,与作为关系运算符的“=”(等于)不同。,关系运算符,关系运算符也称比较运算符,是用于比较的运算符。用关系运算符连接两个表达式的式子称为关系表达式,其结果是一个逻辑值,只能是True或False。VB.NET提供了8个

46、关系运算符,见表2.8。用关系运算符既可以对数值进行比较,也可以对字符串进行比较,还可以比较两个对象。表2.8 关系运算符,1数值比较,数值比较通常是对两个算术表达式进行比较,常用表2.8中的前6种关系运算符。例如:Var1+Var2(X 1)/2上述关系表达式中,如果Var1+Var2的值大于(X-1)/2的值,则表达式的值为True,否则比较运算的结果为False。,注意:,当两个表达式都是Byte、Boolean、Integer、Long、Single、Double、Decimal或Date 类型,可进行数值比较。当一个表达式的值是数值型而另一个表达式的值是String型,则String

47、型被转换成Double型后进行数值比较。如果String型不能转换成Double型,则出错。,2字符串比较,字符串比较通常是对两个字符串表达式进行比较,常用表2.8中的前7种关系运算符。字符串比较的规则是从前到后逐个字符按其ASCII码大小比较,ASCII码大的字符大;如果前面部分相同,则串长的大;字符串全部一样并长度相同,才能相等。示例如下:5 24 结果为Trueaaa aa 结果为True54=5 结果为False54=5 结果为True,Like运算符用来比较两个字符串的模式是否匹配,即判断一个字符串是否符合某一模式。在Like表达式中可使用通配符,如表2.9所示。表2.9 模式匹配表

48、,示例如下:,264 Like 2?4 结果为Truea2a Like a#a 结果为TrueV Like A-Z 结果为TrueV Like!A-Z 结果为FalseaBBBa Like a*a 结果为True,3对象比较,可以用Is和IsNot运算符来比较对象,其语法格式如下:对象名1 Is 对象名2对象名1 IsNot 对象名2Is运算符用来判断两个对象是否引用同一个对象,它不执行值的比较。如果两个对象变量都引用同一个对象,Is运算的结果为True,否则为False。,示例如下:,Dim objX As ButtonDim objY As New ButtonobjX=objYMyRes

49、ult=objX Is objY 结果为True,上例中,objX Is objY计算为True,因为两个变量引用的是同一个Button实例。而下面的例子的运算结果则为False:,Dim objX As ButtonDim objY As New ButtonMyResult=objX Is objY 结果为False,示例分析,上面示例中,虽然两个变量都是同一类型,但它们引用的不是同一个Button实例,因此objX Is objY计算结果为False。IsNot运算符用来判断两个对象是否引用不同的对象,它也不执行值的比较。如果两个对象变量都引用同一个对象,IsNot运算的结果为False

50、,否则为True。示例如下:Dim objX As ButtonDim objY As New ButtonobjX=objYMyResult=objX IsNot objY 结果为False,注意:,IsNot 是与 Is 运算符相反的运算符。IsNot 的优点是用户可以避免使用 Not 和 Is 的笨拙语法,后者难以读取。可以使用 Is 和 IsNot 运算符测试早期绑定和后期绑定的对象。,连接运算符,连接运算符是用来合并字符串的运算符,包括“&”和“+”运算符。它们用来强制对两个表达式作字符串连接。用连接运算符将两个表达式连接起来的式子称为连接表达式。例如:Dim strMyStrA,s

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号