应朋友的要求,写这么个东西,这里主要介绍一些学习VB过程中应该注意的问题,因为其他的东西可以从任何一本教材中看到。
    1、学习Visual Basic之前最好做好一下几种准备:
    •知道Windows操作系统中常见部件的名称,例如“按钮”、“文本框”、“单选按钮”、“滚动条”等。
    •掌握一定的编程思想或数学思想。或者说有一定的逻辑分析能力。
    •能经常上机实践,当然最好的学习方法是边看书边实际操作。
    初学者推荐阅读高等教育出版社出版的《全国计算机等级考试•二级Visual Basic语言程序设计》(附带一本课后习题答案)、清华大学出版社出版的《Visual Basic程序设计》(谭浩强主编)。其他的书在很多问题上讲的不清楚。不推荐参考。
    2、VB中的主要内容:
    VB也是一门计算机语言,所以也就避免不了要有各种语法,主要是“变量类型”、“选择程序结构”、“循环程序结构”、“数组”、“子函数和子过程”、“文件”。另外由于VB是可视化的编程工具,所以比传统的QBASIC和C语言多了“控件”这一部分。具体需要那些控件教材里面有介绍。
    3、各个章节的重点难点介绍:
    这里的“章节”并不是按照教材上的“章节”介绍的,而是按照刚才我划分的“块”介绍。并且是按照国家计算机二级VB考试的标准叙述的。
    1)、变量类型
    变量和常量的概念。主要的变量类型有:integer、string、long、Boolean、currency、float、double。其中integer、string和Boolean最为常见。
    2)选择程序结构
    几种常见的选择结构。书上都有介绍。学习过程中记得如何判断条件的“真”“假”,选择不同的程序走向。如果条件为“真”,则怎么样;如果条件为“假”,又该怎么样。最后不要忘了End If。
    在学习选择程序结构的时候注意培养自己良好的编码风格。看一个例子:

Private Sub number_Click(Index As Integer)
If lastinput <> "nums" Then
    disp = Number(Index).Caption
Else
    disp = disp + Number(Index).Caption
End If
lastinput = "nums"
End Sub

    不管你是否能看懂这段程序写的是什么,况且这也不是我让你看这段程序的主要目的。你应该注意这段程序的编码风格,就是格式。VB里面几乎每段代码都在一个“Sub”和“End Sub”中间,所以你在写程序的时候最好使第一行代码向右缩进一个Tab键,按一下键盘上的Tab键,然后输入代码。如果出现“If”等语句的时候,“Then”后面一行的代码要缩进两个Tab键。不知道是否明白。不明白也没有关系。多看一些优秀代码就明白了。

    3)循环结构
    这一部分可以说对初学者来说比较头疼。特别是循环条件的判定。什么时候要执行循环,什么时候不用执行循环。哪些语句比那些语句少(多)执行一次循环。
    主要的循环语句教材上都有详细的讲解,这一部分要多揣摩,多练习。可以在源程序上用笔划出语句执行的顺序。其实用不了多长时间就明白了。
    给出一个典型的例子:“百钱买百鸡”

Private Sub Command1_Click()
Dim x%, y%, z%, t As Data, t1 As Data
For x = 0 To 100
For y = 0 To 100
For z = 0 To 100
If x + y + z = 100 And 3 * x + 2 * y + 0.5 * z = 100 Then
Print "能买母鸡"; x; "只,公鸡"; y; "只,小鸡"; z; "只"
End If
Next z, y, x
End Sub

    这段程序可以算是初学者比较经典的算法。100块钱,要买三种鸡,母鸡3元一只,公鸡2元一只,小鸡0.5元一只。问一共可以买几只。研究完算法之后别忘了看格式。其中Next z,y,x的顺序不能颠倒,也可以写成如下格式:

Private Sub Command1_Click()
Dim x%, y%, z%, t As Data, t1 As Data
For x = 0 To 100
For y = 0 To 100
For z = 0 To 100
If x + y + z = 100 And 3 * x + 2 * y + 0.5 * z = 100 Then
Print "能买母鸡"; x; "只,公鸡"; y; "只,小鸡"; z; "只"
End If
Next z
Next y
Next x
End Sub

    4)数组
    数组是一种重要的数据结构。要多练习。其中VB里面最容易出错的就是下标!例如定义一个数组Arr(4),那么它一共5个变量:Arr(0)开始,一直到Arr(4)。
    5)子函数和子过程
    这里我沿用QBASIC里面的叫法。在子函数(过程)部分最容易搞不懂的概念就是“传地址”和“传值”,即“ByRef”和“ByVal”,ByRef是默认的。也就是说如果没有在函数的参数列表中注明是那种传递方式,默认按照传地址进行处理。函数中的数值既可以由主函数传递到子函数(过程)中,也可以由子函数(过程)回到主函数中。其实我这里说的“主函数”是不确切的,应该叫做“主调函数”。另外还有一个与之相关的概念是“形参”和“实参”,就是“实际参数”和“形式参数”。实际参数是子函数(过程)中的参数,而形式参数是“主调函数”中的参数。
    我觉得VB中子函数参数调用应该是比其他计算机语言简单的一个地方,包括C/C++等。在C/C++中,参数传递默认的是传值。就是不能把子函数(过程)的参数传回主调函数,如果要进行这样的操作,就要借助指针变量。
    看一个简单的子函数(过程)调用的例子:

Public Sub Swap(x,y)
    Dim t As Integer
    t=x
    x=y
    y=t
End Sub

Private Sub Form_Click()
    Dim a As Integer
    Dim b As Integer
    a=10
    b=20
    Swap a,b
    Print ”a=”; a , ”b=”;b
End Sub

    Form_Click是主调函数,Swap是子函数(过程)。在主调函数的倒数第三行调用了子函数(过程),输出结果为:“a=20,b=10”。
    6)文件
    这一部分单独考试出题不多,实际应用中用到的也不多,但是它总是在某些考试中以压轴题的姿态出现。并且更为严重的是:如果对这一部分不清楚,会使整道题都无从下手。所以还是要好好看看这部分为好。
    7)常见控件
    对于控件最令初学者头疼的是“属性”、“事件”和“方法”这三个概念。
    这三个概念是“面向对象程序设计”专用的。VB6虽然不能算是标准的“面向对象程序语言”,但是具备了很多的面向对象特征,唯独不具备“类的继承”特征。考虑到初学者对面向对象编程没有基础,所以关于上述三个概念就不能给出确切的定义。但是我们可以这样去理解这三个概念:“属性”就是某个控件的固有性质,拿Command(按钮)控件为例,它的“属性”就有“长度”、“宽度”、“是否显示图片”等。简单来说,大多数初学者接触的控件属性,都可以在VB6开发环境中的属性栏找到(如果找不到的属性称为“只读属性”)。
    “事件”很容易理解。比如我们用鼠标单击一个按钮,这时候“按钮”这个控件就接收鼠标的单击,换句话说就是“按钮上发生了单击事件”。那么发生单击事件以后程序会做什么呢?那就是运行你编写的针对此事件的程序。现在你打开VB6的界面,随便画一个按钮,然后双击这个按钮,进入代码视图,在Private Sub Command_Click()和End Sub之间写代码。那么你写的这段代码就是名称为Command的按钮发生Click事件执行的代码。
    “方法”的概念最不容易理解。按照标准的面向对象编程描述,方法是一个函数,它被封装在类中。其实我们也可以把方法想想成一个“函数”,类似上文中描述的“子函数(过程)”。初学者常用的VB6方法不多,其中最常用的就是“Print”。正如您所想象的那样,刚才使用的时候也没有发现它有多么特殊。其实我们已经在使用Print方法了。只不过它所归属的对象我们不需要知道而已。
    关于控件的使用这里就不多说了,因为教科书上介绍的比我介绍的详细的多。
4、结束语:
    Visual Basic6.0可以说算是最简单的一门计算机语言。学习的时候多用心。其实前面“变量”部分即使记不住也无妨,在后续的学习过程中会不断牢固以前的知识的。更何况现在的考试都带有MSDN,就是VB的帮助系统。如果有哪些关键字或者用法记不清楚了,可以随时查阅MSDN的相关文档。
    最后祝各位VB愉快!

附:送上几例经典的算法

求最大公约数和最小公倍数
Private Sub Command3_Click()
Dim m1%, m%, n%, n1%, r%, b%
m1 = Val(InputBox("输入一个数:"))
n1 = Val(InputBox("请输入另一个数:"))
If m1 > n1 Then m = m1: n = n1 Else m = n1: n = m1
Do
r = m Mod n
If r = 0 Then Exit Do
m = n
n = r
Loop
Print m1; "和"; n1; "的最大公约数为:"; n
b = m1 * n1 / n
Print m1; "和"; n1; "的最小公倍数为:"; b
End Sub


求100到200之间所有的素数(质数)
Private Sub Command2_Click()
Dim i%, m%
For m = 101 To 199 Step 2
For i = 2 To Int(Sqr(m))
If (m Mod i) = 0 Then GoTo notnextM '一旦被2到sqr(m)的数整除就转到下一个数
Next i
Print m
notnextM:
Next m
End Sub

注意!程序中使用了GoTo语句!