VB基础教程入门全篇精讲ppt课件_第1页
VB基础教程入门全篇精讲ppt课件_第2页
VB基础教程入门全篇精讲ppt课件_第3页
VB基础教程入门全篇精讲ppt课件_第4页
VB基础教程入门全篇精讲ppt课件_第5页
已阅读5页,还剩261页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、VisualBasic程序设计(6.0版),皖南医学院计算机教研室毕迎春,1,课程要求,期末考核要求:理论考试期末评分比例:平时成绩30%+期末成绩70%,2,第一章VisualBasic程序设计概述,1.1概述1.2运行环境、安装和启动1.3VB集成开发环境,3,1.1概述一、VB简介:VisualBasic是基于Basic的可视化的程序设计语言。VisualBasic6.0中文版是Microsoft公司最新推出的可视化开发工具,是一种基于Windows操作系统的新型的现代程序设计语言,是一种易于学习、功能强、效率高的编程工具。任何具有初步程序设计基础的人,都能在很短的时间内掌握好VB,并有

2、效地编写出各种Windows程序。VB6.0包括三个版本:学习版、专业版、企业版,4,二、VB主要功能特点:1.具有面向对象的可视化设计工具2.事件驱动的编程机制3.提供了易学易用的应用程序集成开发环境4.结构化的程序设计语言5.支持多种数据库系统的访问6.OLE技术。VB核心就是其对对象的链接与嵌入(OLE)的支持。7.Active技术8.完备的help联机帮助功能三、VB6.0新功能特点,5,1.2运行环境、安装和启动一、运行环境:二、安装:安装文件:setup.exe三、启动:方法:1、双击桌面VB快捷方式。2、“开始”程序MicrosoftVisualStudio6.0|Microso

3、ftVisualBasic6.03、“开始”运行C:programfilesMicrosoftVisualStudioVB98VB6.exe,6,进入VB6.0窗口,7,1.3VB集成开发环境,8,1.主窗口应用程序窗口,由标题栏、菜单栏和工具栏组成,VB的三种工作模式(标题栏总显示当前模式)(1)设计模式:创建应用程序的大多数工作都是在设计时完成的。在设计时,可以设计窗体、绘制控件、编写代码并使用“属性”窗口来设置或查看属性设置值。(2)运行模式:代码正在运行的时期,用户可与应用程序交流。可查看代码,但不能改动它。(3)中断模式:程序在运行的中途被停止执行时。在中断模式下,用户可查看各变量及

4、不是属性的当前值,从而了解程序执行是否正常。还可以修改程序代码,检查、调试、重置、单步执行或继续执行程序。,9,2.窗体(Form)设计窗口,窗体设计窗口是屏幕中央的主窗口,它可以作为自定义窗口用来设计应用程序的界面。用户可以在窗体中添加控件、图形和图片来创建所希望的外观。每个窗口必须有一个的窗体名字,建立窗体时缺省名为Form1,Form2,.。窗体网格点间距的设置:设计模式-”工具”选项”应注意窗体名(代码中使用的标识对象名称)和窗体文件名的区别,10,11,3.代码(code)窗口,在设计模式中,通过双击窗体或窗体上任何对象或通过“工程资源管理器”窗口中的“查看代码”按钮来打开代码编辑器

5、窗口。代码编辑器是输入应用程序代码的编辑器。代码窗口主要包括:a.对象列表框b.过程列表框c.代码框d.过程查看按钮e.全模块查看按钮,12,13,4.属性(properties)窗口,属性是指对象的特征,如大小、标题或颜色等数据。在VisualBasic6.0设计模式中,属性窗口列出了当前选定窗体或控件的属性的值,用户可以对这些属性值进行设置。,14,工程是指用于创建一个应用程序的文件的集合。工程资源管理器列出了当前工程中的窗体和模块,5.工程资源管理器(projectexplorer)窗口,15,工程文件的扩展名为.VBP工程资源管理器下面的列表窗口,以层次列表形式组成这个工程的所有文件。

6、主要包括三种类型的文件:窗体文件(.FRM)存储窗体上使用的所有控件对象和有关的属性、对象相应的事件过程、程序代码。标准模块文件(.BAS)所有模块级变量和用户自定义的通用过程(可以被应用程序各处调用的过程)类模块文件(.CLS)包含用户对象的属性及方法。,16,工具箱提供一组工具,用于设计时在窗体中放置控件生成应用程序的用户接口。系统启动后缺省的General工具箱就会出现在屏幕左边,上面有常用“部件”,6.工具箱(ToolBox)窗口,17,定制工具箱添加选项卡:对添加的选项卡加控件的方法:(1)在已有的选项卡中拖动所需控件(2)激活选项卡-”工程”-“部件”,18,窗体布局窗口显示在屏幕

7、右下角。用户可使用表示屏幕的小图像来布置应用程序中各窗体的位置。这个窗口在多窗体应用程序中很有用,因为这可以指定每个窗体相对于主窗体的位置。,7窗体布局窗口,19,立即窗口:中断模式中调试应用程序。对象浏览窗口:可查看工程定义的模块或过程,也可查看对象库、类型库、类、方法、属性及可在过程中使用的常数。,20,第二章简单的VB程序设计,2.1程序设计方法的发展2.2对象的概念2.3建立简单的应用程序2.4窗体和基本控件2.5工程的管理及环境设置2.6制作成安装盘2.7使用帮助系统,21,2.1程序设计方法的发展,1.初期的程序设计高运行效率、少占用内存为目标2.结构化程序设计程序的可读性、可维护

8、性为目标程序=算法+数据结构的面向过程的程序设计3.面向对象的程序设计(OOP)降低程序的复杂性、提高软件的开法效率和改善工作界面为目标程序=对象+消息的面向对象的程序设计,22,结构化的分解突出过程(Howtodo?)面向对象的分解突出真实世界和抽象的对象(Whattodo?)目前常用的面向对象语言有:VisualBasic、VisualC+、VisualFoxPro等优点a.符合人们的思维方法b.易于软件的维护和功能的增减c.能用继承的方式减短程序开发时间d.与可视化技术结合,改善了工作界面,23,2.2对象的概念,一、对象和类1、类:是创建对象实例的模板,是同种对象的集合与抽象,包含了创

9、建对象的属性描述和行为特征的定义.2、对象:是类的一个实例,继承了类的属性、方法。Vb中常用的对象有:窗体、控件等。3、控件:以图标的形式放在工具箱中。VB中的控件分为三类:内部控件(标准控件):如工具箱上的控件,20个ActiveX控件:“工程/部件”命令加载可插入对象:Windows应用程序的对象,如Excel工作表。二、对象的建立和编辑:1、对象的建立:两种方法2、对象的选定:单选、多选3、复制或删除对象4、对象的命名,24,三、对象的三要素:属性、事件和方法(1)属性对象的性质,即用来描述和反映对象特征的参数。(2)事件对象的响应称为事件,它发生在用户与应用程序交互时。如单击控件、鼠标

10、移动、键盘按下等。事件过程指附在该对象上的用户编写的程序代码,是事件的处理程序。事件驱动过程是图形用户界面的本质,由用户控制而代码作出响应。,25,VB程序执行步骤:,启动应用程序,装载和显示窗体窗体(或窗体上的控件)等待事件的发生事件发生时,执行对应的事件过程重复执行(2)和(3),直到遇到“END”结束语句结束程序的运行或单击“结束”按钮强制停止程序的运行,26,(3)方法对象的动作,即将一些通用的过程编写好并封装起来,作为方法供用户直接调用。,对象方法的调用格式:对象.方法参数名表例如:在窗体上显示一行文字。Form1.Print”欢迎使用VisualBasic6.0”,27,2.3建立

11、简单的应用程序,设计一个VB应用程序的通用步骤:1.设计用户界面的对象2.设置对象的属性3.编写对象事件代码4.保存文件5.程序运行和调试(解释执行:或“运行|启动”或按F5)6.建立可执行文件。(编译运行:“文件”|“生成exe”),28,例2.1编写一个对输入字符进行转换的程序,转换规则为:将其中的大写字母转换成小写字母,小写字母转换成大写字母,空格不转换,其余转换成“*”。要求每输入一个字符,马上就进行判断和转换。,29,PrivateSubText1_KeyPress(KeyAsciiAsInteger)DimaaAsString*1aa=Chr$(KeyAscii)SelectCas

12、eaaCaseaTozaa=Chr$(KeyAscii-32)CaseAToZaa=Chr$(KeyAscii+32)CaseCaseElseaa=*EndSelectText2.Text=Text2.Text为0去除刚输入的字符.LostFocus:当控件失去焦点时发生.GotFocus:当控件获得焦点时发生.3.常用方法对象.SetFocus:是把光标移到指定的文本框对象中(即设置焦点)。4.文本框的应用数据过滤例2.7要求输入合法的数字数据。当输入结束时(按Tab键),对于输入正确的数据,显示正确信息;对输入的非数字数据,则响铃(Beep)、显示错误信息、清除文本框中的内容,并使焦点重新

13、回到文本框。Text2_LostFocus当输入结束按Tab键时,该事件激发IsNumeric(Text2):判断是否输入非数字数据.Text2.SetFocus:使焦点重新回到文本框书上例子:P32,41,五.命令按钮CommandButton功能:接受用户输入的命令。输入命令可以有三种方式:鼠标单击Tab键焦点到该按钮快捷键1.属性:P33Caption:命令按钮显示的内容,可设置快捷键,例String(6-i,);_Spc(6);String(i,)NextiEndSub,47,2、cls方法,形式:对象.cls(如:picture.cls)作用:用于清除运行时在窗体或图形框中显示的文本

14、或图形。注意:(1)cls方法只清除运行时在窗体或图形框中显示的文本或图形,不清除窗体在设计时的文本或图形。(2)cls方法使用后,currentx和currenty属性被设置为0。,48,3、move方法,形式:对象.move左边距离,上边距离,宽度,高度作用:用于移动窗体或控件,并可改变其大小。对象:可以是窗体及除时钟、菜单外的所有控件,省略对象为窗体。如果对象是窗体,则“左边距离”和“上边距离”以屏幕左边界和上边界为准,否则以窗体的左边界和上边界为准,宽度和高度表示可改变其大小。,49,例2-10,PrivateSubForm_Load()Image1.Top=0Image1.Left=

15、0Image1.Picture=LoadPicture(App.Path+1.gif)EndSubPrivateSubImage1_Click()Image1.Move(Form1.Left+Form1.Width)2-Form1.Left,(Form1.Top+Form1.Height)2-Form1.Top,Image1.Width2,Image1.Height2EndSub,50,七、应用举例,例2-11:根据房产商提供的信息,购房者选择房型、面积、单价、按揭期等信息,编写计算每月支付贷款的程序。程序由两个窗体构成,第一个窗体输入或选择买房的数据,该窗体由列表框选择数据、标签显示数据、文

16、本框输入数据;第二个窗体显示房屋的平面图,该窗体仅有一个图形控件。,51,2.5工程的管理,一、工程的组成工程文件包含了一个应用程序的所有文件:工程文件(.vbp):工程组文件(.vbg):窗体文件(.frm):控件及属性、事件过程和自定义过程窗体的二进制数据文件(.frx),自动产生同名.frx文件。标准模块文件(.bas)类模块文件(.cls)资源文件(.res)ActiveX控件的文件(.ocx)二、创建、打开和保存工程:“文件”菜单,52,三.添加、删除和保存文件:可利用“文件”和“工程”菜单1、窗体名和窗体文件名概念窗体名:窗体的Name属性,在代码中用来引用该窗体,同一工程不能有相

17、同的窗体名;窗体文件名:窗体存放在磁盘上的文件名,该文件包含了该窗体的所有控件属性和代码,同一文件夹不能有相同的文件名。2、在工程中添加现存的窗体时,只是对该窗体文件的引用纳入工程。因此,如果更改窗体并保存它,会影响包含此窗体文件的任何工程。3、在工程中删除窗体时,仅将此窗体从工程里删除掉,但是窗体文件仍存在于磁盘上。但是,如果在VB之外删除一个窗体文件,VB不能更新此工程文件,当打开此工程时,将显示一个文件丢失的错误信息。,53,四、环境设置,“工具”选项”1.”编辑器”选项卡2、“通用”选项卡,4、对窗体文件改名方法:在“工程资源管理器”中-右击窗体文件-“Form另存为”5、保存窗体文件

18、:若只想保存窗体文件而不保存工程文件,可直接在“工程资源管理器”中选定,然后执行“文件”菜单中的相应选项。,54,2.6制作成安装盘,2.6.1使用打包和展开向导打包:把工程中用到的各种类型的文件(包括工程自身的文件、必要的系统文件和安装主文件)进行打包压缩后,存放到特定的目录下。展开:把打包的文件展开到用户可以携带的用来安装的软盘、光盘等介质。管理脚本:记录打包或展开过程中的设置,便于以后做同样的操作。系统的压缩文件以.cab扩展名保存。2.6.2检测安装程序,55,第三章VB语言基础,3.1编码基础3.2数据类型3.3常量与变量3.4运算符和表达式3.5基本语句3.6数组3.7过程3.8常

19、用算法举例3.9程序调试,56,3.1编码基础,一、书写要求:1.VB代码不区分字母的大小写系统关键字自动转换每个单词的首字母大写;用户自定义行以第一次为准2.语句书写自由一行可书写几个语句,之间用冒号分隔;一行最多255个字符;一条语句可分若干行书写,用续行符(空格+下划线)连接3.注释有利于程序的维护和调试Rem或单撇号“”以及“编辑”工具栏的“设置注释块”;VB中注释语句会自动变为绿色4.保留行号与标号5.其他注意事项:保留字与变量之间至少有一空格;字母“l”与数字“1”、字母“o”与数字“0”的使用。,57,3.2数据类型,一、标准数据类型:,58,1、数值数据类型:IntegerLo

20、ngSingleDoubleCurrencyByte,(1)Integer和Long型用于保存整数(2)Single和Double型用于保存浮点实数(3)Currency型是定点实数或整数(4)Byte字节型用于存储二进制数,59,2、日期(Date)数据类型按8字节浮点数来存储。日期范围:公元100年1月1日9999年12月31日时间范围:0:00:0023:59:59表示方法:一般日期形式前后加来表示另一种是以数字序列表示日期和时间(1)一般日期表示法:使用成对#将任何可被认作日期和时间的字符括起来。公元年份默认19年,因而填入1995年与填入95年效果一样,但年的部分输入029间的数字,

21、则VB自动转换为20年。例如:#5/25/24#与#5/25/2024#等价。而#5/25/95#,#May25,95#,#May-25-95#,#25May1995#,#1995May25#等均为合法日期格式。,60,(2)数字序列表示法数字序列是双精度的浮点数,由VB自动解释。序号的整数部分表示日期,小数部分表示时间。在VB中,基准日期为公元1899年12月30日,这一天的整数部分为0,比基准早的日期序号为负数,比其晚的日期序号为正数,其取值范围为657434(公元100年1月1日)到2958465(公元9999年12月31日)。小数部分:以某个时间点占一天24小时的比例表示。如:6:00

22、AM会以0.25来表示。-2.5表示1899-12-2812:00:005.75表示1900-1-418:00:00366.05表示1900-12-311:12:00367.05表示1901-1-11:12:00-367.05表示1898-12-281:12:00,61,3、逻辑(布尔型)数据型:Boolean当逻辑型转换成整型数据时:true(-1)false(0)当其他类型数据转换成逻辑数据时:非0数转换为true,0转换为false4、字符串型:String“”5、对象数据类型:Object作为32位(4个字节)地址来存储,62,6、变体类型:Variant是所有未定义的变量的缺省数据类

23、型,它可以包括标准数据类型,还包含四个特殊的数据:empty(空)表示未指定确定的数据null(无效)表示数据不合法Error(出错)指出过程中出现了一个错误条件Nothing(无指向)表示数据还没有指向一个具体对象Vartype:检测变体型变量中保存的数值类型如:dimtVartype(t)或Vartype(667),63,二、自定义类型让用户自己定义的数据类型,由若干个标准数据类型组成。是一组不同类型变量的集合。相当于C语言中的结构类型;Pascal中的记录类型。1.自定义类型的定义形式如下:Type自定义类型名元素名(下标)As类型名元素名(下标)As类型名EndType其中:元素名:表

24、示自定义类型中的一个成员下标:表示数组类型名:为标准类型,64,例如,以下定义了一个有关学生信息的自定义类型:TypeStudTypeNoAsInteger学号NameAsString*20姓名SexAsString*1性别Mark(1To4)AsSingle4门课程成绩TotalAsSingle总分EndType注意:(1)自定义类型一般在标准模块(.BAS)中定义,默认是Public;在窗体必须是Private。(2)自定义类型中的元素类型可以是字符串,但应是定长字符串。(3)不要将自定义类型名和该类型的变量名混淆,前者表示了如同Integer、Single等的类型名,后者VB根据变量的类

25、型分配所需的内存空间,存贮数据。(4)自定义类型一般和数组结合使用,简化程序的编写。,65,2自定义类型变量的声明和使用(1)声明形式:Dim变量名As自定义类型名例DimStudentAsStudType(2)引用:形式:变量名.元素名例表示Student变量中的姓名,第4门课程的成绩,则表示如下:Student.Name,Student.Mark(4)(3)赋值:如:Student.Name=“王刚”Student.Mark(4)=98,66,3.3常量与变量,一.常量和变量的命名规则常量:在程序运行中其值不可以改变。变量:在程序运行中其存储的值可以改变。命名规则:1.以字母或汉字开头,后

26、可跟汉字、字母、数字或下划线组合,长度小于等于255个字符;2.不能使用VB中的关键字;3.VB中不区分变量名的大小写.4.为了增加程序的可读性,可在变量名前加一个缩写的前缀来表明该变量的数据类型。如:strMystring、intCount,67,VB6.0的关键字有:AsBinaryByRefByValDateElseEmptyErrorFalseForFriendGetInputIsLenLetLockMeMidNewNextNothingNullOnOptionOptionalParamArrayPrintPrivatePropertyPublicResumeSeekSetStatic

27、StepStringThenTimeToTrueWithEvents,68,二.常量(一)直接常量有数值常量(整数、长整数、定点数和浮点数)、字符串常量、布尔常量、日期常量(二)符号常量1.系统提供的常量系统定义常量位于对象库中,可通过“对象浏览器”查看.例:vbNormal、vbMinimized、vbMaximized、vbblue等form1.windowsstate=vbmaximized将窗口极大化form1.windowsstate=2与上面的语句等价的,69,2.用户声明常量形式:Const常量名AS类型=表达式省略AS类型,常量的类型由表达式值的类型决定,也可在常量后加类型符。

28、表达式:可以是数值常数、字符串常数以及由运算符组成的表达式。对于数值常数除了可用十进制表示外,还可以使用十六进制数(数值前加若密码错,显示有关信息,选择“重试”按钮,清除原内容再输入,选择“取消”按钮,停止运行。分析:帐号6位,MaxLength为6,LostFocus判断数字IsNumeric函数密码PassWordChar为“*”,MsgBox函数设置密码错对话框.,91,3.5.3选择结构1.IfThen语句(单分支结构)IfThen语句块EndIf或IfThen,例:已知两个数x和y,比较它们的大小,使得x大于y.Ifxz用一个IF语句和一个嵌套的IF语句实现,IfxyThent=x:

29、x=y:y=tIfyzThent=y:y=z:z=tIfx=AAndUcase(strC)=0AndstrC0Andy0ThenPrint在第一象限ElseIfx0ThenPrint在第二象限ElseIfx0Andy0Andy0Print在第一象限Casex0Print在第二象限Casex0Andyy,x,y)(2)Switch函数形式是:Switch(条件表达式1,条件表达式1为True时的值,条件表达式2,条件表达式2为True时的值),103,(3)Choose函数形式是:,Choose(数字类型变量,值为1的返回值,值为2的返回值)例如:Nop是1-4的值,转换成+、-、运算符Op=C

30、hoose(Nop,“+,-,)当值为1,返回字符串“+”,然后放入Op变量中,值为2,返回字符串“-”,依次类推;当Nop是1-4的非整数,系统自动取Nop的整数办法在判断;若Nop不在1-4之间,函数返回Null值。,104,1在选择结构中缺少配对的结束语句对多行式的If块语句中,应有配对的EndIf语句结束。2.多边选择ElseIf关键字的书写和条件表达式的表示ElseIf不要写成ElseIf;多个条件表达式次序问题3.SelectCase语句的使用SelectCase后不能出现多个变量;Case子句后不能出现变量,本节常见错误,105,3.5.4循环结构1.For循环语句(一般用于循环

31、次数已知)形式For循环变量初值to终值Step步长语句块ExitFor语句块Next循环变量,循环变量,nn=n-mnmm、n为公约数m=nDoWhilemnmnIfmnThen146m=mn86Else26n=nm24EndIf22Loop,111,3、WhileWend循环:(类似于DoWhileLoop)格式为:WhileWend执行过程:先计算表达式的值,如果表达式的值为True,则执行循环体,遇到Wend语句后,返回到While语句并再对条件进行测试,如为True,则继续执行循环体,如为False,则退出循环体。例:计算1+2+3+100,Dimiasinteger,sasinte

32、geri=1s=0Whileiaverthenn=n+1nexti,119,2、数组的概念数组不是一种数据类型,而是一组相同类型的变量的集合。在程序中使用数组的最大好处是用一个数组名代表逻辑上相关的一批数据,用下标表示该数组中的各个元素,和循环语句结合使用,使得程序书写简洁。数组元素:数组中的某一个数据项。数组元素的使用同简单变量的使用。数组:必须先声明后使用。两类数组:静态(定长)数组、动态(可变长)数组。,120,3、静态数组及声明静态数组:在声明时已确定了数组元素个数。形式:Dim数组名(下标1,下标2)As类型维数:几个下标为几维数组,最多60维。下标:下界To上界下界最小为32768

33、,上界最大为32767,省略下界为0。下标必须为常数,不可以为表达式或变量。每一维大小:上界下界+1数组大小:每一维大小的乘积As类型:如果省略,默认为变体类型例:Dimmark(1to100)AsInteger,121,DimlArray(0To3,0To4)AsLong共有45个元素等价于:DimlArray(3,4)AsLong,注意:(1)下界缺省为0,也可再重新定义数组的缺省下界为1。OptionBase1,122,注意:(2)在静态数组声明时的下标只能是常数,而在其他地方出现的数组元素的下标可以是变量,要加以区分。如:n=Inputbox(“输入n”)Dimx(n)AsSingle

34、错误的声明,下标是变量x(n)=100数组元素的下标可以是变量,但要防止下标越界的错误发生(3)在数组声明中的下标说明了数组的整体,即每维的大小;而在程序其他地方出现的下标表示数组中的一个元素。两者写法形式相同,但意义不同。例如:Dimx(10)AsInteger声明了x数组有11个元素x(10)=100对x(10)这个数组元素赋值,123,4、动态数组及声明动态数组是指在声明数组时未给出数组的大小(省略括号中的下标),当要使用它时,随时用ReDim语句重新指出数组大小。形式如下:Dim数组名()ReDim数组名(下标1,下标2)As类型例SubForm_Load()Dimx()AsSingl

35、en=Inputbox(“输入n”)ReDimx(n)EndSub,124,注意Dim、Private、Public变量声明语句是说明性语句,可出现在过程内或通用声明段;ReDim语句是执行语句,只能出现在过程内。在过程中可多次使用ReDim来改变数组的大小和维数。使用ReDim语句会使原来数组中的值丢失,可以在ReDim语句后加Preserve参数来保留数组中的数据。使用Preserve只能改变最后一维的大小,前面几维大小不能改变。ReDim中的下标可以是常量,也可以是有了确定值的变量。静态数组在程序编译时分配存储单元,动态数组在运行时分配存储单元。,125,例:Redim和Preserve

36、语句的使用Dima()asintegerPrivateSubForm_Click()Dima()AsIntegerReDima(3,2)Fori=0To3Forj=0To2a(i,j)=i*jPrinta(;i;,;j;)=;a(i,j);NextjNextiEndSub,126,PrivateSubForm_Click()Dima()AsIntegerReDima(3,2)Fori=0To3Forj=0To2a(i,j)=i*jNextjNextiReDimPreservea(3,4)Forj=3To4a(3,j)=j+10NextjFori=0To3Forj=0To4Printa(;i;,

37、;j;)=;a(i,j);NextjNextiEndSub,127,5、数组的基本操作应掌握的基本操作有:数组初始化、数组输入、输出、求数组中最大(最小)元素及下标、求和、平均值、排序和查找等。A.数组元素的赋初值(1)用循环Dimia(1to10)AsIntegerFori=1To10ia(i)=0Nexti,(2)Array函数DimibAsVariantib=Array(“abc”,“def”,“67”)ib数组有3个元素,上界为2Fori=0ToUBound(ib)Picture1.Printib(i);Nexti,128,注意利用Array对数组各元素赋值,声明的数组是可变数组或连圆

38、括号都可省的数组,并且其类型只能是Variant。数组的下界为零,上界由Array函数括号内的参数个数决定,也可通过函数Ubound获得上界,Lbound获得下界。赋值号左边的数组只能声明为Variant的可调数组或简单变量。赋值号两边的数据类型必须一致。,B数组的赋值数组直接对数组的赋值:Dima()AsVariant,b()AsVariant,i%a=Array(1,2,3,4,5)ReDimb(UBound(a)b=a,129,C.数组的输入:可通过文本框,也可通过inputbox函数输入。D.数组的输出:输出方阵SC中的下三角元素Fori=0To4Forj=0Toisc(i,j)=i*

39、5+jPrintsc(i,j);NextjPrint换行Nexti,130,E.求数组中最大元素及所在下标及各元素之和DimMax%,iMax%,s%,iA(1to10)AsIntegerMax=iA(1):iMax=1:s=iA(1)Fori=2To10s=s+iA(i)IfiA(i)MaxThenMax=iA(i)iMax=iEndIfNextiF.将数组中各元素交换Fori=1To102t=iA(i)iA(i)=iA(10-i+1)iA(10-i+1)=tNexti,131,6、数组的应用a.统计:输入一串字符,统计各字母出现的次数,不区分字母大小写。分析:统计26个字母出现的个数,先声

40、明一个具有26个元素的数组,每个元素的下标表示对应的字母,元素的值表示对应字母出现的次数。从输入的字符串中逐一取出字符,转换成大写字符(不区分大小写),进行判断。Asc(“A”)=65Asc(“Z”)=122Asc(“a”)=97Asc(“z”)=90,Dima(1to26)asintegerDimcasstring*1Le=len(Text1)ForI=1Tolec=UCase(Mid(Text1,I,1)Ifc=AAndc=ZThenj=Asc(c)-65+1a(j)=a(j)+1EndIfNextI,132,b.数组排序(选择法)对已知存放在数组中的n个数,用选择法按递增顺序排序。(1)

41、从n个数中选出最小数的下标(递增),然后将最小数与第1个数交换位置;(2)除第1个数外,其余n-1个数再按(1)的方法选出次小的数,与第2个数交换位置;(3)重复(1)n-1遍,最后构成递增序列。Fori=1Ton-1进行n-1轮比较iMin=i对第i轮比较时,初始假定第i个元素最小Forj=i+1Ton在数组in个元素中选最小元素的下标IfiA(j)iA(iMin)TheniMin=jNextjt=iA(i):iA(i)=iA(iMin):iA(iMin)=t将最小元素与第i个元素交换Nexti,133,c.排序(冒泡法)选择法排序在每一轮排序时找最小(递增次序)数的下标,出了内循环(一轮排

42、序结束),再交换最小数的位置;而冒泡法排序在每一轮排序时只要将第一个与其它几个比较(或者将相邻的数两两比较),只要次序不对就交换,出了内循环,最小数已冒出。Fori=1Ton-1进行n-1轮比较Forj=i+1Ton将第一个与i+1n个元素进行比较IfiA(j)iA(i)Then若次序不对,则马上进行交换位置t=iA(j):iA(j)=iA(i):iA(i)=tEndIfNextj出了内循环,一轮排序结束,最小数已冒到最上面Nexti,134,d.排序(冒泡法)冒泡法排序:将相邻的两个数两两比较,只要次序不对就交换,出了内循环,最小数已冒出。排序进行的过程见下表。Fori=1Ton-1进行n-

43、1轮比较Forj=nToi+1step-1从ni个元素进行两两比较IfiA(j)iA(j-1)Then若次序不对,则马上进行交换位置t=iA(j):iA(j)=iA(j-1):iA(j-1)=tEndIfNextj出了内循环,一轮排序结束,最小数已冒到最上面Nexti,135,e.数组元素的插入与删除:(1)插入在有序数组a(1ton)(原有n-1个元素)插入一个值Key元素,算法:查找要插入的位置k(1=eps)s=s+tt=t*x/nn=n+1Loopjishu1=sEndFunction,子过程实现求部分级数和Subjishu2(s#,x!,eps#)Dimn%,t#n=1:s=0:t=

44、1DoWhile(Abs(t)=eps)s=s+tt=t*x/nn=n+1LoopEndSub,f1=jishu1(2,0.000001)调用函数过程Calljishu2(f2,2,0.000001)调用子过程或jishu2f2,2,0.00001,151,程序运行流程:PrivateSubCommand1_Click()Dimf1#,f2#f1=jishu1(2,0.000001)Calljishu2(f2,2,0.000001)Printf1=;f1,f2=;f2EndSub,152,三、参数传递在调用过程时,一般主调过程与被调过程之间有数据传递,即主调过程的实参传递给被调过程的形参(虚参

45、),完成实参与形参的结合,然后执行被调过程体。在VB中,实参与形参的结合有两种方法:传址(ByRef)与传值(ByVal),其中传址又称为引用,是默认的方法。区分两种结合的方法是在要使用传值的形参前加有“ByVal”关键字。1.传址与传值传址:形参得到的是实参的地址,形参值的改变同时也改变实参的值。传值:形参得到的是实参的值,形参值的改变不会影响实参的值。选用传值还是传址的使用规则:(1)形参是数组、自定义类型时只能用传址方式,若要将过程中的结果返回给主调程序,则形参必须是传址方式。这时实参必须是同类型的变量名,不能是常量或表达式。(2)若形参不是(1)中的两种情况,一般应选用传值方式。这样可

46、增加程序的可靠性和便于调试,减少各过程间的关联。,153,例两个变量的交换SubSwap1(ByValx%,ByValy%)t%=x:x=y:y=tEndSubSubSwap2(x%,y%)t%=x:x=y:y=tEndSubPrivateSubCommand1_Click()a%=10:b%=20Swap1a,b传值PrintA1=;a,B1=;ba=10:b=20Swap2a,b传址PrintA2=;a,B2=;bEndSub,运行结果A1=10B1=20A2=20B2=10,154,2.数组参数的传递在VB中允许参数是数组,数组只能通过传址方式进行传递。在传递数组时要注意:在实参和形参中

47、可只写数组名,或忽略维数的定义,但圆括号不能省。被调过程可通过Lbound和Ubound函数确定实参数组的下、上界。例编一函数tim,求任意一维数组中各元素之积。调用tim,求和Functiontim(a()AsInteger)Dimt#,i%t=1Fori=Lbound(a)ToUbound(a)t=t*a(i)Nextitim=tEndFunction,调用:SubCommand1_Click()Dima%(1To5),b%(3To8)t1#=tim(a()t2#=tim(b()Printt1,t2EndSub,155,四、变量、过程的作用域作用域:变量、过程可被访问的范围。变量、过程随所

48、处的位置不同,可被访问的范围不同。1.过程的作用域窗体/模块级:加Private关键字的过程,只能被定义的窗体或模块中的过程调用。全局级:加Public关键字(缺省)的过程,可供该应用程序的所有窗体和所有标准模块中的过程调用。,156,2.变量的作用域局部变量:在过程内用Dim声明的变量(或不加声明直接使用的变量),只能在本过程中使用。窗体/模块级变量:在“通用声明”段中用Dim语句或用Private语句声明的变量,可被本窗体/模块的任何过程访问。全局变量:在“通用声明”段中用Public语句声明的变量,可被本应用程序的任何过程或函数访问。,157,例如在下面一个标准模块文件中不同级的变量声明

49、:PublicPaAsinteger全局变量PrivateMbAsstring*10窗体/模块级变量SubF1()DimFaAsinteger局部变量EndSubSubF2()DimFbAsSingle局部变量EndSub,158,若在不同级声明相同的变量名,系统按局部、窗体/模块、全局次序访问(即优先访问作用域小的变量名)。如:PublicTempAsinteger全局变量SubForm_Load()DimTempAsInteger局部变量Temp=10访问局部变量Form1.Temp=20访问全局变量必须加窗体名PrintForm1.Temp,Temp显示2010EndSub,159,3.

50、静态变量局部变量声明:Dim声明,随过程的调用而分配存储单元,每次调用都对变量初始化;过程体结束,变量的内容自动消失,存储单元释放。Static声明,每次调用过程,变量保持原来的值。声明形式:Static变量名AS类型StaticFunction函数过程名(参数列表)As类型StaticSub子过程名(参数列表)过程名前加Static,表示该过程内的局部变量都是静态变量。例比较Dim和Static的区别。PrivateSubForm_Click()Dimi%,isum%Fori=1To5isum=sum(i)Printisum;NextiEndSub,PrivateFunctionsum(nA

51、sInteger)DimjAsIntegerj=j+nsum=jEndFunction,结果为:12345,StaticjAsInteger,结果?,结果为:1361015,160,Subf1(x)x=f2(xx)*3EndSub,SubCommand1_Click()Callf1(y)EndSub,Functionf2(x)f2=f3(x)+3EndSub,Functionf3(x)f3=x*xEndSub,Subf1(x)Callf1(y)EndSub,过程的直接调用,SubCommand1_Click()Callf1(y)EndSub,过程的递归调用,五、递归:,161,1.递归的概念用

52、自身的结构来描述自身就称为“递归”。例对阶乘的定义:,2.递归过程过程在自身定义的内部调用自己。例编fac(n)=n!的递归函数Functionfac(nAsInteger)AsIntegerIfn=1Thenfac=1Elsefac=n*fac(n-1)EndIfEndFunction,SubCommand1_Click()Print“fac(4)=”;fac(4)EndSub结果:fac(4)=24,162,递推,回归,在递归处理中,用栈来实现。栈中存放形参、局部变量、返回地址。递推过程:每调用自身,当前参数压栈,直到达到递归结束条件。回归过程:不断从栈中弹出当前的参数,直到栈空。注意:1、递归算法设计简单,但消耗的机时和占据的内存空间比非递归大。2、构成递归的要素:具备递归条件;具备递归结束条件及结束时的值;能用递归形式表示,并且递归向终止条件发展。,fac(2)=2*fac(1),fac(1)=1,fac(4)=4*6,fac(3)=3*2,fac(2)=2*1,fac(3)=3*fac(2),fac(4)=4*fac(3),163

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论