




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Visual Basic 程序设计 (6.0版),皖南医学院计算机教研室 毕迎春,1,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 三、启动: 方法:1、双击桌面VB快
3、捷方式。 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,工具箱提供一组工具,用于设计时在窗体中放置控件生成应用程序的用户接口。系统启动后缺省的General工具箱就会出现在屏幕左边,上面有常用“部件”,6. 工具箱
7、(ToolBox)窗口,18,定制工具箱 添加选项卡: 对添加的选项卡加控件的方法: (1)在已有的选项卡中拖动所需控件 (2) 激活选项卡-”工程”-“部件”,19,窗体布局窗口显示在屏幕右下角。用户可使用表示屏幕的小图像来布置应用程序中各窗体的位置。这个窗口在多窗体应用程序中很有用,因为这可以指定每个窗体相对于主窗体的位置。,7窗体布局窗口,20,立即窗口:中断模式中调试应用程序。 对象浏览窗口:可查看工程定义的模块或过程,也可查看对象库、类型库、类、方法、属性及可在过程中使用的常数。,21,第二章 简单的VB程序设计,2.1 程序设计方法的发展 2.2 对象的概念 2.3 建立简单的应用
8、程序 2.4窗体和基本控件 2.5工程的管理及环境设置 2.6制作成安装盘 2.7使用帮助系统,22,2.1 程序设计方法的发展,1.初期的程序设计 高运行效率、少占用内存为目标 2.结构化程序设计 程序的可读性、可维护性为目标 程序=算法+数据结构 的面向过程的程序设计 3.面向对象的程序设计(OOP) 降低程序的复杂性、提高软件的开法效率和改善工作界面为目标 程序=对象+消息 的面向对象的程序设计,23,结构化的分解突出过程(How to do?) 面向对象的分解突出真实世界和抽象的对象(What to do?) 目前常用的面向对象语言有:Visual Basic、Visual C+、Vi
9、sual FoxPro等 优点 a.符合人们的思维方法 b.易于软件的维护和功能的增减 c.能用继承的方式减短程序开发时间 d.与可视化技术结合,改善了工作界面,24,2.2 对象的概念,一、对象和类 1、类:是创建对象实例的模板,是同种对象的集合与抽象, 包含了创建对象的属性描述和行为特征的定义. 2、对象: 是类的一个实例,继承了类的属性、方法。 Vb中常用的对象有:窗体、控件等。 3、控件:以图标的形式放在工具箱中。VB中的控件分为三类: 内部控件(标准控件):如工具箱上的控件,20个 ActiveX控件:“工程/部件”命令加载 可插入对象:Windows应用程序的对象,如Excel工作
10、表。 二、对象的建立和编辑: 1、对象的建立:两种方法 2、对象的选定:单选、多选 3、复制或删除对象 4、对象的命名,25,三、对象的三要素:属性、事件和方法 (1)属性 对象的性质,即用来描述和反映对象特征的参数。 (2)事件 对象的响应称为事件,它发生在用户与应用程序交互时。如单击控件、鼠标移动、键盘按下等。 事件过程 指附在该对象上的用户编写的程序代码,是事件的处理程序。 事件驱动过程 是图形用户界面的本质,由用户控制而代码作出响应。,26,VB程序执行步骤:,启动应用程序,装载和显示窗体 窗体(或窗体上的控件)等待事件的发生 事件发生时,执行对应的事件过程 重复执行(2)和(3),直
11、到遇到“END”结束语句结束程序的运行或单击“结束”按钮强制停止程序的运行,27,(3)方法 对象的动作,即将一些通用的过程编写好并封装起来,作为方法供用户直接调用。,对象方法的调用格式: 对象.方法参数名表 例如:在窗体上显示一行文字。 Form1.Print ”欢迎使用Visual Basic6.0”,28,2.3 建立简单的应用程序,设计一个VB应用程序的通用步骤: 1.设计用户界面的对象 2.设置对象的属性 3.编写对象事件代码 4.保存文件 5.程序运行和调试 (解释执行: 或 “运行|启动” 或 按F5) 6.建立可执行文件。 (编译运行:“文件”|“生成exe”),29,例2.1
12、 编写一个对输入字符进行转换的程序,转换规则为:将其中的大写字母转换成小写字母,小写字母转换成大写字母,空格不转换,其余转换成“*”。 要求每输入一个字符,马上就进行判断和转换。,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 To Z aa = Chr$(KeyAscii + 32) Case Case Else aa = * End Sel
13、ect Text2.Text = Text2.Text 为0 去除刚输入的字符. LostFocus : 当控件失去焦点时发生. GotFocus : 当控件获得焦点时发生. 3.常用方法 对象.SetFocus: 是把光标移到指定的文本框对象中(即设置焦点)。 4.文本框的应用 数据过滤 例2.7 要求输入合法的数字数据。当输入结束时(按Tab键),对于输入正确的数据,显示正确信息;对输入的非数字数据,则响铃(Beep)、显示错误信息、清除文本框中的内容,并使焦点重新回到文本框。 Text2_ LostFocus 当输入结束按Tab键时,该事件激发 IsNumeric(Text2) : 判断
14、是否输入非数字数据. Text2.SetFocus : 使焦点重新回到文本框 书上例子:P32,42,五.命令按钮CommandButton 功能:接受用户输入的命令。 输入命令可以有三种方式: 鼠标单击 Tab键焦点到该按钮 快捷键 1. 属性:P33 Caption: 命令按钮显示的内容,可设置快捷键,例 String(6 - i, ); _ Spc(6); String(i, ) Next i End Sub,48,2、cls方法,形式:对象.cls (如:picture.cls) 作用:用于清除运行时在窗体或图形框中显示的文本或图形。 注意: (1)cls方法只清除运行时在窗体或图形框
15、中显示的文本或图形,不清除窗体在设计时的文本或图形。 (2)cls方法使用后, currentx和currenty属性被设置为0。,49,3、move方法,形式: 对象.move 左边距离,上边距离,宽度,高度 作用:用于移动窗体或控件,并可改变其大小。 对象:可以是窗体及除时钟、菜单外的所有控件,省略对象为窗体。如果对象是窗体,则“左边距离”和“上边距离”以屏幕左边界和上边界为准,否则以窗体的左边界和上边界为准,宽度和高度表示可改变其大小。,50,例2-10,Private Sub Form_Load() Image1.Top = 0 Image1.Left = 0 Image1.Pictu
16、re = 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) 二、创建、打开和保存工程:“文件”菜单,53,三.添加、删除和保存文件:可利用“文件”和“工程”菜单 1、窗体名和窗体文件名概念 窗体名:窗体的
18、Name属性, 在代码中用来引用该窗体,同一 工程不能有相同的窗体名; 窗体文件名:窗体存放在磁盘上的文件名,该文件包含了该窗体的所有控件属性和代码,同一文件夹不能有相同的文件名。 2、在工程中添加现存的窗体时,只是对该窗体文件的引用纳入工程。因此,如果更改窗体并保存它,会影响包含此窗体文件的任何工程。 3、在工程中删除窗体时,仅将此窗体从工程里删除掉,但是窗体文件仍存在于磁盘上。但是,如果在VB之外删除一个窗体文件,VB不能更新此工程文件,当打开此工程时,将显示一个文件丢失的错误信息。,54,四、环境设置,“工具”选项” 1.”编辑器”选项卡 2、“通用”选项卡,4、对窗体文件改名方法: 在
19、“工程资源管理器”中-右击窗体文件-“Form另存为” 5、保存窗体文件:若只想保存窗体文件而不保存工程文件,可直接在“工程资源管理器”中选定,然后执行“文件”菜单中的相应选项。,55,2.6 制作成安装盘,2.6.1 使用打包和展开向导 打包:把工程中用到的各种类型的文件(包括工程自身的文件、必要的系统文件和安装主文件)进行打包压缩后,存放到特定的目录下。 展开:把打包的文件展开到用户可以携带的用来安装的软盘、光盘等介质。 管理脚本:记录打包或展开过程中的设置,便于以后做同样的操作。 系统的压缩文件以.cab扩展名保存。 2.6.2 检测安装程序,56,第三章 VB语言基础,3.1 编码基础
20、 3.2 数据类型 3.3 常量与变量 3.4 运算符和表达式 3.5 基本语句 3.6 数组 3.7 过程 3.8 常用算法举例 3.9 程序调试,57,3.1 编码基础,一、书写要求: 1.VB代码不区分字母的大小写 系统关键字自动转换每个单词的首字母大写; 用户自定义行以第一次为准 2.语句书写自由 一行可书写几个语句,之间用冒号分隔;一行最多255个字符; 一条语句可分若干行书写,用续行符 (空格+下划线)连接 3.注释有利于程序的维护和调试 Rem 或 单撇号“” 以及“编辑”工具栏的“设置注释块”; VB中注释语句会自动变为绿色 4.保留行号与标号 5.其他注意事项:保留字与变量之
21、间至少有一空格; 字母“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、日期(Date)数据类型 按8字节浮点数来存储。 日期范围:公元100年1月1日9999年12月31日 时间范围:0:00:00 23:59:59 表示方法:一般日期形式前后加来表示
22、另一种是以数字序列表示日期和时间 (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#等均为合法日期格式。,61,(2)数字序列表示法 数字序列是双精度的浮点数,由VB自动解释。序号的整数部分表示日期,小数部分表示时间。 在VB中,基准日期为公元1899年12月30日,这一天的整数
23、部分为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表示1901-1-1 1:12:00 -367.05表示1898-12-28 1:12:00,62,3、逻辑(布尔型)数据型:Boolean 当逻辑型转换成整型数据时:true (-1)
24、false(0) 当其他类型数据转换成逻辑数据时: 非0数转换为true, 0转换为false 4、字符串型:String “” 5、对象数据类型:Object 作为32位(4个字节)地址来存储,63,6、变体类型:Variant 是所有未定义的变量的缺省数据类型,它可以包括标准数据类型,还包含四个特殊的数据: empty(空)表示未指定确定的数据 null(无效)表示数据不合法 Error(出错)指出过程中出现了一个错误条件 Nothing(无指向)表示数据还没有指向一个具体对象 Vartype:检测变体型变量中保存的数值类型 如: dim t Vartype(t) 或Vartype(667
25、),64,二、自定义类型 让用户自己定义的数据类型,由若干个标准数据类型组成。是一组不同类型变量的集合。相当于C语言中的结构类型;Pascal中的记录类型。 1.自定义类型的定义 形式如下: Type 自定义类型名 元素名(下标) As 类型名 元素名(下标) As 类型名 End Type 其中:元素名:表示自定义类型中的一个成员 下标:表示数组 类型名:为标准类型,65,例如,以下定义了一个有关学生信息的自定义类型: Type StudType No As Integer 学号 Name As String * 20 姓名 Sex As String * 1 性别 Mark(1 To 4)
26、 As Single 4门课程成绩 Total As Single 总分 End Type 注意: (1)自定义类型一般在标准模块(.BAS)中定义,默认是Public;在窗体必须是Private。 (2)自定义类型中的元素类型可以是字符串,但应是定长字符串。 (3)不要将自定义类型名和该类型的变量名混淆,前者表示了如同Integer、Single等的类型名,后者VB根据变量的类型分配所需的内存空间,存贮数据。 (4)自定义类型一般和数组结合使用,简化程序的编写。,66,2自定义类型变量的声明和使用 (1) 声明形式: Dim 变量名 As 自定义类型名 例 Dim Student As St
27、udType (2) 引用: 形式:变量名.元素名 例 表示Student变量中的姓名,第4门课程的成绩,则表示如下: Student.Name,Student.Mark(4) (3) 赋值: 如:Student.Name=“王刚” Student.Mark(4)=98,67,3.3 常量与变量,一.常量和变量的命名规则 常量:在程序运行中其值不可以改变。 变量:在程序运行中其存储的值可以改变。 命名规则: 1.以字母或汉字开头,后可跟汉字、字母、数字或下划线组 合,长度小于等于255个字符; 2.不能使用VB中的关键字; 3.VB中不区分变量名的大小写. 4.为了增加程序的可读性,可在变量名
28、前加一个缩写的前缀来表明该变量的数据类型。如: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 ParamArray Print Private Property Public Resume Seek Set Static Step String Then Time To True WithEvents,6
29、9,二. 常量 (一)直接常量 有数值常量(整数、长整数、定点数和浮点数)、字符串常量、布尔常量、日期常量 (二)符号常量 1. 系统提供的常量 系统定义常量位于对象库中,可通过“对象浏览器”查看. 例: vbNormal 、 vbMinimized、vbMaximized、vbblue等 form1.windowsstate=vbmaximized 将窗口极大化 form1.windowsstate=2 与上面的语句等价的,70,2. 用户声明常量 形式: Const 常量名 AS 类型 = 表达式 省略 AS 类型 ,常量的类型由表达式值的类型决定,也可在常量后加类型符。 表达式:可以是数
30、值常数、字符串常数以及由运算符组成的表达式。对于数值常数除了可用十进制表示外,还可以使用十六进制数(数值前加 若密码错,显示有关信息,选择“重试”按钮,清除原内容再输入,选择“取消”按钮,停止运行。 分析: 帐号6位,MaxLength为6 , LostFocus判断数字IsNumeric函数 密码PassWordChar为“*”,MsgBox函数设置密码错对话框.,92,3.5.3 选 择 结 构 1. IfThen语句(单分支结构) If Then 语句块 End If 或 If Then ,例:已知两个数x和y,比较它们的大小,使得x大于y. If xy Then t=x x=y y=t
31、 End If 或 If xy Then t=x: x=y: y=t,93,2. IfThenElse语句(双分支结构) (1) If Then Else End If (2)If Then Else 计算分段函数,单分支结构实现: if x=0 then y=cos(x)x3+3*x If x0 Then y=sin(x)+sqr (x*x+1),双分支结构实现: If x0 Then y=sin(x)+sqr (x*x+1) Else y=cos(x)x3+3*x End If,94,3. IfThenElseIf语句(多分支结构) 形式: If Then ElseIf Then Else
32、 语句块 n+1 End If,95,例 已知变量strC中存放了一个字符,判断该字符是字母字符、数字字符还是其他字符。 用多分支结构实现: If Ucase(strC) =A And Ucase (strC) =0 And strC =9 Then Print strC + 是数字字符 Else Print strC + 其他字符 End If,不管有几个分支,依次判断,当某条件满足,执行相应的语句,其余分支不再执行;若条件都不满足,且有Else子句,则执行该语句块,否则什么也不执行。. ElseIf不能写成 Else If。,96,例 已知百分制成绩mark,显示对应的五级制成绩 哪些正确
33、,哪些错误?,正确:方法一、二错误:方法三,97,4If语句的嵌套 If语句的嵌套是指If或Else后面的语句块中又包含If语句。 形式如下: If Then If Then End If End If,例 已知x,y,z三个数,使得xyz 用一个IF语句和一个嵌套的IF语句实现,If xy Then t=x: x=y: y=t If yz Then t=y: y=z: z=t If xy Then t=x: x=y: y=t End If End If,If语句的嵌套注意事项:书写锯齿型;End If与它前面最近的if配对。,98,:与的类型必须相同,可以是下面四种形式之一: 表达式 例:
34、A 一组枚举表达式(用逗号分隔) 2,4,6,8 表达式1 To 表达式2 60 To 100 Is 关系运算符表达式 Is 60,5. Select Case语句(情况语句) 形式: Select Case 变量或表达式 Case 表达式列表1 语句块1 Case 表达式列表2 语句块2 Case Else 语句块n+1 End Select,变量:只能含有一个 表达式:数值型或字符串,99,注意: 关键字Is定义条件时,只能是简单的条件,不能用逻辑运算符将两个或多个简单的条件组合在一起。 例如“Case Is20 and Is20”是正确的。,100,例 变量strC中存放了一个字符,判断
35、该字符类型。 用多分支结构实现: If Ucase(strC) =A And Ucase (strC) =0 And strC =9 Then Print strC + 是数字字符 Else Print strC + 其他字符 End If 用Select Case语句实现: Select Case strC Case a To z,A To Z Print strC + 是字母字符 Case 0 To 9 Print strC + 是数字字符 Case Else Print strC + 其他字符 End Select,101,例:已知坐标点(x,y),判断其落在哪个象限。,哪个能实现,哪个
36、不能实现?,方法一 If x 0 And y 0 Then Print 在第一象限 ElseIf x 0 Then Print 在第二象限 ElseIf x 0 And y 0 Then Print 在第四象限 End If,方法二 Select Case x,y Case x 0 And y 0 Print 在第一象限 Case x 0 Print 在第二象限 Case x 0 And y 0 Print 在第四象限 End Select,方法二代码错误: 1. Select Case 后不能出现多个变量; 2. Case后不能出现变量及有关运算符。,比较:Select Case结构清晰,但
37、使用受到限制,因此,凡是对多个变量的条件判断只能用If的多分支结构来实现。,102,例由计算机来当一年级的算术老师,要求给出一系列的110的操作数和运算符,学生输入该题的答案,计算机根据学生的答案判断正确与否,当结束时给出成绩。 分析:产生110操作数,可通过Int(10 * Rnd + 1) 实现 设置的控件名 Label1 Text1 Picture1,Command1,103,6.条件函数 (1)IIf函数形式是: IIf(表达式,当表达式为True时的值,当表达式为False时的值) 例如,求x,y中大的数,放入Tmax变量中,语句如下: Tmax=IIf(x y,x,y) (2) S
38、witch函数形式是: 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之间,函数返回Null值。,105,1在选择结构中缺少配对的结束语句 对多行式的If块语句中,应有配对的 E
39、nd If语句结束。 2. 多边选择ElseIf关键字的书写和条件表达式的表示 ElseIf 不要写成Else If; 多个条件表达式次序问题 3. Select Case语句的使用 Select Case 后不能出现多个变量;Case子句后不能出现变量,本节常见错误,106,3.5.4 循 环 结 构 1. For循环语句 (一般用于循环次数已知) 形式 For 循环变量初值 to 终值 Step 步长 语句块 Exit For 语句块 Next 循环变量,循环变量, =,终值,语句块,Exit For,语句块,循环变量加步长,T,F,循环变量得初值,循环体,例 计算1100的奇数和 Dim
40、 i %, s% 等价于: Dim i %, s% s=0 s=0 : i = 1 For i = 1 To 100 step 2 re: If i = 100 Then s = s + i s = s + i Next i i = i +2 GoTo re End If,107,0 初值终值 =0 死循环,循环次数,要注意: 出了循环,循环控制变量值的问题。 例程序段: For i=2 To 13 Step 3 循环执行次数 Print i , 输出 i的值分别为: Next i 2 5 8 11 Print : Print “I=“, i 出了循环输出为: I=14 在循环体内对循环控制变
41、量可多次引用;但最好不要对其赋值,否则影响原来的循环控制规律。,步长,108,例 改变循环控制变量对循环的影响。 Private Sub Command1_Click() j = 0 For i = 1 To 20 Step 2 i = i + 3 j = j + 1 Print 第; j; 次循环i=; i Next i Print 退出循环后i=; i End Sub 正常情况:i=1,3,5,7,9,11,13,15,17,19 现在:i=4,9,14,19,例 输出可打印的ASCII码字符与它的编码值。,109,2. DoLoop循环语句(用于控制循环次数未知) 形式1: Do Whi
42、le|Until 语句块 Exit Do 语句块 Loop,形式2: Do 语句块 Exit Do 语句块 Loop While|Until ,110,例 我国有13亿人口,按人口年增长0.8%计算,多少年后我国人口超过26亿。 分析:解此问题两种方法,可根据公式:26=13*(1+0.008)n 直接利用标准对数函数求得;也可利用循环求得,程序如下: Private Sub Command1_Click() x = 13 n = 0 Do While x 26 x = x * 1.008 n = n + 1 Loop Print n, x End Sub,111,例用辗转相除法求两自然数m,
43、n的最大公约数和最小公倍数。 分析:求最大公约数的算法思想: (1)对于已知两数m,n,使得mn; (2) m除以n得余数r; (3)若r=0,则n为最大公约数结束;否则执行(4); (4)mn,nr,再重复执行(2)。 例 求 m=14 ,n=6 的最大公约数. If m 0) m=n n=r r= m mod n Loop Print 最大公约数=, n,m n r 14 6 2 6 2 0,辗转相减法 m=m-n mn n=n-m nm m、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
44、 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 While i=100 s=s+i i=i+1 Wend,113,4.循环的嵌套 一个循环体内又包含了一个完整的循环结构称为循环的嵌套. 例打印九九乘法表. Fo
45、r i = 1 To 9 For j = 1 To 9 se = i Next j Picture1.Print Next i,思考:打印上三角或下三角程序如何改动?,上三角 For j=i To 9,下三角 For j=1 To i,114,For ii =1 To 10 For jj=1 To 20 Next ii Next jj,For ii =1 To 10 For ii=1 To 20 Next ii Next ii,For ii =1 To 10 For jj=1 To 20 Next jj Next ii,For ii =1 To 10 Next ii For ii =1 To
46、10 Next ii,对于循环的嵌套,要注意以下事项: 内循环变量与外循环变量不能同名; 外循环必须完全包含内循环,不能交叉; 不能从循环体外转向循环体内,反之则可以。 正确错误,115,本节常见错误 1. 不循环或死循环的问题 主要是循环条件、循环初值、循环终值、循环步长的设置有问题。 2. 循环结构中缺少配对的结束语句 For 少 配对的Next 3. 循环嵌套时,内外循环交叉 4. 累加、连乘时,存放累加、连乘结果的变量赋初值问题 (1)一重循环 在一重循环中,存放累加、连乘结果的变量初值设置应在循环语句前。 (2)多重循环:这要视具体问题分别对待。如:1!+2!+3!+n! 5.大数相
47、乘产生“溢出”问题,116,3.5.5 其他辅助控制语句 1. GoTo 语句 形式: GoTo 标号|行号 作用:无条件地转移到标号或行号指定的那行语句. 标号是一个字符序列,行号是一个数字序列. 2.开关语句: On-GoTo语句 3.Exit语句 多种形式: Exit For、Exit Do、Exit Sub、Exit Function等。 作用:退出某种控制结构的执行。 4. End语句 多种形式: End、 End If、 End Select、 End With、 End Type、 End Sub、 End Function、 作用:End结束一个程序的运行;其余表示某个结构的结
48、束,与对应的结构语句配对出现。,117,6.With 语句 形式如下: With 对象 语句块 End With 作用:对某个对象执行一系列的操作,而不用重复指出对象的名称。 With Label1 .Height = 2000 .Width = 2000 .FontSize=22 .Caption = MyLabel End With,Label1.Height = 2000 Label1.Width = 2000 Label1.FontSize=22 Label1.Caption = MyLabel,等价,118,3.6 数组,1、引例 例: 若要求100个学生的平均成绩,然后统计高于平均
49、分的人数。 aver = 0 For i = 1 To 100 mark = InputBox(输入 + i + 位学生的成绩) aver = aver + mark Next i aver = aver / 100 但若要统计高于平均分的人数,则无法实现。 已有知识解决方法:再重复输入成绩,带来两个问题: (1)输入数据的工作量成倍增加; (2)若本次输入的成绩与上次不同,则统计的结果不正确。 解决此问题的根本方法,引入数组,始终保持输入的数据,一次输入,多次使用。,119,引入数组 dim mark(1 to 100) as integer dim i as integer, n%,ave
50、r! n=0 for i=1 to 100 aver= aver + mark(i) next i aver = aver / 100 for i=1 to 100 if mark(i)aver then n=n+1 next i,120,2、数组的概念 数组不是一种数据类型,而是一组相同类型的变量的集合。在程序中使用数组的最大好处是用一个数组名代表逻辑上相关的一批数据,用下标表示该数组中的各个元素,和循环语句结合使用,使得程序书写简洁。 数组元素:数组中的某一个数据项。数组元素的使用同简单变量的使用。 数组:必须先声明后使用。 两类数组: 静态(定长)数组、动态(可变长)数组。,121,3、
51、静态数组及声明 静态数组:在声明时已确定了数组元素个数。 形式: Dim 数组名(下标1,下标2) As 类型 维数:几个下标为几维数组,最多60维。 下标: 下界 To 上界 下界最小为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,注意:
52、 (1)下界缺省为0,也可再重新定义数组的缺省下界为1。 Option Base 1,123,注意: (2)在静态数组声明时的下标只能是常数,而在其他地方出现的数组元素的下标可以是变量,要加以区分。如: n =Inputbox(“输入n”) Dim x(n) As Single 错误的声明,下标是变量 x(n)=100 数组元素的下标可以是变量,但要防止下标越界的错误发生 (3)在数组声明中的下标说明了数组的整体,即每维的大小;而在程序其他地方出现的下标表示数组中的一个元素。两者写法形式相同,但意义不同。 例如:Dim x(10) As Integer 声明了x数组有11个元素 x(10)=1
53、00 对x(10)这个数组元素赋值,124,4、动态数组及声明 动态数组是指在声明数组时未给出数组的大小(省略括号中的下标),当要使用它时,随时用ReDim语句重新指出数组大小。形式如下: 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来改变数
54、组的大小和维数。 使用ReDim语句会使原来数组中的值丢失,可以在ReDim语句后加Preserve参数来保留数组中的数据。使用Preserve只能改变最后一维的大小,前面几维大小不能改变。 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)
55、= i * j Print a(; i; ,; j; )=; a(i, j); Next j Next i End Sub,127,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 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
56、(i, j); Next j Next i End Sub,128,5、 数组的基本操作 应掌握的基本操作有:数组初始化、数组输入、输出、求数组中最大(最小)元素及下标、求和、平均值、排序和查找等。 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。 数组的下界为零,上界由Array函数括号内的参数个数决定,也可通过函数Ubound获得上界,Lbound获得下界。 赋值号左边的数组只能声明为Variant的可调数组或简单变量。 赋值号两边的数据类型必须一致。,B数组的赋值 数组直接对数组的赋值: Dim a() As Variant, b()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 业主拍照物业合同标准文本
- 保证货款合同标准文本
- 关于轮胎购销合同样本
- pvc地胶合同样本
- 关于建厂房合同样本
- 公寓商圈出租合同样本
- 公司合同标准文本样板
- 公司合同样本工程
- 2011塔吊租赁合同标准文本
- 企业间借款合同标准文本
- 【多元化经营战略下的企业财务绩效探析:以海尔集团为例(论文)12000字】
- 红楼梦阅读单选题100道及答案解析
- 2024-2030年中国转子发动机行业市场深度调研及发展趋势与投资前景研究报告
- 金属非金属地下矿山安全生产标准化定级评分标准(2023版)
- 律师行业律师事务所管理系统开发方案
- 宽带业务合同协议书
- 钢结构及旧楼加固工程投标方案(技术方案)
- 实习护生社会焦虑情况调查量表
- CJ/T 120-2016 给水涂塑复合钢管
- SL-T+712-2021河湖生态环境需水计算规范
- 2024届合肥高三二模化学试卷含答案
评论
0/150
提交评论