资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,Visual Basic,程序设计教程,第一章 VB程序设计概述,程序设计根本概念:,计算机的工作是由程序来控制的。,程序是指令的集合。,指令是计算机可以识别的命令。,计算机语言的开展,机器语言:由计算机硬件系统可以识别的二进制指令组成的语言。,例如:,1011 1001 1101,缺点:难懂,调试困难。,计算机语言的开展,汇编语言:将机器指令转换成为一些可以被人读懂的助记符,如,ADD,、,SUB,等。,例如:,ADD CX, DX,将,DX,中的数值加进,CX,。经过汇编后执行。,与硬件联系密切,与人类自然语言相差较大。,计算机语言的开展,高级语言:屏蔽了机器的细节,程序采用具有含义的数据命名和容易理解的执行语句,类似英语和数学表达式。,例如:,If yForm1.width Then Label1.left=0,End Sub,三、标签 Label,用于显示文本(输出)信息,不能作为输入信息的界面。,四、文本框,是一个文本编辑区域,可在该区域输入,编辑和显示正文内容。,主要属性,Text,:,正文内容;,Maxlength,:,设置正文的最多字符个数,,0,任意长度值;,MultiLine,:,是否为多行,默认为一行,,False,;,ScrollBars,:,MultiLine,为,True,时,该属性才有效,表示滚动条的形式,0-None,、,1-Horizontal,、,2-Vertical,、,3-Both,;,Locked,:,是否可被编辑属性,,False,,,表示为可编辑。,PassWord,:,口令字符;,Text,属性返回输入的数据,屏幕显示该字符;,SelStart,、,SelLength,、,SelText,:,选中文本的起始、长度、内容。,例2-4 文本编辑器,程序代码:,Private Sub Form_Click(),Text1.SelStart = 0,Text1.SelLength = 8,End Sub,常用事件,Change,:,当改变文本框的,Text,属性时会引发该事件。,KeyPress(KeyAscii,As Integer),:,同上,并可返回一个,KeyAscii,参数,即所按键的值存放在参数,KeyAscii,中。,例如:对回车的判断,KeyAscii,=13,LostFocus,:,当控件失去焦点时发生。,GotFocus,:,当控件获得焦点时发生。,常用方法,对象,.,SetFocus,:,是把光标移到指定的文本框对象中。,例如:,例,2-5,文本框大小写字母转换,以,Key Press,为驱动事件。,程序代码:,Private Sub Command1_Click(),Text1.Text = ,Text2.Text = ,End Sub,Private Sub Command2_Click(),End,End Sub,Private Sub Text1_KeyPress(KeyAscii As Integer),Dim aa As String * 1,aa = Chr$(KeyAscii) 将ASCII码转换成字符,Select Case aa,Case A To Z 大写转换成小写,aa = Chr$(KeyAscii + 32),Case a To z 小写转换成大写,aa = Chr$(KeyAscii - 32),Case ,Case Else,aa = *,End Select, 将转换文本框已有的内容与刚输入并转换的字符连接,Text2.Text = Text2.Text & aa,End Sub,五、命令按钮,主要,属性,Caption:命令按钮显示的内容,可设置快捷键,例 &Ok,显示,O,k。,Style:确定显示的形式,0 只能显示文字,1 文字、图形均可 。,Picture :按钮可显示图片文件(.bmp和.Ico),当Style为1时有效。,ToolTipText :设置图形按钮的文字提示,和Picture结合使用。,事件,Click,例,2-6,建立一个允许剪切、复制和粘贴的简单记事本程序。,综合应用,程序代码:,Dim st As String,Private Sub Command1_Click(),Text1.SelText = ,End Sub,Private Sub Command2_Click(),End Sub,Private Sub Command3_Click(),Text1.SelText = st,End Sub,Private Sub Command4_Click(),Text1.FontName = 黑体,End Sub,Private Sub Command5_Click(),Text1.FontSize = 20,End Sub,Private Sub Command6_Click(),End,End Sub,例2-7,利用文本框,实现加法运算。,程序代码:,Private Sub Text1_LostFocus(),If Not IsNumeric(Text1) Then,Text1 = ,End If,End Sub,Private Sub Text2_KeyPress(KeyAscii As Integer),If KeyAscii = 13 Then,If Not IsNumeric(Text2) Then,Text2 = ,End If,End If,End Sub,Private Sub Text3_GotFocus(),Text3 = Val(Text1) + Val(Text2),End Sub,本章小节,类是同种对象的集合与抽象,包含所创立对象的属性描述和行为特征的定义,是创立对象实例的模板。,对象三要素:属性、事件、方法,窗体 是所有控件的容器,根本控件 标签、文本框、命令按钮,Move方法,形式:,对象.Move Left ,Top,Width,Height,例如:Command1.Move 0,50,Command1.,Width,/2,从右至左滚动字幕:,Sub Mymove(),End Sub,第三章 VB语言根底,数据类型,变量和常量,运算符和表达式,程序构造和编码规那么,数据类型,数值型数据,(1)整数,整型:Integer 占2字节 类型符为% 范围:-32768 32767,例如:123、-456、30289%,长整型:Long 占4字节 类型符为& 范围: -2147483648 2147483647,例如:-1234567&、396&,(2)浮点数,又称实数,是带有小数局部的数值,并可表示为指数形式。,单精度:Single 占4字节 类型符为! 范围: -3.410-38 3.410+38,双精度:Double 占8字节 类型符为# 范围: -1.710-308 1.710+308,精度达15位。,例如:342.54#、3.432D+67、0.453E-4#,数值型数据,(3)货币类型,Currency占8字节 类型符为,用于货币计算,范围:小数点左边15位,小数点右边4位,例如:2347、3.548,(4)字节类型,Byte 占1字节 无类型符范围:0-255,占一个字节的无符号整数。,字符型数据,字符型:String,类型符为$,用于存放字符型数据,包括所有西文字符和汉字及符号,用双引号括起。范围:065535个字符。,例如:“abc、“45gssk、“程序设计、“123,注意:“表示空字符,“ 表示有一个空格的字符。,逻辑型数据,只有True真和False假两个值,以两个字节存放。用于逻辑判断和逻辑运算。,日期型数据,用于表示时期、时间,占8字节,用#括起来表示。,时间范围: 0:00:0023:59:59,例如:#2006-7-12 12:30:36 PM#、#January 15,2006#、#07/13/2006#、#05/12/2021#,变体型数据,所有未定义的变量默认为变体型数据,可以是数值型、字符型、日期型等,根据程序运行需要来处理。,编程习惯应“先声明变量,后使用变量。使用变体型数据内存空间大,运行效率低,不易于调试。,对象型数据,用于存放程序对象的地址,如控件对象,占4字节。,如:Command2、Form1,VB的根本数据类型,变量,在程序运行过程中,其值能够改变的量称为变量。,变量需具有:名字、数据类型和作用域。,通过Dim语句来声明变量:,形式:Dim 变量名 As 数据类型,例如:Dim A As Integer,Dim abc As String, sum As Single,等价于:Dim abc$, sum!,即可用类型符代替“As类型。,变量声明,例如:Dim x As Integer, y As Integer, z As Integer,不能写作:Dim x, y, z As Integer,Dim m,n As Integer, x,y As Single,那么创立了变体型变量m、x,整型变量n和单精度型变量y,变量命名规那么,必须以字母或汉字开头,由字母、汉字、数字或下划线组成,长度小于等于255个字符,不能使用VB中的关键字,如If、Then,VB不区分变量名的大小写,一般变量名首字母用大写,其余用小写字母表示;常量全部用大写字母表示。,变量命名规那么,合法变量名:,A, x3, BOOK_1, sum5, Doc2, abc,非法变量名:,3st 不能以数字开头,s*T 出现非法字符*,dw ht 变量名不能有空格,Dim Sin As Integer Sin是函数名,x-y 变量名中不能出现减号,变量命名规那么,练习:,以下变量名是否合法?,a123 、 a 123、 a12_3、 123_a、 yhgx、 integer 、Sum、 Label1、,变量名、 Avg.1 、 strName,变量默认初值,数值型变量:0,字符串变量:“空,逻辑变量:False,如: Private Sub Form1_Click( ),Dim a As Integer,a=a+2,Print a,End Sub,隐式声明,对变量不加声明而直接使用,其类型为Variant 类型。,例如:Private Sub Form1_Click( ),a=10:b=20,Sum=a+b,Print “Sum=; Sum,End Sub,建议不使用。,注意: 在通用声明处加 Option Explicit 语句可强制显式声明变量。,常量,在程序运行过程中,其值不能改变的量称为常量。,1、直接常量,各种类型的常数值,,其常数值直接反映了其类型。,如: 123 、-123、123%均为整型 123& 为长整型,123.45、123.45!、0.12E+3 均为单精度型 123.45#为双精度型,123.45 为货币型,#03/12/2006#、#2021-12-31 12:30:00 PM# 均为日期型,“12345、“asddf234、“程序设计 均为字符型。,常量,2、用户声明的符号常量,由用户定义的符号来表示的常量。,形式:Const 符号常量名 As 类型 = 表达式,声明符号常量PI,代表3.14159,单精度型,常量,3、,系统提供的常量,系统提供许多内部常量,,在,VB,中是以,vb,为前缀。,例如:,vbRed,表示红色,vbNormal,表示正常,Form1.WindowsState=vbNormal 窗口正常,Form1.WindowsState=vbMaximized,窗口最大化,运算符和表达式,运算符是表示实现某种运算的符号。,VB中的运算符可分为:,1、算术运算符,2、字符串运算符,3、关系运算符,4、逻辑运算符,算术运算符, - * / mod + ,优先级别:从左向右是由高到低。,如: 23 8 3*2 6,103 3 10 mod 3 1,30-True 31 False+10+4 14,算术运算符两边应是数值型,如是字符型或逻辑型,,那么自动转换成数值型再运算。,算术运算符,ia=3,算术表达式,表达式中所有运算符和操作数都是并排的。,a,*,b,*,c,*,d/e/f/g 或 a,*,b,*,c,*,d/(e,*,f,*,g),数学表达式,: (3x+y)-z,(xy),4,VB表达式: sqr(3*x+y)-z)/(x*y)4,sin(45,*,3.14/180)+(exp(10)+log(10)/sqr(x+y+1),算术表达式,乘号不能省略。,例:,应为:S=3.14*r2,括号必须成对出现(均使用圆括号)。,表达式:Abs (x+y)+z5,表达式:(-b+ Sqr (b*b-4*a*c)/(2*a),表达式:(2*3.14*r+exp(-5)*log (x),数据类型的转换,算术运算中,如果操作数具有不同精度,那么运算结果的数据类型采用精度高的数据类型。,转换规那么:IntegerLongSingleDouble,ABCDE,ABR,False,=,bc,=,abcde,True,233,False,=,23, =,3,True,abc,abcde,True,关系运算符,比较规那么:,1、字符比较时是按其ASCII码值比较大小的,并且是从左向右一个一个字符比较的。2、汉字字符是按拼音为序进展比较。并且汉字字符大于西文字符。,3、数值型数据,直接按其大小进展比较。,逻辑运算符,逻辑运算符作用是将操作数进展逻辑运算,结果是逻辑值True或False。,逻辑表达式,例1:,选拔优秀生的条件为:年龄(Age)小于19岁,三门课总分(Total)高于285分,其中有一门为100分,其表达式写为:,Age285,And,( Mark1=100,Or,Mark2 =100,Or,Mark3=100 ),例2:表达x是5或者7的倍数。,运算符的优先级,算术运算符字符运算符关系运算符逻辑运算符,例题:表示算术表达式,:,正确的VB表达式: 3=x And x =7,错误的VB表达式: 3=x=7 或 3=x Or x= 100 Or a a Then,Text1 = ,Else,Text2 = Sqr(a),End If,End Sub,常用函数,VB函数包括:内部函数和用户自定义函数,内部函数,数学函数,转换函数,字符串函数,日期函数,Shell函数,数学函数,-4,3,Int(-3.5),Int(3.5),取小于或等于,N的最大整数,Int(,N,),2.3,Log(10),自然对数,Log(,N,),-3,3,Fix(-3.5),Fix(3.9),取整,Fix(,N,),20.086,Exp(3),e,n,Exp(,N,),1,Cos(0),余弦函数,Cos(,N,),3.5,Abs(-3.5),取绝对值,Abs(,N,),结果,实例,含义,函数名,数学函数,0,Tan(0),正切函数,Tan(N),3,Sqr(9),平方根,Sqr(N),-1,Sgn(-3.5),符号函数,Sgn(N),0,Sin(0),正弦函数,Sin(N),-4,4,Round(-3.5),Round(3.5),四舍五入取整,Round(N),0,1)之间的数,Rnd,产生随机数,Rnd(N),结果,实例,含义,函数名,数学函数,例:Int(3.2)=3 Int(3)=3,Int(6.8)=6 Int(-3.4)=-4,Rnd函数生成0,1的双精度随机数。,例:在立即窗口通过print Rnd语句观察随机函数的运行效果。,应用举例,实验B-3,我国有13亿人口,年增长率0.8%,多少年后人口超过26亿。计算结果以整数形式输出。,Private Sub Command1_Click(),n = Int(Log(2) / Log(1.008) + 1),Label1 = n & 年后人数超过26亿,End Sub,应用举例,生成一个0100之间的随机整数。,产生0,1随机数:Rnd,产生0,100随机数:Rnd*100,产生0,100随机整数:Int(Rnd*100),问题1:生成0,100范围内的随机整数。,问题2:生成100,200随机整数。,问题3:生成30,50随机整数。,实验B-5,随机产生一个3位正整数,然后逆序输出,产生的随机数与其逆序数同时显示。,Private Sub Command1_Click(),Text1 = Int (Rnd * 900 + 100),End Sub,Private Sub Command2_Click(),Dim x%, x1%, x2%, x3%,x = Val(Text1),x1 = x Mod 10,x2 = (x Mod 100) 10,x3 = x 100,Text2 = x1 * 100 + x2 * 10 + x3,End Sub,转换函数,ABC,Ucase(abc),小写字母转为大写字母,Ucase(C),144,Oct$(100),十进制转换成八进制,Oct(N),123.45,Str$(123.45),数值转换为字符串,Str(N),123,Val(123AB),数字字符串转换为数值,Val(C),abc,Lcase(ABC),大写字母转为小写字母,Lcase$(C),64,Hex(100),十进制转换成十六进制,Hex(N),A,Chr(65),ASCII码值转换成字符,Chr(N),2003-11-13,CDate(2003/11/13),转换成日期型,CDate,65,Asc(A),字符转换成ASCII码值,Asc(C),结果,实例,功能,函数名,字符串函数,BCD,Mid(ABCDE,2,3),取字符子串,Mid(C,N1,N2),ABCD,Trim(,ABCD,),去掉字符串两边空格,Trim(C),A3AB3,Replace(ACDABCD,CD,3),用,C,2替代,C,1,Replace(C,C1,C2),Space(3),产生,N,个空格的字符串,Space(N),4,Len(AB教育),字符串长度,Len(C),ABC,Left(ABCDE,3),取字符串左边,n,个字符,Left(C,N),6,InStr(EFABCDEFG,“DE),在,C,1中找,C,2,若找不到则结果为0,InStr(C1,C2),结果,实例,说明,函数名,日期函数,Second(#1:12:56PM#),返回秒(059),Second(C|N),Time,返回系统时间,Time,Year (Now),返回年代号(17532078),Year(C|N),Now,返回系统日期和时间,Now,Month(2003,05,01),返回月份代号(112),Month(C|N),Minute(#1:12:56PM#),返回分钟(059),Minute(C|N),Hour(#1:12:56PM#),返回小时(024),Hour(C|N),Day(2003,05,01),返回日期代号(131),Day(C|N),Date,返回系统日期,Date,实例,说明,函数名,日期函数,例: 计算从当前日期到2021年6月30日有多少天?表达式为:,DateDiff(d, Now, #2021-6-30#),计算从当前日期到2021年6月30日有多少周?表达式为:,DateDiff(“ww, Now, #2021-6-30#),计算从2000年2月14日增加两周后的日期:,DateAdd(ww,2,#2000-2-14#),Shell函数,Shell函数可调用各种应用程序。格式如下:,Shell(命令字符串,窗口类型),函数调用成功返回一个任务标识ID,不成功那么返回0。,例 i = Shell( calc.exe,1),j=Shell(“Mspaint.exe,1),要执行的应用程序扩展名为 .exe .bat,包括路径,执行时的窗口大小,范围04、6,一般取1表示正常大小。,程序构造,编码规那么,(1) VB代码不区分字母的大小写,关键字 首字母自动转换成大写,其余字母转换成小写。,用户自定义的变量、过程名,以第一次定义的为准,以后输入的自动向首次定义的形式转换。,(2) 语句书写自由,一行上可书写多句语句(用冒号分隔),一行最多255个字符。,单行语句可分假设干行书写,在本行后参加续行符(空格和下划线)。,综合例题,模仿Word字处理软件,实现字符串查找替换功能。,综合例题,实现思路:,利用替换(Replace)函数实现替换功能。,利用查找(InStr)、取子串(Left、Mid)等函数实现替换功能。,利用Shell函数调用winword.exe执行Word程序实现替换功能。,综合例题,程序代码:,Private Sub Command2_Click(),Text4 = Replace(Text1, Text2, Text3),End Sub,Private Sub Command1_Click(),i = InStr(Text1, Text2) 在Text1中找到Text2的位置,k = i + Len(Text2) 找到替换后半局部的起始位置,ls = Left(Text1, i - 1) 取前半局部字符串,Text4 = ls + Text3 + Mid(Text1, k) 拼成新字符串,End Sub,综合例题,程序代码:,Private Sub Command3_Click(),i = Shell (c:program filesmicrosoft officeoffice11winword.exe, 1),End Sub,例题分析,例题分析,Private Sub,Text1_LostFocus(),If Not IsNumeric(Text1) Then,Text1 = ,End If,End Sub,Private Sub,Text2_LostFocus(),If Not IsNumeric(Text2) Then,Text2 = ,End If,End Sub,例题分析,Private Sub Text2_LostFocus(),If Text2 And Not IsNumeric(Text2) Then,Text2 = ,End If,End Sub,终止死循环的方法:Ctrl + Break,本章小节,数据类型:包括数值型 、字符型、逻辑型、日期型、变体型等。,变量:在程序运行中其存储的值可以改变,变量声明 Dim 变量名 As 类型,运算符 算术运算符、字符串运算符、关系运算符和逻辑运算符。,函数 内部函数、用户自定义函数,调用函数形式:函数名参数列表,Shell函数 调用各种应用程序,练习一,1产生一个1099之间的随机整数的表达式是_。,2数学表达式 的VB表达式为_。,3数学表达式3x2,1133,12True and False,13910 or true,练习三,1编写一个程序,随机生成一个三位正整数,并在窗体上打印出其个位数、十位数和百位数。,2编写一个简易计算器程序,界面如图:,练习三,3在窗体上放一个标签Label1,1个命令按钮Command1,当窗体启动时使标签显示系统的当前时间。命令按钮显示为“放大,当单击命令按钮时,将标签中显示的文字放大13倍随机决定,并重新显示系统当前时间。,
展开阅读全文