VB程序设计语句.ppt_第1页
VB程序设计语句.ppt_第2页
VB程序设计语句.ppt_第3页
VB程序设计语句.ppt_第4页
VB程序设计语句.ppt_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

第5章VB程序设计语句 5 1赋值语句赋值语句是任何程序设计语言中最基本的语句 格式 LET 变量名 表达式功能 它的作用是把右边表达式的值赋给左边的变量 说明 1 LET表示赋值 通常可以省略 2 表达式的类型应与变量的类型一致 即同时为数值型或同时为字符型 当是数值型且有不同精度时 强制转换成左边的精度 5 1赋值语句 例如 A 6 3 A为整型变量A中的结果为6在VB中 赋值语句通常是给变量赋值和设置对象属性值 1 给变量赋值例如 DimAAsIntegerDimBAsString 10A 100B 我是中国人 可以将一个表达式的值赋给一个变量 所以下面的赋值语句是合法的 DimSAsIntegerDimPAsSingleS 600 1000P 3 14 S 200 500 5 1赋值语句 2 为对象设置属性值在程序中可以用赋值语句为对象的属性设置属性值 格式 对象 属性 属性值例如 为命令按钮Command1的Caption属性设置值 Command1 Caption 显示文本 为文本框Text1的FontName及FontSize属性设置值 Text1 FontName 隶书 Text1 FontSize 32 5 2条件语句 VB提供了多种形式的条件语句来实现选择结构 对条件进行判断 根据判断结果 选择执行不同的分支 5 2 1分支结构 1 单分支结构 If Then语句 格式 1 If 条件 Then 语句块 EndIf 2 If 条件 Then 语句 功能 1 如果 条件 为真 执行Then后面的 语句块 如果条件为假 不执行Then后面的语句块 而执行EndIf后的语句 如图5 1所示 2 如果 条件 为真 执行Then后面的 语句 如果条件为假 不执行Then后面的 语句 5 2 1分支结构 2 双分支结构 If Then Else语句 格式 If 条件 Then 语句块1 Else 语句块2 EndIf功能 如果 条件 为真 执行Then后面的 语句块1 如果 条件 为假 执行Else后面的 语句块2 例5 1 计算分段函数 用双分支结构实现 y sinx x 2 1 x 0y cos x 3 3xx 0Ifx0Theny sin x x x 1 Elsey cos x x 3 3 xEndIf 5 2 1分支结构 3 IIf函数IIf函数可用来执行简单的条件判断操作 它是 If Then Else 结构的简写版本 格式 result IIf 条件 True部分 False部分 功能 当 条件 为真时 IIf函数返回 True部分 而当 条件 为假时 IIf函数返回 False部分 说明 result函数的返回值 True部分 False部分 及结果变量的类型要一致 IIf函数 例如 Ifx 10Thenr 1Elser 2EndIf而用IIf函数来代替 可以使程序大大简化 r IIf x 10 1 2 例5 2 某大学实行按学分收费 如果不超过12学分 应缴纳学费为4000元 如果超过12学分 每超过1学分 加收500元学费 输入学分U 输出学分U和应缴纳的学费T 例5 3 设计一个对输入整数求和的程序 输入0时程序结束运行 5 2 1分支结构 4 多分支结构 If Then ElseIf语句 格式 If 条件1 Then 语句块1 ElseIf 条件2 Then 语句块2 Else 语句块n 1 EndIf功能 这种结构称为多分支结构 先测试 条件1 如果 条件1 为真 执行Then后面的 语句块1 如果 条件1 为假继续 条件2 如果 条件2 为真 执行后面 语句块2 如此测试下去 如果所有条件都为假 则执行Else后面的 语句块n 1 例5 4 在文本框中 输入学生成绩 判断其等级 在窗体中输出 5 2 2情况语句 情况语句 SelectCase 的一般格式 SelectCase 测试表达式 Case 表达式列表1 语句块1 Case 表达式列表2 语句块2 Case 表达式列表n 语句块n CaseElse 语句块n 1 EndSelect 例5 5 用户在文本框Text1中分别输入 Dot Line Box Circle 在窗体上分别画一个点 一条线 一个矩形 或一个圆等图形 然后在EndSelect语句出口 5 3循环语句 5 3 1For循环格式 For 循环变量 初值 To 终值 Step步长 循环体 ExitFor Next 循环变量 功能 当循环变量的值在初值到终值范围内时 执行一次循环体中的语句块 并使初值增加一个步长 当循环变量的值不在初值到终值范围内时 就退出循环 执行Next后面的语句 For循环语句执行的流程图如图5 5所示 5 3 1For循环 例5 6 计算S 1 2 3 10的和 计算机执行一个For循环的过程是 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 2Do循环 Do循环语句用于控制循环次数未知的循环结构 此种语句有两种语法形式 格式1 Do While Until 条件 语句块 ExitDo 语句块Loop格式2 Do语句块 ExitDo 语句块Loop While Until 条件 功能 当指定的关键字While用于指明 条件 为真 True 时 执行循环体 5 3 2Do循环 说明 1 格式1为先判断后执行 有可能一次也不执行 格式2为先执行后判断 至少执行一次循环体 两种格式的While的流程图分别如图5 6 a 和5 6 b 所示 2 关键字Until用于指明 条件 为假 False 时 执行循环体 3 ExitDo 当执行该语句时 退出循环 执行Loop的下一句 ExitDo一般放在If Then EndIf语句中 5 3 2Do循环 下面是最简单的形式 While子句的作用是当给定的条件为真时继续执行循环体 当条件为假时终止循环 DoWhile 条件 循环体 Loop 例5 7 用DoWhile语句编写计算S 1 2 3 10的和的程序 5 3 3多重循环 在循环体内又包含了一个完整的循环结构 称为循环的嵌套 循环嵌套对For循环语句和Do Loop语句均适用 例5 8 打印九九表 程序运行结果如图5 7所示 5 3 4GoTo语句 格式 GoTo 标号 行号 功能 该语句的作用是无条件地转移到标号或行号指定的那行语句 例5 9 求100以内的素数 判断某数m是否为素数的方法很多 最简单的方法是从素数的定义来求解 其算法思想是 对于m从i 2 3 m 1判别m能否被i整除 只要有一个数能整除 m不是素数 否则m是素数 5 3 5End语句 格式 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 用DoWhile循环 求S 1 2 3 100之和 例5 17 用DoWhile循环 求S 5 4 3 2 1之积 例5 18 产生若干个随机数 直到有一个随机数大于0 9为止的程序 例5 19 产生50个两位随机整数的程序 例5 20 产生12个30 100随机整数的程序 例5 21 输出1 50之间 能被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中如果没有特别的说明 数组元素的下标是从0开始的 即第一元素的下标为0 数组分静态数和动态数组 在定义数组时已确定了数组的大小 称为静态数组 在定义数组时未给出数组的大小 省略了括号中的下标 称动态数组 5 4 2静态数组的定义 在VB中 可以用4个语句来定义数组 4个语句格式相同 但适应范围不一样 Dim用在窗体模块或标准模块中 定义窗体或标准模块数组 也可在过程中用 ReDim用在过程中 Static用在过程中 Public用在标准模块中 定义全局数组 格式 Dim 数组名 下标 As类型 Dim 数组名 下界TO 上界 下界To 上界 As类型 5 4 2静态数组的定义 功能 定义一个数组各维的大小 并分配相应的存储空间 说明 1 格式中的数组名与简单变量的命名规则相同 2 下标是数组的维数 可以用来定义多维数组 在一般情况下 若缺省 上界 则数组元素下标的下界为0 当使用 下界To上界 时 下标的范围可以为 32768 32767 一维数组的大小为 上界 下界 1 下界都必须小于上界 如果希望下标从1开始 可以通过OptionBase语句来实现 格式 OptionBaseN功能 指定数组下标的缺省下界为1 说明 如果不使用该语句 程序默认数组的下标下界为0 OptionBase语句在程序中只能使用一次 使用时必须把它放在数组定义之前才起作用 5 4 2静态数组的定义 3 As数据类型 项 用来说明数组的类型 类型可以是 整型Integer长整型Long单精度Single双精度Double字符串型String用户定义型 4 DIM语句中的下标可以是常数 变量或表达式 下标全为常数称为静态数组 即数组大小在编译时是确定的 下标中有变量则称为动态数组 数组的大小是可变的 只有在程序运行时 变量有确定的值后 数组的大小才确定 5 数组必须先定义 后使用 6 当用Dim语句定义数组时 该语句把数值数组中的全部数组元素都初始化为0 而把字符串数组中的全部元素都初始化为空字符串 5 4 2静态数组的定义 例如 DimA 4 AsString定义了类型为字符型的一维数组A 共有5个元素 A 0 A 1 A 2 A 3 A 4 DimB 1 3To5 AsInteger定义了一个整型的二维数组 共有6个元素 B 0 3 B 0 4 B 0 5 B 1 3 B 1 4 和B 1 5 DimS 5To5 2To10 AsString 20定义S是一个定长字符串组成的二维数组 下标范围是5 5 2 10 每个数组元素的字符串长度是20 DimX 10 AsInteger定义了数组X 有11个元素X 10 100对X 10 这个数组元素赋值为100 5 4 3数组下标界的测试函数 有时需要知道数组的上界值和下界值 这可以通过LBound和UBound函数来测试 格式 LBound 数组名 维 格式 UBound 数组名 维 功能 LBound函数返回一个数组中指定维的下界 UBound函数返回一个数组中指定维的上界 例5 22 测试三维数组的每维的下界和上界的大小 5 4 4动态数组的定义 格式 ReDim 数组名 下标 As 类型 功能 改变动态数组的大小和存储空间 说明 例如 DimA 20 20 20 ReDimA 10 10 10 重新定义动态数组A的空间 ReDimA 5 5 5 再重新定义动态数组A的空间此程序是采用动态数组 能根据应用的情况确定数组的大小 因此编写的程序有更强的实用性和通用性 5 4 5数组的清除和重新定义 在一个程序中 同一数组只能用Dim语句定义一次 但有时可能需要清除数组的内容或对数组重新定义 这可以用Erase语句来实现 格式 Erase 数组名 数组名 功能 用于重新初始化静态数组的元素 或者释放动态数组的存储空间 例如 DimT 10 AsInteger EraseT 例5 23 用Erase语句初始化数组 5 4 5数组的清除和重新定义 程序是定义了一个静态数组T 用For循环语句为每个数组的元素赋值 然后执行Erase语句 将各数组元素的值清除 程序的运行结果如下 1234500000 5 4 6数组的基本操作 数组的基本操作包括输入 输出及复制 这些操作都是对数组元素进行的 1 给数组元素赋初值 1 利用For循环语句DimA 5 AsIntegerForI 1To5A I 0 数组的每个元素值为0Next 2 利用Array函数在VB中可以使用Array函数为数组元素赋值 即把一个数据集赋值给某个数组 利用Array函数 格式 数组变量名 Array 数组元素值 功能 将数组元素值赋给数组各元素的值 各值之间用逗号分隔 说明 数组变量名是预先定义的数组名 定义时没有指定维数和上下界 并且类型必须为变量体类型Variant 在数组变量名之后没有括号 例5 24 用Array函数给数组赋值 说明 1 利用Array函数对数组各元素赋值 定义数组时圆括号可以省略 其类型只能是Variant 2 数组的下界为零 上界由Array函数括号内的参数个数决定 也可通过函数UBound获得 5 4 6数组的基本操作 2 数组的输入数组的输入可以用For循环语句及文本框控件输入 也可以通过InputBox函数输入 1 InputBox函数给数组赋值 例5 25 用InputBox函数给数组赋值 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 输入一个字符串 统计各字母出现的次数 字母不区分大小写 程序的运行结分析 1 统计26个字母出现的个数 要定义一个具有26个元素的数组 每个元素的下标表示对应的字母 元素的值表示对应字母出现的次数 2 从输入的字符串中逐一取出字符 转换成大写字符 使得大小写不区分 进行判断 例5 32 用选择法将数组排序 对于已知存放在数组中的n个数 用选择法按递增顺序排 例5 33 用冒泡排序法将数组排序 对于已知存放在数组中的n个数 用冒泡法递增顺序排序 5 5控件数组 前面我们介绍了数值数组和字符数组 在VB中 还提供了控件数组 它为处理一组功能相近的控件提供有力的方法 5 5 1控件数组的概念 控件数组是由一组相同类型的控件组成 他们共用一个控件名 具有相同的属性 但通常有不同的属性值 当建立控件数组时 系统给每个元素赋一个惟一的索引号 Index 即下标 下标值由Index属性指定 通过属性窗口的Index属性 可以知道该控件的下标是多少 第1个元素下标是0 第2个元素下标是1 以此类推 其所有的元素的Name属性必须相同 控件数组共享同样的事件过程 例如 控件数组Command有3个命令按钮 不论单击哪个命令按钮 都会调用同一个事件过程 5 5 1控件数组的概念 为了区分控件数组中的各个元素 VB会把下标值传送给一个过程 例如 单击上述控件数组中的任意一个命令按钮时 调用的事件过程如下 PrivateSubCommand Click IndexAsInteger EndSub 5 5 2控件数组的建立 控件数组是针对控件建立的 因此与普通数组的定义方法不一样 可以通过以下三种方法来建立控件数组 1 在设计时建立控件数组方法一 1 在窗体上画出作为数组元素的各个控件 2 单击要包含到数组中的某个控件 将其激活 3 在属性窗口中 选择Name属性 并输入控件的名称 当对第二个控件输入与第一个控件相同的名称后 VB将显示一个对话框 如图5 11所示 询问是否确实要建立控件数组 单击 是 按钮 将建立控件数组 单击 否 按钮 则放弃建立操作 5 5 1控件数组的概念 方法二 1 在窗体上画出一个控件 将其激活 2 执行 编辑 菜单中的 复制 命令 或者按Ctrl C命令 将该控件放入剪贴板中 3 执行 编辑 菜单中的 粘贴 命令 或者按Ctrl V命令 将显示一个对话框 询问是否建立控件数组 如图5 11所示 4 单击对话框中的 是 按钮 窗体的左上角将出现一个控件 它就是控件数组的第二个元素 5 重复执行 编辑 菜单中的 粘贴 命令 或者按Ctrl V命令 可以建立控件数组的其他元素 删除控件数组 只要改变一个控件的Name属性 并把Index属性置为空 不是0 就把该控件从控件数组中删除 5 5 1控件数组的概念 例5 34 建立3个命令按钮的控件数组 当单击某个命令按钮时 分别执行不同的操作 建立控件数组的操作步骤如下 1 在窗体上建立一个命令按钮 并把其Name属性设置为cmdTest 然后用 编辑 菜单中的 复制 命令和 粘贴 命令复制两个命令按钮 2 把第一 第二 第三个命令按钮的Caption属性分别设置为 命令按钮1 命令按钮2 命令按钮3 5 5 1控件数组的概念 2 在运行时添加控件数组 例5 35 在窗体上建立一个命令按钮 两个单选按钮和一个图片框 每单击一次命令按钮 增加一个新的单选按钮 如果单击某个单选按钮 则在图片框中画出具有不同填充图案的圆 本例需要4个控件 属性的设置如表5 1所示 5 6过程 VB的通用过程包括两大类 它们是Sub过程 即子程序 和Function过程 即函数 5 6 1过程的定义 自定义子过程有两种方法 在 工具 菜单中定义和在代码窗口中定义 1 在 工具 菜单中定义2 在代码窗口中定义自定义子过程的格式如下 Public Private Static Sub子过程名 形参表列 语句块 ExitSub 语句块 EndSub功能 定义一个Sub过程 5 6 1过程的定义 说明 1 Public 表示Sub过程是 公用 过程 可在整个程序范围被调用 但需要指明该子程序所在的对象名 如果在窗体Form1中定义了一个程序Sub1 在窗体From2中调用它 应该用 CallForm1 Sub1 2 Private 表示Sub过程是 私用 过程 只能被本窗体中的其他过程访问 不能被其他模块的过程访问 3 Static 表示该过程中的局部变量是静态变量 在过程被调用后其值仍然保留 如果省略 Static 则局部变量就默认为 自动 的 即在每次调用过程时 局部变量被初始化为0或空字符串 Static对在过程之外的变量没有影响 即使这些变量在过程中使用 4 形参表列 是含在调用时传给该过程的简单变量名或数组名 各名字之间用逗号隔开 5 6 1过程的定义 形参表列 指明了调用时传送给过程的参数的类型和个数 每个参数的形式 ByVal 变量名 As类型 参数也称形参或哑元 在定义时没有值 ByVal表示该过程被调用时 参数是值传递 否则引用传递 定义子过程或子函数时 都可以无参数 但函数过程无参数时 函数过程名后的括号不能省略 这是函数过程与子过程的区别 5 过程名 是长度不超过255个字符的变量名 其命名规则与变量命名规则相同 不要与VB中的关键字重名 也不要与WindowsAPI函数重名 也不能与同一级别的变量同名 在同一个模块中 同一个名称 不能既用作Sub过程名 又用作Function过程名 6 ExitSub 表示退出子过程 7 Static 表示静态 Public 表示全局 Private 表示局部 例5 36 编写一个计算加减乘除的Sub过程 5 6 2过程的调用 在VB中可以用两种方法调用Sub过程 1 使用Call语句调用Sub过程 格式 Call过程名 实参表列 功能 调用过程 说明 实参的个数 数据类型都要与被调用过程的参数一一对应 例如下面是调用Compute过程的语句 a1 10 5b1 10 5CallCompute a1 b1 如果过程不带参数 Call语句中过程后的一对括号可以省去 例如有一过程Sum不带参数 调用语句只是一行 CallSum这是合法的 5 6 2过程的调用 2 直接使用过程名调用Sub过程 而不必有Call 格式 过程名 实参 实参 功能 调用过程 说明 不用括号把实参括起来 例如 也可以这样调用上面的过程 Computea1 b1不带参数的过程可以直接写过程名即可 假如Compute过程没有参数 以下调用是符合VB语法的 Compute 例5 37 编写一个过程调用上面的过程Compute程序 5 6 3退出过程 在过程中可以对给出的条件测试 并根据测试的结果确定是否退出过程 如果要退出过程 则使用ExitSub语句 一进入过程 首先测试变量b的值是否等于0 如果b的值为0 立即退出Compute过程 避免在执行过程中出现错误 被零除 5 6 4SubMain过程 如果一应用程序只包含一个窗体 则程序从执行窗体Form的Load过程开始 如果有多个窗体 则从设计阶段建立的第一个窗体开始执行 有时 希望在运行窗体程序之前先执行一些操作 此时 可以将这些操作写在SubMain过程中 SubMain是在模块中定义的 如果一个程序中包含有多个模块 只能允许有一个SubMain过程 SubMain过程中可以包含若干语句 但它与其他语言中的主程序不同 程序启动时不会自动执行 人们可以指定程序从哪一个窗体或是SubMain开始执行 方法如下 方法为 1 选择VB主窗口中的 工程 菜单中的 属性 命令 打开 工程属性 对话框 单击 通用 选项 如图5 17所示 2 单击对话框中的 启动对象 框右端的箭头 显示出当前工程中各窗体的名字和SubMain 可以定义启动工程时先启

温馨提示

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

评论

0/150

提交评论