浙江省二级VB考试考前辅导讲义

更新时间:2023-05-24 11:09:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

浙江省二级VB考试前辅导讲义(不过都难)

计算机等级考试二级考试说明: 一、考试内容:

1、计算机文化基础(约17%) 2、VB程序设计(约83%) 二、笔试内容(60%)

1、VB程序设计语言 三、上机考试内容(40%)

1、Windows操作或文件操作 2、Excel或PowerPoint操作 3、Outlook或IE操作 4、程序调试2题 5、程序设计2题

第一章:VB概述

面向对象的基本概念: 对象:

在VB中窗体,控件都是对象,在代码中用名称来表示对象 form1,command1,label1 属性:

对象名.属性名=属性值

省略对象名默认指当前窗体的属性。 方法:

对象名.方法名[参数]

form1.print form1.cls text1.setfocus picture1.pset(100,100)等 事件:

窗体的load,click,dblclick事件等 文本框的change, keypress事件等 事件过程:

sub form_click()事件过程

窗体(p14) 常用属性:

常用事件:

Click、dblclick事件 Load事件 常用方法:

print 输出格式很重要

格式:[<对象名>.]print <输出项>[,|;]<输出项>

分隔符

输出项:数字前后带空格,字符串原样,逻辑值true与false原样 Tab(n)函数的使用

for I=10 to 1 step –1

print I;space(2); if I mod 3=0 then

浙江省二级VB考试前辅导讲义(不过都难)

print : i=i-1

end if

next I

注意:print “abc”;123和print “abc”& 123和print “abc”+ str(123)的区别? cls 方法

show方法(p19)、hide方法(与visible属性相关联)

工程的保存(p21):一个工程文件(*.vbp),若干个窗体文件(*.frm);一个工程至少有一个窗体。

第二章 程序设计基础

一、基本数据类型:(p35)

掌握常用数据类型的关键字、字节数、取值范围 注意溢出

数值的其它表示方式 &ha2 &o71 3.14E+2

注意与val函数的结合(P50填7) val(“&HAKKK”) 符号常量

符号常量的定义

符号常量的值在程序中不能被改变 二、变量

变量的定义:字母、数字、下划线。不能与关键字、函数名、常量名相同;不区分大小字 变量的声明:

VB的两种变量声明模式

1、强制声明option explicit dim a as integer ,b as integer 注意dim c, d as integer的含义

2、隐含声明(不提倡使用) 变量可以声明,也可以不声明而直接使用。通过在变量名后加类型后缀字符来声明类型(P38)% ! # $ 3、变量的初始值

dim a as integer, b as boolean, c as string a=a+3 : b=not b 什么是定长字符串 dim s as string * 1

三、赋值语句

a=b=c k%=1.3E9 b=a>c 5=x+3 y+6=x(红色的赋值语句正确吗?NO) 从右向左

左边只能是变量和属性, 不能越出表示范围

把右边表达式的值转化为左边的类型 k%=7.5 m%=6.7

例:执行a=b : b=c : c=a后,将交换a和c的值。

赋值语句与关系比较语句的区别: a=10

浙江省二级VB考试前辅导讲义(不过都难)

for a=10 to 20 if a=10 then while a=10 do until a=10

四、运算符

算术:\ / mod 优先级 求一个三位数的个位、十位、百位 字符串:& +

x=123 : y = “xyz” + str(x) : y = “xyz” & x

关系:<= <> 数值、字符串、时间均可比较,字符串数组排序时,不需要转换成ASCII码 逻辑:not and or

判断点(x1,y1)是否在x^2+y^2=9的上半圆的逻辑表达式

五、常用内容函数

数学函数:三角函数、abs、exp、log、sqr、sgn、int、fix

字符串函数:trim(ltrim、rtrim)、left、right、mid、len、space、string。(重中之重) 还有:lcase、ucase、instr(x,y)、

统计字符串中有多少数字字符、英文字符、其他字符的例子 字符串反转:输入abc,输出cba 转换函数:str和val chr和asc

时间函数:now、date、time、year、month、day、hour、minute、second、weekday(date-1) 随机函数:Rnd、Randomize [a,b] int(rnd*(b-a+1))+a Msgbox函数与Inputbox函数:注意msgbox函数的调用。

第三章 结构化程序设计与数组

一、IF语句

行if:if <条件> then 语句1 [else 语句2](结构图)

块if:if <条件> then

<语句块1>

else

<语句块2>

end if

if elseif结构:

if <条件> then

<语句块1>

elseif <条件> then

<语句块2>

else

<语句块3>

end if

else、end if都必须单独一行

块if语句 if .then 与 elseif .then也必须是单独一行 练习(P83练习2)

浙江省二级VB考试前辅导讲义(不过都难)

二、Select语句 Select case <测试表达式> Case <情况表达式1> 语句块1 Case <情况表达式2> 语句块2 case else 语句块3 end select 情况表达式的三种表示方式 单值列表

关系比较 要用IS来代替测试表达式 区间表达法

不能使用or或and等逻辑运算符,只能使用“,”符号。 三、循环语句

For/Next循环(结构图)

for <控制变量>=<初值> to <终值> [step <步长>] <循环体>

next <控制变量> s=0+1+3+5+ +99 For k=1 to 100 step 2 s=s+k Next k Print s, k s=0

for k = 100 to 1 step –1 s = s+k next k print s,k

应用举例1:输入一个正整数n,求n阶乘.

应用举例2:找出100到999之间所有水仙花数 应用举例3:找出1到999之间所有同构数

exit for语句的使用 判断一个数是不是素数 找出2到100的所有素数 歌德巴赫猜想

最大公约数、最小公倍数

While/Wend和for语句的转化

Do/Loop(结构图)

Do [while|until]/loop

Do/loop [while|until]

浙江省二级VB考试前辅导讲义(不过都难)

exit do

例子

do

n=val(inputbox(“please input n”)) loop until n<10 and n>0

下面的代码用于确保用户输入的m,n满足如下关系:m>n>0

do

m = inputbox(“m=”) n = inputbox(“n=”) loop ? A: until m>n>0

B: while m>n and n>0 C: while m<=n or n<=0 D: until m>n or n>0

多项式相加问题(请仔细研读P74的3.6节相关内容) 关键操作:<和变量>=<和变量>+<通式> (已知多少项的问题)

应用举例: y=1+x/2+x^2/3+x^3/4 .x^12/13 (另:p83练习4) (不知多少项的问题)

应用举例:求s=1/2+2!/3+3!/4 (n-1)!/n直到最后一项大于1000 P63例3-12, p83练习5 多重循环:

三角形的打印、穷举法问题(百钱百鸡等)

数组

1、 数组的定义

dim <数组名>(<下标说明>) as <数据类型> 如:dim mystr(1 to 10) as ineger dim myarray(10) as integer 如果希望下标从1或0开始

可以用option base {1|0} (对ListBox控件无作用)

2、 数组的使用

可以象使用普通变量一样使用数组的元素,表示数组中某个元素的格式:<数组名>(下标) 例 dim myarray(10) as integer

myarray(10)=100

两个myarray(10)的意义一样吗? 数组元素的遍历 for I=1 to 10 myarray(i)=100 next i

print myarray(i)

3、 注意:在使用数组时,注意下标不要越界。

Dim a(1 to 5) as integer A(1)=1: a(2)=1 For k=3 to 10

浙江省二级VB考试前辅导讲义(不过都难)

A(k)=a(k-1)+a(k-2) Next k

For k=1 to 5 Print a(k) Next k

随机不相等数组元素的生成程序调试34中的generatedata 排序(选择排序、优化选择排序、冒泡排序)程序调试24、34 要求:掌握三种排序算法的写法及区别

选择排序:第一个数和第二个数比较,判断是否交换,第一个数和第三个数比较,判断是

否交换, 第一个数和第N个数比较,判断是否交换,这样就确保第一个是最大(或最小)的。同理,接下来再确定第二个数 直至上述操作重复N-1次 优化选择排序(升序):在N个数中找到最小的数的下标和第一个交换,再在N-1个未排序

的数中找到最小的数的下标和第二个交换 直至上述操作重复N-1次 冒泡排序(升序):有n个数,从前到后依次对相邻的两个数进行比较,把小的数放在前面,

把大的数放到后面。经过一趟比较之后,最大的数将会出现在最后面的位置。第二趟对余下的数进行两两相邻比较,把小的数放在前面,第二大的数将会出现在倒数第二的位置。第三趟。。。通过N-1趟比较之后,排序完成。 二维数组的定义与使用 二维数组的定义 二维数组的遍历: for k = 1 to 5 for j = 1 to 5 a(k,j) = k + j next j next k ‘显示二维数组 for k = 1 to 5 for j = 1 to 5 print a(k,j); next j print next k

二维数组的应用举例1:二维数组(矩阵)的相加减、转置等

有一5*5二维数组,首先在每一行的前四个元素赋[10,99]之间的随机整数,然后将每一行前四个元素的平均值写入到第5个元素中,最后将此二维数组显示在窗体上 二维数组的应用举例2:

矩阵转置:

转置前的矩阵 转置后的矩阵

1 2 3 4 1 1 1 1

1 2 3 4 2 2 2 2

1 2 3 4 3 3 3 3 1 2 3 4 4 4 4 4 程序阅读题练习:

浙江省二级VB考试前辅导讲义(不过都难)

Option Base 1

Private Sub Form_Click() Dim a(5, 5) As Integer Dim i As Integer, j As Integer For i = 1 To 5 For j = 1 To 5 If j <= i Then a(i, j) = 1 End If

Print a(i, j); " "; Next j print Next i

End sub

二维数组的应用举例3: 杨辉三角(程序调试26) 动态数组

dim n as integer

n = val(inputbox(“n =”)) dim a(1 to n) as integer

‘上述代码是否可实现数组元素的自动适应呢? 动态数组的定义:

dim a() as integer

动态数组元素个数的重定义: n = val(inputbox(“n =”))

redim a(1 to n)

保持数组原有的数据Preserve关键字、lbound和ubound函数。 动态数组考题举例:

private sub command1_click() dim s as string, c as string

dim L as integer, k as integer, j as integer dim a() as string s = inputbox(“s=”) L = len(s) ______ for k = 1 to L a(k) = mid(s,k,1)

浙江省二级VB考试前辅导讲义(不过都难)

for k = 1 to L – 1

for j = k + 1 to L

c = a(k) : a(k)=a(j) :a(j)=c next j

next k for k =1 to L print a(k); next k end sub 选项

A: dim a(1 to L) as string B: redim a() as string C: dim a(1 to L) D: redim a(L)

字符串算法举例:

1、 字符串反转 2、 首字母大写

3、 判断是否为回文(程序调试11) 4、 删除所有指定字符(程序调试22) 5、 字符串单词截取 6、 进制转换

第四章 函数与过程

自定义过程的定义: //无参数过程

Private sub printstr() Dim I as byte For I=1 to 5

Print “hello world” next End sub //有参数过程

Private sub printstr(n as ineger) Dim I as byte For I=1 to n

Print “hello world” next

浙江省二级VB考试前辅导讲义(不过都难)

参数的作用:实现主调过程与被调过程的数据传递

过程的调用:(以调用第二个过程为例) Private sub form_Click()

Printstr 5或Call printstr(5)均可。总结:有call有括号,无call无括号 End sub

过程调用的执行流程讲解

另外:事件过程也可以被调用,举例说明

自定义过程的编写练习:

练习1:编写一个打印n层*金字塔的用户过程 自定义函数的定义: 定义格式:

private function <函数名>(参数表) as <函数返回值类型> <函数体>

<函数名>=<表达式> end function 定义举例:

private Function nFact(n as byte) as long dim k as byte,temp as Long temp = 1 for k = 1 to n temp = temp * k next k nFact = temp end function 函数调用格式: s = nfact(5)*3

call nfact(5)(不出错,但是没有返回值) nfact 5(这是sub过程的调用方式) 函数定义举例: 十进制到二进制 判断一个整数是否是素数

数组作为函数或过程的参数:数组名+N个变量(N维数组就是N个) 数组作为参数的定义形式:

编制通用函数过程fsum,计算single类型一维数组所有元素的和。(2005年春)

浙江省二级VB考试前辅导讲义(不过都难)

function fsum(a() as single, n as byte) as single dim k as byte, s as single for k =1 to n s = s + a(k) next k fsum = s end function

数组作为参数的调用形式: private sub form_click()

dim a(1 to 10) as single, k as byte,avg as single for k = 1 to 10 a(k) = rnd * 90 + 10 next k

avg = fsum(a,10) end sub

数组作为参数的自定义过程(函数)练习:

练习1:编写一个自定义过程,该过程对一维整型数组的每一个元素赋[10,99]之间的随机整数。

练习2:编写一个自定义过程,该过程对一维单精度数组进行反序操作,例如:原数组数据为1、2、3、4、5,反序后变为5、4、3、2、1。

参数的传递规则:分按值传递(byVal)和按地址传递(byRef)两种。(重点) Private sub chg1(byval n as byte) n = n + 2 End sub

private sub chg2(byRef n as byte) n = n + 2 end sub

private sub form_Click() dim k as byte

k = 2 : chg1(k) : print k call chg2(k) : print k end sub

参数的传递规则考点训练:

浙江省二级VB考试前辅导讲义(不过都难)

练习1:

Private Sub Form_Click() Dim a As Byte, b As Byte a=1 :b=2 Call Proc1(a,b) Print a,b End Sub

Private Sub Proc1(c As Byte,d As Byte) Dim a As Byte,b As Byte c=a+b :d=a-b Print c,d End Sub 练习二:

Private Function chg(a As Byte, byval b as byte) As Byte Dim n as byte b = b + 1 For n=0 to 2 a = a + b Next n Chg= a End Function

Private Sub form_click()

Dim a as byte, b as byte, z as byte, n as byte a = 1 : b = 1 for n = 1 to 3 z = chg(a, b) + b

print “n=”; n , ”z=”;z next n End Sub

注意:1、当实参是表达式或常量时,实际按传值方式传递;2、数组作为参数都是按地址传递的。(书上例子)

Private Function aa(ByVal m As Integer)’改为按地址传递 m = m + 1 aa = m

浙江省二级VB考试前辅导讲义(不过都难)

End Function

Private Sub Command1_Click() Dim n As Integer n = 5

Print aa(n + 2)

Print n ’当把上面n+2改为n时这个n 的值的变化 End Sub

变量的作用域:

变量按作用域分为:局部变量、模块级变量、全局变量 举例:

’form1中的代码

public x as integer ‘全局变量 dim y as integer ‘模块级变量 private z as integer ‘模块级变量 private sub form_click() dim k as integer ‘局部变量 k = k+1 : y = y + k print k, y end sub

private sub form_Load() y = y + 1 end sub

‘form2中的代码

private sub form_click() dim y as integer

y = form1.x ’定义在其它窗体中全局变量的引用格式 end sub

浙江省二级VB考试前辅导讲义(不过都难)

重要考点(变量生存周期)训练: 练习1:

Function F(a As Integer) as integer dim b as integer Static c as integer

b = b + 1 : c = c + 1 :F = a + b + c End Function

Private Sub Command1_Click() Dim a As Integer ,b As Integer a = 2

For i = 1 To 3 b = F(a) : Print b Next i End Sub 练习2:

控件HScroll1的属性设置如下:

HScroll1.Min=1, HScroll1.Max=9, HScroll1.Value=1 HScroll1.Smallchange=2, rgechange=4

下面程序运行时,4次单击滚动条右端箭头,写出各次单击时Text1上的显示结果。 Dim y As Single

Private Function f1(x2 As Integer) As Single Static x1 As Integer f1 = 0

For i% = x1 To x2 f1 = f1 + i% Next i% x1 = i% End Function

Private Sub HScroll1_Change()

y = y + f1(HScroll1.Value) : Text1.Text = y End Sub 练习3:

写出单击窗体四次,第一次输入1,第二次输入2,第三次输入3,第四次输入4,窗体上显示的结果。

Private Sub Form_Click()

浙江省二级VB考试前辅导讲义(不过都难)

Dim x As Integer Static s As Integer

x = Val(InputBox("请输入一个正整数=")) If x Mod 2 = 0 Then

s = s * x

Else

s = s + x

End If

Me.Print "s=" + Str(s) End Sub

同名变量的问题: dim y as integer sub form_load() y = 20 end sub

sub form_click() dim y as integer① y = y+2 :print y end sub

去掉①行后的结果如何?

参数传递和变量作用域综合练习:

dim i as byte, j as byte,k as byte,h as byte private sub p(i)

I = I + 1 : print I;j;k, end sub

private sub q(byval h, j) I = j if h =0 then call p(j) else

if h =1 then call p(i) else j = j + 1 end if end sub

private sub form_click() I =0 : j=1 : k = 2

浙江省二级VB考试前辅导讲义(不过都难)

call q(1,i) : print I;j;k, call q(2,j) : print I;j;k, call q(3,k) : print I;j;k, end sub

另:鼠标事件、坐标系、文件操作

本文来源:https://www.bwwdw.com/article/ko24.html

Top