1、本讲要点,VB语言基本成分:数据类型、变量、运算符、常用内部函数; VB的基本语句:赋值语句、Print方法、Cls方法、End语句、Rem语句、Stop语句、快速输入输出的实现(InoutBox、MsgBox框)等; VB常用控件:窗体、文本框、标签的编程举例。,基本字符集:字符是构成程序设计语言的最小语法单位。VB的基本字符集包括:数字、英文字母、特殊字符、汉字,关键字(保留字):是在语法上有固定意义的字母组合,主要包括命令名、函数名、数据类型名、运算符、VB系统提供的标准过程名等。例如:Print、If、Then、private、Sin、Sqr等。,标识符:是用户自己定义的名字(常量名、
2、变量名、控件名、自定义过程名和函数名等),用户通过标识符对相应的对象进行操作。例如:frmInput、cmdExit、PI、intx、max、jicheng等。,VB字符分为两大类: 一类是系统内部定义的字符(包括符号常量、内部函数名、对象名、属性名、语句关键字、事件名称等);一类是用户自定义的字符(包括变量名、过程名、自定义符号常量等)。,2.1 字符集,第2章 VB基础知识,第2章 VB基础知识,编码规则,1. VB代码不区分字母的大小写,2. 语句书写自由,* 同一行上可以书写多条语句,语句间用冒号分开; * 单行语句可分成多行书写,在本行后加续行符(空格和下划线“_”),3. 在代码中
3、添加注释,* 用撇号“ ” 或“Rem”引导注释内容,可在语句之后,也可独占一行。 * 块注释与取消,先选中块视窗工具栏编辑选取消或注释。,4. VB的标识符命名约定,* 必须以字母或汉字开头,由字母、汉字、数字或下划线组成,长度不能超过255个字符,其中,控件、窗体、类和模块的名字不能超过40个字符。 * 不能使用VB 中的关键字。如语句(If,Loop)、函数(Len)和操作符(Or)。 * 不能含有空格、小数点、逗/分号、运算符以及其它声明字符,如$、%、&。,2.2 基本数据类型,数据类型 关键字 类型符 占字节数 范围,整型 Integer % 2 -32768 到 32767,长整
4、型 Long & 4 -2147483648 到 2147483647,单精度型 Single ! 4 -3.402823E38 到 3.402823E38,双精度型 Double # 8 -1.79769313486232D308 到 1.79769313486232D308,货币型 Currency 8 -922337203685477.5808 到 922337203685477.5808,字符串型 String $ 字符数 065535个字符,日期型 Date 8 01,01,100 到 12,31,9999,对象型 Object 4 任何对象引用,逻辑(布尔)型 Boolean 2
5、True 与 False,字节型 Byte 1 0255,变体型 Variant 根据需要分配,.,基本数据类型,.,数值型:包括整型和实型。整型数据是不带小数点和指数符号的数,包括整型、长整型和字节型。例如:15,-345,654%是整型数据, 123456,45678&是长整型数据, 而45678%则会发生溢出错误。实型数据是带小数点的数,分为单精度、双精度(浮点数 )和货币型(定点数)3种。例如:3.14!,2.718282(7位有效数字)是单精度数据;3.14159265是双精度数据(最多15位有效数字)3. 56 ,65.123456 是货币型数据(注意: 65.123456 的有效
6、数为65.1235)。注意:数值型变量的初始值为0。,逻辑型:True和False(变量初始值)。当把逻辑值转换为数值型时,False为0,True为-1。,基本数据类型,.,字符串型:包括除双引号以外可打印的所有字符。双引号作为定界符。双引号内字符(包括空格)的个数叫做字符串长度。长度为0的字符串叫空串(“”)。变长字符串初始值为空串。定长字符串初始值为指定长度的空格串。注意:在VB中,字符串型数据采用ISO(国际标准化组织)字符标准,ASCII码和汉字一样都采用双字节存储。例如: “ 1234 “ , “张 三“都是字符串(空格是有效字符),“ 运动员“, “ abc “的长度都是3,占用
7、字节数都是6。 日期型:用定界符#括起来的日期和时间数据。日期可以用“/ ”、“,”、“-”分隔开,可以是年、月、日,也可以是月、日、年的顺序。时间必须用“:”分隔,顺序是:时、分、秒。例如:#1999-08-11 10:25 :00#,#08/23/99#,#03-25-75 20:30:00#、#98,7,18#等都是有效的日期型数据。在VB中会自动转换成mm/dd/yy(月/日/年)的形式。 变体型(可变类型):是一种特殊的数据类型。可以是上述的各种类型,完全取决于程序的需要。初始值为Empty值。,2.3 常量与变量,文字常量(字面常量、直接常量)数值型常量 56,3.14159,0.
8、123E-4 (表示0.12310-4 )字符串型常量 “ Visual Basic “逻辑型常量 (True 和 False )日期型常量 #1/31/2004#,#2004-3-8# ,#10/21/2004 3:00:00 PM#,计算机处理数据时,常用的数据形式有两种:常量和变量。,常量:是在程序执行过程中保持不变的数据。VB中的常量有:文字常量和符号常量。符号常量又分为系统定义符号常量和用户自定义符号常量两种。,符号常量 :用户自定义符号常量:定义格式:Const 常量名As 类型 = 表达式例如:Const PI As Double = 3.1415926系统内部符号常量:与对象、
9、方法、属性一起使用,易于程序阅读和编写。例如:Form1.WindowState=vbMinimized(值为1),系统内部符号常量,包括:控件常量、语言常量、对象常量和用户界面常量(可参照MSDN),CheckBox 控件的常数 常数值 描述vbUnchecked0 未选中 vbChecked1 选中 vbGrayed2 变灰,控件常量举例:,语言常量举例:,颜色常数 常数 值 描述 vbBlack &H0 黑色 vbRed &HFF 红色 vbGreen &HFF00 绿色 vbYellow &HFFFF 黄色 vbBlue &HFF0000 兰色,对象常量举例:,Form的显示参数 常数
10、 值 描述 vbModal 1 模式窗体 vbModeless 0 无模式窗体,菜单加速键常数 常数 值 描述 vbMenuAccelCtrlA 1 用户定义的快捷键 vbMenuAccelCtrlB 2 用户定义的快捷键,用户界面常量举例:,变量:在程序执行过程中,其值可以改变的数据。,变量的说明,变量的隐式声明: 使用的变量未作声明,所有隐式声明的变量均为Variant类型。,变量的显式声明: 使用Dim语句,格式1: Dim 变量名 As 数据类型 ,变量名 As 数据类型, 格式2: Dim 变量名 + 类型标识符,例1 Dim A As Integer, B As Double 例2
11、 Dim A%, B# 例3 Dim MyName1 As String, Myname2 As String*5 例4 Dim Vp1, Vp2 As Single 例4定义了Vp2为单精度型变量,Vp1为变体型变量,变量的强制声明:在每个模块的开始处自动添加“ Option Explicit” 语句,所有的变量都必须显示声明。,操作:“工具”菜单 “ 选项” 命令 选中编辑器中的“要求变量声明”,变量的作用域:,全局变量在窗体或标准模块中声明为Public。格式:Public 变量名 As 数据类型模块级变量在模块的通用声明部分用Dim或Private声明。 格式:Dim|Private
12、变量名 As 数据类型局部变量在过程中由Dim或Static关键字声明。格式:Static|Dim 变量名 As 数据类型,静态变量每次调用一个过程时保留上次调用的值。,格式:Static 变量名 As 数据类型,变量名 As 数据类型,,变量的作用域及使用规则,用户自定义数据类型,* 用Type语句定义Type StudendCard Name As StringSex As IntegerBirthday As DateEnd Type,* 用Dim声明用户自定义类型的变量Dim MyFriend1 As StudentCard* 使用用户自定义类型的变量MyFriend1.Name=“张
13、三”MyFriend1.Sex=1MyFriend1.Birthday=“1988/08/08”,变量的类型检查,* 用内部函数VarType( )确定变量类型,函数返回数字代表不同数据类型,内部常数 返回值 代表类型 内部常数 返回值 代表类型,vbEmpty 0 Empty (空)vbNull 1 Null (无效)vbInteger 2 IntegervbLong 3 LongvbSingle 4 Single(单精度型)vbDouble 5 Double(双精度型)vbCurrency 6 Currency(货币型)vbDate 7 Date(日期型),vbString 8 Strin
14、g(字符型) vbObject 9 Object (对象) vbError 10 Error (错误) vbBoolean 11 Boolean (布尔型) vbVariant 12 Variant (变体数组) vbDataObject 13 数据访问对象 vbByte 17 Byte (字节型) vbArray 8192 Array (数组),* 数据类型分类判断部分内部函数可对数据分类判断,返回值为True,说明变量的类型是函数指明的类型,内部函数 说 明,IsNumeric( ) 判断变量是否为Numeric类型 IsDate( ) 判断变量是否为Date类型 IsArray() 判断
15、变量是否为数组 IsObject( ) 判断变量是否为Object类型,例1 Dim X As IntegerX=100Print VarType(X) 打印结果为2例2 If VarType(X)=VbInteger Then Print “!”,例1 If IsNumeric(Text1.Text) Then . 例2 If Not IsDate(Text1) Then .,2.4 运算符与表达式,1. 算术运算符(Arithmetic Operators) 以下a为整型变量,值为3。,运算符 说明 优先级 例 结果 乘方 1 a2 9 负号 2 -a -3* 乘 3 a*a*a 27/
16、除 3 10/a 3.33333333333333 整除 4 10a 3Mod 取模 5 10 Mod a 1+ 加 6 10+a 13 减 6 a-10 -7,3. 比较运算符(Comparison Operators),运算符 说明= 等于 大于 大于等于 小于 小于等于 不等于,运算符 说明 优先级Not 取反 1And 与 2Or 或 3Xor 异或 3Eqv 等价 4Imp 蕴含 5,4. 逻辑运算符(Logical Operators),2. 字符串(连接)运算符 (Concatenation Operators),& 字符串连接符两边操作数无论是字符型还是数值型均可,结果为字符型
17、。 + 两边操作数应为同一类型,其结果类型不变。,2.4 运算符与表达式,表达式:表达式由常量、变量、函数、运算符、( )按照一定的规则组成,不管表达式的形式如何,都会计算出一个结果,该结果的类型由参与运算的数据和运算符决定。,表达式的书写规则: 1)每个字符没有高低、大小的区别; 2)只能使用(),可多重使用,括号必须成对出现; 3)算术表达式中的乘号(*)不能省略; 4)尽量使用系统函数。,表达式的分类:算术表达式:其中只有算术运算符关系表达式:使用关系运算符表示简单的条件,例如:age 20。逻辑表达式:使用关系运算符和逻辑运算符表示较复杂的条件,例如:数学中的00 And x5。,表达
18、式中的优先级:() 算术运算符 关系运算符 逻辑运算符,2.5 常用内部函数,* 数据类型转换函数,函 数 说 明 函 数 说 明 CBool( ) 将变量变成布尔型值 CInt( ) 将变量变成整型值CByte( ) 将变量变成字节型值 CLng( ) 将变量变成长整型值CCur( ) 将变量变成货币型值 CSng( ) 将变量变成单精度值CDate( ) 将变量变成日期型值 CStr( ) 将变量变成字符串值CDbl( ) 将变量变成双精度值 CVar( ) 将变量变成变体型值,* 常用数学函数,函 数 说 明 函 数 说 明 Abs( ) 取绝对值 Rnd( ) 产生随机数 Atn( )
19、 反正切函数 Sin( ) 正弦函数Cos( ) 余弦函数 Sgn( ) 符号函数Exp( ) e为底的指数函数 Sqr( ) 平方根函数Long( ) e为底的自然函数 Tan( ) 正切函数 Int(N) 返回不大于N的最大整数,* 常用的转换函数,函数名 说 明 例 结 果 Asc(C) 字符转换成ASCII码值 Asc(“A”) 65 Chr$(N) ASCII码转换成字符 Chr$(65) “A” Fix(N) 取整 Fix(-3.5) -3 Hex$(N) 十进制转换成十六进制 Hex(100) 64 Int(N) 正数取整同Fix, Int(3.5) 3负数取不大于N的最大整数
20、Int(-3.5) -4 Lcase$(C) 大写字母转换成小写字母 Lcase$(“ABC”) “abc” Oct$(N) 十进制转换成八进制 Oct$(100) “144” Str$(N) 数值转换成字符串 Str$(123.45) “123.45” Ucase$(C) 小写字母转换成大写字母 Ucase$(“abc”) “ABC” Val(C) 数字字符串转换成数值 Val(“123AB”) 123,* 字符串函数,函 数 说 明 例 结 果 Left$(C,N) 取出字符串左边n个字符 Left$(“ABCDEFG”,3) “ABC” Len(C) 字符串长度 Len(“ABCDEFG
21、”) 7 Ltrim$(C) 去掉字符串左边空格 Ltrim$(“ABC”) “ABC” Mid$(C,N1,N2) 自字符串N1位向右取N2个字符 Mid$(“ABCDEDFG”,2,3) “BCD” Right$(C,N) 取出字符串右边n个字符 Right$(“ABCDEF”,3) “DEF” Rtrim$(C) 去掉字符串右边空格 Rtrim$(“ABC”) “ABC” Space$(N) 产生N个空格的字符串 Space$(3) “” String$(N,C) 返回C中首字符组成N个字符串 String$(3,”ABCDEF”) “AAA” InStr(N1,C1,C2,N) 在C1
22、中从N1开始找C2, InStr(2,”ABCDEFG”,”EF”) 5无N1时从头开始找,找不到为0 StrComp(C1,C2,N) 以-1,0,1分别表示两个字符串 StrComp(“ABCDEF”,”BC”) -1的大小注:后二个函数中的N=0或省略表示执行二进制比较,N=1表示执行文本比较。,下面的示例利用 InStr 搜索字符串: Dim SearchString, SearchChar, MyPos SearchString =“XXrXXrXXRXXR“ 要在其中搜索的字符串。 SearchChar = ”R“ 搜索 ”R“。文本比较从第四个字符开始返回 6。 MyPos =
23、Instr(4, SearchString, SearchChar, 1) 二进制比较从第1个字符开始返回 9。 MyPos = Instr(1, SearchString, SearchChar, 0) 缺省为二进制比较(最后一个参数省略)。 MyPos = Instr(SearchString, SearchChar) 返回 9。 二进制比较从第1个字符开始返回 0 (没有找到 “W“)。 MyPos = Instr(1, SearchString, “W“),* 日期函数 Time Date Now,* 格式输出函数,形式: Format$(表达式,格式字符串),* Shell 函数,函
24、数格式: Shell (命令字符串,窗口类型),可执行文件(扩展名为、 或),内部常数 窗口类型 意 义 VbHide 0 窗口被隐藏,且焦点会移到隐式窗口。 VbNormalFocus 1 窗口具有焦点,且会还原到它原来的大小和位置。 VbMinimizedFocus 2 窗口会以一个具有焦点的图标来显示。 VbMaximizedFocus 3 窗口是一个具有焦点的最大化窗口。 VbNormalNoFocus 4 窗口会被还原到最近使用的大小和位置,而当前活动的窗口仍然保持活动。 VbMinimizedNoFocus 6 窗口会以一个图标来显示,而当前活动的的窗口仍然保持活动。,返回一个Va
25、riant或Double,第3章 VB程序设计初步,1 程序设计方法的发展,手工方式编程:硬件成本高,强调使用技巧节省时间和空间,程序可读性差,通用性差,维护困难。,SP:采用自顶向下、逐步求精的分析和设计方法(功能分解方法),程序模块化,模块的层层分解(明确功能、降低复杂度)。实现每个模块的程序的基本结构有三种:顺序结构、选择(条件分支)结构、循环结构。程序的可读性、易于维护成为评价程序质量的首要条件。,OOP:不再把问题分解为过程,而是将问题分解为对象。OOP更能准确地反映真实世界,更符合人的思维方式。对象是现实世界中可以独立存在并可被区分的一些实体,或是概念上的实体。对象有自己的数据(属
26、性),也包括作用于数据的操作(方法)。对象把自己的属性和方法封装成一个整体,供程序员使用。对象之间的相互作用通过消息传送来实现。,VB程序设计初步,1 程序设计方法的发展,SP方法突出过程,强调的是“如何做”,即代码功能如何完成。 OOP突出对现实世界的抽象,强调的是“做什么”,它将大量的工作由相应的对象来完成,程序员在应用程序中只需说明要求对象完成的任务。,OOP方法的优点: (1)符合人们常规的思维方法; (2)易于软件的维护和功能的增减; (3)可重用性好; (4)与可视化技术相结合,改善了工作界面。,窗体,属性: Name(名称),AutoRedraw(自动重画),BackColor(
27、背景色), ForeColor(前景色),BorderStyle(边框方式),Caption(标题), Enabled(有效:是否响应鼠标和键盘事件), Font(字体)包括: FontSize(字体大小),FontName(字体样式)FontBold、FontItalic、 FontUnderline等; 位置属性:Height、Width、Left、Top;StartUpPosition(首次出现位置), MaxButton(”最大化”按钮),MinButton( ”最小化”按钮), Picture(设置显示图片,代码中利用LoadPicture()函数来设置),Visible(是否可见)
28、,WindowState(窗体运行时的大小状态),常用事件: Click(单击),DblClick(双击),Load(装入),常用方法:Print:在窗体上输出字符串或表达式(或列表)的值(参见第3.6节 )。Cls:清除用Print方法在窗体上显示的文本或图形方法输出的图形。,例题3-1:用窗体模拟黑板,单击鼠标时提出问题,双击时显示回答。,命令按钮(CommandButton),常用属性: Caption(标题),BackColor(背景色), Style(样式),Defualt(设置为窗体的缺省按钮),Cancel(设置为窗体的取消按钮), Picture(设置Style=1时显示的图片
29、),ToolTipHelp(鼠标悬停提示文本),常用事件: Click(单击),例3-2:在例3-1的“模拟黑板”程序中,通过点击不同按钮来显示提问和回答。,标签(Label),常用属性: Caption(标题),BorderStyle(有无边框),AutoSize(自动调整大小),Alignment(内容对齐方式),BackStyle(背景是否透明),常用事件: Click(单击),DblClick(双击),标签主要用于显示不需要用户修改的文本。常用作标题、栏目名或输入、输出区域的标识。,文本框(TextBox):,常用属性: Text(文本内容),Locked(是否可编辑),MaxLeng
30、th(最大字符数),MultiLine(是否允许接收多行文本),PassWordChar(显示替代符,MultiLine=False),ScrollBars(是否有滚动条,MultiLine=True),常用事件: Change(内容改变),LostFocus(失去焦点),例3-3:在文本框Text1中输入时,文本框Text2和“阴影字”同步显示相同内容。,赋值语句:,格式:1)Let变量名=表达式 或者 Set 对象型变量名=表达式2)对象名.属性名=表达式,例3-4:点击左侧按钮,对变量赋值,并在右侧的标签上显示结果。 例3-5 :设计程序,用来计算三角形面积。,赋值语句是VB程序最常用、
31、最基本的语句。,文本框是一个文本编辑区域,用户可以在文本框内输入、编辑和显示文本。,常用方法: SetFocus(获得焦点),Print方法,格式: 对象名.Print 表达式列表 说明:1)对象名可以是Form(窗体)、Debug(立即窗口)、PictureBox(图片框)、Printer(打印机)。如果缺省,对象为当前窗体。2)表达式列表:一个或多个表达式,如省略此项,则输出一空行。输出数值数据时,数据前有一个符号位,后面有一个空格;输出字符串时前后都没有空格。列表各项如果用“,”分隔,则各项数据在不同的输出区段(14个字符位置为单位划分)中输出;如果用“;”分隔,则各项数据连续无间隔(紧
32、凑格式)输出。表格式列表末尾如果是“;”,则下一个Print语句的输出内容将紧跟在当前Print语句输出内容之后;如果末尾为“,”,则下一个输出内容将在当前输出内容的下一区段输出(即打印指针不换行);如果末尾无分隔符,则当前输出结束后换行,即在新的一行中进行下一词输出。3)可以用Tab函数对输出项进行定位。格式:Tab(列值表达式)4)可以用Spc函数对输出进行定位。格式:Spc(间隔的空格数),例3-6:设计程序,演示Print方法的各种功能。,Print是输出数据的一种重要方法。,快速输入输出,1InputBox函数,函数形式:InputBox$(提示,标题,缺省,x坐标,y坐标),例1S
33、tr1=InputBox(“请输入一句贺词:”,“输入贺词”,“祖国万岁”),2MsgBox函数,函数语句形式:MsgBox 提示,按钮,标题 函数形式:变量%=MsgBox(提示,按钮,标题),例1Msgbox “Hello World”,例2,Cls、Rem、End、Stop语句,Cls语句:格式:对象名.Cls功能:清除窗体或图片框中由Print方法显示的文本和图形方法所生成的图形,并把输出位置移到对象的左上角。 例3-9:完善例3-1,要求单击窗体,可以清除窗体上的文本。,Rem语句:格式: | Rem 注释内容功能:代码中加入用来解释或说明的附加文本。,End语句:格式:End功能:
34、用来结束程序的执行,并关闭已打开的文件。,Stop语句:格式:End功能:在对程序调试时,用来暂停程序的执行。说明:一般在调试时使用,相当于在程序代码中设置断点。,End 语句说明,1. End语句不调用Unload、QueryUnload事件或任何其他Visual Basic代码,只是生硬地终止代码执行。窗体和类模块中的Unload、QueryUnload事件代码未被执行。 2. End语句提供了一种强迫中止程序的方法。只要没有其他程序引用该程序公共类模块创建的对象并无代码执行,程序将立即关闭。 3. VB程序正常结束应该卸载所有的窗体。,应用举例,例3-7:完善例3-1,要求在“模拟黑板”程序中,通过输入框来输入、显示提问和回答。,例3-8:完善例3-1,要求在“模拟黑板”程序中添加按钮,单击后弹出有关程序信息的消息框。,例3-9:完善例3-1,要求在“模拟黑板”程序中,单击窗体,可以清除窗体上的文本。,例3-10:完善例3-1,要求在“模拟黑板”程序中添加按钮,单击后退出程序。,