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

下载本文档

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

文档简介

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

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

3、:1、双击桌面VB快捷方式。 2、“开始”程序Microsoft Visual Studio 6.0| Microsoft Visual Basic 6.0 3、 “开始”运行C:program files Microsoft Visual Studio VB98VB6.exe,.,7,进入VB6.0窗口,.,8,1.3 VB集成开发环境,.,9,1.主窗口 应用程序窗口,由标题栏、菜单栏和工具栏组成,VB的三种工作模式(标题栏总显示当前模式) (1)设计模式:创建应用程序的大多数工作都是在设计时完成的。在设计时,可以设计窗体、绘制控件、编写代码并使用“属性”窗口来设置或查看属性设置值。 (2

4、)运行模式:代码正在运行的时期,用户可与应用程序交流。可查看代码,但不能改动它。 (3)中断模式:程序在运行的中途被停止执行时。在中断模式下,用户可查看各变量及不是属性的当前值,从而了解程序执行是否正常。还可以修改程序代码,检查、调试、重置、单步执行或继续执行程序。,.,10,2.窗体(Form)设计窗口,窗体设计窗口是屏幕中央的主窗口,它可以作为自定义窗口用来设计应用程序的界面。用户可以在窗体中添加控件、图形和图片来创建所希望的外观。每个窗口必须有一个的窗体名字,建立窗体时缺省名为Form1,Form2, . . .。 窗体网格点间距的设置:设计模式-”工具” ”选项” 应注意窗体名(代码中

5、使用的标识对象名称)和窗体文件名的区别,.,11,.,12,3.代码(code)窗口,在设计模式中,通过双击窗体或窗体上任何对象或通过“工程资源管理器”窗口中的“查看代码”按钮来打开代码编辑器窗口。代码编辑器是输入应用程序代码的编辑器。 代码窗口主要包括: a.对象列表框 b.过程列表框 c.代码框 d.过程查看按钮 e.全模块查看按钮,.,13,.,14,4. 属性(properties)窗口,属性是指对象的特征,如大小、标题或颜色等数据。在Visual Basic6.0设计模式中,属性窗口列出了当前选定窗体或控件的属性的值,用户可以对这些属性值进行设置。,.,15,工程是指用于创建一个应用

6、程序的文件的集合。工程资源管理器列出了当前工程中的窗体和模块,5. 工程资源管理器(project explorer)窗口,.,16,工程文件的扩展名为.VBP 工程资源管理器下面的列表窗口,以层次列表形式组成这个工程的所有文件。 主要包括三种类型的文件: 窗体文件(.FRM)存储窗体上使用的所有控件对象和有关的属性、对象相应的事件过程、程序代码。 标准模块文件(.BAS)所有模块级变量和用户自定义的通用过程(可以被应用程序各处调用的过程) 类模块文件(.CLS)包含用户对象的属性及方法。,.,17,工具箱提供一组工具,用于设计时在窗体中放置控件生成应用程序的用户接口。系统启动后缺省的Gene

7、ral工具箱就会出现在屏幕左边,上面有常用“部件”,6. 工具箱(ToolBox)窗口,.,18,定制工具箱 添加选项卡: 对添加的选项卡加控件的方法: (1)在已有的选项卡中拖动所需控件 (2) 激活选项卡-”工程”-“部件”,.,19,窗体布局窗口显示在屏幕右下角。用户可使用表示屏幕的小图像来布置应用程序中各窗体的位置。这个窗口在多窗体应用程序中很有用,因为这可以指定每个窗体相对于主窗体的位置。,7窗体布局窗口,.,20,立即窗口:中断模式中调试应用程序。 对象浏览窗口:可查看工程定义的模块或过程,也可查看对象库、类型库、类、方法、属性及可在过程中使用的常数。,.,21,第二章 简单的VB

8、程序设计,2.1 程序设计方法的发展 2.2 对象的概念 2.3 建立简单的应用程序 2.4窗体和基本控件 2.5工程的管理及环境设置 2.6制作成安装盘 2.7使用帮助系统,.,22,2.1 程序设计方法的发展,1.初期的程序设计 高运行效率、少占用内存为目标 2.结构化程序设计 程序的可读性、可维护性为目标 程序=算法+数据结构 的面向过程的程序设计 3.面向对象的程序设计(OOP) 降低程序的复杂性、提高软件的开法效率和改善工作界面为目标 程序=对象+消息 的面向对象的程序设计,.,23,结构化的分解突出过程(How to do?) 面向对象的分解突出真实世界和抽象的对象(What to

9、 do?) 目前常用的面向对象语言有:Visual Basic、Visual C+、Visual FoxPro等 优点 a.符合人们的思维方法 b.易于软件的维护和功能的增减 c.能用继承的方式减短程序开发时间 d.与可视化技术结合,改善了工作界面,.,24,2.2 对象的概念,一、对象和类 1、类:是创建对象实例的模板,是同种对象的集合与抽象, 包含了创建对象的属性描述和行为特征的定义. 2、对象: 是类的一个实例,继承了类的属性、方法。 Vb中常用的对象有:窗体、控件等。 3、控件:以图标的形式放在工具箱中。VB中的控件分为三类: 内部控件(标准控件): 如工具箱上的控件,20个 Acti

10、veX控件:“工程/部件”命令加载 可插入对象:Windows应用程序的对象,如Excel工作表。 二、对象的建立和编辑: 1、对象的建立:两种方法 2、对象的选定:单选、多选 3、复制或删除对象 4、对象的命名,.,25,三、对象的三要素:属性、事件和方法 (1)属性 对象的性质,即用来描述和反映对象特征的参数。 (2)事件 对象的响应称为事件,它发生在用户与应用程序交互时。如单击控件、鼠标移动、键盘按下等。 事件过程 指附在该对象上的用户编写的程序代码,是事件的处理程序。 事件驱动过程 是图形用户界面的本质,由用户控制而代码作出响应。,.,26,VB程序执行步骤:,启动应用程序,装载和显示

11、窗体 窗体(或窗体上的控件)等待事件的发生 事件发生时,执行对应的事件过程 重复执行(2)和(3),直到遇到“END”结束语句结束程序的运行或单击“结束”按钮强制停止程序的运行,.,27,(3)方法 对象的动作,即将一些通用的过程编写好并封装起来,作为方法供用户直接调用。,对象方法的调用格式: 对象.方法参数名表 例如:在窗体上显示一行文字。 Form1.Print ”欢迎使用Visual Basic6.0”,.,28,2.3 建立简单的应用程序,设计一个VB应用程序的通用步骤: 1.设计用户界面的对象 2.设置对象的属性 3.编写对象事件代码 4.保存文件 5.程序运行和调试 (解释执行:

12、或 “运行|启动” 或 按F5) 6.建立可执行文件。 (编译运行:“文件”|“生成exe”),.,29,例2.1 编写一个对输入字符进行转换的程序,转换规则为:将其中的大写字母转换成小写字母,小写字母转换成大写字母,空格不转换,其余转换成“*”。 要求每输入一个字符,马上就进行判断和转换。,.,30,Private Sub Text1_KeyPress(KeyAscii As Integer) Dim aa As String * 1 aa = Chr$(KeyAscii) Select Case aa Case a To z aa = Chr$(KeyAscii - 32) Case A

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

14、框。 Text2_ LostFocus 当输入结束按Tab键时,该事件激发 IsNumeric(Text2) : 判断是否输入非数字数据. Text2.SetFocus : 使焦点重新回到文本框 书上例子:P32,.,42,五.命令按钮CommandButton 功能:接受用户输入的命令。 输入命令可以有三种方式: 鼠标单击 Tab键焦点到该按钮 快捷键 1. 属性:P33 Caption: 命令按钮显示的内容,可设置快捷键,例 String(6 - i, ); _ Spc(6); String(i, ) Next i End Sub,.,48,2、cls方法,形式:对象.cls (如:pic

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

16、Private Sub Form_Load() Image1.Top = 0 Image1.Left = 0 Image1.Picture = LoadPicture(App.Path + 1.gif) End Sub Private Sub Image1_Click() Image1.Move (Form1.Left + Form1.Width) 2 - Form1.Left,(Form1.Top + Form1.Height) 2 - Form1.Top,Image1.Width 2, Image1.Height 2 End Sub,.,51,七、应用举例,例2-11:根据房产商提供的信息

17、,购房者选择房型、面积、单价、按揭期等信息,编写计算每月支付贷款的程序。 程序由两个窗体构成,第一个窗体输入或选择买房的数据,该窗体由列表框选择数据、标签显示数据、文本框输入数据;第二个窗体显示房屋的平面图,该窗体仅有一个图形控件。,.,52,2.5 工程的管理,一、工程的组成 工程文件包含了一个应用程序的所有文件: 工程文件(.vbp): 工程组文件(.vbg): 窗体文件(.frm):控件及属性、事件过程和自定义过程 窗体的二进制数据文件(.frx),自动产生同名.frx文件。 标准模块文件(.bas) 类模块文件(.cls) 资源文件(.res) ActiveX控件的文件(.ocx) 二

18、、创建、打开和保存工程:“文件”菜单,.,53,三.添加、删除和保存文件:可利用“文件”和“工程”菜单 1、窗体名和窗体文件名概念 窗体名:窗体的Name属性, 在代码中用来引用该窗体,同一 工程不能有相同的窗体名; 窗体文件名:窗体存放在磁盘上的文件名,该文件包含了该窗体的所有控件属性和代码,同一文件夹不能有相同的文件名。 2、在工程中添加现存的窗体时,只是对该窗体文件的引用纳入工程。因此,如果更改窗体并保存它,会影响包含此窗体文件的任何工程。 3、在工程中删除窗体时,仅将此窗体从工程里删除掉,但是窗体文件仍存在于磁盘上。但是,如果在VB之外删除一个窗体文件,VB不能更新此工程文件,当打开此

19、工程时,将显示一个文件丢失的错误信息。,.,54,四、环境设置,“工具”选项” 1.”编辑器”选项卡 2、“通用”选项卡,4、对窗体文件改名方法: 在“工程资源管理器”中-右击窗体文件-“Form另存为” 5、保存窗体文件:若只想保存窗体文件而不保存工程文件,可直接在“工程资源管理器”中选定,然后执行“文件”菜单中的相应选项。,.,55,2.6 制作成安装盘,2.6.1 使用打包和展开向导 打包:把工程中用到的各种类型的文件(包括工程自身的文件、必要的系统文件和安装主文件)进行打包压缩后,存放到特定的目录下。 展开:把打包的文件展开到用户可以携带的用来安装的软盘、光盘等介质。 管理脚本:记录打

20、包或展开过程中的设置,便于以后做同样的操作。 系统的压缩文件以.cab扩展名保存。 2.6.2 检测安装程序,.,56,第三章 VB语言基础,3.1 编码基础 3.2 数据类型 3.3 常量与变量 3.4 运算符和表达式 3.5 基本语句 3.6 数组 3.7 过程 3.8 常用算法举例 3.9 程序调试,.,57,3.1 编码基础,一、书写要求: 1.VB代码不区分字母的大小写 系统关键字自动转换每个单词的首字母大写; 用户自定义行以第一次为准 2.语句书写自由 一行可书写几个语句,之间用冒号分隔;一行最多255个字符; 一条语句可分若干行书写,用续行符 (空格+下划线)连接 3.注释有利于

21、程序的维护和调试 Rem 或 单撇号“” 以及“编辑”工具栏的“设置注释块”; VB中注释语句会自动变为绿色 4.保留行号与标号 5.其他注意事项:保留字与变量之间至少有一空格; 字母“l”与数字“1”、字母“o”与数字“0”的使用。,.,58,3.2 数据类型,一、 标准数据类型:,.,59,1、数值数据类型: Integer Long Single Double Currency Byte,(1)Integer和Long型用于保存整数 (2)Single和Double型用于保存浮点实数 (3)Currency型是定点实数或整数 (4)Byte字节型用于存储二进制数,.,60,2、日期(Da

22、te)数据类型 按8字节浮点数来存储。 日期范围:公元100年1月1日9999年12月31日 时间范围:0:00:00 23:59:59 表示方法:一般日期形式前后加来表示 另一种是以数字序列表示日期和时间 (1)一般日期表示法:使用成对#将任何可被认作日期和时间的字符括起来。公元年份默认19年,因而填入1995年与填入95年效果一样,但年的部分输入029间的数字,则VB自动转换为 20 年。例如:#5/25/24# 与 #5/25/2024#等价。 而#5/25/95#,#May 25,95#,#May-25-95#, #25 May 1995#, #1995 May 25#等均为合法日期格

23、式。,.,61,(2)数字序列表示法 数字序列是双精度的浮点数,由VB自动解释。序号的整数部分表示日期,小数部分表示时间。 在VB中,基准日期为公元1899年12月30日,这一天的整数部分为0,比基准早的日期序号为负数,比其晚的日期序号为正数,其取值范围为657434(公元100年1月1日)到2958465(公元9999年12月31日)。小数部分:以某个时间点占一天24小时的比例表示。如:6:00 AM会以0.25来表示。 -2.5 表示1899-12-28 12:00:00 5.75表示1900-1-4 18:00:00 366.05表示1900-12-31 1:12:00 367.05表示

24、1901-1-1 1:12:00 -367.05表示1898-12-28 1:12:00,.,62,3、逻辑(布尔型)数据型:Boolean 当逻辑型转换成整型数据时:true (-1) false(0) 当其他类型数据转换成逻辑数据时: 非0数转换为true, 0转换为false 4、字符串型:String “” 5、对象数据类型:Object 作为32位(4个字节)地址来存储,.,63,6、变体类型:Variant 是所有未定义的变量的缺省数据类型,它可以包括标准数据类型,还包含四个特殊的数据: empty(空)表示未指定确定的数据 null(无效)表示数据不合法 Error(出错)指出过

25、程中出现了一个错误条件 Nothing(无指向)表示数据还没有指向一个具体对象 Vartype:检测变体型变量中保存的数值类型 如: dim t Vartype(t) 或Vartype(667),.,64,二、自定义类型 让用户自己定义的数据类型,由若干个标准数据类型组成。是一组不同类型变量的集合。相当于C语言中的结构类型;Pascal中的记录类型。 1.自定义类型的定义 形式如下: Type 自定义类型名 元素名(下标) As 类型名 元素名(下标) As 类型名 End Type 其中:元素名:表示自定义类型中的一个成员 下标:表示数组 类型名:为标准类型,.,65,例如,以下定义了一个有

26、关学生信息的自定义类型: Type StudType No As Integer 学号 Name As String * 20 姓名 Sex As String * 1 性别 Mark(1 To 4) As Single 4门课程成绩 Total As Single 总分 End Type 注意: (1)自定义类型一般在标准模块(.BAS)中定义,默认是Public;在窗体必须是Private。 (2)自定义类型中的元素类型可以是字符串,但应是定长字符串。 (3)不要将自定义类型名和该类型的变量名混淆,前者表示了如同Integer、Single等的类型名,后者VB根据变量的类型分配所需的内存空

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

28、改变。 命名规则: 1.以字母或汉字开头,后可跟汉字、字母、数字或下划线组 合,长度小于等于255个字符; 2.不能使用VB中的关键字; 3.VB中不区分变量名的大小写. 4.为了增加程序的可读性,可在变量名前加一个缩写的前缀来表明该变量的数据类型。如:strMystring、intCount,.,68,VB6.0的关键字有: As Binary ByRef ByVal Date Else Empty Error False For Friend Get Input Is Len Let Lock Me Mid New Next Nothing Null On Option Optional

29、ParamArray Print Private Property Public Resume Seek Set Static Step String Then Time To True WithEvents,.,69,二. 常量 (一)直接常量 有数值常量(整数、长整数、定点数和浮点数)、字符串常量、布尔常量、日期常量 (二)符号常量 1. 系统提供的常量 系统定义常量位于对象库中,可通过“对象浏览器”查看. 例: vbNormal 、 vbMinimized、vbMaximized、vbblue等 form1.windowsstate=vbmaximized 将窗口极大化 form1.wi

30、ndowsstate=2 与上面的语句等价的,.,70,2. 用户声明常量 形式: Const 常量名 AS 类型 = 表达式 省略 AS 类型 ,常量的类型由表达式值的类型决定,也可在常量后加类型符。 表达式:可以是数值常数、字符串常数以及由运算符组成的表达式。对于数值常数除了可用十进制表示外,还可以使用十六进制数(数值前加 若密码错,显示有关信息,选择“重试”按钮,清除原内容再输入,选择“取消”按钮,停止运行。 分析: 帐号6位,MaxLength为6 , LostFocus判断数字IsNumeric函数 密码PassWordChar为“*”,MsgBox函数设置密码错对话框.,.,92,

31、3.5.3 选 择 结 构 1. IfThen语句(单分支结构) If Then 语句块 End If 或 If Then ,例:已知两个数x和y,比较它们的大小,使得x大于y. If xz 用一个IF语句和一个嵌套的IF语句实现,If xy Then t=x: x=y: y=t If yz Then t=y: y=z: z=t If x=A And Ucase (strC) =0 And strC 0 And y 0 Then Print 在第一象限 ElseIf x 0 Then Print 在第二象限 ElseIf x 0 And y 0 And y 0 Print 在第一象限 Case

32、 x 0 Print 在第二象限 Case x 0 And y y,x,y) (2) Switch函数形式是: Switch(条件表达式1,条件表达式1为True时的值 ,条件表达式2,条件表达式2为True时的值),.,104,(3)Choose函数形式是:,Choose(数字类型变量,值为1的返回值,值为2的返回值) 例如:Nop是1-4的值,转换成 + 、-、运算符 Op= Choose(Nop,“+,-,) 当值为1,返回字符串“+”,然后放入Op变量中,值为2,返回字符 串“-”,依次类推;当Nop是1-4的非整数,系统自动取Nop的整数办法在判断;若Nop不在1-4之间,函数返回N

33、ull值。,.,105,1在选择结构中缺少配对的结束语句 对多行式的If块语句中,应有配对的 End If语句结束。 2. 多边选择ElseIf关键字的书写和条件表达式的表示 ElseIf 不要写成Else If; 多个条件表达式次序问题 3. Select Case语句的使用 Select Case 后不能出现多个变量;Case子句后不能出现变量,本节常见错误,.,106,3.5.4 循 环 结 构 1. For循环语句 (一般用于循环次数已知) 形式 For 循环变量初值 to 终值 Step 步长 语句块 Exit For 语句块 Next 循环变量,循环变量,n n=n-m nm m、

34、n为公约数 m=n Do While m n m n If m n Then 14 6 m = m n 8 6 Else 2 6 n = n m 2 4 End If 2 2 Loop,.,112,3、While Wend循环: (类似于Do WhileLoop) 格式为:While Wend 执行过程:先计算表达式的值,如果表达式的值为True,则执行循环体,遇到Wend语句后,返回到While语句并再对条件进行测试,如为True,则继续执行循环体,如为False,则退出循环体。 例:计算1+2+3+100,Dim i as integer,s as integer i=1 s=0 Whil

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

36、上界 下界最小为32768,上界最大为32767,省略下界为0 。下标必须为常数,不可以为表达式或变量。 每一维大小: 上界下界+1 数组大小: 每一维大小的乘积 As类型:如果省略,默认为变体类型 例:Dim mark(1 to 100) As Integer,.,122,Dim lArray( 0 To 3, 0 To 4) As Long 共有 45个元素 等价于: Dim lArray(3, 4) As Long,注意: (1)下界缺省为0,也可再重新定义数组的缺省下界为1。 Option Base 1,.,123,注意: (2)在静态数组声明时的下标只能是常数,而在其他地方出现的数组

37、元素的下标可以是变量,要加以区分。如: n =Inputbox(“输入n”) Dim x(n) As Single 错误的声明,下标是变量 x(n)=100 数组元素的下标可以是变量,但要防止下标越界的错误发生 (3)在数组声明中的下标说明了数组的整体,即每维的大小;而在程序其他地方出现的下标表示数组中的一个元素。两者写法形式相同,但意义不同。 例如:Dim x(10) As Integer 声明了x数组有11个元素 x(10)=100 对x(10)这个数组元素赋值,.,124,4、动态数组及声明 动态数组是指在声明数组时未给出数组的大小(省略括号中的下标),当要使用它时,随时用ReDim语句

38、重新指出数组大小。形式如下: Dim 数组名( ) ReDim 数组名(下标1,下标2) As 类型 例 Sub Form_Load( ) Dim x( ) As Single n =Inputbox(“输入n”) ReDim x(n) End Sub,.,125,注意 Dim、Private、Public变量声明语句是说明性语句,可出现在过程内或通用声明段;ReDim语句是执行语句,只能出现在过程内。 在过程中可多次使用ReDim来改变数组的大小和维数。 使用ReDim语句会使原来数组中的值丢失,可以在ReDim语句后加Preserve参数来保留数组中的数据。使用Preserve只能改变最后

39、一维的大小,前面几维大小不能改变。 ReDim中的下标可以是常量,也可以是有了确定值的变量。 静态数组在程序编译时分配存储单元,动态数组在运行时分配存储单元。,.,126,例:Redim和 Preserve语句的使用 Dim a() as integer Private Sub Form_Click() Dim a() As Integer ReDim a(3, 2) For i = 0 To 3 For j = 0 To 2 a(i, j) = i * j Print a(; i; ,; j; )=; a(i, j); Next j Next i End Sub,.,127,Private

40、Sub Form_Click() Dim a() As Integer ReDim a(3, 2) For i = 0 To 3 For j = 0 To 2 a(i, j) = i * j Next j Next i ReDim Preserve a(3, 4) For j = 3 To 4 a(3, j) = j + 10 Next j For i = 0 To 3 For j = 0 To 4 Print a(; i; ,; j; )=; a(i, j); Next j Next i End Sub,.,128,5、 数组的基本操作 应掌握的基本操作有:数组初始化、数组输入、输出、求数组

41、中最大(最小)元素及下标、求和、平均值、排序和查找等。 A. 数组元素的赋初值 (1)用循环 Dim ia(1 to 10) As Integer For i = 1 To 10 ia(i)=0 Next i,(2) Array函数 Dim ib As Variant ib = Array(“abc”, “def”, “67”) ib数组有3个元素,上界为2 For i = 0 To UBound(ib) Picture1.Print ib(i); ; Next i,.,129,注意 利用Array对数组各元素赋值,声明的数组是可变数组或连圆括号都可省的数组,并且其类型只能是Variant。

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

43、0 To i sc(i, j) = i * 5 + j Print sc(i, j); ; Next j Print 换行 Next i,.,131,E. 求数组中最大元素及所在下标及各元素之和 Dim Max%,iMax %,s%, iA(1 to 10) As Integer Max=iA(1):iMax=1:s=iA(1) For i = 2 To 10 s=s+iA(i) If iA(i)Max Then Max=iA(i) iMax=i End If Next i F. 将数组中各元素交换 For i =1 To 102 t=iA(i) iA(i)=iA(10-i+1) iA(10-

44、i+1)=t Next i,.,132,6、数组的应用 a. 统计: 输入一串字符,统计各字母出现的次数,不区分字母大小写。 分析: 统计26个字母出现的个数,先声明一个具有26个元素的数组,每个元素的下标表示对应的字母,元素的值表示对应字母出现的次数。 从输入的字符串中逐一取出字符,转换成大写字符(不区分大小写),进行判断。 Asc(“A”)=65 Asc(“Z”)=122 Asc(“a”)=97 Asc(“z”)=90,Dim a(1 to 26) as integer Dim c as string*1 Le=len(Text1) For I = 1 To le c = UCase(Mi

45、d(Text1, I, 1) If c = A And c = Z Then j = Asc(c) - 65 + 1 a(j) = a(j) + 1 End If Next I,.,133,b.数组排序(选择法) 对已知存放在数组中的n个数,用选择法按递增顺序排序。 (1) 从n个数中选出最小数的下标(递增),然后将最小数与第1个数交换位置; (2) 除第1个数外,其余n-1个数再按(1)的方法选出次小的数,与第2个数交换位置; (3) 重复(1)n-1遍,最后构成递增序列。 For i = 1 To n - 1 进行n-1轮比较 iMin= i 对第i轮比较时,初始假定第i个元素最小 For

46、 j = i+1 To n 在数组in个元素中选最小元素的下标 If iA(j) iA(iMin) Then iMin = j Next j t= iA(i): iA(i) = iA(iMin) : iA(iMin) = t 将最小元素与第i个元素交换 Next i,.,134,c.排序(冒泡法) 选择法排序在每一轮排序时找最小(递增次序)数的下标,出了内循环(一轮排序结束),再交换最小数的位置;而冒泡法排序在每一轮排序时只要将第一个与其它几个比较(或者将相邻的数两两比较),只要次序不对就交换,出了内循环,最小数已冒出。 For i = 1 To n-1 进行n-1轮比较 For j = i+

47、1 To n 将第一个与i+1n个元素进行比较 If iA(j) iA(i) Then 若次序不对,则马上进行交换位置 t = iA(j) : iA(j) = iA(i) : iA(i) = t End If Next j 出了内循环,一轮排序结束,最小数已冒到最上面 Next i,.,135,d.排序(冒泡法) 冒泡法排序:将相邻的两个数两两比较,只要次序不对就交换,出了内循环,最小数已冒出。排序进行的过程见下表。 For i = 1 To n-1 进行n-1轮比较 For j = n To i+1 step -1 从ni个元素进行两两比较 If iA(j) iA(j-1) Then 若次序

48、不对,则马上进行交换位置 t = iA(j) : iA(j) = iA(j-1) : iA(j-1) = t End If Next j 出了内循环,一轮排序结束,最小数已冒到最上面 Next i,.,136,e.数组元素的插入与删除: (1) 插入 在有序数组a(1 to n)(原有n-1个元素)插入一个值Key元素,算法: 查找要插入的位置k(1= eps) s = s + t t = t * x / n n = n + 1 Loop jishu1 = s End Function,子过程实现求部分级数和 Sub jishu2(s#, x!, eps#) Dim n%, t# n = 1:

49、 s = 0: t = 1 Do While (Abs(t) = eps) s = s + t t = t * x / n n = n + 1 Loop End Sub,f1 = jishu1(2, 0.000001) 调用函数过程 Call jishu2(f2, 2, 0.000001) 调用子过程 或 jishu2 f2,2,0.00001,.,152,程序运行流程: Private Sub Command1_Click() Dim f1#, f2# f1 = jishu1(2, 0.000001) Call jishu2(f2, 2, 0.000001) Print f1=; f1, f2 = ; f2 End Sub,.,153,三、 参数传递 在调用过程时,一般主调过程与被调过程之间有数据传递,即主调过程的实参传递给被调过程的形参(虚参),完成实参与形参的结

温馨提示

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

评论

0/150

提交评论