三章数据类型变量和表达式.ppt
三章数据类型变量和表达式 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望3.1 VB.NET数据类型数据类型在不同的程序设计语言中,数据类型的规定和处理方法是不同的。在开始学习如何使用VisualBasic.NET编码之前,需要理解所使用的数据类型。需要掌握如何用变量存储数据,如何从一种数据类型转换到另一种数据类型。3.1.1数据类型数据类型见P28表。3.1.2理解数据类型理解数据类型Boolean变量以16位(2个字节)的数值形式存储,但只能是True或是False。使用关键字True与False将Boolean变量赋值为这两个状态中的一个。在将数值数据类型转换为Boolean值时,0会转换为False,而其他所有值都将转换为True。在将Boolean值转换为数值类型时,False将转换为0,True将转换为-1。Byte、Integer、Long和Short均可存放一个整数,它们的取值范围不同,占有的空间大小也不一样。实际编程的时候,可根据需要选用。Decimal、Double和Single均存放一个不同范围的实数。Char变量以无符号的16位(2个字节)数字的形式存储,取值范围为0到65535。每个数字代表一个Unicode字符。Date变量以8个字节整数的形式存储,表示从1年1月1日到9999年12月31日的日期以及从凌晨0:00:00到晚上11:59:59的时间。Date值必须以数字符号(#)括起来,格式必须为m/d/yyyy,如#5/31/1993#。String类型可以存放一个字符串。3.2变量与常量变量与常量3.2.1声明变量声明变量用以下方式来声明变量及类型:声明变量及类型:Dim变量名变量名As类型类型其中类型可使用表3.1中所列出的数据类型或用户自定义的类型名。例如:DimstrMyNameAsStringDimnAgeAsInteger可以用一一个个声声明明语语句句声声明明多多个个同同变变量量。例如,下面的语句声明两个整型变量A和B:DimA,BasInteger此外,还还有有其其他他的的方方法法也也可可声声明明一一个个变变量量,主要用于类和模块中。3.2.2变量的命名规则变量的命名规则变量名可以由使用者自己定义,但需遵循以下规则:变量名可以由使用者自己定义,但需遵循以下规则:必须以字母或汉字开头,不能以数字或其他字符开头。变量名中其他字符可以是字母、汉字、数字或下划线组成,允许是空格、句号或其他标点符号,长度不超过255个字符(最小长度为1个字符)。变量名在变量的作用范围内必须唯一(变量的作用范围将在后面讲到)。不能使用VisualBasic.NET中的保留字,例如:End、Sub。3.2.3变量的有效范围变量的有效范围根据变量声明时在程序中的位置,每个变量均有一定的有效范围。变量的有效范围决定了VisualBasic.NET程序中变量的可访问性。在有效范围内变量是可用的,有效范围之外,变量是无效的,对该变量的任何使用均会导致程序报错。例如:PrivateSubButton1_Click(ByValsenderAsSystem)DimLosersAsInteger(其它语句)EndSub上例中,介介于于DimLosersAsInteger命命令令行行与与EndSub命命令令行行之之间间的的代代码码均均可可访访问问变变量量Losers。但就程序的其他部分而言,变量Losers就无效了。又例如下面一段代码:又例如下面一段代码:IfYourSalaryCERSalaryThenDimMessageAsStringMessage=”HowcomeIgetpaidlessbutdoallthework?”TextBox1.Text=MessageEndIf上面的示例中,VB.NET在第二行创建了一个名为Message的变量。在第二行之前,直到VB.NET看到变量的声明代码,变量Message根本不存在。一旦执行到最后一行时,即EndIf的后面,变量Message就无效了。3.2.4常量常量常量是在程序运行中不变的量。常量是在程序运行中不变的量。声明常量的语法如下:声明常量的语法如下:Const常量名常量名As类型类型表达式表达式其中As类型为可选项,说明了该变量的数据类型。省略该项,数据类型由表达式决定。表达式的值即为该常量的值(表达式将在下一节讲述)。对于数值常数除了可用十进制数表示外,还可以使用十六进制数(数值前加H)和八进制(数值前加O)。常量名的命名规则中,其长度最长为40个字符,其他同变量命名规则。例如:例如:ConstPI3.14159声明了常量PI,代表3.14159,Single型ConstMAXAsIntegerO144声明了常量MAX,代表了八进制数144,整型ConstCOUNTS12.34R声明了常量COUNTS,代表12.34,double型注注意意:在12.34后面加了一个字符R来明确表示12.34这个数字作为double型看待。在程序中任何使用数字的地方均可这么作来帮助VisualBasic确定代码中的数字表式什么类型,其他可用的类型符如表。3.3运算符与表达式运算符与表达式表达式由变量、常量、运算符和圆括号按一定的规则组成。要掌握表达式首先要理解运算符的使用。其次表达式计算出来的值通常要存放到变量中,这是通过赋值语句来完成的。3.3.1赋值语句赋值语句赋值语句是任何程序设计中最基本的语句。它的作用是把右边表达式的值赋给左边的变量,VisualBasic.NET使用赋值号“”来赋值,其语法如下:其语法如下:LET变量名表达式变量名表达式其中LET表示赋值,通常省略。表达式的计算结果类型应与变量名的类型一致,即同时为数值型或同时为字符型。当数值型具有不同的精度时,强制转换成左边的精度。例如:DimlngXAsLong2000DimintXAsInteger2343.2.2运算符运算符与其他语言一样,VisualBasic.NET通过运算符、变量等组合成表达式,实现编程中所需的大量操作。VB.NET中的运算符分为算术运算符、字符串运算符、关系运算符和逻辑运算符等。3.2.2.1算术运算符算术运算符见表3.3算术运算符。3.2.2.2字符串运算符字符串运算符字符串运算符有两个:“”、“”,它们都是将两个字符串拼接起来。在字符串变量后使用运算符“”时,变量与运算符“”间应有一个空格空格。例如:“高级”“编程”结果为“高级编程”“Thisisa”&“VB.NET”结果为“ThisisaVB.NET”在使用时,连接符“”与“”的区别区别是:“”:连接符前后的表达式应均为字符串,若均为数值则进行算术加运算。若一个为字符串,另一个为数值则会出错。“”:连接符前后的表达式不管是字符串还是数值,进行连接操作前,系统先将表达式转换成字符串,然后再连接。例如:“aabbcc”+123456出错“aabbcc”&123456结果为:“aabbcc123456”3.2.2.3关系运算符关系运算符关系运算符是双目运算符,作用是将两个表达式进行比较,若关系成立,则返回True,否则返回False。表达式可以是数值型、字符型。表3.4列出VisualBasic.NET中的关系运算符。见表3.4VisualBasic.NET的关系运算符。使用关系运算符时应注意以下规则:使用关系运算符时应注意以下规则:如果两个表达式是数值,则按其大小比较。如果两个表达式是字符或字符串,则按字符的ASCII码值从左到右一一比较,即首先比较两个字符串的第1个字符,其ASCII码值大的字符串大,如果第1个字符相同,则比较第2个字符,以此类推,直到出现不同的字符为止。关系运算符的优先级相同。3.2.2.4逻辑运算符逻辑运算符逻辑运算符除Not是单目运算符外,其余都是双目运算符,作用是将表达式进行逻辑运算,结果是逻辑值True或False。表3.4列出VB.NET中的逻辑运算符、运算优先级等(表中T表示True,F表示False)。3.2.2.5位运算符位运算符当逻辑运算符运用于数值时,对两个数值表达式中位置相同的位执行按位比较具体有And(按位与)、Or(按位或)、Not(按位取反)和Xor(按位异或)4个位运算符,例如:88And231688Or239588Xor2379Not88893.2.3表达式表达式表达式由变量、常量、运算符和圆括号按一定的规则组成。表达式通过运算后有一个结果,运算结果的类型由数据和运算符共同决定。表表达达式式的书写规则如下:的书写规则如下:乘号用“*”表示,并且不能省略。例a乘以b应写成:a*b。括号必须成对出现,均使用圆括号。表达式从左到右在同一基准上书写,无高低、大小之分。例如:已知数学表达式,写成VisualBasic.NET表达式为:(8*x+y)-z)(1/2)/(x-y)3在算术运算算术运算中,如果表达式具有不同的数据数据精度精度,则VisualBasic.NET规定运算结果的数据类型采用精度高的数据类型。即 IntegerLongSingle关系运算符关系运算符逻辑运算符逻辑运算符实际上,对于多种运算符并存的表达式,可增加圆括号,改变优先级可使表达式的层次更清晰。3.4类型转换类型转换数据类型精度由低到高的排列为:ByteShortIntegerLongDecimalSingleDouble另外,Char型可转换为String型;上述所有类型均可转换为Object型。我们可以调用System.Convert命名空间的转换函数进行类型转换。下面是一些转换的例子:下面是一些转换的例子:DimintXAsInteger=423DimlngYAsLongintY=Convert.ToInt64(intX)intY=423在最后一条语句中,转换函数Convert.ToInt64将intX转换为Long型后赋值给intY变量。一个丢失数据的例子如下:一个丢失数据的例子如下:DimsngXAsSingle123.74DimintYAsIntegerintY=Convert.ToInt32(sngX)intX=123常用的转换函数见表3-6类型转换函数。3.5程序的顺序结构程序的顺序结构顺序结构是一组按书写顺序执行的语句,即执行完一条语句后依次执行下一条语句。例如:下面的程序完成了两个数之和的计算。创建一个名为sum的新的Windows应用程序项目。在Form窗体上放置三个TextBox控件,Name属性分别为TxtOp1,TxtOp2和TxtResult。Text属性为空。TxtResult的ReadOnly的属性为True。再放置一个button按钮,并设置其Name属性为BtnSum,其Text属性为Showsum。双击这个按钮,打开它的Click事件处理程序,并在其中添加如下代码:PrivateSubBtnSum_Click(ByValsenderAsSystem.Object,ByValeAs_System.EventArgs)HandlesbtnSum.ClickDimdblOp1AsDoubleDimdblOp2AsDoubleDimdblResultAsDoubledblOp1=TxtOp1.TextdblOp2=TxtOp2.TextdblResult=dblOp1+dblOp2TxtResult.Text=dblResultEndSub输出结果如下:声明三个类型为double的变量并从文本框中得到了输入,这里从文本框到double型变量做了隐式隐式的转换。当使用者单击ShowSum按钮后,程序从代码DimdblOp1开始顺序执行,直到EndSub。3.6VisualBasic程序格式程序格式Visual BasicVisual Basic编写代码也都有一定的书写规则,其主要规定如下:编写代码也都有一定的书写规则,其主要规定如下:Visual Basic.NETVisual Basic.NET代码不区分字母的大小写代码不区分字母的大小写为了提高程序的可读性,Visual Basic.NET对用户程序代码进行自动转换:对于Visual Basic中的关键字,首字母总被转换成大写,其余字母被转换成小写;若关键字由多个英文单词组成,它会将每个单词首字母转换成大写;对于用户自定义的变量、过程名,VB.NET以第一次定义的为准,以后输入的自动向首次定义的转换。语句书写自由语句书写自由在同一行上可以书写多个语句,语句间用冒号“:”分隔;单行语句可分若干行书写,在本行后加入续行符(空格和下划线“_”);一行允许最多达255个字符。注释有利于程序的维护和调试注释有利于程序的维护和调试注释以Rem开头,也可用撇号“”引导注释内容,用撇号引导的注释可以直接出现在语句后面。亦可以使用“编辑”工具栏的“设置注释块”、“解除注释块”按钮,使选中的若干行语句(或文字)添加注释或取消注释。若编辑工具栏没有在窗口上显示,可以选择“视图”菜单的“工具栏”子菜单,然后选择“编辑”命令即可。3.7GroupBox、RadioButton、CheckBox控件控件RadioButton、CheckBox和和GroupBox控件控件3.7.1RadioButtonRadioButton(单选按钮)控件是用来让用户在一组选项中选定一项且只能选定一项。RadioButton有许多属性,其中最常用的有:Text属性:设定RadioButton旁边的文本内容。CheckAlign属性:CheckAlign属性设定控件按钮与文本的位置关系Checked属性:由Checked属性设定RadioButton的状态。True:RadioButton被选定。False:RadioButton未被选定,缺省设置。3.7.2CheckBox CheckBox CheckBox(复选框)控件是让用户在一组选项中选定一(复选框)控件是让用户在一组选项中选定一项或选定多项。项或选定多项。CheckBoxCheckBox的属性中也有的属性中也有TextText属性、属性、CheckAlignCheckAlign属性和属性和NameName属性等,这些属性的用法几乎每个控件都大同小异。属性等,这些属性的用法几乎每个控件都大同小异。CkeckBoxCkeckBox最重要的属性是最重要的属性是CheckedChecked属性。通过属性。通过CheckedChecked属性属性可以检查或设定可以检查或设定CheckBoxCheckBox是否被选中:是否被选中:Checked Checked TrueTrue,被选中被选中Checked Checked FalseFalse,未被选中,未被选中CheckBoxCheckBox中还有一个中还有一个CheckStateCheckState属性用来指示属性用来指示CheckBoxCheckBox目目前的状态:前的状态:CheckState CheckState CheckedChecked,被选中状态,被选中状态CheckState CheckState UnCheckedUnChecked,未被选中状态,未被选中状态CheckState CheckState IndeterminateIndeterminate,不可用状态(当,不可用状态(当ThreeState ThreeState 属性设置为属性设置为 truetrue时有效)时有效)3.7.3框架框架GroupBox控件的使用控件的使用RadioButton控件在一组中只能选定一项,怎样对RadioButton控件分组呢?其中一个方法就是利用GroupBox控件。可以先将先将一个GroupBox控件放置在窗体上,然后然后将RadioButton控件放在GroupBox控件即可。在一个GroupBox控件中的RadioButton控件自动成为一组自动成为一组。另外,还可以设定GroupBox的Text属性,对分组做一个说明。CheckBox也可以放在一个GroupBox控件中,但CheckBox并没有类似RadioButton分组的类似概念。将CheckBox放入一个GroupBox的作用主要是说明说明和装饰和装饰作用。3.7.4例子例子在图3-2的基础上再增加一个按钮,并且为这个按钮的Click事件编写代码,通过一个消息框(MessageBox)来显示目前的选择情况。代码如下:PrivateSubBtnShow_Click(ByValsenderAsSystem.Object,_ByValeAsSystem.EventArgs)HandlesBtnShow.ClickDimstrInfoAsStringDimstrTempAsStringstrInfo=奖学金的选择情况:奖学金的选择情况:IfRbtnBursary1.Checked=TrueThenstrTemp=一等奖一等奖EndIfIfRbtnBursary2.Checked=TrueThenstrTemp=二等奖二等奖EndIfIfRbtnBursary3.Checked=TrueThenstrTemp=三等奖三等奖EndIfstrInfo=strInfo&strTemp&性别选择:性别选择:IfRbtnMan.Checked=TrueThenstrTemp=男男EndIfIfRbtnWoman.Checked=TrueThenstrTemp=女女EndIfstrInfo=strInfo&strTemp&其他选择其他选择:IfChkboxClassLeader.Checked=TrueThenstrInfo=strInfo&班干部班干部EndIfIfChkboxLeader.Checked=TrueThenstrInfo=strInfo&学生会干部学生会干部EndIfIfChkboxAssn.Checked=TrueThenstrInfo=strInfo&社团成员社团成员EndIfMessageBox.Show(strInfo)EndSub通过IF语句(下一章详细讲述)来分别判断每个RadioButton和CheckBox的Cheched属性是否为True。若是,则将相关的信息加入到strInfo中。最后,利用MessageBox将strInfo中的信息显示出来。在程序运行前,通过属性窗口将“三等奖”和“男”的Checked属性设置为True,使他们成为缺省选项。程序运行结果如下:程序运行结果如下:程序运行后,用户进行了选择,注意RadioButton的互斥性按下Show按钮后程序的显示结果:补充阅读补充阅读3.8面向对象的程序设计面向对象的程序设计OOP最关键的一点就是使用可重用对象来构建程序。面向对象程序设计方法认为,客观世界是由各种各样的实体组成的,这些实体就是面向对象方法中的对象。一般的认为,对象是包含现实世界物体特征的抽象实体,反映了系统为之保存信息和与之交互的能力。每个对象有各自属性和方法,整个程序是由一系列相互作用的对象构成的,对象之间的交互通过发送消息来实现。对象可视为一个单元的代码和数据的组合。对象可以是一段应用程序,如控件或窗体。整个应用程序也可以是一个对象。属性是对象的特性,它们定义对象的特征之一(如大小、颜色或屏幕位置),或者定义对象行为的某一方面(如是否启用或可见)。若要更改对象的特征,可更改其相应属性的值。而方法则是对象的一组函数,主要用来对象的数据进行操作。在程序中,通过对象名加上一个句号后跟属性或方法的形式来访问对象的属性或方法。事实上,在VisualBasic.NET中,每一个变量,每一个控件都是一个对象。3.9良好的编程风格良好的编程风格建议:建议:在程序中最好每行只包括一个语句每次只声明一个变量变量和控件名尽可能起的有意义,容易记忆和理解并且风格始终保持一致。可以使用有意义的前缀起名。注意使用语句的缩格与按层次对齐,采用锯齿状的书写方式。在必要的地方加上注释,以提高程序的可读性。要编写出易读的代码,另一个重要的方面是留出大量的空白。以告诉读者每一段代码都是一个工作单元。模仿本书的例子或其它好的编程风格的例子。小结小结掌握基本数据类型(Integer、Double、string等)掌握表达式(与非一般表达式的区别:、等)理解数据类型转换(不同类型之间的转换)GroupBox、RadioButton、CheckBox控件的使用作业作业P42:4、7