第3章 Visual Basic程序设计基础_第1页
第3章 Visual Basic程序设计基础_第2页
第3章 Visual Basic程序设计基础_第3页
第3章 Visual Basic程序设计基础_第4页
第3章 Visual Basic程序设计基础_第5页
已阅读5页,还剩176页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VisualBasic程序设计基础第三章12023/9/22学习内容3.1数据类型3.2变量与常量3.3运算符与表达式3.4常用内部函数3.5基本语句3.6数组3.7过程3.8程序调试22023/9/223.1数据类型3.1.1基本数据类型VisualBasic的基本数据即标准数据类型主要有数值数据和字符串型数据,此外还提供了布尔型、字节型、货币型、对象型、日期型和变体数据类型等。32023/9/223.1数据类型3.1.2用户自定义类型

在模块级别中使用,用于定义包含一个或多个元素的用户自定义的数据类型。使用形式:

Type自定义类型名 元素名[([下标])]As类型名 元素名[([下标])]As类型名

...EndType

如下例中所示:3.1数据类型TypeStudentXhAsStringXmAsStringXbAsStringNlAsIntegerScoreAsSingleEndType

例如:对于一个学生的“学号”、“姓名”、“性别”、“年龄”、“入学成绩”等数据,为了处理数据的方便,常常需要把这些数据定义成一个新的数据类型(如Student类型)。3.1数据类型3.2常量和变量3.2.1标识符标识符是程序员为变量、常量、数据类型、过程、函数和类等定义的名字。利用标识符可以完成对变量、常量、数据类型、过程、函数和类的引用。VB中标识符的命名规则如下:(1)标识符必须以字母(A~Z,a~z)开头,后跟字母(A~Z,a~z)、数字(0~9)、或下划线。3.2常量和变量(2)标识符的长度不能超过255个字符,控件、窗体、类和模块的名字不能超过40个字符。(3)自定义的标识符不能和VisualBasic中的运算符、语句、函数和过程名等关键字同名,同时也不能与系统已有的方法和属性同名。(4)在同一范围内必须是唯一的。82023/9/22AsBinaryByrefByValDateElseEmptyErrorFalseForFriendGetInputIsLenLetLockMeMidNewNextNothingNullOnOptionOptionaParamArryPrintPrivatePropertyPublicResumeSeekSetStaticStepStringThenTimeTotrueWithEvents3.2常量和变量(5)VB中不区分变量名的大小写,例如,XYZ、xyz、xYz等都认为指的是同一个变量名。为了便于区分,一般变量首字母用大写字母,其余用小写字母表示。常量全部用大写字母表示。

(6)为了增加程序的可读性,可在变量名前加一个缩写的前缀来表明该变量的数据类型。例如:strMystring、intCount、dtmYear、blnTorF均合法。92023/9/223.2.2变量变量是内存中保存信息的内存区域,它的内容在程序运行过程中是可变的。一旦定义了某个变量,该变量表示的都将是同一个内存位置。变量有两个特性:名字和数据类型。变量的名字用于在程序中标识变量和使用变量的值,数据类型则确定变量中可以保存哪种数据。

3.2常量和变量3.2常量和变量在VisualBasic中变量有两种类型:属性变量和用户自己建立的变量。在窗体中设计用户界面时,会自动为产生的对象(包括窗体)创建一组变量即属性变量,并为每个变量设置了默认值。属性变量是系统自动创建的,不用程序员费心。而用户自己建立的变量,则要靠程序员根据程序需要创建。112023/9/22.变量声明

1.显式声明变量

形式:Dim|Private|Public|Static变量名[AS类型] Dim变量名[类型符]

例: DimiCountAsinteger,sumAssingle

等价于DimiCount%,sum!3.2常量和变量3.2常量和变量说明:(1)建立公用变量,在模块的声明段用Public或

Dim语句声明变量。

建立模块级变量,在模块的声明段用

Private或

Dim语句声明变量。

建立过程级局部变量,在过程中用

Dim或

Public或

Static语句声明变量。

132023/9/223.2常量和变量(2)<变量名>按照命名规则根据需要自定义。省略[As类型]部分,所创建的变量默认为变体类型。(3)一条Dim语句可以同时定义多个变量,但每个变量必须有自己的类型声明,类型声明不能共用。例如:DimX1Asinteger,X2AsintegerDimX1,X2Asinteger142023/9/22(4)可在变量名后加类型符来代替"As类型”。此时变量名与类型符之间不能有空格。 %表示整型;

&表示长整型; !表示单精度型;

#表示双精度型; @表示货币型;

$标时字符串型。3.2常量和变量(5)对于字符串类型变量,其定义方法有两种:Dim字符串变量名AsString‘定义不定长的字符串,最多可存放2MB个字符

Dim字符串变量名AsString*n‘定义定长的字符串,最多存放n个字符3.2常量和变量2.隐式声明

VisualBasic允许用户在编写应用程序时,不声明变量而直接使用,系统临时为新变量分配存储空间并使用,这就是隐式声明。所有隐式声明的变量都是Variant(变体)数据类型。VisualBasic根据程序中赋予变量的值来自动调整变量的类型。3.2常量和变量例如:下面是一个很简单的程序,其使用的变量a,b,Sum都没有事先定义。PrivateSubForm_Click()Sum=0a=10:b=20Sum=a+bPrint"Sum=";SumEndSub3.2常量和变量3.强制显式声明——OptionExplicit语句良好的编程习惯都应该是“先声明变量,后使用变量”,这样做可以提高程序的效率,同时也使程序易于调试。VisualBasic中可以强制显式声明,可以在窗体模块、标准模块和类模块的通用声明段中加入语句:OptionExplicit3.2常量和变量变量的数据类型1.数值型变量数值型变量(Numeric)存放数字,包括整型变量(Integer、Long)、单精度型变量(Single)、双精度型变量(Double),其中单精型和双精度型变量均是浮点型变量。3.2常量和变量变量的声明方式:

DimCountAsIntegerDimaAsLongDimsAsSingleDimxAsDouble2.字符串型变量字符串型变量(String)存放文本,变量声明方式是:

3.2常量和变量

DimnameAsStringDimnum_stringAsSritngDimtenAsString*10字符串型变量可以被赋值任何文本,并且要用双引号引起来,如:

name=〝〞name=〝LiSi〞num_string=〝123456〞ten=s〝abcdefghijklmn〞3.2常量和变量3.日期型变量日期型变量(Data)用来存放日期数据,声明方式:

DimdateAsDate日期型变量可以存放日期或时间值,如:

date=“20-6-2006”date=#20:30:50PM#日期时间型数据表示时要用双#号括起来。3.2常量和变量VisualBasic能自动处理日期型变量值,用Date()函数可以获取系统日期,用Time()函数获取系统时间,用Year()、Month()及Day()函数可以从日期中取出年、月、日。日期型函数可以进行加减运算,不能进行乘除运算。3.2常量和变量4.布尔型变量布尔型变量(Boolean),声明方式如下:

DimaAsBoolean布尔型变量存入的数值为True和False,当值缺省时默认为False。在VisualBasic中布尔型变量值用两个字节存放变量值,实际上是1(True)和0(False)。3.2常量和变量5.对象型变量对象型变量(Object)数据用来表示图形、OLE对象或其他对象,实际上对象(Object)型变量作为32位(4个字节)地址来存储,该地址可引用应用程序中的对象。随后可以用Set语句指定一个被声明为Object的变量,去引用应用程序所识别的任何实际对象。3.2常量和变量6.变体型变量变体(Variant)是一种特殊的可变的数据类型,为VB的数据处理增加了智能性,是所有未定义的变量的默认数据类型,它对数据的处理完全取决于程序上下文的需要。它可以包括上述的数值型、日期型、对象型、字符型等数据类型。要检测变体型变量中保存的数值究竟是什么类型,可以用函数VarType()进行检测,3.2常量和变量根据它的返回值可确定是何数据类型。目前,Decimal数据类型只能在变体类型(Variant)中使用,也就是不能把一个变量声明为Decimal类型。3.2.3常量在程序运行过程中,其值不能被改变的量称为常量。在VB中有三类常量:直接常量、符号常量、系统常量3.2常量和变量1.直接常量直接常量其常数值直接反映了其类型,也可在常数值后紧跟类型符显示地说明常数的数据类型。例如,123、123&、123.45、1.234E2、123D3分别为整型、长整型、单精度浮点数(小数形式)、单精度浮点数(指数形式)、双精度浮点数常量。在VB中除了十进制数常数外,还有八进制、十六进制常数。3.2常量和变量八进制常数形式:数值前加&O。例如,&O123、&O456。十六进制常数形式:数值前加&H。例如,&HA5C8、&H1234。2.符号常量为了便于程序的阅读或修改,有些常量可以由用户定义的符号常量表示。格式为:

Const符号常量名[As类型]=表达式[,常量名=表达式]…3.2常量和变量【说明】(1)符号常量名:按常量名的命名规则由用户自己命名,为了便于与一般变量名区别,常量名一般用大写字母表示。

(2)As类型:说明了该常量的数据类型,若省略该选项,则数据类型由表达式决定。用户也可在常量后加类型符来定义该常量的类型。表达式:可以是数值常数、字符串常数以及由运算符组成的表达式。3.2常量和变量例如:ConstPI=3

.14159ConstMAXCHARSAsInteger=&O254ConstCOUNTS#=12.34【说明】

常量一旦声明,在其后的代码中只能引用,不能改变,即只能出现在赋值号的右边,不能出现在赋值号的左边。3.2常量和变量3.系统提供的常量除了用户通过声明创建符号常量外,VB系统还提供了应用程序和控件定义的常量,这些常量位于对象库中,在“对象浏览器”中的VisualBasic(VB)、VisualBasicforApplications(VBA)等对象库中列举了VisualBasic的常量。3.2常量和变量其他提供对象库的应用程序,如MicrosoftExcel和MicrosoftProject,也提供了常量列表,这些常量可与应用程序的对象、方法和属性一起使用。在每个ActiveX控件的对象库中也定义了常量。通过使用常量,可使程序变得易于阅读和编写。同时,常量值在VisualBasic更高版本中可能还要改变,常量的使用也可使程序保持兼容性。3.2常量和变量3.3运算符和表达式3.3.1算术运算符算术表达式也称为数值表达式,由算术运算符、数值型常量、变量、函数和圆括号组成。1、表达式的书写规则(1)每个符号占1格,所有符号都必须一个一个并排写在同一横线上,不能在右上角或右下角写方次或下标。42

写成4^2,y1+y2写成y1+y2。3.3运算符和表达式(2)原来在数学表达式中省略的内容必须写上。2x写成2*x。(3)所有括号都用小括号(),括号必须配对。3[x+2(y+z)]写成3*(x+2*(y+z))。(4)要把数学表达式中的有些符号,改成VB中可以表示的符号。2πr写成2*pi*r。2、算术运算符(均是双目运算,设ia=3)例:5+10mod10\9/3+2^2结果是103.3运算符和表达式3.3.2.字符串运算符字符串运算符有:&、+。功能是字符串连接例如:

"ABCD"+"EFGHI"'结果为:ABCDEFGHI“VB”&“程序设计教程”'结果为:VB程序设计教程说明:当连接符两旁的操作量都为字符串时,上述两个连接符等价。它们区别是:3.3运算符和表达式+(连接运算):两个操作数均应为字符串类型;

&(连接运算):两个操作数既可为字符型也可为数值型,当是数值型时,系统自动先将其转换为数字字符,然后进行连接操作。例: "100"+123'结果为

223 "100"+"123"'结果为

100123 "Abc"+"123"‘

结果为

Abc123

"Abc"+123‘

出错:类型不匹配 "100"&123'结果为

100123 100&123'结果为

100123 "Abc"&"123"'结果为

Abc123 "Abc"&123'结果为

Abc123

3.3运算符和表达式

注意:使用运算符“&”时,变量与运算符“&”之间应加一个空格。这是因为符号“&”还是长整型的类型定义符,如果变量与符号“&”接在一起,VB系统先把它作为类型定义符处理,因而就会出现语法错误。3.3运算符和表达式

3.3.3关系运算符关系运算符用来比较两个运算量之间的关系,关系表达式的运算结果为逻辑量。若关系成立,结果为True,若关系不成立,结果为False。运算符含义优先级实例结果<小于所有关系运算优先级相同。低于算术运算的加“+”,减“-”运算,高于逻辑非“Not”运算。15+10<20False<=小于或等于10<=20True>大于10>20False>=大于或等于"This">="That"True=等于"This"="That"False<>不等于"This"<>"That"TrueLike字符串匹配"This"Like*is"TrueIs对象比较

3.3运算符和表达式关系运算的规则如下:(1)当两个操作式均为数值型,按数值大小比较。(2)字符串比较,则按字符的ASCII码值从左到

右一一比较,直到出现不同的字符为止。例:"ABCDE">"ABRA" 结果为False(3)数值型与可转换为数值型的数据比较,如:29>"189",按数值比较,结果为False。3.3运算符和表达式(4)数值型与不能转换成数值型的字符型比较,如:77>“sdcd”,不能比较,系统出错。(5)汉字字符大于西文字符例3.3

3.3.4逻辑运算符

Not逻辑非为单目运算符(要求一个操作数),其它为双目运算符。

3.3运算符和表达式条件表达式1And条件表达式2条件表达式均为T结果为T条件表达式1Or条件表达式2条件表达式有一个T结果为T例3.43.3运算符和表达式说明:(1)逻辑运算符的优先级不相同,Not(逻辑非)最高,但它低于关系运算,Imp(逻辑蕴含)最低。(2)VB中常用的逻辑运算符是Not、And和Or。它们用于将多个关系表达式进行逻辑判断。例如,数学上表示某个数在某个区域时用表达式:

10≤X<20,用VB程序中应写成:

X>=10AndX<20

3.3运算符和表达式(3)参与逻辑运算的量一般都应是逻辑型数据,如果参与逻辑运算的两操作数是数值量,则以数值的二进制值逐位进行逻辑运算(0当False,1当True)。关系表达式与逻辑表达式常常用在条件语句与循环语句中,作为条件控制程序的流程走向。3.3运算符和表达式3.3.5日期表达式日期表达式由算术运算符“+、-”、算术表达式、日期型常量、内存变量和函数组成。日期型数据之间只能进行加、减运算。有3种情况:(1)两个日期型数据可以相减,结果是一个数值型数据(两个日期相差的天数)。例:#12/11/1999#-#11/16/1999#‘结果为数值型数据:333.3运算符和表达式(2)一个表示天数的数值型数据可加到日期型数据中,其结果仍然为一个日期型数据(向后推算日期)(3)一个表示天数的数值型数据可以从日期型数据中减掉它,其结果仍然为一日期型数据(向前推算日期)例:#11/16/1999#+33=#99-12-19##12/19/1999#-33=#99-11-16#3.3运算符和表达式3.3.6优先级算术运算符、逻辑运算符都有不同的优先级,关系运算符优先级相同。当一个表达式中出现了多种不同类型的运算符时,不同类型的运算符优先级如下:

算术运算符>字符运算符>关系运算符>逻辑运算符3.3运算符和表达式【说明】

对于多种运算符并存的表达式,可增加圆括号,改变优先级或使表达式更清晰。例如,若选拔优秀生的条件为:年龄(Age)小于19岁,三门课总分(Total)高于285分,其中有一门为100分,其表达式写为:

Age<19AndTotal>285And(Markl=100OrMark2=100OrMark3=100)3.3运算符和表达式VB提供了大量的内部函数(或称标准函数)供用户在编程时调用。内部函数按其功能可分成数学函数、转换函数、字符串函数、日期函数和格式输出函数等。以下叙述中,我们用N表示数值表达式、C表示字符表达式、D表示日期表达式。凡函数名后有$符号,表示函数返回值为字符串。3.4常用内部函数VB提供了大量内部函数,以便用户在编程时直接调用,用户可以在“帮助”菜单中获得所有内部函数的使用方法。

数学函数VB中的数学函数与大家在数学课程中所学习知识一致。

3.4常用内部函数【说明】(1)Log和Exp互为反函数,即Log(Exp(N))=Exp(Log(N))=N。(2)Rnd(x)返回的范围为:[0,1),返回值为双精度随机数。当一个应用程序不断重复使用随机数时,同一序列的随机数会反复出现,用Randomize语句可以消除这种情况。该语句格式如下:

Randomize[number],number是一个整数,它是随机数发生器的“种子数”,可省略。【例3.5】求字符串表达式的值3.4常用内部函数542023/9/22ConstPI=3.14159x1=Sin(30*PI/180)'计算30度角的正弦值x2=Cos(30*PI/180)'计算30度角的正弦值x3=Tan(30*PI/180)'计算30度角的正弦值PrintTab(5);x1;Spc(4);x2;Spc(4);x3PrintTab(5);Fix(3.7);Fix(3.2);Fix(-3.7);Fix(-3.2)'x<0时,Fix则会返回大于或等于x的第一个负整数PrintTab(5);Int(3.7);Int(3.2);Int(-3.7);Int(-3.2)'x<0时,Int返回小于或等于x的第一个负整数x=Abs(50.3)'求50.3的绝对值y=Abs(-50.3)'求-50.3的绝对值PrintTab(5);x;Spc(4);yx=Sqr(9)'求平方根y=Sqr(12.5)'结果是3.535553390593274PrintTab(5);x;Spc(4);yx=x=Exp(2)'e的2次方PrintTab(5);xx=Log(15)'15的自然对数PrintTab(5);xy1=Sgn(-3.5)'x<0时,返回-1y2=Sgn(0)'x=0时,返回0y3=Sgn(3.5)'x>0时,返回1PrintTab(5);y1;Spc(4);y2;Spc(4);y3z1=Rnd(-1)z2=Rnd(2)z3=Rndz4=Rnd(0)PrintTab(5);z1;Spc(4);z2;Spc(4);z3;Spc(4);z42.转换函数

设C为字符串型变量,N为数值型变量,则有:3.4常用内部函数例:printAsc(“abc”)输出:97例:printChr(“65”)输出:A例:printVal(“65”)输出:65例:printStr(“65”)输出:65取整函数int()和fix()的区别Fix(N)为截断取整,即去掉小数后的数。

Int(N)不大于N的最大整数。

N>0与int(N)相同,当N<0时,int(N)

与fix(N)-1相等例如:Fix(9.59)=9,Int(9.59)=9Fix(-9.59)=-9,Int(-9.59)=-103.4.3VB字符处理机制及字符串操作函数

(1)VB字符处理机制

VB中字符串长度是以字(习惯称字符)为单位。即每个西文字符和每个汉字都作为一个字,占两个字节。原因是其与传统编码方式的不同:Windows:DBCS编码VB:中采用的是Unicode(国际标准化组织(ISO)字符标准)来存储和操作字符串,全部用两个字节表示一个字符VB为了保持与ASCII码的兼容性3.4常用内部函数VB提供StrConv()函数作为Unicode与DBCS之间的转换。Len()函数求字符串的字符数、LenB()函数求字符串的字节数,以适应不同软件系统的需要,StrConv()函数格式为:转换后的字符串=StrConv(待转换字符串,转换格式)转换格式:用来指定转换成哪种格式的字符串,与DBCS编码和Unicode编码转换有关的有2个值:vbUnicode(值为64)‘将DBCS字符串转换为UnicodevbFromUnicode(值为128)‘将Unicode字符串转换为DBCS3.4常用内部函数(2)字符串函数

VB的字符串函数相当丰富,给字符类型变量的处理带来了极大的方便。在立即窗口中可以试验这些函数。3.4常用内部函数4.日期函数3.4常用内部函数5.格式输出函数使用格式

Format$(表达式[,“格式字符串”])功能:按指定格式返回表达式,常用在print方法中。例如:Format$(“ABC”,“<”)‘输出为:abc表达式:可以是数值、日期或字符串型表达式。格式字符串:表示输出表达式时采用的输出格式。不同数据类型所用的格式字符串不同。(1)数值格式化:见P54表3.4.5(2)日期和时间格式化:见P54表3.4.63.4常用内部函数练习:写出下列函数或表达式的输出结果left(“abc”,2)mid(“abcdefghk”,4,3)int(rnd(0)+1)+int(rnd(1)-1)int(-3.14159)fix(-3.1415926)int(abs(99-100)/2)sgn(7*3+2)lcase(“HELLO”)len(“hello”)Date()time()Format(124.56,”####.000”)答案:abdef0-4-301hello52013-4-1time()124.560程序设计的三种基本结构:顺序结构、条件结构、循环结构。条件语句1语句2YN语句1语句2(2)选择结构3.5基本语句(1)顺序结构条件(a)条件语句组(3)循环结构a)先判断后执行b)先执行后判断YNYN(b)语句组3.5基本语句结构化程序设计思想:自顶向下、逐步细化、模块化自顶向下:先从全局、整体设计逐步细化:将一个问题分解成几个较小的问题解决模块化:将一个大任务分解成若干个较小的部分,每个部分承担一定功能,称为“功能模块”3.5基本语句3.5.1顺序结构.赋值语句

形式:变量名=表达式对象.属性=表达式功能:将表达式的值赋值给变量名或指定对象的属性。一般用于给变量赋值或对控件设定属性值.

例:sRate!=0.1Text1.Text=

"欢迎使用VisualBasic6.0”3.5基本语句说明:

1)执行过程:先求表达式的值,然后将值赋值给左边的变量。

2)右边表达式可以是变量、常量、函数调用等特殊的表达式。

3)不要将“=”理解为数学上的等号:

A=A+1是表示将A单元的值加1后以放回到A单元。3.5基本语句4)赋值符号“=”左边一定只能是变量名或对象的属性引用,不能是常量、符号常量、表达式。下面的赋值语句都是错的:5=X'左边是常量。

Abs(X)=20‘左边是函数调用,即是表达式。5)赋值符号“=”两边的数据类型一般要求应一致3.5基本语句注释语句语法格式:Rem<注释内容>或

'<注释内容>说明:1.在Rem关键字和注释内容之间要加一个空格。2.如果在其他语句行后面使用Rem关键字,必需用冒号与语句隔开。若用英文单引号“'”,则在其他语句行后面不必加冒号。例:ConstPI=3.1415925'符号常量PIS=PI*r*r:Rem计算圆的面积3.5基本语句

输入、输出语句

1.输入语句在程序运行时,用户需要输入数据。输入数据的方法有很多种,如文本框(TextBox)、InputBox函数、选项钮(OptionButton)、列表框(ListBox)等。(1)用文本框输入或显示文本文本框是最常用的输入控件。用TextBox控件可以方便地在运行时让用户输入和编辑文本。

3.5基本语句【例3.6】设计一个程序,计算某学生成绩的平均分,利用文本框作数据的输入和办公输出。如图所示。

图3.5.1程序运行结果3.5基本语句(2)用InputBox函数输入数据作用:打开一个对话框,等待用户输入内容,当单击“确定”按钮或回车键时,函数返回输入类型为字符串的值.格式:InputBox(提示[,标题][,默认][,x坐标][,y坐标])

“提示”:是字符串表达式,在对话框中作为信息显示,可为汉字。若要在多行显示,必须在每行末加回车Chr(13)和换行Chr(10)控制符,或直接使用VB内部常数vbCrLf。3.5基本语句“标题”:字符串表达式,在对话框的标题区显示。若省略,则把应用程序名放入标题栏中。“默认”:字符串表达式,当在输入对话框中无输入时,则该默认值作为输入的内容。“x坐标位置”、“y坐标位置”:整型表达式,坐标确定对话框左上角在屏幕上的位置,屏幕左上角为坐标原点,单位为twip。3.5基本语句【说明】InputBox()函数中各项参数次序必须一一对应,除了“提示”一项不能省略外,其余各项均可省略,处于中间的默认部分要用逗号占位符跳过。【例3.7】用InputBox函数接收圆的半径r,求圆面积s。

3.5基本语句2.输出语句程序运行得到的结果大多都在在屏幕或打印机上输出。

在VisualBasic6.0中具有丰富的输出功能,可以通过Print方法、标签(Label)、文本框等实现。3.5基本语句(1)用Label标签输出文本标签控件(Label)是最简单的文本显示控件。它常用于区分窗体上的不同项目。一般在设计时建立,显示说明内容通过赋值给Caption属性。同时,标签控件也可以在运行时对Caption属性赋值显示任意内容。【例3.7】用Label控件显示字符串3.5基本语句(2)用Print方法输出Print方法用于在窗体、立即窗口、图片框、打印机等对象中显示文本字符串和表达式的值。格式:[对象表达式.]

Print[<表达式>][,|;]例:Form1.Print“Hello”3.5基本语句【说明】对象名:可以是窗体(Form)、图形框(PictureBox)、立即窗口(Debug)或打印机(Pinter)。若省略了对象,则在窗体上输出。表达式列表:指要输出的数值或字符串表达式,对于数值型表达式,输出表达式的值;而字符串则照原样显示。若省略,则输出一个空行,多个表达式之间用空格、逗号、分号分隔,也可出现Spc和Tab函数。默认为打印对象的左上角(0,0)。3.5基本语句当输出多个表达式或字符串时,各表达式用分割符隔开

;(分号):表示光标定位在上一个显示的字符后。,(逗号):表示光标定位在下一个打印区的开始位置处,打印区每隔14列开始。空格即无“;”或“,”:表示输出后换行。Print方法具有计算和输出双重功能,没有赋值功能如:x=10:y=20:Print(x+y)/5是正确的。3.5基本语句【例3.8】按指定的尺寸、颜色和外观,把文本输出到窗体的中间。3.5基本语句3.MsgBox()函数和MsgBox过程其功能是打开一个信息框,等待用户选择一个按钮。MsgBox函数格式:变量[%]=MsgBox(提示[,按钮][,标题])MsgBox过程用法:MsgBox提示[,按钮][,标题]3.5基本语句其中:“提示”和“标题”:意义与InputBox函数中对应的参数相同。“按钮”:整型表达式,用来控制在信息框内显示的按钮、图标的种类和数量,该参数的值由4类数值相加产生,这4类数值或符号常量分别表示按钮类型、显示图标的种类、活动按钮(默认按钮)的位置及强制返回模式。按钮设置值及意义见60页表3.5.3。3.5基本语句【说明】

(1)以下按钮的四组方式可以组合使用(可以用内部常数形式或按钮值形式表示)。(2)以应用模式建立信息框,则必须响应信息框才能继续当前的应用程序。若以系统模式建立信息框时,所有的应用程序都将被挂起,直到用户响应了信息框为止。3.5基本语句MsgBox函数返回值是一个整数值,这个返回值与所选的按钮有关,所选按钮返回数值的意义见表3.5.4。【例3.10】编写一个程序,用MsgBox函数判断是否继续执行。【例3.11】编一个账号和密码检验程序。

3.5基本语句3.5.2选择结构

VB应用程序开发中,常常需要对给定的条件进行分析、比较和判断,主要包括选择(判断)语句和循环语句两种上。

选择(判断)语句可根据不同的判断结果采取不同的操作。

选择语句包括If语句和SelectCase语句。

3.5基本语句If条件语句1、单分支结构:If…Then语句1)多行语句格式(须以EndIf结尾):If条件表达式

Then

处理语句

EndIf2)单行语句格式(不需要EndIf结尾):

If条件表达式

Then

处理语句

3.5基本语句例:已知两个数x和y,比较它们的大小,使得x大于y.3.5基本语句

Ifx<yThent=x:x=y:y=tEndIf或Ifx<yThent=x:x=y:y=t2.双分支结构:If…Then…Else语句1)多行语句格式If条件表达式

Then

处理语句1Else

处理语句块2EndIf2)单行语句格式

If

条件表达式

Then

处理语句1Else

处理语句2

双分支选择结构执行过程3.5基本语句例如:输出x,y两个中值较大的一个值。IFX>YThenPrintXElsePrintYEndIf也可以写成如下的单行形式:

IFX>YThenPrintXElsePrintY3.5基本语句3.多分支结构:If…Then…ElseIf语句

一般形式:If条件表达式1Then

处理语句1 ElseIf条件表达式2Then

处理语句2 … Else

处理语句n+1 EndIf【例3.12】输入某课程的百分制成绩score,并显示对应五级制评定结果。执行过程3.5基本语句4.If语句的嵌套If语句的嵌套是指If或Else后面的语句块中又包含If语句。语句一般格式如下:

If条件表达式1ThenIf条件表达式2Then……EndIfEndIf【例3.13】已知x、y、z三个变量中分别存放了3个不同的数,比较它们的大小并进行调整,使得x>y>z。3.5基本语句SelectCase语句一般格式如下:

SelectCase变量或表达式

Case表达式列表1

语句块1 Case表达式列表2

语句块2 … CaseElse

语句块n+1 EndSelect数值型或字符串表达式3.5基本语句说明:1、<变量或表达式>是必要参数2、<变量或表达式>与<表达式列表>同类型的下面三种形式之一:1)一组枚举表达式(用逗号分隔)2,3,5,82)表达式1To表达式2 60To1003)Is关系运算符表达式Is<603.5基本语句3、SelectCase语句的作用是根据<变量或表达式>中的结果与各Case子句中的<表达式列表>的值比较,根据比较结果确定执行相应用应的语句块,若有多个Case子句中的<表达式列表>的值与<变量或表达式>中的结果相匹配,则只执行第一个与之匹配的语句块。3.5基本语句例3.14某超市采用购物打折的方法价格折扣幅度150元以下0150~350元

90%350~600元85%600~900元80%900~1500元75%1500元以上70%【分析】设打折前的价格为x元,打折后的价格为y元。依据题意,可以得出x和y的关系:

x×0.90150≤x<350x×0.85350≤x<600y=x×0.80600≤x<900x×0.75900≤x<1500x×0.70x≥1500

xx<150

3.5基本语句SelectCasexCaseIs<150y=xCaseIs<350y=x*0.9CaseIs<600y=x*0.85CaseIs<900y=x*0.8CaseIs<1500y=x*0.75CaseElsey=x*0.7EndSelect

3.5基本语句IIF()函数和Choose()函数IIF()函数和Choose()函数,前者代替IF语句,后者可代替SelectCase语句,均适用于简单的判断场合,使程序大大简化。

(1)IIF函数格式:

IIF(条件表达式,当条件为True时的值,当条件为False时的值)3.5基本语句例如:Ifa>0ThenSum=1ElseSum=2Endif则可用IIf()函数表示为:Sum=IIf(a>0,1,2)

3.5基本语句(2)Choose()函数格式:Choose(整数表达式,选项列表)作用:Choose()函数根据整数表达式的值来决定返回选项列表中的某个值。如果整数表达式值是1,则Choose会返回选项列表中的第1个选项;如果整数表达式值是2,则会返回选项列表中的第2个选项,……,以此类推。若整数表达式的值小于1或大于列出的选项数目时,Choose()函数返回Null。3.5基本语句例如,根据Nop是l~4的值,转换成+、-、×、÷运算符的语句如下:Op=Choose(Nop,”+”,”-”,”×”,”÷”)当值为1时,返回字符串“+”,然后放入Op变量中;当值为2时,返回字符串“-”……依次类推。当Nop是l~4的非整数时,系统会自动使用取Nop的整数进行判断;若Nop不在1~4之间,函数返回Null值。

3.5基本语句SelectCasenopCase1op=“+”Case2op=“-”Case3op=“×”Case4op=“÷”CaseElseop=“”

EndSelectOp=Choose(Nop,”+”,”-”,”×”,”÷”)3.5基本语句3.5.3

循环结构For循环语句一般用于循环次数已知,计数型循环语句形式:

For循环变量=初始值to结束值[Step步长]

循环语句

[ExitFor]

循环语句

Next循环变量循环体3.5基本语句>0初值<终值步长=1时,可省略<0初值>终值=0死循环

步长1、计数型循环语句;2、条件型循环语句;

循环变量:也称“循环控制变量”,或“循环控制器”,必须为数值型。初值与终值:为数值表达式。步长:一般为正,初值应小于等于终值;若为负,初值应大于等于终值;默认为1。语句块:可以是一句或多句语句,构成循环体。ExitFor:表示当遇到该语句时,退出循环,执行Next后的下一条语句。3.5基本语句该语句执行的过程为:(1)循环变量被赋初值,它仅被赋值一次。(2)判断循环变量是否在终值内,如果是,执行循环体;如果否,结束循环,执行Next后的下一句语句。(3)循环变量加步长,转(2),继续循环。一个For-Next语句的循环次数n计算公式为:n=int((终值-初值)/步长+1)。3.5基本语句循环次数例:ForI=2To13Step3PrintI,NextIPrint“I=“,I循环执行次数输出I的值分别为:25811出了循环输出为:I=14

3.5基本语句【例3.15】计算5!(5的阶乘)【例3.16】将可打印的ASCII码制成表格输出,使每个字符与它的编码值对应起来,每行打印5个字符。3.5基本语句2.Do…Loop循环语句

形式1:(先判断后执行)

Do{While|Until}<条件>

循环语句块

[ExitDo]

循环语句块

Loop3.5基本语句

形式2:(先执行后判断)Do

循环语句块

[ExitDo]循环语句块Loop{While|Until}<条件>3.5基本语句条件语句块语句块TFExitDo条件语句块语句块TFExitDoDoUntil…Loop执行过程Do…LoopUntil执行过程3.5基本语句说明:(1)形式1为先判断后执行,有可能一次也不执行。形式2为先执行后判断,至少执行一次。两种形式(指While)的流程分别如图3.5.9和图3.5.10所示。

(2)关键字While用于指明条件为真(True)时就执行循环体中的语句,Until正好相反,它是指在条件变为True值前,重复执行循环体。3.5基本语句

(3)当省略{While|Until}<条件>子句时,即循环结构仅由Do…Loop关键字构成,表示无条件循环,这时在循环体内应该有ExitDo语句,否则为死循环。ExitDo语句表示当遇到该语句时,退出循环,执行Loop后的下一句语句。【例3.17】2003年我国GDP为10万亿元人民币,近几年我国GDP增长率年均为8%,按此增长速度,多少年后我国GDP超过20万亿。3.5基本语句3.循环的嵌套——多重循环结构

如果在一个循环内完整地包含另一个循环结构,则称为多重循环,或循环嵌套,嵌套的层数可以根据需要而定,嵌套一层称为二重循环,嵌套二层称为三重循环。上面介绍的几种循环控制结构可以相互嵌套,下面是几种常见的二重嵌套形式:3.5基本语句(3)DoWhile….…..

ForJ=….….NextJ…..Loop(4)DoWhile/Until….…..

DoWhile/Until….….Loop…..Loop(1)ForI=….…..

ForJ=….….NextJ…..NextI(2)ForI=….…..

DoWhile/Until….….Loop…..NextI3.5基本语句对于循环的嵌套,要注意以下事项:(1)内循环变量与外循环变量不能同名;(2)外循环必须完全包含内循环,不能交叉;

(3)不能从循环体外转向循环体内,也不能从外循环转向内循环.

3.5基本语句正确

Forii=1To10Forjj=1To20… Nextii Nextjj

Forii=1To10Forii=1To20… Nextii Nextii

Forii=1To10Forjj=1To20… NextjjNextiiForii=1To10…NextiiForii=1To10…Nextii3.5基本语句错误例3.18:打印九九乘法表.

Fori=1To9

Forj=1Toise=i&"×"&j&"="&i*jPicture1.PrintTab((j-1)*9+1);se;NextjPicture1.PrintNexti改为Forj=ito9,结果如何?3.5基本语句3.6数组数组的概念:数组是用相同名字引用的一系列变量,并用数字(索引)来识别。数组有上界和下界,且元素在数组的上下界内是连续的。一个数组中的所有元素都具有相同的数据类型。3.6数组当数据类型Variant时,各个元素能够包含不同种类的数据(对象、字符串、数值等)。可以声明任何基本数据类型的数组,包括用户自定义类型和对象变量。两种类型的数组:固定大小的数组和动态数组。其表示形式:

A(1),A(10)X(1,1),X1(1,10),X(2,10)Y(0,0,0),Y(1,2,5)3.6.1静态数组静态数组通常是指在编译时开辟内存区的数组。静态数组的数组元素的个数是在数组声明时确定的,在系统运行中个数不变。

对于静态数组有三种方法:声明全局数组、声明模块级数组,声明局部数组。

3.6数组在声明数组时,数组名之后跟一个用括号括起来的界标。界标的取值不得超过Long数据类型的范围,即-2147483648至2147483647。

1.声明静态数组声明静态数组必须给定该数组的有效范围。定义数组的格式如下:Public|Private|Static|Dim<数组名>(<第一维说明>[,<第二维说明>]……)[As<类型>]3.6数组【说明】a.建立公用数组,在模块的声明段用Public或Dim语句声明数组。b.建立模块级数组,在模块的声明段用Private或Dim语句声明数组。c.建立局部数组,在过程中用Dim或Private语句声明数组。3.6数组2.数组的上界、下界数组的上、下界指的是数组下标可以使用的最大值和最小值。声明数组时,在数组名之后用括号括起来的数字就表示各维大小的上界,上界不得超过Long数据类型的范围:(-2147483648~2147483647)。3.6数组2.数组的上界、下界在复制下界的情况下,数组的下界都是从0开始的,用户也可以自己定义下界,这可以通过使用关键字To来实现,格式如下:Dim<数组名>(<下界>To<上界>)例如,下列两个下界的定义都是合法的:DimA(2To200)DimB(-l0To20)DimC(0To10,lTo10)3.6数组还允许使用OptionBase来指定下界,但是这种方法只能指定下界为0或1。OptionBasic必须在窗体或者模块中使用,不允许在过程或函数中使用。OptionBase和OptionExplicit一样,都会影响整个窗体或者模块中的数组声明。3.6数组3.包含其他数组的数组用户可以建立Variant类型的数组,使用这种数组,可使得不同的数据类型在数组中共同使用。4.多维数组只是要在数组名后的括号中增加一些索引下标。格式:Dim数组名(下标l[,下标2…])[As类型]其中:1)下标个数:决定了数组的维数,在VB中最多允许有60维数组。3.6数组2)每一维的大小:上界-下界+l。数组的大小为每一维大小的乘积。例如:DimLA(0To3,0T04)AsLong

或DimLA(3,4)AsLong都是声明了一个长整型的二维数组LA,第一维下标范围为0~3,第二维下标范围为0~4,共占据4×5个长整型变量的空间。3.6数组例如:Dima(2,3)AsSingle

二维数组在内存的存放顺序是“先行后列”。例如数组a的各元素在内存中的存放顺序是:a(0,0)→a(0,1)→a(0,2)→a(0,3)→a(1,0)→a(1,1)→a(1,2)→a(1,3)→a(2,0)→(2,1)→a(2,2)→a(2,3)3.6数组【注意】Static语句只能出现在过程中,Dim语句不仅能出现在过程中,也能出现在通用声明中出现在过程中的Static定义的变量或数组,过程执行结束后不释放内存;出现在过程中的Dim定义的变量或数组,过程执行结束后释放内【例3.19】用Static语句定义数组,过程执行时每元素加1并输出【例3.20】用Static定义过程,延长了过程中局部变量的生命周期,但不改变有效范围。

1272023/9/223.6数组练习题:二维数组的输出输出如下图所示的下三角数据Dimsc(5,5)AsInteger,i%,j%Fori=1To5Forj=1Toisc(i,j)=i*5+jPrintsc(i,j);"";NextjPrint'换行

NextI3.6数组3.6.2动态数组

计算机在执行过程中才给数组开辟存储空间,当不需要时,可能用Erase语句删除它,收回分配给它的存储空间,还可以用Redim(或Dim)语句再次分配存储空间。这样的数组就叫动态数组。1.动态数组的定义在声明数组时省略括号中的下),当要使用它时,随时用ReDim语句重新指出大小的数组。使用动态数组的优点是可根据用户需要,有效地利用存储空间。3.6数组例:RedimA(10)RedimPreserveA(20)声明:ReDim<数组名>(<下标1>[,<下标2>…])[As<类型>]其中:下标可以是常量,也可以是有了确定值的变量。类型可以省略,若不省略,必须与Dim声明语句保持一致。使用:在过程中用ReDim语句指明该数组的大小。

ReDim[Preserve]数组名(下标1[,下标2…])Preserve参数:保留数组中原来的数据

3.6数组说明:(1)在静态数组声明中的下标只能是常量,在动态数组ReDim语句中的下标可以是常量,也可以是有了确定值的变量。(2)在过程中可多次使用ReDim来改变数组的大小,也可改变数组的维数。3.6数组(3)每次使用ReDim语句都会使原来数组中的值丢失,可以在ReDim语句后加Preserve参数用来保留数组中的数据,但使用Preserve只能改变最后一维的大小,前面几维大小不能改变。

3.6数组

3.6.3控件数组

1、控件数组的概念

一组相同类型的控件组成。它们共用一个控件名,具有相同的属性,建立时系统给每个元素赋一个唯一的索引号(Index)。控件数组共享同样的事件过程,通过返回的下标值区分控件数组中的各个元素。

3.6数组例:PrivateSubcmdName_Click(IndexAsInteger)…IfIndex=3then

处理第四个命令按钮的操作

EndIf…EndSub3.6数组2、控件数组的建立1)在设计时建立控件数组的步骤:a.窗体上画出控件,进行属性设置,这是建立的第一个元素;b.选中该控件,进行“Copy”操作若干次和“Paste”操作若干次建立了所需个数的控件数组元素。c.进行事件过程的编程。

3.6数组2)运行时添加控件数组的步骤如下:a.在窗体上画出某控件,设置该控件的Index值为0,表示该控件为数组,这是建立的第一个元素,并可对一些取值相同的属性进行设置,如所有文本框的字体都取一样大小。b.在编程时通过Load方法添加其余的若干个元素,也可以通过Unload方法删除某个添加的元素。3.6数组Load方法和Unload方法的使用格式:

Load控件数组名(<表达式>)Unload控件数组名(<表达式>)其中,<表达式>为整型数据。表示控件数组的某个元素。c.通过Left和Top属性确定每个新添加的控件数组元素在窗体的位置,并将Visible属性设置为True。3.6数组【例3.21】设计窗体,输入两个数,根据不同运算符计算结果

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论