第1章程序设计入门与VisualBasic集成开发环境
本章主要介绍计算机程序设计语言入门、VisualBasic发展、功能及特点;VisualBasic的运行环境及启动、退出;VisualBasic的集成开发环境;以及建立事件驱动面向对象程序设计的初步概念;可视化编程的基本步骤;VB源程序的格式与文件组成;一个简单程序实例。1.1程序设计概论
计算机是在程序的控制下进行自动工作的,它解决任何实际问题都依赖于解决问题的程序。学习VisualBasic语言程序设计的目的,就是要学会利用VisualBasic语言编写出适合自己实际需要的程序。程序包括数据和施加于数据的操作两方面的内容。数据是程序处理的对象,操作步骤反映了程序的功能。不同类型的数据有不同的操作方式和取值范围,程序设计需要考虑数据如何表示以及操作步骤(即算法)。计算机程序设计语言是人类在计算机上解决实际问题的一种工具,当一个求解问题能够用数学模型表达时,人们会考虑用某种程序设计语言将该问题的数学模型表达成计算机可以接受的程序形式,再由计算机自动处理这个程序,生成人们所需要的结果。程序设计语言随着计算机科学的发展而发展,它由最早的机器语言形式逐步发展成为现在的接近人类自然语言的形式。20世纪50年代的程序设计使用机器语言或汇编语言编写,用这样的程序设计语言设计程序相当烦琐、复杂,不同机器所使用的机器语言或汇编语言几乎完全不同。能够使用这类语言编写程序的人群极其有限,这就了这类计算机程序设计语言的普及和推广,理所当然地影响了计算机的普及应用。20世纪50年代中期研制出来的FORTRAN语言是计算机程序设计语言历史上的第一个所谓高级程序设计语言。它在数值计算领域首次将程序设计语言以接近人类自然语言的形式呈现在人们面前,它引入了许多目前仍在使用的程序设计概念,如:变量、数组、分支、循环等。20世纪50年代后期研制的Algol语言进一步发展了高级程序设计语言,提出了块结构的程序设计概念。即一个问题的求解程序可以由多个程序块组成,块与块之间相对,不同块内的变量可以同名,互不影响。到了20世纪60年代后期,人们设计出来的程序越来越庞大,随之而来的问题是程序越庞大,程序的可靠性越差,错误更多,难以维护。程序的设计人员都难以控制程序的运行,这就是当时的“软件危机”问题。为了解决“软件危机”问题,荷兰科学家E.W.Dijkstra在1969年首次提出了结构化程序设计的概念,这种思想强调从程序结构和风格上研究程序设计方法。后来,瑞士科学家NiklansWirth的“算法+数据结构=程序”思想进一步发展了结构化程序设计方法,将一个大型的程序分解成多个相互的部分(称之为模块),模块化能够有效分解大型、复杂问题,同时每个模块因为相互,提高了程序的维护效率。这就是面向过程的结构化程序设计思想。所谓面向过程的结构化程序设计思想是人们在求1问题时,不断要提出求解的问题,还要精确地给出求解问题的过程(将问题的求解过程分解成多个、多级相互的小模块)。早期的BASIC语言就是典型的面向过程的结构化程序设计语言。面向过程的结构化程序设计是从求解问题的功能入手,按照工程的标准和严格的规范将求解问题分解为若干功能模块,求解问题是实现模块功能的函数和过程的集合。由于用户的需求和硬件、软件技术的不断发展变化,按照功能划分将求解问题分解出来的模块必然是易变的和不稳定的。这样开发出来的模块可重用性不高。20世纪80年代提出的面向对象的程序设计方法是为了解决面向过程的结构化程序设计所不能解决的代码重用问题。面向对象的程序设计方法是从所处理的数据入手,以数据为中心而不是以求解问题的功能为中心来描述求解问题。它把编程问题视为一个数据集合,数据相对于功能而言,具有更好的稳定性。这就是“对象+对象+……=程序”的理论。面向对象的程序设计与面向过程的结构化程序设计相比最大的区别就在于:前者关心的是所要处理的数据,而后者关心的是求解问题的功能。面向对象的程序设计方法很好地解决了“软件危机”问题。面向对象的程序设计语言有两类:一类是完全面向对象的语言,另一类是兼顾面向过程和面向对象的混合式语言。VisualBasic就是面向对象的程序设计语言。无论是面向过程的还是面向对象的程序设计语言,都遵守如图1.1所示的计算机语言模型。因为这个模型是从人类的自然语言中抽象出来的,任何计算机语言都是人类自然语言的子集。这样让学生回忆学习某种人类自然语言的方法来思考如何学习计算机程序设计语言,这就是让学生在学习某种计算机程序设计语言时,以某种人类自然语言成为计算机语言的参照对象。其实,人类语言的模型也类似于图1.1,只是人类语言比计算机语言复杂,其字符集等可能是无限的,而计算机语言的字符集等必须是有限的,而且通过有限套规则可以表达出来。图1.1计算机程序设计语言模型1.2VB的安装、运行环境、启动和退出
1.2.1VisualBasic简介
1.4对象与事件驱动编程机制
1.4.1对象与类
世界上存在的任何具体的事物都可以称之为对象。对象是具体存在的,每个对象都是唯一的,有着自己的特性。对象是指现实世界中具体存在的实体。每一个对象都有自己的属性(包括自己特有的属性和同类对象的共同属性)。属性反映对象自身状态变化,表现为2当前的属性值。对象是代码和数据的组合,可以作为一个单位来处理。对象可以是应用程序的一部分,比如可以是控件或窗体。整个应用程序其实也是一个对象。实际上“对象”是一个很广泛的概念,要理解编程中“对象”概念,还必须有一些“类”的知识。类是具有相同属性和方法的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述。在系统中通常有很多相似的对象,它们具有相同名称和类型的属性、响应相同的消息、使用相同的方法。对每个这样的对象单独进行定义是很浪费的,因此将相似的对象分组形成一个类,每个这样的对象被称为类的一个实例,一个类中的所有对象共享一个公共的定义,尽管它们对属性所赋予的值不同。在VisualBasic的“工具箱”上,控件代表类。在创建控件之时也就是在复制控件类,或建立控件类的实例,这个类实例就是应用程序中引用的对象。在设计时操作的窗体是类;在运行时,VisualBasic建立窗体的类实例。对象和类的区别在于前者是具体的,而后者则是抽象的。1.4.2属性、事件和方法
属性:属性窗口包含被选择的窗体、控件在设计时拥有的属性的列表,这些属性能够在设计时被改变。当用户选择多个控件时,属性窗口包含的属性列表被所选择的控件共享。设置或改变对象属性的一般步骤为:(1)选中要操作对象。(2)在属性窗口的属性列表框中找到要操作的属性。此时设置框中为当前控件该属性的当前设置。(3)在设置框中键入或选择用户的设置。事件:Windows下应用程序的执行是由事件驱动的,如果说属性是程序员与控件之间的桥梁,那么事件便是用户与程序之间的桥梁。用户使用程序的过程,便是不断触发各种事件,向程序下达指令的过程。离开了事件,程序便难以知道用户“在干什么”及“想干什么”,因此,程序员一个非常重要的任务就是在用户和程序之间架好桥梁。方法:方法是用来描述对象动态特征的一个操作序列。如对学生数据的输入、输出,按出生日期排序,查找某个学生的信息等。方法也是VB控件必不可少的一部分,方法通常用于操作控件,这跟属性有点相似,但方法提供了更为直接的操作控件的途径,而且,某些控件操作是必须用控件的方法来完成的。1.4.3控件和标准控件
在VB编程中,控件是最为重要的,利用控件我们可以进行图形界面的设计,制作出符合各种要求的界面。窗体和控件都是VisualBasic中的对象,它们是应用程序的“积木块”,共同构成用户界面。因为有了控件,才能使得VB不但功能强大,而且易于使用。控件是构造应用程序用户界面的图像化工具。在程序开发环境中,控件放置在工具箱中,使用一系列简单的单击和拖拽操作就能够使用它们在窗体上创建对象。VB控件分为三类:内部控件、ActiveX控件和可插入对象。其中内部控件又称标准控3件,例如文本框、命令按钮、图片框等。启动VB后,内部控件就出现在工具箱中。图1.6就是标准工具箱中列出的各控件图标及其名称。在VB环境中,工具箱是直立分行排列的。除标准控件外,还可通过VB菜单【工程】|【部件】选项添加其它VB控件。其中包括ActiveX控件和可插入对象。标准控件的用途如表1.1所示。图1.6标准控件表1.1VisualBasic标准控件控件名图片框标签文本框框架命令按钮复选框单选钮组合框用途显示图形图像,该控件作为接受来自图形方法的输出容器,或作为其他控件的容器显示用户不可修改的文本保存可以输入或修改的文本允许从图形方面或在功能上对控件分组。为了将控件分组,首先要绘制框架,然后在框架中画出控件创建按钮,选择它来执行某项命令创建一个对话框,允许显示多个选项,可以同时选择一项或多项允许显示多个选项,但只能从中选择一项允许绘制一个组合列表框和文本框。使用时可从下拉列表中选择一项,也可在文本框中输入值用于显示项的列表,可从这些项中选择一项。如果包含的项太多而无法一次显示出来,则可滚动列表框水平滚动条是一个图形工具,可快速移动很长的列表或大量信息,可在标尺上指示当前位置,可以作为输入设备,或作为速度或数量的指示器垂直滚动条是一个图形工具,它可以快速引导一个很长的列表或大量信息,可以在标尺上指示当前位置,可以作为输入设备,或作为速度和数量的指示器在指定的时间间隔内产生定时器事件。该控件在运行时不可见显示有效的磁盘驱动器显示目录和路径显示文件列表在设计时,允许在窗体上绘制多种形状的图形。可在其中选择矩形、圆角矩形、正方形、圆角正方形、椭圆形或圆形在设计时用来在窗体上绘制各种样式的线在窗体上显示位图、图标、或元文件中的图形图像。Image控件中显示的图像4列表框水平滚动条垂直滚动条时钟驱动器列表框目录列表框文件列表框形状线条图像框可以仅是装饰性的,与PictureBox相比,它使用的资源要少一些数据OLE容器通过窗体上被绑定的控件来访问数据库中的数据允许把其它应用程序的对象链接和嵌入到VisualBasic应用程序中1.4.4事件驱动
VisualBasic是采用事件驱动编程机制的语言。传统编程使用的是面向过程、按顺序进行的机制,在这种“过程化”的应用程序中,应用程序自身控制了执行哪一部分代码和按何种顺序执行代码。从第一行代码执行程序并按应用程序中预定的路径执行,必要时调用过程。这种编程方式的缺点是写程序的人总是要关心什么时候发生什么事情。而在事件驱动编程中,程序员只要编写响应用户动作的程序,如选择命令、移动鼠标等,而不必考虑按精确次序执行的每个步骤。在事件驱动的应用程序中,代码不是按照预定的路径执行,而是在响应不同的事件时执行不同的代码片段。事件可以由用户操作触发,也可以由来自操作系统或其它应用程序的消息触发,甚至由应用程序本身的消息触发。这些事件的顺序决定了代码执行的顺序,因此应用程序每次运行时所经过的代码的路径都是不同的。在这种机制下,不必编写一个大型程序,而是建立一个由若干个微小程序组成的应用程序,这些微小程序都可以由用户启动的事件来激发。利用VisualBasic,可以方便地编写此类应用程序。因为事件的顺序是无法预测的,所以在代码中必须对执行时的“各种状态”作一定的假设。当作出某些假设时(例如,假设在运行来处理某一输入字段的过程之前,该输入字段必须包含确定的值),应该组织好应用程序的结构,以确保该假设始终有效(例如,在输入字段中有值之前禁止使用启动该处理过程的命令按钮)。在执行中代码也可以触发事件。例如,在程序中改变文本框中的文本将引发文本框的Change事件。如果Change事件中包含有代码,则将导致该代码的执行。如果原来假设该事件仅能由用户的交互操作所触发,则可能会产生意料之外的结果。正因为这一原因,所以在设计应用程序时理解事件驱动模型并牢记在心是非常重要的。1.5VisualBasic程序设计基本流程
1.5.1如何开发应用程序
下面通过简单的实例来说明VB可视化编程的一般步骤如下。(1)启动VB系统建立新工程(2)设计界面先建立窗体,再利用控件在窗体上创建各种对象。(3)设置属性设置窗体或控件等对象的属性。(4)编写代码5(5)运行程序(6)保存工程1.5.2如何编辑VisualBasic程序
上一小节简单介绍了VB程序开发的基本步骤,本小节将以一个小实例来学习创建一个简单的VB程序。程序运行时效果见图1.7,当单击程序中“显示”按钮后,程序中的文本框将显示“欢迎使用VB6.0!”。通过该程序的开发设计,使读者对VB程序开发有一个直观的认识。下面,按步骤讲解程序的设计过程。1.第一步:建立新工程VB中使用“工程”来管理应用程序的所有文件,要开发设计一个应用程序,首先要创建一个工程(Project)。新建工程有两种方法:(1)启动VB时,系统会自动弹出【新建工程】对话框。在新建工程对话框的“新建”选项卡中选择“标准EXE”,单击【打开】按钮。(2)若VB已启动可通过选择菜单【文件】|【新建工程】,在弹出的【新建工程】对话框中选择“标准EXE”,单击【确定】按钮,建立新工程。图1.7程序执行后的显示图2.第二步:向窗体中添加控件(设计应用程序界面)窗体是程序运行的界面(背景窗口和对话框),一个工程必须有一个或多个窗体。控件是放于窗体中具有一定功能的对象,是构成VB应用程序的图形化工具,包括窗体、按钮、复选框、列表框、数据控件、表格控件和图片控件等等。向窗体添加控件的方法为:(1)单击工具箱中的控件图标,这时控件按钮凹下,鼠标指针变成一个十字指针。(2)在窗体的工作区按住鼠标左键拖动鼠标,即可在窗体上绘出相应的控件。(3)添加了控件后,还可以调整控件在窗体中的位置及大小。单击选中控件,它的周围会出现8个黑控制点,鼠标移到这些控制点上指针会变成双箭头,此时拖动鼠标即可调整控件大小。在本例中,我们向窗体中添加一个文本框控件(TextBox)(CommandButton)。如图1.8所示。及一个命令按钮控件6图1.8“第一个示例”窗体初始界面3.第三步:设置(工程、窗体及控件)属性在VB中,工程、窗体及控件都可以看成是一个对象。属性是对象的性质特征的具体描述。可以通过设置它们的属性来改变它们的名称、外观、位置等。设置属性的方法是用鼠标选中该对象(此时【属性】窗口将罗列出该对象的所有属性),然后在【属性】窗口列表中选择要设置的属性选项进行设置。在本例中,将进行如下属性设置,属性设置后的“第一个示例”窗体效果如图1.7所示。(1)选中窗体(Form1)窗口,在【属性】窗口列表中选择“(名称)”项,将默认的窗口名称“Form1”删除,在文本中输入新名称“welcome”,用同样的方法将“Caption”属性值设置为“第一个示例”。(2)选中文本框控件(Text1),将“(名称)”属性设置为“TxtInput”,将“Text”的Text值“Text1”删除。(3)选中命令按钮控件(Command1),将“(名称)”属性设置为“CmdInput”,将“Caption”属性值设置为“显示”。4.第四步:添加程序代码VB程序是按照事件驱动机制工作的,所谓“事件”指由用户或操作系统引发的动作,如击键、单击鼠标(Click)、双击鼠标(DblClick)、载入对象(Load)等,不同的对象能够识别不同的事件。而“事件过程”指为完成某些特定的任务而编写的代码段,过程通常用于响应特定的事件。“事件驱动机制”即指当事件由用户或系统触发后,执行相应的过程来响应,一个事件对应特定的一个过程。在本例中,单击“显示”按钮就是一个事件(“CmdInput_Click”事件),在文本框里显示的文本“欢迎使用VB6.0!”就是相应的事件过程(“CmdInput_Click()”过程)。(1)在“第一个示例”窗体上,双击“显示”按钮控件,会出现如图1.9所示的代码编辑窗口。(2)系统自动打开该控件的“Click”事件过程(如果不是“Click”事件过程,可通过下拉列表选择),并写好了“CmdInput_Click()”过程的起始行及结束行代码,这里我们在光标处添加程序代码“TxtInput.Text=\"欢迎使用VB6.0!\"”,如图1.10所示。7图1.9代码编辑窗口图1.10添加代码1.5.3程序如何执行
在VB中,程序有两种运行模式,即解释运行与编译运行模式。1.解释运行模式单击工具栏上的按钮或按F5键或单击【运行】菜单中的【启动】编辑并运行该应用程序,程序运行后单击“显示”按钮便可以看到在文本框里显示的文本“欢迎使用VB6.0!”,单击程序窗口右上角的“关闭”按钮,关闭并退出该程序。注意:如果程序不能正确运行,系统会报错,并且提示用户是结束程序运行还是进行调试,如图1.11所示。如果用户选择调试,系统会自动将光标定位到出错的语句处,用户可以在此进行修改,如图1.12所示。图1.12中箭头指向的语句开始处多写了一个“T”。图1.11系统报错8图1.12调试窗口调试结束后,继续按上面方法再执行程序,若无错误,说明程序调试正确可进行下一步骤,保存程序。若还有错则反复进行以上操作直至无错为止。2.编译运行模式选择【文件】菜单的“生成××exe…”命令,系统读取程序中的全部代码,将其转换为机器代码,并保存在.exe的可执行文件中,以后可以在Windows环境中直接执行该程序。1.5.4保存VisualBasic程序
选择菜单【文件】|【保存工程】,由于这是第一次保存新工程,所以除了要保存工程项目文件,还要保存窗体文件。系统会首先弹出【文件另存为】对话框,如图1.13所示,要求先保存窗体文件。最后弹出【工程文件另存为】对话框,如图1.14所示,要求保存工程项目文件。图1.13窗体文件保存对话框在VB程序设计的过程中,可以在代码窗口对所编写的程序进行任意的删除和修改直至准确无误,也可以在代码窗口选择所需要的控件代码事件过程进行相应的阅读和修改。9图1.14工程文件保存对话框1.5.5如何打印窗体或代码
可以直接使用VB窗体的Printform方法实现打印。用这种方法实现打印具有编程简单、易用并且功能强大的优点,它只需要通过一行代码,几乎能打印所有内容。实现的方法就是:首先将要打印的内容在屏幕上显示出来,然后只要为窗体对象激活PrintForm方法,窗体则自动将要打印的内容发送到Printer对象上。语法:[窗体.]PrintForm如果窗体中包括图形,那么打印前应先置窗体的AutoRedraw属性为真。10