




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第5章 VB程序设计语句,5.1 赋值语句 赋值语句是任何程序设计语言中最基本的语句。 格式:LET 变量名=表达式 功能:它的作用是把右边表达式的值赋给左边的变量。 说明: (1)LET表示赋值,通常可以省略。 (2)表达式的类型应与变量的类型一致,即同时为数值型或同时为字符型。当是数值型且有不同精度时,强制转换成左边的精度。,5.1 赋值语句,例如:A%=6.3 A为整型变量 A中的结果为6 在VB中,赋值语句通常是给变量赋值和设置对象属性值。 1.给变量赋值 例如: Dim A As Integer Dim B As String*10 A=100 B=我是中国人 可以将一个表达式的值赋
2、给一个变量,所以下面的赋值语句是合法的: Dim S As Integer Dim P As Single S=600+1000 P=3.14*S+200*500,5.1 赋值语句,2.为对象设置属性值 在程序中可以用赋值语句为对象的属性设置属性值。 格式:对象.属性=属性值 例如:为命令按钮Command1的Caption属性设置值。 Command1.Caption=显示文本 为文本框Text1的FontName及FontSize属性设置值: Text1.FontName=“隶书” Text1.FontSize=32,5.2 条件语句,VB提供了多种形式的条件语句来实现选择结构。对条件进行
3、判断,根据判断结果,选择执行不同的分支。,5.2.1 分支结构,1.单分支结构(IfThen语句)格式: (1) If条件Then 语句块 End If (2) If条件Then语句 功能: (1)如果条件为真,执行Then后面的语句块,如果条件为假,不执行Then后面的语句块,而执行End If后的语句。如图5.1所示。 (2)如果条件为真,执行Then后面的语句,如果条件为假,不执行Then后面的语句。,5.2.1 分支结构,2.双分支结构(IfThenElse语句)格式: If条件Then 语句块1 Else 语句块2 End If 功能:如果条件为真,执行Then后面的语句块1,如果条
4、件为假,执行Else后面的语句块2。 【例5.1】计算分段函数。用双分支结构实现: y=sinx+(x2+1) x0 y=cos-x3+3x x=0 If x0 Then y=sin(x)+(x*x+1) Else y=cos(x)-x3+3*x End If,5.2.1 分支结构,3.IIf函数 IIf函数可用来执行简单的条件判断操作,它是“IfThenElse”结构的简写版本。 格式:result=IIf(条件,True部分,False部分) 功能:当条件为真时,IIf函数返回“True部分”,而当条件为假时,IIf函数返回“False部分”。 说明:result函数的返回值,True部分
5、、False部分及结果变量的类型要一致。,IIf函数,例如: If x10 Then r=1 Else r=2 End If 而用IIf函数来代替,可以使程序大大简化。 r=IIf(x10,1,2) 【例5.2】某大学实行按学分收费,如果不超过12学分,应缴纳学费为4000元,如果超过12学分,每超过1学分,加收500元学费。输入学分U,输出学分U和应缴纳的学费T。 【例5.3】设计一个对输入整数求和的程序,输入0时程序结束运行。,5.2.1 分支结构,4.多分支结构(IfThenElseIf语句) 格式: If条件1Then 语句块1 ElseIf条件2Then 语句块2 Else 语句块n
6、+1 End If 功能:这种结构称为多分支结构。先测试条件1,如果条件1为真,执行Then后面的语句块1;如果条件1为假继续条件2,如果条件2为真,执行后面语句块2;。如此测试下去。如果所有条件都为假,则执行Else后面的语句块n+1。 【例5.4】在文本框中,输入学生成绩,判断其等级,在窗体中输出。,5.2.2 情况语句,情况语句(Select Case )的一般格式: Select Case测试表达式 Case表达式列表1 语句块1 Case表达式列表2 语句块2 Case表达式列表n 语句块n Case Else 语句块n+1 End Select 【例5.5】用户在文本框Text1中
7、分别输入:Dot,Line,Box,Circle,在窗体上分别画一个点、一条线、一个矩形、或一个圆等图形,然后在End Select语句出口。,5.3 循环语句,5.3.1 For循环 格式: For循环变量=初值To终值Step 步长 循环体 Exit For Next循环变量 功能: 当循环变量的值在初值到终值范围内时,执行一次循环体中的语句块,并使初值增加一个步长。当循环变量的值不在初值到终值范围内时,就退出循环,执行Next后面的语句。For循环语句执行的流程图如图5.5所示。,5.3.1 For循环,【例5.6】计算S=1+2+3+.+10的和。 计算机执行一个For 循环的过程是:
8、 (1)执行For 语句,把初值1赋给循环变量P即P=1,把终值10和步长1保存起来。 (2)按顺序执行循环体中的语句S=S+1,即S=1; (3)执行Next语句,把循环变量P增加一个步长1,P=P+1,即P=2,P不大于10,继续执行循环体S=S+P; (4)接着执行Next语句,如果P不大于10,就继续执行循环体,如果P大于10,就不再执行循环体,转向到Next语句后面的语句去执行。,5.3.2 Do循环,Do循环语句用于控制循环次数未知的循环结构。此种语句有两种语法形式。 格式1: Do While|Until条件 语句块 Exit Do 语句块 Loop 格式2: Do 语句块 Ex
9、it Do 语句块 Loop While|Until条件 功能:当指定的关键字While用于指明条件为真(True)时,执行循环体。,5.3.2 Do循环,说明: (1)格式1为先判断后执行,有可能一次也不执行;格式2为先执行后判断,至少执行一次循环体。两种格式的While的流程图分别如图5.6(a)和5.6(b)所示。 (2)关键字Until用于指明条件为假(False)时,执行循环体。 (3)Exit Do:当执行该语句时,退出循环,执行Loop的下一句。Exit Do一般放在IfThenEnd If语句中。,5.3.2 Do循环,下面是最简单的形式,While子句的作用是当给定的条件为真
10、时继续执行循环体,当条件为假时终止循环。 Do While条件 循环体 Loop 【例5.7】用Do While语句编写计算S=1+2+3+.+10的和的程序。,5.3.3 多重循环,在循环体内又包含了一个完整的循环结构,称为循环的嵌套。循环嵌套对For循环语句和DoLoop语句均适用。 【例5.8】打印九九表。程序运行结果如图5.7所示。,5.3.4 GoTo语句,格式: GoTo 标号、行号 功能:该语句的作用是无条件地转移到标号或行号指定的那行语句。 【例5.9】求100以内的素数。 判断某数m是否为素数的方法很多,最简单的方法是从素数的定义来求解,其算法思想是:对于m从i=2,3,m-
11、1判别m能否被i整除,只要有一个数能整除,m不是素数,否则m是素数。,5.3.5 End语句,格式:End 功能:结束程序的运行。它可放在任何一个事件过程中。,5.3.6 应用举例,【例5.10】求 S=1+3+5+99之和。 【例5.11】求 S=1*2*3*10之积。 【例5.12】二重循环的运行结果。 【例5.13】运行下列程序。 【例5.14】编写在窗口上显示如图5.8图案的程序。 【例5.15】设计一个计算1+2+3+.+.之和直到累加结果超过30000的程序。 【例5.16】用Do While循环,求 S=1+2+3+.+100之和。 【例5.17】用Do While循环,求 S=
12、5*4*3*2*1之积。 【例5.18】产生若干个随机数,直到有一个随机数大于0.9为止的程序。 【例5.19】产生50个两位随机整数的程序。 【例5.20】产生12个30100随机整数的程序。 【例5.21】输出150之间,能被3整除的数,并累加这些数的和。,5.4 数 组,5.4.1 数组的概念 S(0,0) S(0,1) S(0,2) S(0,3) S(0,4) S(1,0) S(1,1) S(1,2) S(1,3) S(1,4) S(2,0) S(2,1) S(2,2) S(2,3) S(2,4) S(6,0) S(6,1) S(6,2) S(6,3) S(6,4) 在VB中如果没有特
13、别的说明,数组元素的下标是从0开始的,即第一元素的下标为0。 数组分静态数和动态数组。在定义数组时已确定了数组的大小,称为静态数组。在定义数组时未给出数组的大小,省略了括号中的下标,称动态数组。,5.4.2 静态数组的定义,在VB中,可以用4个语句来定义数组。4个语句格式相同,但适应范围不一样。 Dim 用在窗体模块或标准模块中,定义窗体或标准模块数组,也可在过程中用。 ReDim 用在过程中。 Static 用在过程中。 Public 用在标准模块中,定义全局数组。 格式: Dim数组名(下标)As 类型 Dim数组名(下界 TO上界),下界 To上界As 类型,5.4.2 静态数组的定义,
14、功能:定义一个数组各维的大小,并分配相应的存储空间。 说明: (1)格式中的数组名与简单变量的命名规则相同。 (2)下标是数组的维数,可以用来定义多维数组,在一般情况下,若缺省上界,则数组元素下标的下界为0;当使用下界 To 上界时,下标的范围可以为-32 76832767。一维数组的大小为:(上界-下界+1)。 下界都必须小于上界。如果希望下标从1开始,可以通过Option Base语句来实现。 格式: Option Base N 功能:指定数组下标的缺省下界为1。 说明:如果不使用该语句,程序默认数组的下标下界为0。Option Base语句在程序中只能使用一次;使用时必须把它放在数组定义
15、之前才起作用。,5.4.2 静态数组的定义,(3)As 数据类型项,用来说明数组的类型,类型可以是: 整型 Integer 长整型 Long 单精度 Single 双精度 Double 字符串型 String 用户定义型 (4)DIM语句中的下标可以是常数,变量或表达式。下标全为常数称为静态数组,即数组大小在编译时是确定的。下标中有变量则称为动态数组,数组的大小是可变的,只有在程序运行时,变量有确定的值后,数组的大小才确定。 (5)数组必须先定义,后使用。 (6)当用Dim语句定义数组时,该语句把数值数组中的全部数组元素都初始化为0,而把字符串数组中的全部元素都初始化为空字符串。,5.4.2
16、静态数组的定义,例如: Dim A(4) As String 定义了类型为字符型的一维数组A,共有5个元素:A(0)、A(1)、A(2)、A(3)、A(4)。 Dim B(1,3 To 5) As Integer 定义了一个整型的二维数组,共有6个元素:B(0,3)、B(0,4)、B(0,5)、B(1,3)、B(1,4)和B(1,5)。 Dim S(5 To 5, 2 To 10 ) As String*20 定义S是一个定长字符串组成的二维数组,下标范围是55,210。每个数组元素的字符串长度是20。 Dim X(10) As Integer 定义了数组X,有11个元素 X(10)=100
17、对X(10)这个数组元素赋值为100,5.4.3 数组下标界的测试函数,有时需要知道数组的上界值和下界值,这可以通过LBound和UBound函数来测试。 格式: LBound(数组名,维) 格式: UBound(数组名,维) 功能: LBound函数返回一个数组中指定维的下界。UBound函数返回一个数组中指定维的上界。 【例5.22】 测试三维数组的每维的下界和上界的大小。,5.4.4 动态数组的定义,格式:ReDim 数组名(下标)As类型 功能:改变动态数组的大小和存储空间。 说明: 例如: Dim A(20,20,20) ReDim A(10,10,10) 重新定义动态数组A的空间
18、ReDim A(5,5,5) 再重新定义动态数组A的空间 此程序是采用动态数组,能根据应用的情况确定数组的大小,因此编写的程序有更强的实用性和通用性。,5.4.5 数组的清除和重新定义,在一个程序中,同一数组只能用Dim语句定义一次。但有时可能需要清除数组的内容或对数组重新定义,这可以用Erase语句来实现。 格式:Erase数组名,数组名 功能:用于重新初始化静态数组的元素,或者释放动态数组的存储空间。 例如: Dim T(10) As Integer Erase T 【例5.23】 用Erase语句初始化数组。,5.4.5 数组的清除和重新定义,程序是定义了一个静态数组T,用For循环语句
19、为每个数组的元素赋值,然后执行Erase语句,将各数组元素的值清除。程序的运行结果如下: 1 2 3 4 5 0 0 0 0 0,5.4.6 数组的基本操作,数组的基本操作包括输入、输出及复制,这些操作都是对数组元素进行的。 1.给数组元素赋初值 (1)利用For循环语句 Dim A(5) As Integer For I=1 To 5 A(I)=0 数组的每个元素值为0 Next (2)利用Array函数 在VB中可以使用Array函数为数组元素赋值,即把一个数据集赋值给某个数组。,利用Array函数,格式:数组变量名=Array(数组元素值) 功能:将数组元素值赋给数组各元素的值,各值之间
20、用逗号分隔。 说明:数组变量名是预先定义的数组名(定义时没有指定维数和上下界,并且类型必须为变量体类型Variant),在数组变量名之后没有括号。 【例5.24】 用Array函数给数组赋值。 说明: (1)利用Array函数对数组各元素赋值,定义数组时圆括号可以省略,其类型只能是Variant。 (2)数组的下界为零,上界由Array函数括号内的参数个数决定,也可通过函数UBound获得。,5.4.6 数组的基本操作,2.数组的输入 数组的输入可以用For循环语句及文本框控件输入,也可以通过InputBox函数输入。 (1)InputBox函数给数组赋值 【例5.25】 用InputBox函
21、数给数组赋值。 (2)用赋值语句给数组赋值 3.数组元素的输出 多维数组元素的输出和输入都可以通过多重循环来实现。由于VB中的数组是按行存储的,因此把控制数组第一维的循环变量放在最外层循环中。 【例5.26】 二维数组的输入与输出。,5.4.6 数组的基本操作,4.数组元素的复制 【例5.27】把N数组中的数据复制到M数组中,程序如下:,5.4.7 数组应用举例,【例5.28】用数组输入5个整数,按逆序排列。 【例5.29】用数组输入5个整数,找出最大的数。 【例5.30】求数组中最大元素值和所在的下标及各元素之和。 【例5.31】输入一个字符串,统计各字母出现的次数,字母不区分大小写。程序的
22、运行结分析: (1)统计26个字母出现的个数,要定义一个具有26个元素的数组,每个元素的下标表示对应的字母,元素的值表示对应字母出现的次数。 (2)从输入的字符串中逐一取出字符,转换成大写字符(使得大小写不区分),进行判断。 【例5.32】用选择法将数组排序。对于已知存放在数组中的n个数,用选择法按递增顺序排. 【例5.33】用冒泡排序法将数组排序。对于已知存放在数组中的n个数,用冒泡法递增顺序排序。,5.5 控件数组,前面我们介绍了数值数组和字符数组。在VB中,还提供了控件数组,它为处理一组功能相近的控件提供有力的方法。,5.5.1 控件数组的概念,控件数组是由一组相同类型的控件组成。他们共
23、用一个控件名,具有相同的属性,但通常有不同的属性值。当建立控件数组时,系统给每个元素赋一个惟一的索引号(Index),即下标,下标值由Index属性指定。通过属性窗口的Index属性,可以知道该控件的下标是多少,第1个元素下标是0,第2个元素下标是1,以此类推。其所有的元素的Name属性必须相同。控件数组共享同样的事件过程。例如,控件数组Command有3个命令按钮,不论单击哪个命令按钮,都会调用同一个事件过程。,5.5.1 控件数组的概念,为了区分控件数组中的各个元素,VB会把下标值传送给一个过程。例如,单击上述控件数组中的任意一个命令按钮时,调用的事件过程如下: Private Sub C
24、ommand_Click(Index As Integer) End Sub,5.5.2 控件数组的建立,控件数组是针对控件建立的,因此与普通数组的定义方法不一样。可以通过以下三种方法来建立控件数组。 1.在设计时建立控件数组方法一: (1)在窗体上画出作为数组元素的各个控件。 (2)单击要包含到数组中的某个控件,将其激活。 (3)在属性窗口中,选择Name属性,并输入控件的名称。当对第二个控件输入与第一个控件相同的名称后,VB将显示一个对话框,如图5.11所示,询问是否确实要建立控件数组。单击“是”按钮,将建立控件数组,单击“否”按钮,则放弃建立操作。,5.5.1 控件数组的概念,方法二:
25、(1)在窗体上画出一个控件,将其激活。 (2)执行“编辑”菜单中的“复制”命令(或者按Ctrl+C命令),将该控件放入剪贴板中。 (3)执行“编辑”菜单中的“粘贴”命令(或者按Ctrl+V命令),将显示一个对话框,询问是否建立控件数组,如图5.11所示。 (4)单击对话框中的“是”按钮,窗体的左上角将出现一个控件,它就是控件数组的第二个元素。 (5)重复执行“编辑”菜单中的“粘贴”命令(或者按Ctrl+V命令),可以建立控件数组的其他元素。 删除控件数组,只要改变一个控件的Name属性,并把Index属性置为空(不是0),就把该控件从控件数组中删除。,5.5.1 控件数组的概念,【例5.34】
26、建立3个命令按钮的控件数组,当单击某个命令按钮时,分别执行不同的操作。建立控件数组的操作步骤如下: (1)在窗体上建立一个命令按钮,并把其Name属性设置为cmdTest,然后用“编辑”菜单中的“复制”命令和“粘贴”命令复制两个命令按钮。 (2)把第一、第二、第三个命令按钮的Caption属性分别设置为“命令按钮1”、“命令按钮2”、“命令按钮3”。,5.5.1 控件数组的概念,2.在运行时添加控件数组 【例5.35】在窗体上建立一个命令按钮、两个单选按钮和一个图片框。每单击一次命令按钮,增加一个新的单选按钮。如果单击某个单选按钮,则在图片框中画出具有不同填充图案的圆。 本例需要4个控件,属性
27、的设置如表5.1所示。,5.6 过 程,VB的通用过程包括两大类:它们是Sub过程(即子程序)和Function过程(即函数)。,5.6.1 过程的定义,自定义子过程有两种方法:在“工具”菜单中定义和在代码窗口中定义。 1.在“工具”菜单中定义2.在代码窗口中定义 自定义子过程的格式如下: Public|PrivateStaticSub子过程名(形参表列) 语句块 Exit Sub 语句块 End Sub 功能:定义一个Sub过程。,5.6.1 过程的定义,说明: (1)Public:表示Sub过程是“公用”过程,可在整个程序范围被调用(但需要指明该子程序所在的对象名,如果在窗体 Form1中
28、定义了一个程序Sub1,在窗体From2中调用它,应该用:Call Form1.Sub1。 (2)Private:表示Sub过程是“私用”过程,只能被本窗体中的其他过程访问,不能被其他模块的过程访问。 (3)Static:表示该过程中的局部变量是静态变量,在过程被调用后其值仍然保留;如果省略“Static”,则局部变量就默认为“自动”的,即在每次调用过程时,局部变量被初始化为0或空字符串。Static对在过程之外的变量没有影响,即使这些变量在过程中使用。 (4)形参表列:是含在调用时传给该过程的简单变量名或数组名,各名字之间用逗号隔开。,5.6.1 过程的定义,“形参表列”指明了调用时传送给过
29、程的参数的类型和个数,每个参数的形式: ByVal(变量名()As 类型,) 参数也称形参或哑元,在定义时没有值。ByVal表示该过程被调用时,参数是值传递,否则引用传递。定义子过程或子函数时,都可以无参数,但函数过程无参数时,函数过程名后的括号不能省略。这是函数过程与子过程的区别。 (5)过程名:是长度不超过255个字符的变量名。其命名规则与变量命名规则相同。不要与VB中的关键字重名,也不要与Windows API函数重名,也不能与同一级别的变量同名。在同一个模块中,同一个名称,不能既用作Sub过程名,又用作Function过程名。 (6)Exit Sub:表示退出子过程。 (7)Stati
30、c:表示静态,Public:表示全局,Private:表示局部。 【例5.36】编写一个计算加减乘除的Sub过程。,5.6.2 过程的调用,在VB中可以用两种方法调用Sub过程。 (1) 使用Call语句调用Sub过程。 格式: Call 过程名(实参表列) 功能:调用过程。 说明:实参的个数、数据类型都要与被调用过程的参数一一对应。 例如下面是调用Compute过程的语句: a1=10.5 b1=10.5 Call Compute(a1,b1) 如果过程不带参数,Call语句中过程后的一对括号可以省去,例如有一过程Sum不带参数,调用语句只是一行: Call Sum 这是合法的。,5.6.2
31、 过程的调用,(2) 直接使用过程名调用Sub过程,而不必有Call。 格式: 过程名实参实参 功能:调用过程。 说明:不用括号把实参括起来。例如,也可以这样调用上面的过程: Compute a1,b1 不带参数的过程可以直接写过程名即可,假如Compute过程没有参数,以下调用是符合VB语法的: Compute 【例5.37】编写一个过程调用上面的过程Compute程序。,5.6.3 退出过程,在过程中可以对给出的条件测试,并根据测试的结果确定是否退出过程,如果要退出过程,则使用Exit Sub语句。 一进入过程,首先测试变量b的值是否等于0,如果b的值为0,立即退出Compute过程。避免
32、在执行过程中出现错误(被零除)。,5.6.4 Sub Main过程,如果一应用程序只包含一个窗体,则程序从执行窗体Form的Load过程开始。如果有多个窗体,则从设计阶段建立的第一个窗体开始执行。有时,希望在运行窗体程序之前先执行一些操作,此时,可以将这些操作写在Sub Main过程中。 Sub Main是在模块中定义的,如果一个程序中包含有多个模块,只能允许有一个Sub Main过程。Sub Main过程中可以包含若干语句。但它与其他语言中的主程序不同,程序启动时不会自动执行。人们可以指定程序从哪一个窗体或是Sub Main开始执行。方法如下:,方法为:,(1)选择VB主窗口中的“工程”菜单中的“属性”命令,打开“工程属性”对话框,单击“通用”选项,如图5.17所示。 (2)单击对话框中的“启动对象”框右端的箭头,显示出当前工程中各窗体的名字和Sub Main,可以定义启动工程时先启动的窗体或Sub Main。如果选择了Sub Main
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公园建设施工进度及保障措施分析
- 2024-2025学年度八年级组课外拓展计划
- 部编版四年级下册语文口语交际教学计划
- 智能家居SMT生产工艺流程详述
- 校园环境卫生与学生健康防治措施
- 文化传媒公司内部审计报告范文
- 过渡金属掺杂ZnO薄膜的制备及其光催化性能研究
- 发展型人力资源管理实践能否提升工作幸福感?-一个有调节的中介模型
- 天然植物精油成分在抑制甘薯块根发芽中的作用及转录组分析
- 基于深度强化学习的微波滤波器优化设计研究
- 2024年第四季度 国家电网工程设备材料信息参考价
- 信访业务知识培训课件
- 化疗药物外渗预防及护理
- 年度得到 · 沈祖芸全球教育报告(2024-2025)
- 《灯光照明设计》课件
- 2024版建筑资质借用服务与管理合同范本3篇
- 2024-2030年国家甲级资质:中国废旧电器电子产品回收处理融资商业计划书
- 中国近现代史基本问题专题研究
- 2024-2030年中国CAE行业市场竞争格局及投资模式分析报告
- 【MOOC】宋词经典-浙江大学 中国大学慕课MOOC答案
- 报错价格整改报告范文
评论
0/150
提交评论