第1页共57页程序设计初步通过前面五章的学习,我们知道计算机是人们处理信息的有效工具。但是一切信息的处理最终都要通过执行程序来完成,即首先必须编写程序。我们平常进行文字处理或表格处理时,事先没有进行程序设计(programming),实际上是使用别人已编写好的程序(program)直接操作。VisualBasic是一种可视化的、面向对象、采用事件驱动方式的结构化程序设计语言,它不但具有早期Basic语言的一切功能,尤其提供了一种可视化的设计工具,可以直接使用窗体和控件设计程序的界面,极大的提高了程序设计的效率。本章以VisualBasic(简称VB)为载体,介绍使用VB编制程序的一般步骤和方法,主要包括:算法的概念和面向对象的程序设计方法,VB的编程环境,Basic语言的基本知识、基本语句,程序的控制结构和简单程序设计。通过本章学习,不仅要学会可视化编程技术,还要掌握一些解决简单问题的常用算法。第一节程序设计的基本方法一、算法的概念要计算机解决某一个问题,必须编写相应的程序。编写程序需要确定解决问题的方法和思路,并要正确地写出求解步骤,这就叫解决这个问题的算法(algorithm)。计算机处理某一问题的过程与我们日常处理事情的过程十分相似,都要按一定的步骤和相应的方法来处理。例如,邮寄一封信的过程可分为写信、写信封、贴邮票、投入信箱等四个步骤,这些步骤可以看作是写信的算法。下面举三个计算机处理问题的算法的例子。【例6-1-1】交换两个变量中的数据。已知变量x和y中分别存放了数据,现在要交换其中的数据。为了达到交换的目的,需要引进一个中间变量m,其算法如下:①将x中的数据送给变量m,即x→m;②将y中的数据送给变量x,即y→x;③将m中的数据送给变量y,即m→y。第2页共57页【例6-1-2】输入三个不相同的数,求出其中的最小数。先设置一个变量min,用于存放最小数。当输入a、b、c三个不相同的数后,先将a与b进行比较,把小者送给变量min,再把c与min进行比较,若cmin,则将c的数值送给min,最后min中就是三个数中的最小数,具体算法如下:①若ab,则a→min,否则b→min;②再将c与min进行比较,若cmin,则c→min。这样,min中存放的即是三个数中的最小数。【例6-1-3】输入两个正整数a和b(ab),求它们的最大公约数。求两个正整数a、b(ab)的最大公约数,可以归结为求一数列:a,b,r1,r2,……,rn-1,rn,rn+1,0此数列的首项与第二项是a和b,从第三项开始的各项,分别是前两项相除所得的余数,如果余数为0,它的前项rn+1即是a和b的最大公约数,这种方法叫做欧几里德辗转相除法,其算法如下:①输入a,b(ab);②求a/b的余数r;③如果r≠0,则将b→a,r→b,再次求a/b的余数r,转至③;④输出最大公约数b。对于同一个问题,可以有不同的算法。例如求1+2+3+…+100的和,可以采用如下方法:先求1+2,再加3,再加4,一直加到100,最后得到结果5050。也可以采用这样的方法:1+2+3+…+100=(1+100)+(2+99)+(3+98)+…+(50+51)=50101=5050。显然,对于心算来说,后一种方法更简便,而累加更适用于计算机解题。因此,为了有效的进行解题,不仅要保证算法正确,还要选择好的算法,即方法简单、运算步骤少,能迅速得出正确结果的算法。二、算法的描述为了描述一个算法,可以用自然语言、流程图(floatchart)或其他形式进行。自然语言就是人们日常使用的语言,前面三个例子的算法基本上是用自然语言描述的。用自然语言描述算法,比较习惯和容易接受,但是叙述较繁琐和冗长,容易出现“歧义性”,一般不采用这种方法。用流程图描述算法,能够将解决问题的步骤清晰、直观地表示出来,所以本章采用流程图描述算法。流程图是用一组几何图形表示各种类型的操作,在图形上用扼要的文字和符号表示具体的操作,并用带有箭头的流线表示操作的先后次序。表6-1列出了流程图的基本符号及其含义。第3页共57页表6-1图形符号名称含义起止框表示算法的开始或结束输入、输出框表示输入输出操作处理框表示处理或运算的功能判断框用来根据给定的条件是否满足决定执行两条路径中的某一路径流线表示程序执行的路径,箭头代表方向连接符表示算法流向的出口连接点或入口连接点,同一对出口与入口的连接符内,必须标以相同的数字或字母图6-1、图6-2和图6-3分别是前面三个例子的流程图。需要注意的是,流程图仅仅描述了算法,但计算机是无法识别和执行用流程图表示的算法的,还必须使用某种计算机语言(如VB)编写出程序,然后让计算机运行此程序,得到所需的结果。图6-1图6-2图6-3讨论与思考用自然语言表达问题,容易理解,但往往不严格,易出现“歧义性”,即对于同一段文字,不同的人可能会有不同的理解。例如请同学们理解“这个人连老张也不认识。”这句话的含义。YN开始结束输入x,yx→my→xm→y输出x,y开始结束输入a,b,cc→min输出minaba→minb→mincminYNYN第4页共57页练习⑴什么叫算法?描述算法有哪几种方法?并比较它们的优缺点。⑵请举出日常生活中几件事情,用自然语言描述其算法。⑶画出打电话的流程图。(拿起听筒;听到允许拔号声吗?听到,拔号;有忙音吗?若有,放下听筒;稍等,再拿起听筒;直到打通电话为止)⑷画出解决下列问题的流程图:①输入三角形的底和高,计算三角形面积。②求10!(即1×2×3×…×10)。第二节VisualBasic的基本知识一、VisualBasic的启动和退出VisualBasic是Microsoft公司于1991年开发推出的基于Windows环境的Basic语言,Visual意为“可视化的”,Basic指的是BASIC(BeginnersAll-PurposeSymbolicInstructionCode,初学者通用符号指令代码)语言。VB是在早期Basic语言基础上发展起来的一种可视化的、面向对象、采用事件驱动方式的结构化高级程序设计语言,是目前广泛使用的一种程序设计语言(programminglanguage)。1.VisualBasic的启动单击任务栏中的“开始”按钮,将指针依次指向“程序(P)”“MicrosoftVisualBasic”“VisualBasic”,然后单击,即可启动VB。启动VB后,显示如图6-4所示的“新建工程”对话框,对话框中有“新建”“现存”“最新”三个标签,可根据需要选择工程的类型。新建:建立新工程;图6-4第5页共57页现存:选择和打开现有工程;最新:列出最近使用过的工程。要新建一个工程时,单击“新建”标签,选择其中的“标准EXE”项,然后单击“打开(O)”按钮,进入VB的工作环境。2.VisualBasic的退出单击“文件(F)”菜单中的“退出(V)”命令,或单击主窗中右上角的“关闭”按钮,就可退出VisualBasic。二、VisualBasic窗口的组成进入VB后,屏幕上显示出如图6-5所示的界面,主要由标题栏、主菜单、工具栏、窗体设计器窗口、工具箱、工程资源管理器窗口、属性窗口、代码编辑器窗口等组成。⒈标题栏标题栏用来显示窗口标题及VisualBasic的工作模式。VisualBasic有三种工作模式:⑴设计模式当设计程序界面、编写代码、设置属性时,标题栏显示“MicrosoftVisualBasic[设计]”,表示VB工作在设计模式下。⑵运行模式当在VisualBasic中运行应用程序时,VB进入运行模式,标题栏自动切换成“MicrosoftVisualBasic[运行]”,执行结束,回到设计模式。⑶中断模式标题栏菜单栏工具栏窗体设计器工程管理器属性窗口工具箱图6-5第6页共57页当程序在运行过程中因某种原因中断时,VB进入中断模式,标题栏切换成“MicrosoftVisualBasic[Break]”,此时可修改、调试程序。⒉菜单栏菜单栏显示可使用的VB命令。除了提供标准“文件(F)”“编辑(E)”“视图(V)”“格式(O)”“窗口(W)”“帮助(H)”菜单之外,还提供了编程专用的菜单,例如“工程(P)”“调试(D)”“运行(R)”等。⒊工具栏VB将一些常用的命令编制成图标形式的命令按钮,便于对常用命令的快速访问。启动VB后,缺省情况下,只显示其中的“标准”工具栏。⒋窗体设计器窗口窗体设计器窗口是进行界面设计的窗口。当创建一个新的程序时,VB自动创建一个新的窗体,命名为Form1。窗体是VisualBasic应用程序的基本构造模块,在程序运行时,是人与程序交互操作的实际窗口。一个应用程序可包含一个或多个窗体,每一个窗体都有自己的窗体设计器窗口。设计应用程序的界面时,该窗口就像一个画布,可直接在窗口上用鼠标画出所需的图形,如菜单、按钮、文本框等,而无需为设计界面编写大量的代码。⒌工具箱工具箱提供一组工具,如文本框、标签、按钮等,用于在窗体中放置控件设计应用程序的图形界面,如图6-6所示。⒍工程资源管理器窗口工程(project)是指用来建造应用程序的文件的集合,工程资源管理器窗口用于管理应用程序中的文件,如图6-7所示。一个VB应用程序主要包含以下两大类文件:⑴窗体模块文件(扩展名为.frm)用于存放窗体及其中控件的正文描述,包含窗体及控件的属性设置,窗体级的常量、变量,用户自定义过程以及用于响应外部操作的事件过程等。窗体文件与窗体窗口一一对应。⑵标准模块文件(扩展名为.bas)简单的应用程序可以只有一个窗体,程序的所有代码都保存在一个窗体模块中。当应用程序比较复杂时,往往包含不止一个窗体,如果几个窗体中都有要执行的公共代码,为了不在几个窗体中重复相同的代码,应建立一个独立模块,其中包含实现公共代码的过图6-6图6-7第7页共57页程,这样的模块就称为标准模块,标准模块是可选的。工程资源管理器窗口还有三个小按钮,分别为:查看代码:单击此按钮,出现代码编辑器窗口,可以输入、编辑或调试应用程序的代码。查看对象:如果当前文件为窗体文件,单击此按钮后,出现窗体设计器窗口,其中显示出该文件所对应的窗体及其中控件的外观和布局。切换文件夹:此按钮的作用是使工程中的文件是否按类型分层次显示。一个应用程序即为一个工程,当把工程中的所有文件分别保存以后,可把整个工程存成一个文件,这就是工程文件(扩展名为.vbp)。⒎属性窗口用来描述各种对象属性的窗口,可在其中对对象的属性进行设置和修改。属性是指对象的外观特征,如大小、位置、颜色、标题等。⒏代码编辑器窗口代码编辑器窗口是应用程序用来显示和编辑程序代码的窗口。应用程序的每个窗体和标准模块都有一个单独的代码编辑器窗口。三、面向对象的程序设计1.对象VB是一种面向对象的程序设计语言,VB中的对象(object)主要是系统设计好的对象,包括窗体、控件、菜单、打印机、剪贴板和数据库等,使用得最多的对象是窗体(form)和控件(control)。控件包含在窗体内部,是指用工具箱中的工具在窗体中画出的、能完成一定功能的部件,如用于输入和编辑文本内容的文本框、用于执行操作的命令按钮等。⑴对象的建立不同类型对象的建立方法不同,下面以命令按钮控件为例介绍控件对象的建立方法:①单击工具箱中绘制命令按钮控件的工具。②将鼠标指针移到窗体上适当位置,此时指针变成十字线,按住鼠标器左键不放,拖拉出一个大小合适的方框,释放鼠标器左键,就形成一个命令按钮,如图6-8所示。图6-8第8页共57页建立控件以后,工具箱中的相应工具和鼠标指针恢复原状。刚建好控件的四周有8个小方块,表示该控件为活动控件。用鼠标器单击控件可选定该控件并使其成为活动控件,拖动控件到新的位置放开可移动控件。用鼠标器拖动控件四周的小方块可改变控件的大小。⑵对象的命名每个对象都有自己的名字,有了名字才能在程序中引用该对象。在建立对象时,VB会自动提供一个形如Command1、Command2、Label1、Label2之类的缺省名。为了使程序容易阅读、理解,最