资源描述
Visual Basic复习,苏州大学计算机科学与技术学院 徐进华,Visual Basic简介,相关知识点,面向对象的相关概念 类、对象、属性、方法、事件 方法与事件的区别 方法:对象可以执行的动作(过程或函数) 事件:对象能识别的动作 事件驱动、事件过程 VB相关的文件及内容 工程(.VBP)、窗体(.FRM)、标准模块(.BAS),示例,1、以下关于方法的叙述错误的是_。 A. 方法是构成对象实体的一个部分 B. 方法是一种特殊的过程或函数 C. 调用方法的一般格式是:对象名称.方法名称 参数 D. 在调用方法时,对象名称是不可缺少的 2、扩展名为VBP的工程文件中包含有_。 A. 工程中所有模块的有关信息 B. 每个窗体模块中的所有控件的有关信息 C. 每个模块中所有变量的有关信息 D. 每个模块中所有过程的有关信息,界面设计,窗体、常用控件及菜单,相关知识点,一个VB应用程序至少要包含一个窗体 常用公共属性、方法、事件 属性 Name,Caption,Picture,Top,Left,Width,Height Enabled,Visible,Font 方法:SetFocus,Move,Refresh 事件:Click,DblClick,GotFocus,LostFocus,KeyPress 窗体(Form)的常用属性、方法、事件 Show,Hide,Print,Cls,Load,UnLoad,相关知识点,文本框(TextBox)常用属性方法事件 Text,MultiLine,PasswordChar,Change 标签(Label)常用属性方法事件 AutoSize,WordWrap 按钮(CommandButton)常用属性方法事件:Default,Cancel,Style,Picture 选项按钮(OptionButton)常用属性方法事件:Value,Style,Picture 复选框(CheckBox)常用属性方法事件: Value,Style,Picture 计时器(Timer)常用属性方法事件:Interval,Timer,相关知识点,列表框(ListBox)常用属性方法事件 List,ListCount,ListIndex,Text AddItem,RemoveItem,Clear 组合框(ComboBox)常用属性方法事件 Style,Change(其他与ListBox相同) 图片框(PictureBox)常用属性方法事件 AutoSize,Picture,Print,Cls 图像(Image)常用属性方法事件:Picture,Stretch 滚动条常用属性方法事件(水平,垂直) Value,Max,Min,LargeChange,SmallChange Change,Scroll,相关知识点,菜单 下拉式,弹出式 为菜单项设置访问键(热键) 在标题栏中用&字母,访问用Alt+字母 在菜单命令中插入分组线 弹出菜单:PopupMenu 菜单名 多窗体设计 设置启动窗体,注意点,事件过程的名称构成 对象与方法属性等的搭配 有关控件的注意点 容器对象 可以显示图片的对象、有CAPTION属性的对象 属性窗口 几种对象的清空 窗体 图片框 文本框 列表框与组合框 不可获得焦点的对象:标签、框架、形状、线条、图像、计时器,示例,1、如果窗体上有命令按钮“确定”,在代码编辑窗口有与之对应的OK_Click()事件过程,则命令按钮控件的名称属性和Caption属性分别为_。 A. “OK”和“确定” B. “确定”和“OK” C. “Command1”和“确定” D. “Command1”和“OK” 2、VB中下列关于控件的属性或方法中搭配错误的有_个。 Timer1.IntervalList1.ClsText1.Print List1.RemoveItemVscroll1.ValuePicture1.Print A. 0 B. 1 C. 2 D. 3,示例,3、使用菜单编辑器创建菜单时,可在菜单名称中某字母前插入_符号,那么在运行时按Alt键和该字母键的组合就可以打开该命令菜单。 A. 下划线 B. & C. $ D. 4、下面所列控件属性中,其值既能在程序设计时设定,又能在程序运行时通过赋值改变的是_。 A. List1.ListCount B. Text1.Index C. Dir1.Path D. Label1.Visible 5、Print方法可在_上输出数据。 窗体 文本框 图片框 标签 列表框立即窗口 A. B. C. D. ,语言基础,数据类型、运算符、表达式、函数,相关知识点,两种过程 事件过程:只能出现在窗体模块中 通用过程 两种注释方法 Rem:注释整行 (单引号):可以出现在一行的任意位置 数据类型 String,Integer,Long,Single,Double,Byte Currency,Boolean,Date,Variant,Object,相关知识点,类型说明符:%,&,!,#,$ 变量与常量 常量 普通常量:字符串常量与日期常量的定界符 整数常量:若在-32768,32767范围内当作整型,否则当作长整型 符号常量的定义:Public|Private Const 常量名 As 类型=数值 变量 定义关键字 Dim:可以任意模块中 Private,Public:不能出现在过程中 Static:只能在过程中 作用域与生命期 合法常量与合法变量,相关知识点,运算符与表达式 算术运算符:,*,/,Mod,+,- 字符运算符:&,+ 关系运算符:,=,Is 逻辑运算符:Not,And,Or,Xor 运算符优先级:算术运算字符运算关系运算逻辑运算 算术运算符的优先级:-(负号)*/Mod+- 关系运算符的优先级相同,按从左到右的顺序进行运算。 逻辑运算符的优先级:NotAndOrXor 可以使用括号改变运算的优先级。 算术运算时,如果进行运算的两个运算对象的类型相同,则结果的类型也将是同一类型的;如果不同数据类型的数据进行运算,结果类型为两个运算对象中存储长度较长的那个对象的类型。除法与乘方运算的结果类型为双精度型。,相关知识点,不同类型的数据赋值与运算问题:如果赋值语句左边的变量的数据类型与右边的表达式类型不同,则: 如果都是数值类型,则先求出表达式的值,再转换为变量的类型后赋值; 如果变量为String类型,则先求出表达式的值,再转换为字符串后赋值; 如果变量为Boolean型,表达式为数值类型,则表达式的结果非零时转换为True,表达式结果为0时转换为False再赋值; 将True赋给数据类型的变量时转换为-1,将False赋给数值类型的变量时转换为0; 可以将纯数字字符串(含科学计数表示法)赋值给数值类型的变量。,相关知识点,常用系统函数 算术函数 Abs、Atn、Cos、Exp、Hex、Log、Oct、Rnd、Sgn、Sin、Sqr、Tan 字符串函数 Len、Left、Right、Mid、Ucase、Lcase、Ltrim、Rtrim、Trim、InStr、String、Space 日期函数 Date、Time、Now、Year、Month、Day、WeekDay 转换函数 Str、CStr、Val、Chr、Asc、CInt、CLng、Fix、Int 其他函数 InputBox、MsgBox、Format、RGB,注意点,常数、定长字符串、数组在窗体模块(通用声明处)中不能用Public定义。 乘方()、除法(/)运算结果为双精度;求余(MOD)、整除()运算要求参与运算的数据必须为整数,若不是整数,则系统自动转换,结果为整型;其他运算符(*、+、-)运算时,若两个运算对象类型相同,则结果类型也与之相同,否则结果类型为存储长度相对较长的那个类型。 非整数转换成整数的原则:四舍六入五成双。小数部分:所有大于0.5的一律向上进;所有小于0.5的一律舍掉;正好为0.5的要保证结果为偶数;Format函数中除外,为四舍五入。 InputBox函数返回值与文本框、列表框及组合框的Text属性值类型为字符串。 同名变量的访问,以局限性大(作用域小)的优先访问。 CInt()函数可以将数据转换为整型(四舍六入五成双);Int()函数为下取整;Fix()函数为取数据的整数部分,Int()与Fix()只能将结果变成整数,数据类型仍为原来的类型。,示例,1、下列表达式中,运算结果与函数Mid(S,i,i)的返回值相同的是_。 A. Left(S,i) & Right(s,Len(S)-i) B. Left(Right(S,Len(S)-i+1),i) C. Left(Right(S,i),Len(S)-i+1) D. Left(S,Len(S)-i) & Right(S,i) 2、下列表达式中能够被正确计算的有_个。 (1)4096*23 (2)Cint(5.6) * 5461+2 (3)6553*5+0.5*6 (4)32768+12 A. 4 B. 3 C. 2 D. 1 3、下列选项中,所包含的所有表达式能够将两位整数X的个位数与十位数对调的是_。 Val(Right(X,1) & Left(X,1) Val(Right(Str(X),1) & Left(Str(X),1) Val(Right(CStr(X),1) & Left(CStr(X),1) Val(Mid(X,2,1) + Mid(X,1,1) A. B. C. D. ,示例,4、执行下列语句时会出现错误提示的是_。 A. Print 256*256 B. Print “256” & 256 C. Print “256”+256 D. Print 256=127*2 5、变量S为字符型,若在文本框Text1、Text2中分别输入数字23与35后,再执行以下语句,S的值为“58”的是_。 A. S=Text1.Text & Text2.Text B. S=Text1.Text + Text2.Text C. S=Val(Text1.Text) + Text2.Text D. S= Val(Text1.Text) & Text2.Text,示例,6、执行下面语句后,Len函数值最大的是_。 Dim IA As Integer, B As Single, S As String *5, Ch As String IA=32767 : B=23.5 : S=”A” :Ch=”abcd” ALen(IA) BLen(B) CLen(S) DLen(Ch) 7、下面表达式中,_的值是整型(Integer或Long)。 57-6/2 254+Fix(9.62) 19+6.31.3 927 & 73 ”485”+469 9.5 Mod 3.5 A. B. C. D. 8、对正实数X 的第四位小数四舍五入的VB表达式是_。 A. 0.001*Int(x+0.005) B. 0.001*(1000*x+0.5) C. 0.001*Int(1000*x+5) D. 0.001*Int(1000*(x+0.0005),示例,9、在窗体的通用说明部分有以下说明语句,其中正确的是_。 A. Private Const A As Integer=235/2 B. Const B As Integer=CInt(2.53) C. Dim Const C As Integer=3579 D. Public Const S As Boolean=True 10、下面运算结果为True的是_。 A. “abcrd”21 D. Mid(“Visual”,1,4)=Right(“lausiV”,4),程序控制结构,顺序、选择、循环,程序的三种结构,顺序结构 选择结构(分支结构) If语句 Select Case语句 循环结构 For-Next循环 Do-Loop循环,选择结构-If,If语句 单行 多行 多分支,If e Then A,If e Then A Else B,If e Then A End If,If e Then A Else B End If,If e1 Then A1 ElseIf e2 Then A2 Else An+1 End If,选择结构-Select Case,Select Case语句,Select Case 测试项 Case e1 A1 Case e2 A2 Case en An Case Else An+1 End Select,e的三种写法 1、枚举值 2、x To Y 3、Isn格式,For-Next循环,格式 For 循环变量=初值 To 终值 Step 步长 循环体 Next 先检查后执行 若循环中初值、终值与步长用变量表示,则这些变量在循环体中的变化不会影响循环次数。 关注循环结束后循环变量的值,Do-Loop循环,当型Do While循环是条件为真时循环 直到型Do Until循环是条件为假时循环 Exit Do/For语句退出相应的Do/For循环 注意结构嵌套不要出错,示例,下面的事件过程执行结束后,A(2)的值是_,A(7)的值是_。 程序中第二个循环被执行了_次。 Option Explicit Option Base 1 Private Sub Command1_Click() Dim A(10) As Integer Dim i As Integer, k As Integer For i = 1 To 10 A(i) = 1 Next k = 1 For k = 1 To 10 Step k A(k) = 0 k = k + 2 Next k End Sub,示例,执行下面的程序,当单击窗体时,显示在窗体上第一行的内容是_, 第二行内容是_。 Private Sub Form_Click() Dim I As Integer, Sum As Integer For I = 0.5 To 8.5 Step 2.5 Sum = Sum + I * 10 Next I Print Sum Print I End Sub,示例,执行下面程序,当单击Command1时,列表框List1的第二列表项 内容是_,第四列表项内容是_,第五列表项内容是_。 Private Sub Command1_Click() Dim i As Integer, j As Integer For i = 1 To 10 j = j + i List1.AddItem j Next For i = 1 To 4 List1.RemoveItem List1.ListCount - i Next End Sub,数组,注意点,数组必须先声明再使用,有无Option Base 1语句时,声明数组时注意缺省下界的值。 声明固定数组时,维的上、下界必须是常数(表达式),不可使用变量。 数组维界必须是整数,若不是整数,系统自动转换。 使用Array函数时,只能将集合赋给变体类型变量,会自动创建一个一维数组。 动态数组使用前必须使用ReDim重新声明,且不能改变类型 。,注意点,动态数组重新声明时,维界可以使用变量 。 使用Preserve子句时,只能改变最后一维下标的上界 。 Erase语句将固定大小数组元素值初始化为默认值,而将动态数组的全部空间都被释放 。 For Each循环中循环变量必须是变体类型 。 窗体通用声明处不能用Public定义数组 。 ReDim语句不能出现在窗体通用声明处 。 注意二维数组的输出及其在窗体上、图片框上及多行文本框中输出的不同 。,示例,1、下面有关数组的说法中,正确的是_。 A. 数组的维下界不可以是负数 B. 模块通用声明处有Option Base 1,则模块中数组定义语句Dim A(0 To 5) 会与之冲突 C. 模块通用声明处有Option Base 1,模块中Dim A(0 To 5),则A数组第一维维下界为0 D. 模块通用声明处有Option Base 1,模块中Dim A(0 To 5),则A数组第一维维下界仍为1 2、以下说法不正确的是_。 A. 使用不带关键字Preserve的ReDim语句可以重新定义数组的维数 B. 使用不带关键字Preserve的ReDim语句可以改变数组各维的上、下界 C. 使用不带关键字Preserve的ReDim语句可以改变数组的数据类型 D. 使用不带关键字Preserve的ReDim语句可以对数组中的所有元素进行初始化,示例,3、下列有关数组的说法中正确的是_。 A. 数组是有序变量的集合,序列中的变量类型可以不同 B. 数组下标用以确定数组元素在数组中的位置,下标取值只是能0或1 C. 在一定条件下,动态数组可以反复改变其维数与大小 D. 固定大小数组也可以使用ReDim语句改变其大小 4、下列有关数组的说法错误的是_。 A. 在窗体模块不可以定义全局数组 B. 可以使用Erase语句释放所有数组所占据的存储空间 C. 语句Dim X(3.6+2) As Integer定义了一个维上界是6的一维整型数组 D. 形参数组的类型可以是定长字符串类型,5、执行下面的程序,单击按钮 Command1 ,A(1 ,1)的值是 _ ,A(1,4)的值是 _ , A(4,1)的值是 _,A(4,4)的值是 _ 。 Option Base 1 Private Sub Command1_Click() Dim a() As Integer, i As Integer, j As Integer Dim k As Integer, n As Integer n = 4 ReDim a(n, n) i = 1: j = n: a(i, j) = 1 For k = 2 To n * n If i + 1 n Then i = n - j + 2: j = 1 ElseIf i + 1 n Then j = j - i: i = 1 Else i = i + 1: j = j + 1 End If a(i, j) = k Next k For i = 1 To n For j = 1 To n Print a(i, j); Next j Print Next i End Sub,6、执行下面的程序,单击按钮 Command1 ,A(1,1)的值是 _ ,A(2,3)的值是 _ ,A(3,2)的值是 _。 Option Explicit Private Sub Command1_Click() Dim A(3, 3) As Integer, I As Integer, J As Integer, K As Integer I = 3: J = 1: A(I, J) = 1 For K = 2 To 9 If I + 1 3 Or J + 1 3 Then If J = 1 Then I = I - 1 ElseIf A(I - 1, J - 1) = 0 Then I = I - 1: J = J - 1 ElseIf J = 3 Then I = I - 1 Else J = J + 1 End If ElseIf J = 1 Or I = 1 Then If A(I + 1, J + 1) = 0 Then I = I + 1: J = J + 1 Else J = J + 1 End If Else If A(I - 1, J - 1) = 0 Then I = I - 1: J = J - 1 End If End If A(I, J) = K Next K End Sub,过程,自定义过程、自定义函数、递归,知识点,过程分类 事件过程:只能出现在窗体模块中 通用过程 Sub Function Sub过程的定义与调用 Function的定义与调用 Sub与Function的定义不能嵌套,知识点,过程的调用,调用结束后,返回到调用语句的下一句,知识点,实参与形参 形参是在Sub,Function的定义行中出现的变量名。 实参是在调用Sub或Function时传送的常量、变量、表达式或数组。 参数传递的两种方式 按地址传递:在参数名前加ByRef或省略,将参数地址传给过程,让过程访问实际变量,结果可改变变量的真正的值。 按值传递:在参数名前加ByVal,将变量的副本传递给过程,结果不改变变量的值。,知识点,形参不能与过程名同名 形参可以是除定长字符串变量之外的合法变量名(可以是定长字符串数组) 参数按地址传递时,实参的值随形参变化而变化(要求实参与形参类型一致!) 常量与表达式只能按值传递 数组只能按地址传递,且类型要一致(形参数组前不能加ByVal;形参数组不用给出维界) 若形参数组类型是变长字符串型,则实参数组必须是变长字符串型;若形参数组类型是定长字符串型,则实参数组必须是定长字符串型,但长度可以不同,知识点,形参变量及数组不用再定义,但如果是动态数组,可以使用ReDim重新改变维界,返回时,实参的维界也随之改变 递归 直接递归 间接递归 按地址传递时,实参与形参类型要一致,按值传递时,实参与形参类型相容 静态变量 过程调用结束后,静态变量的值仍然保留,示例,1、下列定义Sub过程的语句正确的是_。 A. Private Sub Sub1(A() B. Private Sub Sub1(A As String *5) C. Private Sub Sub1(ByVal A() As Integer) D. Private Sub Sub1(A(10) As Integer) 2、有关过程的说法错误的是_。 A. 在Sub或Function过程中不能再定义其他Sub或Function B. 调用过程时形参为数组的参数对应的实参既可以是固定大小数组,也可以是动态数组 C. 过程的形参不能再在过程中用Dim语句说明 D. 使用ByRef说明的形参在形实结合时,总是按地址传递方式进行结合的,示例,3、程序中有两个过程Private Sub Fun1(S As String)和Private Sub Fun2(A() As String * 6),在调用过程中用Dim St(6) As String * 6定义了一个字符串数组,下列调用正确的是_。 (1)Call Fun1(St(3) (2)Call Fun2(St) (3)Call Fun1(St) (4)Call Fun2(St(6) A. (1)(2) B. (1)(3) C. (2)(3) D. (2)(4) 4、定义两个过程“Private Sub Sub1(St() As String)”和“Private Sub Sub2(Ch() As String * 6)”,在调用过程中用“Dim S(3) As String *6,A(3) As String”定义了两个字符串数组。下面调用语句中正确的有_。 (1)Call Sub1(S) (2)Call Sub1(A) (3)Call Sub2(A) (4)Call Sub2(S) A. (1)(2) B. (1)(3) C. (2)(3) D. (2)(4),示例,5、在窗体Form1中用“Public Sub Fun(x As Integer, y As Single)”定义过程Fun,在窗体Form2中定义了变量i为Integer,j为Single,若要在Form2的某事件过程中调用Form1中的Fun过程,则下列语句中正确的语句有_个。 (1)Call Fun(I,j) (2)Call Form1.Fun(I,j) (3)Form1.Fun(i),j (4)Form1.Fun i+1,(j) A. 1 B. 2 C. 3 D. 4 6、若在应用程序中用“Private Sub Sub1(X As Integer, Y As Single)”定义了子程序Sub1,调用程序中的变量I、J均为Integer型,则正确调用子程序Sub1的Call语句是_。 (1)Call Sub1(I, J) (2)Call Sub1(3.1415,I) (3)Call Sub1(3.14,234) (4)Call Sub1(“245”,”231.5”) A. (1)(3) B. (3)(4) C. (1)(2)(3) D. 无,示例,7、执行下面程序,当单击Command1时,窗体上显示的内容的第二行是_,第三行是_,第四行是_。 Option Explicit Private Sub Command1_Click() Dim a As Integer, b As Integer, z As Integer a = 1: b = 1: z = 1 Call P1(a, b) Print a, b, z Call P1(b, a) Print a, b, z End Sub Private Sub P1(x As Integer, ByVal y As Integer) Static z As Integer x = x + z: y = x - z: z = x + y Print x, y, z End Sub,示例,8、执行下面程序,单击Command1按钮,多行文本框Text1中显示的第一行是_,第三行是_。 Option Explicit Private Sub Command1_Click() Dim st As String, n As Integer, ast As String st = “Basic“ n = Len(st) Do ast = change(st, n) Text1 = Text1 & ast & vbCrLf n = n - 1 Loop Until n = 1 End Sub Private Function change(st As String, n As Integer) As String Static p As Integer p = p + 1 change = Right(st, n - 1) & Left(st, p) End Function,示例,9、运行下面的程序,当单击Command1时,窗体上显示的第一行内容是_,第三行内容是_,第四行内容是_。 Private Sub Command1_Click() Print Test(3) End Sub Private Function Test(t As Integer) As Integer Dim i As Integer If t = 1 Then Call Test(t - 1) For i = 3 To t Step -1 Print Chr(Asc(“A“) + i); Next i Print End If Test = t End Function,文件,知识点,文件控件 DriveListBox Drive,ListIndex,Change DirListBox Path,ListIndex,Change(双击触发),Click FileListBox Path, FileName, ListIndex, ListCount, PathChange, PatternChange,改变驱动器列表框的ListIndex属性值会触发Change事件,改变ListIndex属性,不会改变Path属性,知识点,VB文件分类 顺序文件 随机文件 二进制文件 文件操作步骤 打开 操作 关闭,知识点,文件号的取值范围1511 顺序文件的读写 Input, Line Input, Input(), Print, Write 随机文件,二进制文件的读写 Get ,Put 在关闭文件或结束程序之前,必须使用Unlock语句对先前锁定的文件解锁,否则会出现难以预料的错误。,示例,1、下列有关文件的说法错误的是_。 A. 在Open语句中缺省FOR子句,则按Random方式打开文件 B. 可以用Binary方式打开一个顺序文件 C. 在Input方式下,可以使用不同文件号同时打开一个顺序文件 D. 用Binary方式打开一个随机文件,每次读写数据的字节长度取决于随机文件的记录长度 2、执行赋值语句_后,会触发相应控件的Change事件。 A. Dir1.ListIndex=-2 B. Drive1.ListIndex=2 C. List1.ListIndex=3 D. File1.ListIndex=3 3、下面能够正确打开文件的一组语句是_。 A. Open “data1” For Output As #5 B. Open “data1” For Output As #5 Open “data1” For Input As #5 Open “data1” For Input As #6 C. Open “data1” For Input As #5 D. Open “data1” For Input As #5 Open “data1” For Input As #6 Open “data1” For Random As #5,常用算法,常用算法,排序 选择法、冒泡法、插入法、合并法 查找 顺序、二分 数的问题 素数、升序数、降序数、同构数、水仙花数、回文数 字符串处理 字符统计、字符处理、字符加密,常用算法,最值 最大值、最小值 进制转换 整数应用 统计不同数字个数 计算整数位数 最大公约数 最小公倍数 级数 矩阵运算,
展开阅读全文