Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 1页第 2章 VB可视化程序设计基础
模拟计算器程序设计
窗体
基本的输入 /输出控件
命令按钮
Visual Basic程序设计语言基础
基本语句
数组
过程
知识延伸 ——焦点
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 2页知识回顾
通过一个文字移动的例子,讲解
VB功能特色
集成开发环境
可视化编程的基本概念(类和对象)
可视化编程的基本步骤
工程管理和程序调试提问,什么是类?什么是对象?
提问,可视化程序设计的三种工作模式?
提问:可视化程序设计编程的基本步骤。
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 3页本章目标
熟悉窗体、标签、文本框和命令按钮的使用
掌握 VB的基本语法
掌握三种控制语句
掌握数组的定义和使用
掌握过程的定义和使用
能根据所学基础知识开发简单应用程序
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 4页引例二示例:模拟 Windows附件中的计算器。
要求:
1,存在两种运算模式:标准模式和科学模式。
2,在标准模式中进行简单的加、减、
乘、除操作。
3,在科学模式中还能进行 sqr,exp、
sin,cos操作。
4,同时在文本框上面显示当前所处的模式。
( 查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 5页
2.2 窗体
什么是窗体
在程序设计时,窗体是 设计的平台
在程序运行时,窗体是 应用程序与用户交互的平台
窗体由系统菜单、标题栏、最小化和最大化按钮、关闭按钮组成系统菜单 标题栏 最小化按钮 最大化按钮关闭按钮
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 6页窗体 —常用属性 (3-1)
示例:模拟黑板。 ( 单击查看代码 )
刚运行时 单击后 双击后
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 7页
Name
BackColor和 ForeColor
BorderStyle
Height和 Width
Caption
用来指定窗体的名称,在代码中用来引用窗体用来指定窗体的背景颜色和前景颜色用来指定窗体的边框样式用来指定窗体的高度和宽度,单位,twip
用来指定窗体的标题信息
( 单击查看补充材料 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 8页窗体 —常用属性 (3-2)
Left和 Top
StartUpPosition
Font
MaxButton和 MinButton
WindowState
指定窗体的左边缘距离容器左边缘的距离以及窗体顶端距离容器定顶端的距离,单位,twip
用来指定窗体首次出现时的位臵用来指定窗体上显示文本的字体(是一个对象)
指定窗体标题栏的最大化和最小化按钮是否显示指定窗体运行时的可见状态
0-手动
1-所有者中心
2-屏幕中心
3-窗口缺省
0-Normal
1-Minimized
2-Maximized
当 MaxButton和 MinButton两个属性中的一个设臵为 False时会怎样?两个都设臵为 False时又会怎样?
方法一
Form1.FontSize = 20
方法二
Form1.Font.Size = 20
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 9页窗体 —常用属性 (3-3)
Visible
Enabled
AutoRedraw
Picture
用来指定窗体是否可见指定窗体运行时是否可响应用户或系统的操作用来实现窗体上输出内容的持久显示如:当单击窗体时,窗体是否能否调用窗体单击事件过程即:当窗体由非激活状态转回到激活状态时,仍然能够显示原来输出的内容
用来设臵窗体上显示的图形
LoadPicture函数的使用Form1.Picture = LoadPicture("图形文件路径 ")
( 单击查看补充材料 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 10页窗体 —事件
Load (加载)事件
– 窗体被装入内存工作区时触发该事件
– 通常用来在启动程序时对属性和变量进行初始化
Click(单击)事件
– 鼠标单击窗体时触发
DblClick(双击)事件
– 鼠标双击窗体时触发
Resize事件
– 当窗体第一次显示或改变大小时触发
Resize事件使用。 ( 单击查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 11页窗体 —常用方法 ( 2-1)
Print
– 用于在窗体上输出数据
– 格式
[对象,]Print [{tab(n)|spc(n)][表达式列表 ][;|,]
Cls
– 清除 运行时 在窗体上显示的文本和图形
– 不能清除 设计阶段 窗体上的文本和图形
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 12页窗体 —常用方法 ( 2-2)
Show
– 用于显示一个窗体
Hide
– 用于暂时隐藏一个窗体,但窗体仍在内存
Move
– 用于移动并改变窗体或控件的位臵和大小
– 格式
[对象,]Move Left,[Top],[Width],[Height]
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 13页几个练习例题示例:
在 Load事件中通过代码为窗体和命令按钮的属性设置初始值。
单击按钮实现窗体向屏幕右下角移动,同时实现用 Print方法显示窗体的当前位置。
单击窗体实现窗体恢复至登录时的位置。
( 单击查看代码 )
示例:
在窗体上显示一个图片,使图片充满整个窗体
且在窗体大小发生变化的时,仍然是图片充满整个窗体
( 单击查看代码 ) (提示:需用 Image控件)
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 14页
2.3 基本的输入 /输出控件
标签
– 用于显示文本信息
– 起提示作用
– 在运行的时候用户不能直接录入信息
文本框
– 是一个文本编辑区域
– 用于输入、编辑、修改和显示文本信息
– 在运行的时候用户可以直接录入信息
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 15页标签 —属性 ( 2-1)
Caption
BorderStyle
BackStyle
Alignment
BackColor和 ForeColor
用标签制作浮雕效果文字。 ( 单击查看代码 )
用来设臵标签要显示的内容用来设臵标签有无边框
0-None 标签无边框(默认)
1-Fixed Single 标签有立体边框用来设臵标签背景是否透明
0-Transparent 透明
1-Opaque 不透明(默认)
用来设臵标签内文本的水平对齐方式
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 16页标签 —属性 ( 2-2)
AutoSize
– 设臵标签是否可以自动调整水平大小以显示所有内容
– 取值,True或 False
WordWrap
– 设臵标签是否可以自动调整垂直大小以显示内容
– 在 AutoSize属性取值为 True时,
WordWrap的取值才有效
AutoSize
True:标签控件宽度随文本改变而改变,
高度上只保存一行字的尺寸,不能换行
False:标签保持设计时的大小,如果内容太长,则只能显示一部分(默认值)
WordWrap
True:标签保持 水平大小不变,随文本大小其垂直展开或缩短
False:标签保持一行文字的垂直大小,水平方向随文本大小展开或缩短(默认值)
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 17页标签 —事件
Click
DblClick
在实际应用中,标签一般只起到显示文字和提示作用,因此一般不用编写事件过程
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 18页文本框控件用文本框制作一个登录界面。
窗体上有系统的标题
窗体上有用户名和密码的输入
单击,确定,按钮,判断输入的用户名和密码是否正确
如果正确,提示,欢迎光临!!!,
如果不正确,提示,用户名和密码错误,
请重新输入!,同时,清空密码文本框内容,
并把焦点放到用户名文本框,让用户重新输入
单击,取消,按钮,退出程序的运行
( 单击查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 19页文本框 —属性 ( 4-1)
Text
– 文本框没有 Caption属性
– Text属性设臵显示的文本信息
– 对文本框中字符格式的设臵将会影响文本框全部内容,不能只对部分内容设臵格式
MaxLength
– 设臵文本框允许输入的最大字符数
– 默认为 0,表示无限制
PassWordChar
– 设臵是否在文本框中显示用户键入的字符如 PassWordChar不为空,文本框中 显示指定字符,但此时 Text属性值 仍然为实际文本内容 ;否则,文本框显示实际输入文本内容。
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 20页文本框 —属性 ( 4-2)
SelStart,SelLength和 SelText
– 只能在运行时(即在代码中)设臵
– SelStart:选定文本的开始位臵,第一个字符的位臵是 0
– SelLength:选定文本的长度
– SelText:选定文本的内容
– 当同时设臵了 SelStart和 SelLength属性后,
被选中的内容自动存入 SelText属性
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 21页文本框 —属性 ( 4-3)
创建多行文本框,默认情况下,文本框只显示单行文本,无滚动条,不支持回车换行。
MultiLine
– 只能在设计时(即属性窗口中)设臵
– 只有在 ScrollBars为非零值时有效
– 取值为 True或 False
ScrollBars
– 只能在设计时(即属性窗口中)设臵
– 设臵文本框是否具有水平或垂直滚动条
ScrollBars
0-None 无滚动条
1-Horizontal 只有水平滚动条
2-Vertical 只有垂直滚动条
3-Both 具有水平和垂直两种滚动条
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 22页文本框 —属性 ( 4-4)
Enabled
– 设臵是否相应用户或系统的操作
– 取值为 True或 False
Locked
– 设臵文本框是否可以编辑
– 取值为 True或 False
两者的区别?
– 相同点:两者都不允许用户直接录入内容
– 不同点,Locked为 True时,可以接受焦点; Enabled为 False时,不能接受焦点。
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 23页属性类型总结
只能在设计阶段设臵的属性
MultiLine,ScrollBars
只能在运行阶段设臵的属性
SelStart,SelLength,SelText
可同时在运行和设计阶段设臵的属性问题:设计阶段选中某个控件,在属性窗口中显示该控件的所有属性。
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 24页练习例题示例:文本信息的复制
建立 4个文本框,其中两个文本框允许多行输入,两个文本框不允许多行输入
第一个文本框(源文本框),只有垂直滚动条,
且初始化一段文本信息
第二个文本框(目标文本框),具有水平和垂直两种滚动条,且文本为空
第三个文本框用来输入要复制文本的起始位置
第四个文本框用来输入要复制文本的长度
单击,确认,按钮,根据输入的要复制文本的起始位置和长度,把对应的源文本框的相应信息放到目标文本框中显示
( 单击查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 25页文本框 —事件
Click和 DblClick
Change
– 在改变文本框的 Text属性时触发该事件
– 问题:如果有 Text1_Change事件过程,
运行时用户在文本框中输入? Change”,
会触发几次 Text1_Change事件过程?
LostFocus
– 当文本框失去焦点时触发
GotFocus
– 当文本框获得焦点时触发
6次
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 26页练习例题示例:要求输入合法数字数据。
在第一个文本框输入信息,当输入结束时,判断数据是否有效
对于输入正确的数据,在第二个文本框中显示,正确!!,
对于输入错误的数据,则显示错误信息,
并清除第一个文本框中输入的信息,使焦点重新回到文本框
提示:判断是否为数字,使用函数
IsNumeric(参数 )
( 单击查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 27页
2.4 命令按钮
Caption
– 设臵命令按钮上显示的文本信息
– 可以设臵对应按钮的热键:输入 Caption
属性时,在要设臵为热键的字母前加? &”,
则该字母显示时有下划线示例:建立一个允许剪切、复制和粘贴的简单编辑程序,如下图所示。 ( 单击查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 28页命令按钮 —属性 ( 2-1)
Picture
– 设臵命令按钮中要显示的图形
– 必须在 Style属性设臵为 1-Graphical时有效
Style
– 设臵命令按钮的显示类型
– 0-Standard:标准类型,只能显示文本信息,不能显示图形和背景颜色
– 1-Graphical:图形类型,不仅可以显示文本信息,
还可以显示图形和背景颜色
ToolTipText
– 在运行时,在鼠标停留时显示的提示文本信息
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 29页命令按钮 —属性 ( 2-2)
Value
– 设计阶段无效,只能在运行时获取或设臵
– 用于检查或设臵按钮当前是否被按下
– True:按下 False:未按下
Default
– 设臵窗体中的某个命令按钮为缺省按钮
– 当按 Enter键时,相当于单击该按钮
Cancel
– 设臵窗体中的某个命令按钮为取消按钮
– 当按 Esc键时,相当于单击该按钮在同一窗体中,只能有一个命令按钮的 Default属性为 True,也只能有一个按钮的 Cancel属性为 True。
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 30页命令按钮 —事件
Click
按钮没有 DblClick事件
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 31页
2.5 VB程序设计语言基础
编码规则
数据类型
变量和常量
运算符和表达式
常用函数
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 32页编码规则
VB代码不区分字母的大小写
语句书写自由
– 在同一行可以书写多条语句,语句间用冒号?,”分隔
– 一条语句可以分若干行书写,此时在后面添加续行符( 一个空格后面跟一个下划线 )
– 一行允许多达 255个字符
注释有利于程序的维护和调试
– Rem:作为一个单独的语句出现
– 撇号? ‘?:可以直接出现在语句的后面
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 33页数据类型
标准数据类型
– 数值型( Numeric)
– 逻辑型( Boolean)
– 日期型( Date)
– 字符型( String)
– 可变型( Variant)
– 对象型( Object)
用户自定义类型标准数据类型
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 34页标准数据类型 ( 4-1)
数值类型
– 字节型( Byte)
– 整型( Integer):类型符为 %
– 长整型( Long):类型符为 &
– 单精度型( Single):类型符为 !
– 双精度型( Double):类型符为 #
– 货币型( Currency):类型符为 @
定点实数,最多保留小数点右边 4位和小数点左边 15位
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 35页标准数据类型 ( 4-2)
逻辑型( Boolean)
– 只有两个值,True,False
– 可以和数值互换
True,-1(非零值) False,0
– 例如,(1 + 2) And True?
True Xor Not 10?
字符型( String)
– 双引号是字符串的界定符
– VB用两个字节表示一个字符 (包括西文字符和中文字符)
– 采用的是 Unicode字符集
– 分为定长字符串和不定长字符串
– 如,"可视化程序设计 Visual Basic"
3或 True
10或 True
长度,19
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 36页标准数据类型 ( 4-3)
日期型( Date)
– 日期范围:从公元 100年 1月 1日到 9999年 12月 31日
– 时间范围:从 0:00:00到 23:59:59
– 用? #”把日期括起来如,#September 26,2004#,#9/26/2004#,
#2004-9-26 10:20:30 am#
– 用数字序列表示小数点左边:日期;小数点右边:时间参照时间,1899年 12月 31日 0:00:00
如,Dim T As Date,T = -2.5,Print T?
补充材料:国际化代码
1899年 12月 28日 12:00:00
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 37页标准数据类型 ( 4-4)
变体类型( Variant)
– 一种特殊的数据类型
– 是所有未定义变量的数据类型
– 对数据的处理取决于上下文的需要
– 例如:
Dim a As Variant
a = 10% ' a此时是整型
a =,VB” ' a此时是字符型
a = True ' a此时是布尔类型
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 38页自定义类型
是由用户自己定义的数据类型,它由若干个标准数据类型组成。
定义语句格式
[Private | Public] Type 类型名元素名 As 数据类型元素名 As 数据类型
……
End Type
例如
Type Student
Number As Integer
Name As String * 6
Age As Integer
Birthday As Date
Sex As Boolean
End Type
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 39页变量与常量
常量
– 在程序执行过程中保持不变的数据
– 文字常量如,3.14 20% True,VB”
– 符号常量:用标示符表示一个固定
Const 常量名 [As 数据类型 ] = 表达式通常常量名的所有字母都大写如,Const PI As Double = 3.1415926
– 系统常量,VB系统提供的符号常量如,vbMinimized(最小化)
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 40页变量与常量
变量
在程序运行过程中其值可以发生改变的量
每一个变量都有名字和数据类型
变量名用来唯一地标志每一个变量
数据类型表明了该变量的类型
变量的声明
显示声明
隐式声明(初学者最好不要使用隐式声明)
Public | Dim | Static | Private 变量名 As
数据类型 [,变量名 As 数据类型 …]
Public | Dim | Static | Private 变量名 <类型符 > [,变量名 <类型符 >…]
例如,Dim intA As Integer,intB%
隐式声明,不显式声明变量而直接使用
此时变量被 默认为 Variant数据类型
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 41页变量
变量的命名规则
– 必须以字母或汉字开头
– 由字母、汉字、数字和下划线组成
– 长度小于或等于 255个字符
– 不能使用 VB中的关键字
– VB中不区分变量名的大小写如,MyName,myname,myName是同一个变量
– 变量名由多个单词组成时,建议每个单词的第一个字母大写,其余字母小写变量的作用域单击窗体时,输出单击的次数 ( 查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 42页运算符
算术运算符
– /(浮点除) \(整除) %(取余)
关系运算符
– 两个汉字用拼音进行比较
– 汉字字符大于西文字符
逻辑运算符
– Not And Or或 Xor Eqv Imp
字符运算符
– + &
优先级(重点)
– 算术运算符 > 字符运算符 > 关系运算符 > 逻辑运算符
/(浮点除):同数学的除法,结果可以是小数
\(整除),对两数进行除法运算后取商的整数部分。若参与运算的两个数都是整数,则可直接进行运算。若参与运算的两个数中有实数,则先将实数的小数部分进行四舍五入,再进行运算。
%(取余),对两数进行除法运算后取商的余数部分。参与运算的两个数的处理同整除运算。
例如,16.5 \ 3 = 5
字符串只有连接运算
区别
+,两边必须是字符串
&:两边不一定是字符串,但必须有空格例如
"abcdef" & 12345 ' 结果为 "abcdef12345,
"abcdef " + 12345 ' 出错
"123" & 456 ' 结果为 " 123456 "
" 123 " + 456 ' 结果为 579
"123" + "456,' 结果为 123456
注意,"123 " + True = 122
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 43页表达式
什么是表达式?
由常量、变量、函数、运算符以及括号连接起来的有意义的式子称为表达式。
书写规则
运算符不能相邻。例 a+ -b是错误的。
乘号不能省略。例 x 乘以 y 应写成,x*y。
括号必须成对出现,均使用圆括号。
从左到右在同一基准上书写,无高低、大小。
能用系统函数的地方尽量使用系统函数。
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 44页几个练习例题用人单位招聘秘书:年龄小于 40岁的女性,学历专科或本科年龄学历
And本科专科
Or
招聘条件
(学历 =?专科? Or 学历 =?本科? ) And 年龄 < 40 And 性别
=?女?算术表达式
x大于等于 3,并且小于等于 7
3 <= x And x <= 7
性别
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 45页常用函数
函数类型
内部函数
用户自定义函数
内部函数(标准函数)
数学函数 字符串函数转换函数 时间 /日期函数随机函数 格式输出函数
函数调用方法函数名 ([参数表 ])
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 46页数学函数
Abs(x)函数:求 x的绝对值,x为数值型参数
Exp(x)函数:求 ex的值
Log(x)函数:求 x的自然对数,返回 lnx的值,且
x>0
Sgn(x)函数:求 x的符号值(符号函数)
Sqr(x)函数:求 x的算术平方根,x≧ 0
Int(x)和 Fix(x)函数:均为取整运算(但有区别)
随机函数 Rnd( )
三角函数
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 47页
Int和 Fix函数的区别
共同点
– 均删除参数的小数部分,返回整数部分
– 取整时均 不进行 四舍五入
– 当参数为正数时,两者功能相同
区别
– 当参数为负数时
– Int返回小于或等于参数的第一个负整数
– Fix返回大于或等于参数的第一个负整数例题 ( 单击查看代码 ) ( 单击查看补充资料 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 48页随机函数
用来产生随机数,
形式
– Rnd[( x) ]:返回一个 单精度 的随机数
– 取值范围,0 <= Rnd <1 [0,1)
Randomize
– Randomize[( x) ]
– 产生随机数的种子,保证每次运行产生不同的随机数
求某个必区间 [下界,上界 ]的随机整数公式,Int((上界 - 下界 + 1) × Rnd( )) + 下界产生在区间 [1,6]上的随机整数 ( 查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 49页转换函数
Asc(c)函数:将字符 c转换成 ASCII码值
Chr(n)函数:将 ASCII码值转换成字符
LCase(c)函数:将字符串 c中的大写字母转换为小写字母
UCase(c)函数:将字符串 c中的小写字母转换为大写字母
Str(n)函数:将数值 n转换成字符串
Val(c)函数:将数字字符转换成数值
Str()函数将非负数值转化成字符类型后,会在转换后的字符串左边增加空格,即数值的符号位。
CStr$():不加符号位。
Val()将数字字符串转化为数值类型,
当字符串中出现数值类型规定的字符外的字符时,则停止转换。
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 50页字符串函数
Len(c)函数:求字符串 c的长度
Left(c,n)和 Right(c,n):返回字符串 c左 (右 )边的 n个字符
Mid(c,n1,n2)函数:自字符串 c的第 n1个字符开始向右取 n2个连续的字符。
LTrim(c),RTrim(c)和 Trim(c)函数:去掉字符串 c左边、右边、左右两边的空格
String(n,c)函数:返回字符串 c的首字符组成的 n个字符的字符串。
InStr([n1,]c1,c2)函数:在字符串 c1中从第 n1个字符开始查找字符串 c2,若找到返回位臵值;若找不到,则返回 0
Space(n)函数:产生由 n个空格组成的字符串
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 51页时间 /日期函数
Time()或者 Time函数:返回系统时间
Date()或者 Date函数:返回系统日期
Year(d)函数:返回参数 d的年号 d为日期类型参数
Month(d)函数:返回参数 d的月份号
Day(d)函数:返回参数 d的日期号
WeekDay(d):返回参数 d的星期号
Now函数:返回系统的日期和时间
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 52页格式输出函数
格式,Format(<表达式 >,<格式字符串 >)
功能:按格式字符串指定的格式输出表达式的值。
说明:表达式可以是数值型、字符型、日期型数据。
示例:运行下面代码查看结果 ( 单击查看代码 )
Private Sub Form_Click( )
Print Format(2.71828,“#####.##")
Print Format(2.71828,”00000.00”)
Print Format(Date,"dddddd")
Print Format(time,“ttttt”)
End Sub ( 单击查看代补充资料 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 53页
Shell函数
负责执行一个可执行文件。
形式,Shell(命令字符串 [,窗口类型 ])
– 命令字符串:要执行的应用程序名,包括路径,
且必须是可执行文件(扩展名为 exe,com、
bat)
– 窗口类型:执行应用程序的窗口大小。
返回一个 Variant。
如果成功,代表这个程序的进程 ID;
若不成功,则会返回 0。
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 54页
Shell函数示例
i = Shell("c:\windows\calc.exe") j = Shell("c:\command.com",1)
提示,如果不知道应用程序的路径名,可用 Start命令启动程序,i = Shell(start & "calc.exe") ;
i=Shell(start & " vb6.exe ")
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 55页常见错误
逻辑表达式书写错,在 VB没有造成语法错而形成逻辑错
– 例如,数学表达式 3≤x< 10 VB表达式写为 3<=x<10。
– 问题在于 VB中的逻辑量与数值量可相互转换。
同时给多个变量赋值,在 VB没有造成语法错而形成逻辑错
– 例如,Dim x%,y%,z%,x=y=z=1
标准函数名写错
变量名写错
– 检查方法:在通用声明段加 Option Explicit
语句书写位臵错
– 在通用声明段只能有 Dim语句,不能有赋值等其他语句
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 56页
2.6基本语句
顺序结构
选择结构
循环结构
其他辅助控制语句
– Exit语句
– Goto语句
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 57页顺序结构 —赋值语句
格式
– [Let]变量名 = 表达式将表达式的值赋值给变量名
– [Let][对象名,]属性名 = 表达式将表达式的值赋值给对象的属性
说明
– 表达式可以是任何类型,一般应与变量名的类型一致
– 赋值号 左边只能是变量或对象属性,不能是常量常数符号或表达式
– 不能在同一个赋值语句中,同时给多个变量赋值例如,x=y=z=1
交换 A,B两个值
( 单击查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 58页顺序结构 —InputBox函数( 2-1)
功能
– 只需一行即可实现输入窗体的功能
– 产生一个对话框,作为输入数据的界面,等待用户输入并返回所输入的内容。
格式
InputBox$(prompt$,[title$],[default$],[xpos],[ypo
s])
说明
– prompt:提示信息,最大长度为 1024个字符
– title:对话框标题,默认为当前工程的名称
– default:输入区中缺省显示信息,默认为空串
– 函数返回值是字符串类型
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 59页顺序结构 —InputBox函数( 2-2)
显示如下图所示的对话框。
语句表示为:
Dim strName As String
strName= InputBox("请输入你的姓名 " +
vbCrLf + "然后单击确定 ","输入框 " )
使用 InputBox函数一次只能输入一个数据,
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 60页顺序结构 —MsgBox函数( 2-1)
格式函数形式,MsgBox%(prompt$,[buttons],[title])
过程形式,MsgBox prompt,[buttons],[title]
功能在屏幕上显示诸如提示、询问、警告或错误等消息,对用户的操作作出提醒或反馈。通过用户在对话框中选择的按钮识别用户所做的响应,作为程序继续执行的依据。
说明
– Prompt和 title同 InputBox函数
– buttons:数值表达式,用来控制在对话框内显示的按钮种类和数量以及图标类型。(由四类数值相加产生)
– 函数返回值是整数类型
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 61页顺序结构 —MsgBox函数( 2-2)
Button参数建立一个退出对话框,对退出再次确认。 ( 查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 62页练习例题修改文本框章节中的登录界面。
如果用户名和密码正确,弹出对话框,提示,欢迎光临!!!,
如果不正确,弹出对话框,提示,用户名和密码错误,是否重新输入?,如果选择是,
清空密码文本框内容,并把焦点放到用户名文本框,让用户重新输入;如果选择否,推出应用程序的执行
注意:学生的用户名一般输入的是学号,
而学号全部是数字字符。在进行有效性检查时也用对话框提示错误信息
( 单击查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 63页命名参数的使用
注意
InputBox(),MsgBox()中的参数必须按语法要求规定的顺序提供数值,
默认部分也要用逗号占位符跳过。
引入?命名参数?
命名参数可用?,=”以任意顺序赋值
prompt:提示 buttons:按钮 title:标题
default:默认 xPos,x坐标 yPos,y坐标
例如:
InputBox("请输入您的学号 ","学生成绩查询系统 ")
InputBox(Title:="学生成绩查询系统 ",prompt:="请输入您的学号 ")
MsgBox("登录成功 ",vbOKOnly + vbInformation,"成功登录页面 ")
MsgBox(Title:="成功登录页面 ",buttons:=vbOKOnly + vbInformation,
prompt:="登录成功 ")
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 64页顺序结构 —Print方法
语法
[对象名称,]Print [tab(n) | spc(n)] [表达式列表 ] [;|,]
功能在指定对象上输出表达式的值
说明
– 对象可以是窗体、图形框和打印机
– Tab(n):表示在参数 n指定的位臵输出表达式的值
– Spc(n):表示跳过 n个空格
Print方法在 Form_Load事件过程中不起作用。
如果要在该事件中显示数据,必须在该过程中加上 Form1.Show方法或把 AutoRedraw设置为 True.
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 65页几个练习例题显示下图所示的图形。
用 Print方法输出图形。
改变
( 单击查看代码 )
( 单击查看代码 )
For i = 1 To 5
Print Tab(i); String(6 - i,"▼ "); Spc(6); String(i,"▲ ")
Next i
若把程序中的 Spc(6)换成 Tab(6)会怎样?;Tab
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 66页选择结构
特点:根据所给定条件的真假,选择不同的语句。
两种类型
If语句
Select Case语句
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 67页
If语句( 4-1)
单分支结构
If <表达式 > Then
语句块
End If 或
If <表达式 > Then <语句表达式语句块
T
F
例如:已知两个数 x和 y,比较两个数的大小,使 x大于 y
If x<y Then
t=x,x=y,y=t
End If
或 If x<y Then t=x,x=y,y=t
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 68页
If语句( 4-2)
双分支结构
If <表达式 > Then
语句块 1
Else
语句块 2
End If 或
If <表达式 > Then <语句块 1> Else <语句块 2>
表达式语句块 1
T F
语句块 2
计算分段函数



xxx
xxy
3c o s
1s in
3
2
0
0
x
x
单分支结构实现,y=cos(x)- x^3+3*x
If x<>0 Then y=sin(x)+sqr (x*x+1)
双分支结构实现,If x<>0 Then
y=sin(x)+sqr (x*x+1)
Else
y=cos(x)- x^3+3*x
End If
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 69页
If语句( 4-3)
多分支语句
If <表达式 1> Then
<语句块 1>
ElseIf <表达式 2>Then
<语句块 2>

[Else
语句块 n+1 ]
End If
求一元二次方程 ax2+bx+c=0的根。 ( 查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 70页
If语句的嵌套
– If语句的嵌套是指 If或 Else后面的语句块中又包含 If语句。
– 形如:
If <表达式 1> Then
If <表达式 11> Then

End If

End If
示例:已知 x,y,z三个数,
使得 x>y>z。
要求:用一个 If语句和一个 If嵌套实现。
T
x > y
T
z 为最小数
T
使得 x > y
F
F
F
x > y > z
x < y
x 与 y 交换
y < z
y 与 z 交换
x< y
x 与 y 交换
If x<y Then t=x,x=y,y=t
If y<z Then
t=y,y=z,z=t
If x<y Then
t=x,x=y,y=t
End If
End If
If语句( 4-4)
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 71页几个练习例题示例:已知变量 strC中存放了一个字符,判断该字符是字母字符、数字字符还是其他字符。
If Ucase(strC) >="A" And Ucase (strC) <="Z" Then
Print strC + "是字母字符 "
ElseIf strC >="0" And strC <="9" Then
Print strC + "是数字字符 "
Else
Print strC + "其他字符 "
End If
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 72页示例:已知百分制成绩 mark,显示对应的五级制成绩哪些正确,哪些错误?
方法一
I f m a r k > = 90 T he n
P r i nt " 优 "
E l s e I f m a r k > = 80 T he n
P r i nt " 良 "
E l s e I f m a r k > = 70 T he n
P r i nt " 中 "
E l s e I f m a r k > = 60 T he n
P r i nt " 及格 "
E l s e
P r i nt " 不及格 "
E nd I f
方法二
I f m a r k < 60 T he n
P r i nt " 不及格 "
E l s e I f m a r k < 70 T he n
P r i nt " 及格 "
E l s e I f m a r k < 80 T he n
P r i nt " 中 "
E l s e I f m a r k < 90 T he n
P r i nt " 良 "
E l s e
P r i nt " 优 "
E nd I f
方法三
I f m a r k > = 60 T he n
P r i nt " 及格 "
E l s e I f m a r k > = 70 T he n
P r i nt " 中 "
E l s e I f m a r k > = 80 T he n
P r i nt " 良 "
E l s e I f m a r k > = 90 T he n
P r i nt " 优 "
E l s e
P r i nt " 不及格 "
E nd I f
√√
( 返回常见错误 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 73页
Select Case语句
格式
Select Case 变量或表达式
Case 表达式列表 1
语句块 1
Case表达式列表 2
语句块 2…
[Case Else
语句块 n+1]
End Select
数值型或字符串表达式
<表达式列表 >:与 <变量或表达式 >同类型的下面四种形式之一:
表达式 例,"A"
一组枚举表达式 (用逗号分隔 ) 例,2,4,6,8
表达式 1 To 表达式 2 例,60 To 100
Is 关系运算符表达式 例,Is < 60
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 74页几个练习例题
Select Case strC
Case "a" To "z","A" To "Z"
Print strC + "是字母字符 "
Case "0" To "9"
Print strC + "是数字字符 "
Case Else
Print strC + "其他字符 "
End Select
示例:已知变量 strC中存放了一个字符,判断该字符是字母字符、数字字符还是其他字符。
示例:判断成绩等级。
Select Case score
Case 90 To 100
Print "优 "
Case 80 To 89
Print "良 "
Case 70 To 79
Print "中 "
Case 60 To 69
Print "及格 "
Case Else
Print "不及格 "
End Select
制作简单的计算器。
在三个文本框中分别输入两个操作数和一个运算符。
单击,计算,按钮,根据输入的运算符进行相应计算,并把结果写入第四个文本框。
单击,清除,按钮,清空四个文本框。
单击,退出,按钮,结束应用程序的执行。
( 单击查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 75页题:已知坐标点 (x,y),判断其落在哪个象限内方法一
If x > 0 And y >0 Then
Print "在第一象限 "
ElseIf x < 0 And y > 0 Then
Print "在第二象限 "
ElseIf x < 0 And y < 0 Then
Print "在第三象限 "
ElseIf x > 0 And y <0 Then
Print "在第四象限 "
End If
方法二
Select Case x,y
Case x > 0 And y > 0
Print "在第一象限 "
Case x < 0 And y > 0
Print "在第二象限 "
Case x < 0 And y < 0
Print "在第三象限 "
Case x > 0 And y <0
Print "在第四象限 "
End Select
上面两段代码,哪个能实现,哪个不能实现?
√?Select Case 后不能出现多个变量;
Case后不能出现变量及有关运算符。
( 返回常见错误 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 76页条件函数
IIf函数
– 格式,Iif(<条件 >,<条件为 True时的值 >,<条件为 False是的值 >)
– 例如:求 x,y的最大值 max=IIf( x > y,x,y)
Switch函数
– 格式,Switch(条件表达式 1,条件表达式 1为 True时的值 [,
条件表达式 2,条件表达式 2为 True时的值 ……] )
– 例如:学生成绩等级
Switch(grade >=90,“优秀?,grade >=80,“良好?,grade >=
70,“中等?,grade >= 60,“及格?,grade <= 60,“不及格? )
Choose函数
– 格式,Choose(数字类型变量,值为 1的返回值,值为 2的返回值 …… )
– 例如,Op= Choose( Nop,"+","-","× ","÷ ")
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 77页常见错误
在选择结构中缺少配对的结束语句
– 对多行式的 If块语句中,应有配对的 End If语句结束。
多分支选择 ElseIf关键字的书写和条件表达式的表示
– ElseIf 不要写成 Else If;
多个条件表达式次序问题,见示例 。
Select Case语句的使用
– Select Case 后不能出现多个变量;
– Case子句后不能出现变量,见示例 。
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 78页循环结构
指对同一程序段执行若干次,被重复执行的语句块成为循环体。
For/Next循环
Do/Loop循环
While/Wend循环
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 79页
For/Next循环
计数循环语句,用于控制循环次数预知的循环
格式:
For <循环变量 > = <初值 > to <终值 > [Step <步长 >]
<语句块 >
[Exit For]
<语句块 >
Next [<循环变量 >]
循环变量赋初值循环变量 <=终值语句块语句块循环变量加步长
T
Exit For
·
F
有无计算 1到 100的奇数和
Dim i %,s
s=0
For i = 1 To 100 step 2
s = s + i
Next i
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 80页
步长
循环次数 =
注意
– 出了循环,循环控制变量值的问题。
– 允许循环变量在循环体内被赋值,但这样会影响原来的循环控制规律。
– Exit For:强制退出循环
0
0
0
无循环终值初值终值初值
步长 =1 可省略
)1-(?步长 初值终值I n t
For i=2 To 13 Step 3 循环执行次数
Print i,输出 i的值分别为,
Next i 2 5 8 11
Print,I=“,i 出了循环输出为,I=14
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 81页练习例题求最大最小值问题要求:随机产生 10个 [100,200]之间的整数输出,并求最大值。如图所示
Max = 100
For i = 1 To 10
x = Int(Rnd * 101 + 100),Print x,
If x > Max Then Max = x
Next i
Print "最大值 ="; Max
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 82页
Do/Loop循环形式 1:前测试循环
Do { While|Until }<条件 >
语句块
[Exit Do
语句块 ]
Loop
形式 2:后测试循环
Do
语句块
[Exit Do
语句块 ]
Loop { While|Until} <条件 >
表达式列表 1
F
T
F
T
E xi t D o
语句块语句块
E xi t D o
语句块语句块表达式列表 1
图 1 - 3 - 16 D o … L o o p W hi l e
图 1 - 3 - 15 D o W hi l e … L o o p
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 83页练习例题我国有 13亿人口,按人口增长 0.8计算,多少年后我国人口超过 26亿。
分析:解决此问题有两种方法,其一可根据公式,26=13 * (1+0.008)n,直接利用标准对数函数求得;其二可利用循环求得,代码如下:
x = 13,n = 0 'x表示当前人口数,n表示年数
Do While x < 26
x = x * 1.008 '每年增加后的人口数
n = n + 1 '年数加 1
Loop
Print n; "年后我国人口达到 "; x; ",超过 26亿 "
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 84页循环的嵌套
一个循环体内又包含了一个完整的循环结构称为循环的嵌套制作九九乘法表。
求水仙花数。
提示:一个 3位数 abc,满足:
100 * a + 10 * b + c = a ^ 3 + b ^ 3 + c ^ 3
( 单击查看代码 )
( 单击查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 85页注意事项
外循环必须完全包含内循环,不能交叉
内循环变量与外循环变量不能同名
在使用 Goto语句时,不能从循环体外转入循环体内
多重循环最好按照缩进格式书写
For ii =1 To 10
For jj=1 To 20

Next ii
Next jj
For ii =1 To 10
For ii=1 To 20

Next ii
Next ii
For ii =1 To 10
For jj=1 To 20

Next jj
Next ii
For ii =1 To 10

Next ii
For ii =1 To 10

Next ii

Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 86页
While/Wend循环
格式
While <条件 >
<循环体 >
Wend
说明
– 每次执行完循环体后都将执行 Wend语句,它将转回到 While语句,在判断语句条件是否成立
– 如果条件为 Null,则将默认条件值为 False
– Wend语句不能省略
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 87页常见错误
不循环或死循环的问题
– 主要是循环条件、循环初值、循环终值、
循环步长的设臵有问题。
循环结构中缺少配对的结束语句
– For 缺少配对的 Next
循环嵌套时,内外循环交叉
累加、连乘时,存放累加、连乘结果的变量赋初值问题
– 在一重循环中,存放累加、连乘结果的变量初值设臵应在循环语句前。
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 88页
2.7 数组
静态数组
动态数组
控件数组若我们要求一个班 100个学生的平均成绩,然后统计高于平均分的人数。
以前怎么做?
可以引入数组!
( 单击查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 89页
数组
– 具有相同名字不同下标的变量来表示一组具有相同性质的数据
注意
– 数组 不是一种数据类型
– 数组是一组相同类型的变量集合
– 数组必须先声明后使用
– 声明数组名、类型、维数和数组大小
按声明时数组的大小确定与否
静态数组(定长):声明时确定了大小
动态数组(变长):声明时未给出大小
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 90页静态数组
声明
Dim 数组名 (下标 1[,下标 2…]) [As 类型 ]
说明
– 几个下标就表示是几维数组,最多为 60维
– [下界 To ] 上界 省略下界为 0
– 静态数组的下标 必须为常数
– 每一维大小:上界 - 下界 + 1
– 数组大小:每一维大小相乘
例如,Dim mark(1..105) As Integer?一维数组
Mark(1) Mark(2) Mark(3) …… Mark(104) Mark(105)
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 91页
例如:
– Dim lArray(0 to 3,0 to 4) As Long
– 等价于 Dim lArray(3,4) As Long
注意
– 下界缺省为 0,但是可以重新定义数组的下界
Option Base 1
– 错误的声明,下标是变量
n = InputBox(“请输入 n”),Dim mark(n) As
Single
– 分清楚数组的声明和引用
lArray(0,0) lArray (0,1) lArray (0,2) lArray (0,3) lArray (0,4)
lArray(1,0) lArray (1,1) lArray (1,2) lArray (1,3) lArray (1,4)
lArray(2,0) lArray (2,1) lArray (2,2) lArray (2,3) lArray (2,4)
lArray(3,0) lArray (3,1) lArray (3,2) lArray (3,3) lArray (3,4)
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 92页几个练习例题示例:随机产生 20个 0到 100的整数,按每行 5个元素输出。
示例,冒泡法排序。选择法排序。
示例,交换数组中的各元素并打印交换后的数组元素。
要求:数组大小为 10,整型,数组第一个元素与最后一个元素交换,第二个元素与倒数第二个交换 …… 依次类推。
( 单击查看代码 )
( 单击查看代码 )
( 查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 93页动态数组
声明时没有给出数组的大小,即省略了括号中的下标。当要使用它时,随时用 ReDim语句重新指出数组的大小
格式:
ReDim 数组名 (下标 1,下标 2,……) [As 类型 ]
例如:
Sub Form_Click( )
Dim x( ) As Single
n =Inputbox(“输入 n”)
ReDim x(n)
End Sub
示例,求若干个学生的平均分。 ( 单击查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 94页
说明
– Dim,Private,Public变量声明语句是 说明性语句,可出现在过程内或通用声明段; ReDim语句是 执行语句,只能出现在过程内。
– 在过程中可多次使用 ReDim来 改变数组 的 大小和维数 。
– 使用 ReDim语句 会使原来数组中的 值丢失,可以在 ReDim语句后 加 Preserve参数 来 保留 数组中的 数据 。
– 使用 Preserve只能 改变最后一维 的大小,前面几维大小不能改变。
– ReDim中的 下标 可以是 常量,也可以是有了 确定值的变量 。
– 静态数组在程序编译时分配存储单元,动态数组在运行时分配存储单元。
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 95页数组的操作
数组元素赋值
– 用循环
For i = 1 to 105
mark(i) = Int(Rnd * 101)
Next i
– 用 Array函数
Dim ib As Variant
ib = Array("abc","def","67")
For i = 0 To UBound(ib)
Picture1.Print ib(i); " ";
Next i
– 数组直接对数组赋值
Dim a() As Variant,b() As Variant
a = Array(1,2,3,4,5)
ReDim b(UBound(a))
b = a
For i = LBound(ib) To UBound(ib)
利用 Array对数组各元素赋值,声明的数组是 可调数组 或连圆括号都可省,并且其类型只能是
Variant。
其下标下界由 Option Base决定,且可由 LBound
函数获得;上界由 UBound函数获得。
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 96页控件数组
定义
– 由一组相同类型的控件组成
特点
– 共用一个控件名,即 Name属性值一致
– 具有相同的属性
– 建立时系统给每个控件赋值唯一的索引号
(Index)
– 控件共享同样的事件过程,通过传递的下标值区分控件数组中的各个控件元素
例如
Sub CmdOperation_Click(Index As Integer)
Select Case Index
Case 0?选择加号
……? 进行两个数的加法运算
Case 1?选择减号
……?进行两个数的减法运算
End Select
End Sub
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 97页控件数组的建立和使用 (2-1)
在设计时建立
– 在窗体上画出某控件,可进行控件名的属性设臵,这是建立的第一个数组元素
– 选中该控件,进行?复制?和?粘贴?操作,
系统会提示:?已经有一个控件为’ [控件名 ]?。
创建一个控件数组吗? 单击?是?按钮后,
就建立了一个控件数组。进行若干次?粘贴?
操作,就建立了相应个数的控件数组元素
– 进行事件过程的编程。
第一个元素修改数组的第一个元素名称第二个元素数组的第二个元素名称和 Index属性
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 98页练习例题利用控件数组的方法建立四个命令按钮,当单击某个命令按钮,显示不同的图形或结束操作。
提示:界面上四个命令按钮用一个按钮数组实现。
代码处理时,由 Index的不同取值,执行不同的操作。 ( 单击查看代码 )
控件名 Index Caption
Picshape 空白 空白
CmdOperation 0 直线
CmdOperation 1 矩形
CmdOperation 2 圆
CmdOperation 3 结束
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 99页控件数组的建立和使用 (2-2)
运行时添加控件数组
– 在窗体上画出某控件,设臵该控件的 Index值为 0,表示该控件为控件数组,建立第一个元素
– 在编程时通过 Load方法添加 其余的若干个元素,
每个新添加的控件数组元素通过 Left和 Top属性,确定其在窗体的位臵,并将 Visible属性设臵为 True;也可以使用 Unload方法删除 某个添加的元素
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 100页几个练习例题建立如图所示的计算器,进行数值的输入和四则运算。
数字按钮控件数组(运行时创建)
运算符按钮控件数组(设计时创建)
数值的数制转换数组(设计时创建)
( 单击查看代码 )
For i = 1 To 9
Load number(i)
number(i).Top = 100
number(i).Left = 100
number(i).Caption = i
number(i).Visible = True
Next i
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 101页使用范围
分类统计分类统计是将一批数据中按分类的条件统计每一类中包含的个数。例如,将学生成绩按优、良、中、
及格、不及格五类,统计各类的人数 。这类问题一般要掌握分类条件表达式的书写和各类中计数器变量的使用。
排序:冒泡法、选择法、插入法等
学生作品示例:输入一串字符,统计各字母出现的次数
(不区分字母大小写),并显示统计结果。 ( 查看代码 )
( 演示 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 102页常见错误
静态数组声明下标出现变量
n = InputBox("输入数组的上界 ")
Dim a(1 To n) As Integer
数组下标越界
– 引用的下标比数组声明时的下标范围大或小。
数组维数错
– 数组声明时的维数与引用数组元素时的维数不一致。
Dim a(3,5) As Long
a(i)=10
获得数组的上界 (UBound)、下界 (LBound)
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 103页
2.8 过程
过程是用来执行一个特定任务的一段程序代码
分类一
– 系统定义
内部函数过程
事件过程
– 用户自定义
分类二(由关键字区分)
– 以 Sub保留字开始的 子过程
– 以 Function保留字开始的 函数过程
– 以 Property保留字开始的属性过程
– 以 Event保留字开始的事件过程
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 104页
Function过程示例:已知多边形各条边的长度,要计算多边形的面积。
分析:计算多边形面积,可将多边形分解成若干个三角形。计算三角形面积的公式为:
)(
2
1))()(( zyxczcycxcca r e a
a
b
c
de
f
g
S1
S2
S3
x y
z
定义函数过程 area:
Public Function area(x!,y!,z!) As Single
Dim c!
c = 1 / 2 * (x + y + z)
area = Sqr(c * (c - x) * (c - y) * (c - z))
End Function
调用函数过程:
Sub command1_click()
…… 输入若干个三角形边长
S=area(a,b,c)+area(c,d,e)
S=S+area(e,f,g)
Print S
End Sub
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 105页
Function过程的定义
方法一:利用?工具?菜单 —”添加过程?
方法二:利用代码窗口直接定义
格式:
[Public | Private ] [Static] Function 函数过程名 ([参数列表 ])
[As 类型 ]
局部变量或常数定义语句块函数名 = 返回值 函数过程体
[Exit Function]
语句块函数名 = 返回值
End Function
– 参数列表:,[ByVal]变量名 [()][As 类型 ]
– Exit Function:退出函数
– 函数名 = 返回值:在函数体内至少对函数名赋值一次
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 106页
Function过程的调用
函数过程的调用同标准函数
形式
– 函数过程名 ([参数列表 ])
– Call 函数过程名 [(参数列表 )]
– 函数过程名 [参数列表 ]
参数列表:实参或实元,必须与形参个数相同,位臵与类型一一对应
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 107页练习例题示例:定义 MyReplace$(S$,oldS$,newS$)函数过程,具有 Replace函数功能 ( 单击查看代码 )
Private Sub Command1_Click()
s=,VB程序设计教程 5.0版”
Print MyReplace(s,"5.0","6.0")
End Sub Function MyReplace$(s$,OldS$,NewS$)
Dim i%,lenOldS%
lenOldS = Len(OldS)
i = InStr(s,OldS)
Do While i > 0
s= Left(s,i - 1) + NewS + Mid(s,i + lenOldS)
i = InStr(s,OldS)
Loop
MyReplace = s
End Function
程序设计教程 版” S,5.0”,6.0”
MyReplace$(s$,OldS$,NewS$)
程序运行流程
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 108页子过程? 函数过程的不足
– 不是为了获得某个函数值,而是为了某种功能的处理,例如文字移动动画
– 要获得多个结果
( 查看代码 )
示例:定义 MyReplace$(S$,oldS$,newS$)函数过程,具有 Replace函数功能 ( 单击查看代码 )
定义子过程 swap:
Public Sub Swap(x,y)
Dim t
t = x,x = y,y = t
End Sub
调用子过程:
a = 10,b = 20
Print "两个数交换前,a="; a,"b="; b
Swap a,b
Print "两个数交换后,a="; a,"b="; b
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 109页
Sub过程的定义
创建方式
– 利用?工具?菜单 —”添加过程?
– 利用代码窗口直接定义
定义
[ public | private ][ static ] Sub 子过程名 ( [参数列表 ] )
局部变量或常数定义语句
[Exit Sub]
语句
End Sub
– Exit Sub:表示退出子过程
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 110页子过程的调用
调用
– 子过程名 [参数列表 ]
– Call 子过程名 [(参数列表 )]
子过程和函数过程的区别
函数过程名有值,有类型,在函数体内至少赋值一次; 子过程名无值,无类型,在子过程体内不能对子过程名赋值。
一般当过程有一个函数值,使用函数过程较直观; 反之若过程无返回值,或有多个返回值,使用子过程较直观。
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 111页参数传递
指主调过程的实参传递给被调过程的形参
传址(地址传递)与传值(值传递)
– 传址( ByRef):
形参得到的是实参的 地址,当形参值改变的同时 也改变实参的值 。又称引用
– 传值( ByVal):
形参得到的是实参的 值,形参值的改变 不会影响实参的值
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 112页练习例题示例:两个变量的交换。 ( 单击查看代码 )
a 的地址 1 0
1 0 1 0
aa
x x
形参实参
B y V al 传值 传地址地址传递:
Private Sub Swap(x%,ByRef y%)
Dim t%
t = x,x = y,y = t
End Sub
值传递:
Private Sub Swap1(ByVal x%,ByVal y%)
Dim t%
t = x,x = y,y = t
End Sub
Private Sub Form_Click()
a% = 10,b% = 20,Swap1 a,b '传值
Print "A1="; a,"B1="; b
a = 10,b = 20,Swap2 a,b '传址
Print "A2="; a,"B2="; b
End Sub
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 113页数组参数的传递( 2-1)
示例:编写一个函数过程 tim,求任意一维数组中各元素之积。
调用 tim,分别求下面两式之积。
( 单击查看代码 )
5
1
1
i
iat?
10
2
2
i
ibt
Function tim(a() As Integer) As Double
Dim t#,i%
t = 1
For i = LBound(a) To UBound(a)
t = t * a(i)
Next i
tim = t
End Function
调用:
Sub Command1_Click()
Dim a%(1 To 5),b%(2 To 10)

t1# = tim(a())
t2 #= tim(b())
Print t1,t2
End Sub
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 114页数组参数的传递( 2-2)
在传递数组时还要注意以下事项:
– 在实参列表和形参列表中放入数组名,忽略维数的定义,但形参数组的圆括号不能省
– 被调过程可通过 Lbound和 Ubound函数确定实参数组的下、上界
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 115页传值与传地址的使用规则
形参是 数组、自定义类型 只能用 传址方式
若要将过程中的结果返回给主调程序,则形参必须是传址方式。这时实参必须是同类型的变量名
(包括简单变量、数组名、自定义类型等 ),不能是常量、表达式、控件名。
对于容量较大的变长字符串变量,通常采用传址方式,以节省内存空间。
若形参不是前三种情况,一般应选用 传值 方式。
这样可增加程序的可靠性和便于调试,减少各过程间的关联
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 116页注意事项
确定自定义的过程是子过程还是函数过程
– 函数过程名有值,子过程名无值。
过程中形参的个数和传递方式的确定
– 过程中参数的作用是实现过程与调用者的数据通信。
从主调程序获得初值,值传递。
将结果返回给主调程序,地址传递。
实参与形参结合时对应问题
– 个数、类型、位臵、次序一一对应。
– 形参是值传递,对应实参可以是表达式、常量、数组元素、控件属性
– 形参是地址传递,对应实参只能是简单变量、控件属性
– 数组、记录类型、对象只能是地址传递
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 117页过程的作用域
作用域定义
– 变量、过程随所处的位臵不同,可被访问的范围
过程的作用域分类
– 窗体 /模块级,加 Private关键字 的过程,只能被定义的窗体或模块中的过程调用。
– 全局级,加 Public关键字 ( 缺省 )的过程,可供该应用程序的所有窗体和所有标准模块中的过程调用 。
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 118页
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 119页几个练习例题示例:打印分形图,如下图所示。 ( 单击查看代码 )
示例:加密和解密,即将输入的一行字符串中的所有字母加密,加密后还可在进行解密。
分析:如果是英文字母,在原有基础上后移五位,如输入为 a,显示为 f;如果是非英文字母,按原样输出。 ( 单击查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 120页示例:编写一个英文打字训练的程序要求:
在标签内随机产生 30个字母的范文
当焦点进入输入文本框时开始计时,并显示当时的系统时间
当输入了 30个字母时结束计时,并禁止向文本框输入内容,显示打字的速度和正确率
( 单击查看代码 )
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 121页知识延伸 —焦点
焦点
– 焦点不是控件
– 窗体上只有具有焦点的控件才有可能接受用户的输入
设臵 Tab键的顺序
– 通过控件的 TabIndex属性可以设臵按下
Tab键时焦点的移动顺序
– 运行时,不可见或无效的控件以及不能接收焦点的控件(比如,Label)仍然保持在 Tab顺序中,但切换时要跳过这些控件。
Visual Basic 可视化程序设计首页 上页 目录 前页 后页 末页
2009-7-28 第 122页本章总结
VB基本语法
窗体、标签、文本框、命令按钮的使用
三种程序设计结构
数组
静态、动态、控件
过程
子过程、函数过程
参数传递(值传递、地址传递)