第二章 VB程序设计基础 第1节 Visual Basic 概述 1.1 Visual Basic简介 1.2 面向对象的程序设计概念 1.2 面向对象的程序设计概念 1.3 事件驱动的程序设计原理 1.4 VB的开发环境 1.5 VB开发应用程序的一般步骤 1.6 VB开发环境的基本操作 Visual Basic 程序设计
1.1 Visual Basic简介 1.什么是VB? Visual Basic “Visual”指的是开发图形用户界面 (GUI) 的方法 ,即可视化。 “Basic”指的是 BASIC (Beginners All-Purpose Symbolic Instruction Code) 语言,一种在计算 技术发展历史上应用得最为广泛的语言。 有关基本概念: OLE:对象的链接和嵌入 OOP:面向对象的程序设计方法 Visual Basic 程序设计
1.1 Visual Basic简介 3. Visual Basic特性 用于开发Windows环境下应用程序的工具。 学习版(标准版):VB的基础版本,适用于初学者。 专业版:主要针对计算机专业开发人员。 企业版:是完备的版本。 3. Visual Basic特性 用于开发Windows环境下应用程序的工具。 VB6.0是32位操作系统下应用程序的开发工具 。 采用面向对象的程序设计方法。 采用事件驱动方式的程序设计原理。 Visual Basic 程序设计
1.2 面向对象的程序设计概念 对象: 指窗体、控件等具有自己的属性、方法和事件的实体。 属性: 对象的静态特征。 方法: 对象所能执行的动作。 事件: 对象的所能识别的动作。 Visual Basic 程序设计
1.3 事件驱动的程序设计原理 设计出窗口界面 设置界面中各种对象的属性 为对象规定在被某个“事件”激活时执行的“过程 ” 构成完整的应用程序 Visual Basic 程序设计
1.4 VB的集成开发环境 启动 Visual Basic Visual Basic 集成开发环境 工具栏 控件箱 工程资源管理器窗口:列出当前工程中的窗体和模块。 属性窗口:列出对选定窗体和控件的属性设置值。 对象浏览器:列出工程中有效的对象 窗体设计器 代码编辑器窗口 窗体布局窗口 进入VB环境 Visual Basic 程序设计
工程资源管理器窗口 属性窗口 窗体 代码显示按钮 窗体显示按钮 工 具 箱 窗体布置 VB 6.0集成开发环境
1.5 VB开发应用程序的步骤 1.创建程序的用户界面; 2.设置界面上各个对象的属性; 3.编写对象响应事件的程序代码; 4.保存工程; 5.测试和调试应用程序,检查并排除程序中的错误; 6.创建可执行程序。 Visual Basic 程序设计
第2节 创建用户界面 2.1 创建窗体 2.2 常用控件 2.3 制作菜单 2.4 示例 Visual Basic 程序设计
2.1 创建窗体 窗体的属性定义了它的外观; 窗体的方法定义了它的行为; 窗体所能响应的事件定义了它与用户的交互。 2.1 创建窗体 窗体(Form)是为了设计VB应用程序界面或对话框而提供的窗口,是包容用户界面或对话框所需的各种控件的“容器”。 1. 窗体的属性、方法与事件 窗体的属性定义了它的外观; 窗体的方法定义了它的行为; 窗体所能响应的事件定义了它与用户的交互。 VB为窗体规定了众多的属性、方法与事件。 Visual Basic 程序设计
2.1 创建窗体 1. 窗体的属性、方法与事件 窗体和控件一样,都是VB的对象。 2.1 创建窗体 1. 窗体的属性、方法与事件 窗体和控件一样,都是VB的对象。 在创建新工程时,VB会自动加入一个缺省属性的空白窗体。用户可以改变这些属性值从而改变窗体的外观和行为 下面介绍窗体常用的属性、方法与事件。 Visual Basic 程序设计
2.1 创建窗体 (1) 窗体的常用属性 a.Name:窗体名称。 窗体名称在程序代码中作为窗体对象的标识名。 窗体名称可以缺省,名称缺省为Form1,Form2等。窗体名称也可以自定义,如NewForm, Frma等。 窗体名称自定义的命名规则:必须以字母或汉字开头,可以包含数字和下划线,但不能包含空格或标点符号。 Visual Basic 程序设计
2.1 创建窗体 (1) 窗体的常用属性 b.Caption:窗体标题。 窗体标题是出现在窗体标题栏的文本内容。 2.1 创建窗体 (1) 窗体的常用属性 b.Caption:窗体标题。 窗体标题是出现在窗体标题栏的文本内容。 窗体标题默认与窗体名称相同。 标题也可以自定义,只要是字符即可,不受其他约束。 注意: 窗体名称与窗体标题是有区别的。 Visual Basic 程序设计
2.1 创建窗体 (1) 窗体的常用属性 颜色值用一个长整数表示。点击属性栏右边,会弹出一个颜色设置组合框。 2.1 创建窗体 (1) 窗体的常用属性 c. BackColor与ForeColor:窗体的前景色与背景色。 颜色值用一个长整数表示。点击属性栏右边,会弹出一个颜色设置组合框。 d. BorderStyle:边框样式 用数值来表明窗体边框的风格。 Visual Basic 程序设计
2.1 创建窗体 (1) 窗体的常用属性 e. Font:正文字体。 设置窗体上所显示的正文的字体、字号和字形等。 2.1 创建窗体 (1) 窗体的常用属性 e. Font:正文字体。 设置窗体上所显示的正文的字体、字号和字形等。 点击字体属性栏右边的对话框按钮 ,弹出“字体对话框” (如图)。默认的字体为“宋体、常规、小五号”。 说明:Font是窗体的一种属性,同时它又被看作一个对象 Font本身还具有Name,Size,Bold,Italic等属性。 Visual Basic 程序设计
2.1 创建窗体 (1) 窗体的常用属性 f. Icon:图标 设置位于窗体左上角控制盒上的图标 当窗体最小化为任务栏上的按钮时,也使用此图标。 g. Left、Top、Height、Width:窗体的位置与大小。 Left、Top为窗体左上角的坐标,Height、Width为窗体的高度和宽度,默认单位为特维(Twip,1厘米=567特维) h. Enabled:活动属性 决定窗体能否被访问,当此属性设置为“False”时,窗口将不能被访问;设置为“True”时,窗口可以被访问。默认值为“True”。 Visual Basic 程序设计
2.1 创建窗体 (2) 窗体的方法 窗体可调用多个方法。常用的方法有: Hide:隐藏窗体。(如图) Move:把窗体移到某个位置。 2.1 创建窗体 (2) 窗体的方法 窗体可调用多个方法。常用的方法有: Hide:隐藏窗体。(如图) Move:把窗体移到某个位置。 Print:显示文本或数据。 PrintForm :打印窗体。 Refresh:强制重新绘制一个窗体。 Show:显示窗体。 Visual Basic 程序设计
2.1 创建窗体 (3) 窗体的事件 窗体可以响应许多事件。常用的事件有: Click:单击。 Dbclick:双击。 Load:装载。 2.1 创建窗体 (3) 窗体的事件 窗体可以响应许多事件。常用的事件有: Click:单击。 Dbclick:双击。 Load:装载。 Resize:调整尺寸。 Activate:激活。 Deactivate:失去激活。 Visual Basic 程序设计
2.1 创建窗体 2.定制窗体属性 方法一: 在设计态,通过“属性”窗口为其设定各种属性值 方法二: 在程序代码中改变属性值(运行时改变) 2.1 创建窗体 2.定制窗体属性 方法一: 在设计态,通过“属性”窗口为其设定各种属性值 方法二: 在程序代码中改变属性值(运行时改变) 格式:Object.Property = Expression 即: 对象名.属性名 = 表达式(属性值) 提示: 如果属性值是字符串,则用西文引号括起来。 Visual Basic 程序设计
2.1 创建窗体 3.引用窗体的方法 VB中的所谓“方法”可使“对象”执行一个动作或任务。 2.1 创建窗体 3.引用窗体的方法 VB中的所谓“方法”可使“对象”执行一个动作或任务。 格式:Object.Method 或 Object.Method [Arg1,Arg2···] 即: 对象名.方法名 或 对象名.方法名 [参数1,参数···] 例:a.显示窗体NewForm,在程序中加入代码: NewForm.Show [Style] 表示以“Style”方式显示“NewForm”窗体. b.隐藏窗体NewForm ,在程序中加入代码: NewForm.Hide 表示隐藏 “NewForm”窗体 Visual Basic 程序设计
2.1 创建窗体 4.窗体的装载、卸载、End语句 (1) 装载语句 语句格式:Load Object (2) 卸载语句 2.1 创建窗体 4.窗体的装载、卸载、End语句 (1) 装载语句 语句格式:Load Object (2) 卸载语句 语句格式:Unload Object 或:Unload Me (3) End语句 语句格式:End Visual Basic 程序设计
2.1 创建窗体 注意: Unload和End的区别。 2.1 创建窗体 注意: Unload和End的区别。 ①装载语句的作用:把窗体(或其他对象)装入内存但不显示它。 说明:因VB在执行时会自动装载窗体,引发Load事件,故一般不用此语句。 ②卸载语句作用:把对象从内存卸载,使该对象的属性恢复为设计时的初始值,并引发对象的Unload事件。 Me 是系统保留字,代表当前窗体,因此Unload Me表示将当前窗体从内存中卸载,如果当前窗体是程序唯一的窗体,则将终止程序的运行。 ③ End语句作用:终止应用程序的执行,并从内存卸载所有窗体。 Visual Basic 程序设计
2.1 创建窗体 5.Print方法 格式:[Object].Print p1 <s> p2 <s> ··· 2.1 创建窗体 5.Print方法 格式:[Object].Print p1 <s> p2 <s> ··· 作用:将文本输出到指定对象上。如果缺省对象,则将内容 输出到当前窗体上。 Print方法中, p1,p2···是输出项。 s 是输出项之间的分隔符。 逗号分隔符“,”将每一输出项输出到标准分区,每个分区长度为14; 分号分隔符“;”则将每一输出项紧接着前面一项输出。 Visual Basic 程序设计
2.1 创建窗体 5.Print方法 例:在程序代码中增加下列内容: Print “新北京!”;“新奥运!” 2.1 创建窗体 5.Print方法 例:在程序代码中增加下列内容: Print “新北京!”;“新奥运!” Print “新北京!”,“新奥运!” 运行程序则在窗体上输出如图: Visual Basic 程序设计
2.2 常用控件 控件是包含在窗体中的对象。 控件同窗体一样,也是辅助用户快速完成界面设计的有效工具。 控件和窗体组成与用户交互的可视化部件。 VB通过控件箱(工具箱)提供了组成Windows应用程序窗口或对话框的诸如文本框、列表框、命令按钮等控件。 VB6.0标准版的控件如图: Visual Basic 程序设计
2.2 常用控件 Visual Basic 程序设计 Pointer指针 Picture图片框 Label标签 TextBox文本框 Frame框架 CommandButton命令按钮 CheckBox复选框 OptionButton单选框 ComboBox组合框 ListBox列表框 H.ScrollBar水平滚动条 V.ScrollBar垂直滚动条 Timer计时器 DriveListBox驱动器列表框 DirListBox文件夹列表框 FileListBox文件列表框 Shape图形 Line线条 Image图像 Date数据控件 OLE控件 Visual Basic 程序设计
2.2 常用控件 1.文本框(TextBox) 用于接收用户在框内输入的信息,或显示由程序提供的信息。 (1)属性 Name :名称,命名规则同窗体名。默认值为Text1,Text2等。 Text :文本属性,文本属性的值就是用户在文本框中输入的内容。可通过程序获取该属性值。 PasswordChar :密码属性,让用户在文本框内输入口令,指定显示在文本框内的字符。缺省值为空字符串,此时用户可看到输入的字符。如设置属性值为“*“,则无论输入任何字符都显示星号。 Visual Basic 程序设计
2.2 常用控件 MaxLength:最大长度。缺省值0,可接受任意长度字符串。 MultiLine:多行属性。默认为“False“,只能输入一行文本。若为“True“,则可输入多行文本。当无水平滚动条时,多行文本会使一个长字符串自动换行。 Alignment:对齐属性。0:左对齐,1:右对齐,2:文本居中。 文本框还有BorderStyle、Enabled、Font、ForeColor等属性,其意义同窗体中的属性完全相同。 Visual Basic 程序设计
2.2 常用控件 1.文本框(TextBox) (2)方法 SetFocus:设置焦点;使光标指向指定的文本框。 Refresh :刷新。 (3)事件 Change:改变。当文本框内的文本发生改变时触发该事件。 KeyPress:按下字符键。按下键盘上的字符键时触发该事件。 Visual Basic 程序设计
2.2 常用控件 2.标签(label) 标签常用作其他控件的说明。 (1) 属性 Font,Name,Caption,Alignment属性:同窗体和文本框 AutoSize属性: 自动缩放,即大小自适应属性。默认为“False“,若为“True“,根据文本大小自动调整标签宽度。 (2) 方法 (3) 事件 Visual Basic 程序设计
2.2 常用控件 3.命令按钮(CommandButton) (1)属性 Caption:标题, 用来在窗体内添加命令按钮。运行时用户单击此按钮,则执行一段代码。 (1)属性 Caption:标题, 通常显示按钮的功能。在标题文本中的某个英文字符前面插入“&”,该字符即成为命令按钮的访问键 BackColor 背景颜色; style样式 有Graphical和 Standard两个选项,当选择Graphical时允许显示图形。 Picture 图形属性: 允许为其表面添加图片 Visual Basic 程序设计
2.2 常用控件 3.命令按钮(CommandButton) (1)属性 Enabled 激活属性; Font 字体属性; Index 控件数组标识号属性 Name 名称属性; Visible 可见性属性; Visual Basic 程序设计
2.2 常用控件 (2)方法 SetFocus:设置焦点 设置为焦点的按钮将有一个边框,直接按回车键可执行该按钮所代表的动作。 (3)事件 3.命令按钮(CommandButton) (2)方法 SetFocus:设置焦点 设置为焦点的按钮将有一个边框,直接按回车键可执行该按钮所代表的动作。 (3)事件 Click:单击 对于命令按钮来说,单击事件是它最常用、最基本的事件。 Visual Basic 程序设计
2.2 常用控件 4.列表框(ListBox) 列出可供用户选择的项目列表。运行时,可用鼠标或箭头键选中其中的一项或多项,选中的项被加亮显示。 (1)属性 List:列表。字符串数组,含有列表框中的全部列表项目。[对象名].List(0)指向第一项,依次类推。 Text:文本。指列表项中被选中的项。其值与List(ListIndex)相同。 ListCount:列表框中所含项的总数。 Visual Basic 程序设计
2.2 常用控件 4.列表框(ListBox) ListIndex:选中项的索引号。选中第一项值为0,依次类推。无选中项时值为-1。 Columns:列数。指定列表框中的各项是在一列中垂直滚动,还是在多列中水平滚动。0表示在一列垂直滚动,正整数表示多列的列数。 Sorted:排序。取值为“True“ 时,各项按ASCII码排序 Selected:选中。批示某个项的选中状态。如Select(0)=True表示第一项被选中。 Visual Basic 程序设计
2.2 常用控件 (2)方法 AddItem:添加列表项。 格式:[对象名].AddItem <列表项文本>[,插入位置序号] 举例:List1.AddItem “中国香港” 注意:若不指定插入位置,则插入到列表尾。 RemoveItem:删除列表项。 格式:[对象名].RemoveItem 删除项序号 Clear:删除列表所有项。 (3)事件 Click(单击) Dbclick(双击)事件(但很少用) Visual Basic 程序设计
2.2 常用控件 5.组合框(ComboBox) (1) 属性 Visual Basic 程序设计 组合框是文本框和列表框的组合方式,它包含一个文本框和一个列表框。用户可在文本框部分输入选项,也可用列表框部分选择选项。 (1) 属性 Text:文本属性 文本属性的值为用户从列表框中选定的文本内容或直接输入 文本框中的内容。 Style:外观属性。组合框有三种外观: Style=1 Style=2 Style=0(默认值) Visual Basic 程序设计
2.2 常用控件 Style=1 Style=2 Style=0(默认值) Style=0(默认值)组合框为下拉式组合框。可以直接在文本框内输入你所需要的选项。单击组合框内的箭头,即可打开一个选项列表。当你从列表中选择一个选项后,该选项即出现在组合框中的文本框内,同时关闭选项列表。 Style=1时,为文本框和列表框直接结合的简单组合框 注意:创建简单组合框时,应调整该组合框的高度,使列表框能够显示出来。 Style=2时为没有文本框的下拉式列表框,单击列表框右侧的按钮,文本框才会显示出来,此时文本框只能在列表中选择,不允许输入文本。 Visual Basic 程序设计
2.2 常用控件 5.组合框(ComboBox) (2) 方法:同列表框。 (3) 事件: Style=0时,响应Click,Change事件。 Style=1时,响应DbClick,Change事件。 Style=2时,响应Click事件。 Visual Basic 程序设计
2.2 常用控件 6.图像控件(Image)和图片框(PictureBox) 图像控件用来显示一个来自硬盘上的位图文件(.bmp)或图标文件(.ico),并可随意调整图形的大小。 图片框不仅可以显示图形和文本,还可创建动画图形。 方法(picture1.print) (2) 事件 Visual Basic 程序设计
2.2 常用控件 选项按钮即单选按钮,在一组互斥的选项中,任一时刻,只有一个单选按钮处于被选中状态。 7.选项按钮(OptionButtom)、复选框(CheckBox)和框架控件(Frame) a.选项按钮与复选框 (1)属性 选项按钮Value:选中与否标记。 选项按钮即单选按钮,在一组互斥的选项中,任一时刻,只有一个单选按钮处于被选中状态。 Value = True 表示选中;默认为 False表示未选中。 复选框Value:选中与否标记 复选框用于从一组选项中同时选中多个选项。 默认为 0 表示未选中; Value=1表示选中; Value=2表示不能访问。 (2) 方法 (3) 事件 Click:单击 Visual Basic 程序设计
2.2 常用控件 7.选项按钮(OptionButtom)、复选框(CheckBox)和框架控件(Frame) b. 框架控件: 用作其他控件的容器。 c.结合框架和选项按钮组(或复选框组) 在窗体上可以创建选项组。 在窗体上创建选项组的步骤: (1)在窗体上创建框架,设置框架的Caption属性,Caption出现在框架的边框上。 (2)在框架内创建选项按钮组或复选框组。此时如移动框架,创建好的选项按钮组或复选框组将跟随框架作为一个整体一起移动。 Visual Basic 程序设计
2.2 常用控件 8. 计时器(Timer)控件 在程序运行时,计时器控件每隔一定的时间间隔就会产生一次Timer事件。计时器通常用于背景进程中,在用户界面上是不可见的,但它可以控制过程程序以某一固定的时间间隔运行。 (1)属性: Enabled 激活属性 Index 控件数组标识号属性 Name 名称属性 Visual Basic 程序设计
2.2 常用控件 8. 计时器(Timer)控件 Interval 时间间隔属性 (2)事件 计时器控件所特有的事件是Timer,Timer事件预定的时间间隔存储于计时器控件的Interval属性中。计时器定时检查系统时钟,当经过了规定的时间间隔,就会自动产生Timer事件。因此,我们可以在Timer事件过程中处理需要定时处理的事务; Visual Basic 程序设计
2.3 制作菜单 菜单概述 菜单:鼠标单击菜单条上菜单标题时,出现的命令列表。 菜单项:菜单命令。 菜单条:位于窗体的标题条下。 菜单:鼠标单击菜单条上菜单标题时,出现的命令列表。 菜单项:菜单命令。 子菜单:菜单项的分支菜单。凡带有子菜单的菜单项都有 一个箭头。 弹出式菜单:在Windows中,单击鼠标右键出现的与当前操作有关的菜单。 Visual Basic 程序设计
2.3 制作菜单 2. 使用菜单编辑器 启动菜单编辑器 启动菜单编辑器的方法:先建立或选定一个窗体,然后启动“工具”菜单中的“菜单编辑器”命令或单击VB窗口工具栏上的“菜单编辑器”按钮,出现如图所示对话框。 Visual Basic 程序设计
菜单编辑器分为上下两个部分,上半部分用来设置某一菜单项的属性,下半部分是一个大的只读文本框,用来显示各个菜单项的标题和对应的快捷键。 2.3 制作菜单 (2) 菜单编辑器简介 菜单编辑器分为上下两个部分,上半部分用来设置某一菜单项的属性,下半部分是一个大的只读文本框,用来显示各个菜单项的标题和对应的快捷键。 Visual Basic 程序设计
2.3 制作菜单 标题框:输入出现在菜单条或菜单中的菜单标题和菜单命令。用“&”设键盘访问。 (3)菜单编辑器中的控件功能如下: 标题框:输入出现在菜单条或菜单中的菜单标题和菜单命令。用“&”设键盘访问。 名称框:用来输入菜单项的名称。以便在程序代码中引用该命令。 索引框:当使用控件数组时,用来输入数组元素的下标。 快捷键框:带有下拉列表框的组合框,用来为菜单项指定一个快捷键。 四个复选项: “复选” :指定当选中某一菜单项时,是否在该菜单项的左边作一个““标记。 “有效”:指定是否允许某菜单项响应鼠标事件。 “可见”:指定某一菜单项是否可见。 “菜单列表框”:显示菜单项的分级列表,以缩进方式将子菜单项的分级位置显示出来。 左右箭头按钮:改变菜单命令的级别,创建子菜单。单击“左箭头“左移一个等级,单击“右箭头“右移一个等级。VB允许最多四个等级。 上下箭头按钮:用于移动菜单项在菜单中的位置。 下一个按钮:设置下一个菜单项。 插入和删除按钮:插入、删除菜单项。
通常位于窗口底部,主要显示某些与程序工作状态有关的信息。如:字母的大小写工作状态、插入与改写状态、日期和时间等。 2.3 制作菜单 3.建立菜单的步骤 (1) 设计菜单的结构 设置菜单项及各菜单项的子菜单。 (2) 用菜单编辑器建立各菜单项。 (3) 为菜单项编写事件过程代码。 4. 状态条和工具栏 (1) 状态条 通常位于窗口底部,主要显示某些与程序工作状态有关的信息。如:字母的大小写工作状态、插入与改写状态、日期和时间等。 (2) 工具栏 工具栏由若干个与菜单中的命令项相对应的命令按钮组成,每个按钮上标有与按钮功能有关的图像。 5. 使用帮助 使用帮助菜单或F1键 Visual Basic 程序设计
Private Sub cmdCheck_Click() ' invoke a Click event in the menu 示例 主界面上的按钮事件过程: ………. Private Sub cmdCheck_Click() ' invoke a Click event in the menu mnuCheck_Click End Sub ……… 菜单命令的事件过程: ………. Private Sub mnuCheck_Click() ' display the form frmCheck.Show End Sub Visual Basic 程序设计
示例 Visual Basic 程序设计 复选框示例窗体中的主要事件过程: Private Sub chkBold_Click() If chkBold.Value = 1 Then ' If checked. txtDisplay.FontBold = True Else ' If not checked. txtDisplay.FontBold = False End If End Sub Private Sub chkItalic_Click() If chkItalic.Value = 1 Then ' If checked. txtDisplay.FontItalic = True txtDisplay.FontItalic = False Visual Basic 程序设计
第3节 VB语言基础 3.1代码的书写规则 3.2 VB的数据类型 3.3运算符与表达式 3.4 VB的公共函数 Visual Basic 程序设计
一条语句作用:向系统提供必要的信息或规定系统执行某些操作。 3.1 代码的书写规则 1.语句 语句是组成VB程序的最基本成分。 (1) 语句的一般形式: <语句定义符>[语句体] 例如:Dim a as Integer a=20 规定语句的功能; 有些语句没有该部分 提供具体说明或具体操作 一条语句作用:向系统提供必要的信息或规定系统执行某些操作。 (2) 书写注意 1) 代码不区分字母的大小写,如:Ab 与AB等效; 2) 系统对用户程序代码进行自动转换; 对于关键字,首字母被转换成大写,其余转换成小写 对于用户定义的变量、过程名,以首次定义为准进行转换 Visual Basic 程序设计
3.1 代码的书写规则 注释内容从注释符开始直到该行结束 例如: ⑴ Form1.Print "学好VB" _ "要多学多练" 3.1 代码的书写规则 2.语句书写规则 (1) 续行:(空格+下划线字符“_”) (2) 同一行上书写多条语句,语句间用冒号“:”分隔 (3) 一行允许多达1023个字符 (4) 注释行 以 Rem开头,注释整行 ; 以注释符“ ‘”引导 注释内容从注释符开始直到该行结束 例如: ⑴ Form1.Print "学好VB" _ "要多学多练" ⑵ Form1.Hide: Form2.Show ⑶ Form1.Hide '将Form1隐藏 Visual Basic 程序设计
3.2 VB的数据类型 数据类型 变量/常量命名规则 变量 常量 常量 Visual Basic 程序设计
3.2.1 数据类型 1.数据类型 Integer; Long ; Single; Double; Currency; Byte 3.2.1 数据类型 1.数据类型 Integer; Long ; Single; Double; Currency; Byte 整 长整 单精度 双精度 货币型 字节型 ⑴ Integer:整型(占2字节) 表数范围:-215-1~ 215-1,即-32768~ 32767 表示形式: ±n 或±n% ⑵ Long :长整型(占4字节) 表数范围:-231-1~ 231-1 表示形式:±n& 例如:-120,120 &,120, 120%, 43210,-12345678 & ⑶ Byte :字节型(占1字节) 表数范围:0~255(无符号) Visual Basic 程序设计
3.2.1 数据类型 1.数据类型(续) Integer; Long ; Single; Double; Currency; Byte 3.2.1 数据类型 1.数据类型(续) Integer; Long ; Single; Double; Currency; Byte 整 长整 单精度 双精度 货币型 字节型 =(-1)×102 ⑷ Single:单精度(4字节)--- 7个有效位 表示形式:带小数点数 用指数(E)表示 数字后面加“!” 例: -1E2 ,1.2E2 120.0 ,120! +12345678. ⑸ Double:双精度(8字节) --- 15个有效位 表示形式:用指数(D)表示 数字后面加“# ” 例: -1D2 ,1.2D2 120# ⑹ Currency :货币型(8字节) ---19个有效位 表示形式:数字后面加“@ ” 例:120@ Visual Basic 程序设计
3.2.1 数据类型 1.数值数据类型 4.Date型:---占用8个字节 5.Variant型:万能型 3.2.1 数据类型 1.数值数据类型 Integer; Long ; Single; Double; Currency; Byte 2.Boolean型: 用于逻辑判断,只有两个值 True (-1) False ( 0) 3.String型: 表示形式:用双引号括起来或变量名后加“$”,如:“Basic”、a$= “1234” 4.Date型:---占用8个字节 表示形式:用#号括起来 如:#2-14-04 6:10:00# 5.Variant型:万能型 是一种通用的、可变的数据类型 隐含变量的类型 6.Object型: 用于保存任何对象的引用 Visual Basic 程序设计
3.2.2 变量/常量的命名规则 举例: re, data, re.er, 8re,工资,Integer intSum 规则: 3.2.2 变量/常量的命名规则 规则: ⑴ 变量或常量名必须以字母或汉字开头; ⑵ 由字母、汉字、数字、下划线组成; ⑶ 长度不超过255个字符; ⑷ 在VB中变量名的字母不区分大小写; ⑸ 不要与关键字同名(Dim,string等) ⑹ 为了提高程序的可读性,在变量名前可加约定的前缀 Int、lng、sng、dbl、bln、cur、dt、str、vnt、byt 举例: re, data, re.er, 8re,工资,Integer intSum Visual Basic 程序设计
3.2.3 变量 Private Sub Command1_Click() Dim a As Integer, b As Long 3.2.3 变量 Private Sub Command1_Click() Dim a As Integer, b As Long Dim c As Single, d As Double a = 3276 b = 327699999 Print a, b c = 100 / 3 d = 200/ 3 Print c, d End Sub 变量:在程序的运行过程中其值可以变化的量 声明变量的目的:根据声明的类型决定系统为它分配的存储单元。 1.显式声明变量: [Public|Private|Dim|Static] 变量名 [AS 数据类型] 数值型 字符型 布尔型 对象型 万能型 例1: Dim A Dim B As Long Dim C As Single Dim D As Integer 等同于: Dim A, B As Long , C As Single , D As Integer 或 : Dim A, B& , C! , D % 变长字符变量:约20亿个字符 定长字符变量:约65400个字符 Visual Basic 程序设计
3.2.3 变量 1.显式声明变量: Private Sub Command1_Click() 3.2.3 变量 1.显式声明变量: Private Sub Command1_Click() Dim a As Boolean, b As Boolean Dim f As Date a = True ' 注意与a = “True” 的区别 b = False Print a, b f = #3/1/2006 9:12:02 # Print f End Sub [Public|Private|Dim|Static] 变量名 [AS 数据类型] 例2: Dim A As String Dim B As String * 5 A=“Visual Basic” B=“Visual Basic” Print A , B 注意: (1)在VB中一个汉字与一个西文字符视为一样,算一个字 (2)在窗体和类模块中,不能用Public定义定长字符串变量 Visual Basic 程序设计
3.2.3 变量 1.显式声明变量 2.变量作用域 变量:在程序的运行过程中其值可以变化的量 3.2.3 变量 变量:在程序的运行过程中其值可以变化的量 声明变量的目的:根据声明的类型决定分配的存储单元。 1.显式声明变量 [Public|Private|Dim|Static] 变量名 [AS 数据类型] 2.变量作用域 Dim与Static的区别: 区别 作用范围 定义方法 定义位置 局部变量 当前过程 Dim|Static 在过程内 窗体/模块变量 当前窗体或模块中的所有过程 Private|Dim 在窗体或模块的声明部分 全局变量 工程内的所有过程 Public 例:Private sub command1_click() Dim i as integer Static j as integer i=i+1 j=j+1 Print i,j end sub 连续3次单击command1 ,分析输出结果 Visual Basic 程序设计
3.2.3 变量 3. 隐式声明变量: 未声明直接使用的变量均默认为Variant型 4. Option Explicit语句 3.2.3 变量 3. 隐式声明变量: 是指使用的变量未用声明语句进行声明而直接使用 未声明直接使用的变量均默认为Variant型 也可在变量名后加一个规定数据类型的说明符加以说明 4. Option Explicit语句 例:Dim Str1 As String Str1 = "计算机程序设计" Str2 = "计算机程序设计" Str3%= 123 Print Str1, Str2, Str3 (1)作用:强制显式声明变量。 即使用任何一个变量必须“先声明,后使用” (2)增加Option Explicit语句的方法: a.在代码编辑器的通用/声明部分输入:Option Explicit b.“工具|选项”-->“编辑器”-->选“要求变量声明”项 Visual Basic 程序设计
3.2.4 常 量 1.直接常量: 常数值。其数值直接反映了类型 常数和运算符组成 2.声明符号常数: 3.2.4 常 量 常量:在程序运行期间值不能改变的量 注意:● 在程序中,常量比变量运行速度快 ● 常量只能出现在赋值号的右边 1.直接常量: 常数值。其数值直接反映了类型 常数和运算符组成 2.声明符号常数: 格式:[Public|Private]Const 常量名 [As 类型]=表达式 例如:+120,120 ,1.2E2, "程序设计" 在一行中可放置多个常数说明,可用逗号分隔 3.系统提供常量: 应用程序和控件提供的系统定义的常量 例:vbRed代表“红色”等 例: Private Const Pi As Single = 3.14159, str$ = "VB" Visual Basic 程序设计
3.3 运算符和表达式 运算符 表达式 常量 Visual Basic 程序设计
3.3.1 运算符 1.算术运算符 2.字符串运算符 3.比较运算符 4.逻辑运算符 . 3.3.1 运算符 A B Not A A And B A Or B A Xor B T T F T T F T F F F T T F T T F T T F F T F F F AND: 逻辑与,两边的值均为真时,结果为真;否则为假 OR : 逻辑或,两边的值至少有一个真,结果为真;否则为假 NOT: 逻辑反.只有一个参数 XOR: 逻辑异或,两边的值不同时,结果为真;否则为假 否则为真 1.算术运算符 包括:+ - 、MOD、\(整除)、/ * 、-(负号)、^(乘方) 写出逻辑表达式: 选拔优秀生的条件:三门功课英语(C1)、数学(C2)、计算机(C3),总分至少265分,或C2、C3分别大于90分且C1不低于80分。 表达式: (-5) ^ 2 + 5 Mod 3 2.字符串运算符 包括:+ 、 & 表达式:“123”+“3” 3.比较运算符 包括:> , < ,>= ,<= ,<> , =,Like,Is C1+C2+C3 >=265 OR (C1>=80 and C2>90 and C3>90) 表达式: 15+23<4*8 4.逻辑运算符 包括:And 、Or、Not、Xor 表达式: . Visual Basic 程序设计
3.3.1 运算符 比较运算符 Visual Basic 程序设计 Like 运算符 用来比较两个字符串。 语法 3.3.1 运算符 比较运算符 Like 运算符 用来比较两个字符串。 语法 result = string Like pattern Like 运算符的语法具有以下几个部分: 部分 描述 Result 必需的;任何数值变量。 String 必需的;任何字符串表达式。 Pattern 必需的;任何字符串表达式,模式匹配约定。 说明:如果 string 与 pattern 匹配,则 result 为 True;如果不匹配,则 result 为 False。 例如,搜索所有以“MAC”为开头的名字, 指定搜索条件 LIKE ‘Mac%’。 例如,查找象“Jan”、“Jen”和“Jon”这类名字, 指定搜索条件 LIKE ‘J_n’。 例如,在数据库中,可以使用下面的 LIKE 子句去搜索日期在 1994 年中的所有行: LIKE '%1994%' Visual Basic 程序设计
3.3.1 运算符 比较运算符 Visual Basic 程序设计 Is运算符 用来比较两个对象 。 语法 3.3.1 运算符 比较运算符 Is运算符 用来比较两个对象 。 语法 result = object1 Is object2 Object:任意对象名称。 举例:使用 Is 运算符来比较两个对象引用。 Dim MyObject, YourObject, ThisObject, OtherObject, ThatObject, MyCheck Set YourObject = MyObject ‘ 指定对象引用。 Set ThisObject = MyObject Set ThatObject = OtherObject MyCheck = YourObject Is ThisObject ‘ 返回 True。 MyCheck = ThatObject Is ThisObject ‘ 返回 False。 ’ 假设 MyObject <> OtherObject MyCheck = MyObject Is ThatObject ' 返回 False。 Visual Basic 程序设计
3.3.1 运算符 优先级的比较 1.几大类比较 算术、 连接、比较、逻辑 2.算术运算符 ^ ,- ,(* /),\ ,MOD,(+ -) 3.3.1 运算符 优先级的比较 1.几大类比较 优先级: 高---------------->低 算术、 连接、比较、逻辑 2.算术运算符 ^ ,- ,(* /),\ ,MOD,(+ -) 3.比较运算符 同一级 4.逻辑运算符 Not、 And 、Or、Xor Visual Basic 程序设计
3.3.1 运算符 1.算术运算符 2.字符串运算符 3.比较运算符 包括:^(乘方)、-(负号)、/ * 、\(整除) MOD、+ - 3.3.1 运算符 1.算术运算符 包括:^(乘方)、-(负号)、/ * 、\(整除) MOD、+ - 表达式: (-5) ^ 2 + 5 Mod 3 2.字符串运算符 A B A+B A& B “123” “3” “1233” “1233” “123” 3 126 “1233” 123 3 126 “1233” “123a” 3 出错 “123a3” 包括:+ 、 & 表达式:“123”+“3” 3.比较运算符 包括:> , < ,>= ,<= ,<> , =,Like,Is 表达式: 15+23 < 4*8 注意:● 若操作数为字符型,按ASCII码比较 ● 汉字字符>西文字符 运算结果是逻辑值=False Visual Basic 程序设计
3.3.2 表达式 1.表达式组成 2.书写规则 3.同一表达式中的数据的类型转换 包含:变量、常量、运算符、函数和小括号 3.3.2 表达式 1.表达式组成 包含:变量、常量、运算符、函数和小括号 表达式结果: 与数据和运算符有关 2.书写规则 乘号不能省略 括号必须成对出现 一个表达式在同一行上书写,没有高低、大小区分 3.同一表达式中的数据的类型转换 操作数的数据类型应该符合要求,不同的数据应该转换成同一类型。 在算术运算中,如果操作数的数据精度不同,VB规定运算结果采用精度较高的数据类型。 Visual Basic 程序设计
3.4 常用内部函数 1.字符串函数 Len(“VB程序设计”) --> 6 求字串长度: Len(C) 3.4 常用内部函数 1.字符串函数 Len(“VB程序设计”) --> 6 LenB (“VB程序设计”) --> 12 求字串长度: Len(C) LenB(C) 取子串:Left(C,N) Right(C,N) Mid(C,n1[,n2]) 查找子串:InStr([N1],C1,C2) 去掉首或尾空格: LTrim (C)、RTrim(C)、Trim(C) Left(“计算机基础”,2) -->计算 Right (“计算机基础”,2)-->基础 Mid (“计算机基础”,2,4)-->算机基础 InStr(4,”abdbcdef”,”d”) --> 6 Str=” AB CDE ” LTrim (str) --> “AB CDE “; RTrim(str) -->” AB CDE”; Trim(str) --> “AB CDE” String(6,”A”) ‘AAAAAA 生成字串:string(n,”字符”) 生成空格串:space(n) Space(10) Visual Basic 程序设计
3.4 常用内部函数 2.日期函数 获取系统当前日期:Date 获取系统当前时间: Time 获取系统当前日期和时间: Now 3.4 常用内部函数 2.日期函数 获取系统当前日期:Date 如:Print date 获取系统当前时间: Time Print Time$ Print Now 获取系统当前日期和时间: Now 获取指定日期年、月、日的值:Year(D)、Month(D)、Day(D) Print Year(Now),Month(Now),Day(Now) Visual Basic 程序设计
3.4 常用内部函数 3.格式输出函数 如:print Format(Now, "yyyy-mmmm-dddd") 3.4 常用内部函数 3.格式输出函数 Format(表达式[,格式字符串]) 数值格式符: 0: 显示一数字,若此位置没有数字则补0 #: 显示一数字,若此位置没有数字则不显示 , - + $ ( ) :原样打出 日期时间格式符: 如:Print Format(12.345, "+000.00") 如:print Format(Now, "yyyy-mmmm-dddd") 字符串格式符:> 和 < Print Format(12000.345, "#,###.##") 如:Format("ABcd", ">")、 Format("ABcd", "<") 注意:Format函数仅用于控制数据的外部输出格式,不会改变数据在计算机内部的存储形式 Visual Basic 程序设计
总 结 数据类型及其表示符 变量的命名规则 变量的声明 常量的声明 运算符的种类与优先级 表达式的书写 常用函数 总 结 数据类型及其表示符 数值(整、长整、单精、双精、货币、字节) 逻辑、日期、字符、万能、对象 变量的命名规则 变量的声明 [Public|Private|Dim|Static] 变量名 [AS 类型] 显示声明与隐式声明 常量的声明 运算符的种类与优先级 表达式的书写 常用函数 [Public|Private] Const 常量名 [AS 类型]=表达式 算术运算符> 字符运算符 >关系运算符>逻辑运算符 Visual Basic 程序设计
第4节 算法基础及VB基本语句 4.1 顺序结构 4.2 分支结构 4.3 循环结构 Visual Basic 程序设计
4.1 顺序结构 1.赋值语句 顺序结构:各语句按照出现的先后次序依次执行 赋值语句 包括 输入/输出 Print方法 4.1 顺序结构 顺序结构:各语句按照出现的先后次序依次执行 包括 赋值语句 输入/输出 Print方法 系统提供的交互函数或过程 1.赋值语句 ⑴ 给变量赋值 如: A=“VB程序设计” Text1.Text=A B=Text2.Text 格式:变量名=表达式 如: Dim v As Integer Dim book As String*8 Dim sum As Single v=26 v=v+1 book=“VB程序设计” sum=v*123.4+56.7 ⑵ 设置或获取对象的属性 设置属性值:[对象名.]属性=表达式 获取属性值:变量名=对象名.属性 Visual Basic 程序设计
4.1 顺序结构 1.赋值语句 顺序结构:各语句按照出现的先后次序依次执行 注意: (1) 右边表达式的值强制转 4.1 顺序结构 顺序结构:各语句按照出现的先后次序依次执行 1.赋值语句 注意: (1) 右边表达式的值强制转 换成左边变量的精度 例: Dim X As Single Dim Y As Single Dim Sum As Single X=26 Sin(X)=X+Y 5=Sqr(X)+Y X+Y=126 Sum=1 Sum=Sum+1 (2) 左边的函数只能返回变量或对象 (3) 赋值号左侧只能出现变量 (4) 一条赋值语句不能同时给 多个变量赋值 Visual Basic 程序设计
4.1 顺序结构 1.赋值语句 顺序结构:各语句按照出现的先后次序依次执行 ⑴ 给变量赋值 ⑵ 设置或获取对象的属性 InputBox函数 4.1 顺序结构 顺序结构:各语句按照出现的先后次序依次执行 1.赋值语句 ⑴ 给变量赋值 ⑵ 设置或获取对象的属性 ⑶ 与用户交互函数和过程 InputBox函数 格式:InputBox ( 提示 [,标题] [, 默认值] [, X] [, Y] ) MsgBox函数 格式:MsgBox ( 提示内容 [, 按钮设置] [, 标题] ) Visual Basic 程序设计
InputBox函数---输入框 打开一个对话框,等待用户输入内容。 单击确定,返回输入值(字符型数据) 例:设置一个输入框: 作用: 打开一个对话框,等待用户输入内容。 单击确定,返回输入值(字符型数据) 格式: 变量名 = InputBox ( 提示[,标题][,默认值][,X][,Y]) 例:设置一个输入框: 提示用户输入查询学号。 显示的坐标位置 提示: 若提示内容中需要换行显示:在换行处加chr(13)和chr(10) 各项参数位置必须一一对应 Visual Basic 程序设计
Msgbox函数--信息框 1.语法 2.MsgBox 函数的常用参数的说明 变量 = MsgBox(提示内容[,按钮][,标题]) 提示内容:必要。字符表达式,即显示在对话框中的信息 按 钮: 可选。整型表达式,缺省值为 0 指定信息框中按钮数目、类型、图标类型, 缺省按钮等 <= 1024 个字符, 如果文字超过一行,可用Chr(13) + Chr(10) 换行 标 题: 可选。在对话框标题栏中显示的内容。 省略此项,则将应用程序名放在标题栏中 Visual Basic 程序设计
设置参数=按钮设置值 + 图标设置值+缺省的活动按钮 Msgbox参数的设置 1.按钮的类型和数目的设置 设置参数=按钮设置值 + 图标设置值+缺省的活动按钮 值 按钮设置 对应按钮名称 0 vbOKOnly---------------确定 1 vbOKCancel-------------确定、取消 2 vbAbortRetryIgnore---终止、重试、忽略 3 vbYesNoCancel---------是、否、取消 4 vbYesNo------------------是、否 5 vbRetryCancel----------重试、取消 设置参数值= 1 或 vbOKCancel Visual Basic 程序设计
Msgbox参数的设置 2.图标的样式 设置参数=按钮设置值 + 图标设置值+缺省的活动按钮 对应值 符号常量 出现的图标 16 vbCritical -------------------- 32 vbQuestion -------------------- 48 vbExclamation -------------- 64 vbInformation --------------- 设置参数值= 1+64 或 vbOKCancel+ vbInformation Visual Basic 程序设计
Msgbox参数的设置 3.说明哪一个是缺省按钮 设置参数=按钮设置值 + 图标设置值+缺省的活动按钮 对应值 符号常量 缺省的活动按钮 0 VbDefaultButton1 256 VbDefaultButton2 512 VbDefaultButton3 设置参数值= 2+64+512=578 或 vbOKCancel+ vbInformation+VbDefaultButton3 Visual Basic 程序设计
Msgbox的返回值: 4.Msgbox的函数返回值 用于确定用户选择对话框的哪一个按钮,以作出不同的响应。 符号常量 返回值 对应按钮 vbOK 1--------------------确认 vbCancel 2--------------------取消 vbAbort 3 -------------------终止(A) vbRetry 4--------------------重试(R) vbIgnore 5--------------------忽略(I) vbYes 6 ------------------- 是(Y) vbNo 7 ------------------- 否(N) Visual Basic 程序设计
Private Sub Command1_Click() Dim i As Integer If Text2.Text = "123456" And Text1.Text = "npu" Then Form3.Visible = True Form1.Visible = False Else: i = MsgBox("密码错!" + Chr(13) + Chr(10) + "是否重新输入?", vbOKOnly + vbCritical, "提示信息") Text2.Text = "" Form1.Visible = True End If End Sub Private Sub Command2_Click() End Private Sub Form_Load() Text1.Text = "npu“ Text2.Text = “” Text2.PasswordChar = “*" 进入
4.2 选择结构 1.If条件语句 2.Select Case 结构 3.条件函数 先对条件测试,根据测试的结果选择执行不同的分支 4.2 选择结构 先对条件测试,根据测试的结果选择执行不同的分支 1.If条件语句 2.Select Case 结构 3.条件函数 Visual Basic 程序设计 Visual Basic 程序设计
4.2.1 If条件语句 1. If…Then 结构 条件 格式: If 条件 Then (A组语句) EndIf …… A组语句 例: If score >= 60 Then Print score Print "祝贺你考试通过! " End If Print “继续努力!” Visual Basic 程序设计
4.2.1 If条件语句 2. If…Then…Else 结构 格式:If 条件 Then A组语句 Else B组语句 END If 例: If score >= 60 Then Print “祝贺你考试通过!” Else Print “考试未通过.” End If Print "继续努力!" Visual Basic 程序设计
4.2.1 If条件语句 . 3. If…Then…ElseIf 结构 格式:If 条件1 Then (A组语句) ElseIf 条件2 Then (B组语句) ElseIf 条件3 Then (C组语句) …… Else (n组语句) End If Mark=val(Text1.Text) If Mark >= 90 Then Print "优" ElseIf Mark >= 60 Then Print “通过" Else Print “未通过" End If 多分支语句中,有多个分支同时满足,只执行第一 个与之匹配的语句块。
4.2.1 If条件语句 . 4. If语句的嵌套 If语句的嵌套是指if 或else后面的语句块中又包含If语句。语句形式: If <表达式1> Then If <表达式11> Then …… End If …… End If 注意: (1) 对于嵌套结构,为了增强程序的可读性,应该采用缩进 形式书写; (2) If语句形式若不在一行上书写,必须与End If配对 多个If嵌套,End If与它最接近的If 配对。 Visual Basic 程序设计
4.2.2 Select Case语句 Select Case 结构 返回包含于字符串内的数字, 字符串中是一个适当数值类型 说明: 测试表达式的值应是数字或字符型 测试项的取值必须与测试表达式 的值类型相同,常用形式为: 具体取值,用逗号隔开 如:1,5,9 连续的范围:界1 TO 界2 如:12 To 20 满足某个条件:Is运算符 如:Is>10 三种形式可以组合使用 Select Case 测试表达式 Case 测试项1 A组语句 Case 测试项2 B组语句 …… Case Else n组语句 End Select Mark=Val(Text1.Text) K=mark\10 Select case k case 10,9 Print "优" case 8 to 6 Print “通过" Case Else Print “未通过" End select 例:输入二级考试成绩,要求显 示对应三级制的评定。 Mark=Val(Text1.Text) Select case Mark case is>=90 Print "优" case 60 to 90 Print “通过" Case Else Print “未通过" End select Visual Basic 程序设计
4.3 循环结构 1. For ...Next 2. Do...Loop 3. 循环嵌套 4.其他辅助控制语句 4.3 循环结构 循环:是在指定的条件下多次重复执行一组语句 1. For ...Next 2. Do...Loop 3. 循环嵌套 4.其他辅助控制语句 Visual Basic 程序设计
4.3.1 For循环 For循环格式: For 循环变量=初值 TO 终值 [Step 步长] 语句块 Exit For 步长省略, 默认为1 For循环格式: For 循环变量=初值 TO 终值 [Step 步长] 语句块 Exit For Next 循环变量 循环变量赋初值 循环体 循环变量<=终值 F 语句块 T 执行过程: (1) 将初值赋循环变量; (2) 判断循环变量值是否小于等于 终止值; (3) 若是,执行循环体(语句块); (4) 然后将变量增加一个步长; (5)重复2~4步骤。 (6)否则,结束循环 Exit For T 语句块 F 循环变量=循环变量+步长 Visual Basic 程序设计
4.3.1 For循环 I<=10 s = s + I For 循环变量=初值 TO 终值 [Step 步长] 语句块 Exit For Next 循环变量 循环体 初值与终值换位 可以吗? 例1:求1+2+3+4+…+10之和. 程序代码: Dim I%, s% For I = 1 To 10 step 1 Next I Print I, s 分析: 重复过程(循环体): s=s+I 初值、终值和增量:1、10、1 For I=10 To 1 Step -1 I<=10 s = s + I 循环体的执行次数是多少 ? Visual Basic 程序设计
4.3.1 For循环 Visual Basic 程序设计 注意: ⑴ 初值、终值、步长必须是数值型, 步长为正,初值<终值;若为负,初值>终值;缺省默认为1 ⑵ 在已知循环次数时使用For循环,循环次数=int((终值-初值)/步长)+1 ⑶ 组成循环体的语句块可以是一条或多条语句 ⑷ Exit For表示当遇到该语句时,退出循环体,执行Next的下一句; ⑸ 在循环体内对循环变量可多次引用,但在循环过程中一般不改变其值, 否则影响结果。 ⑹ 退出循环后,循环变量保持退出时的值 Visual Basic 程序设计
4.3.2 Do…Loop循环 1. Do While <条件> 循环体(条件成立时) Loop 3. Do Until <条件> 循环体(条件不成立时) Loop 2. D0 循环体 Loop While <条件> 4. Do 循环体 Loop Until <条件> Visual Basic 程序设计
4.3.2 Do…Loop循环 1. While循环 ⑴ Do While <循环条件> 循环体 Loop F ⑴ Do While <循环条件> 循环体 Loop 语句块 T Exit Do 执行过程:(先判断,后执行) 先判断循环条件, 若为真:执行循环体,再判断循环条件 否则,跳过循环体,执行Loop之后语句 T 语句块 F Visual Basic 程序设计
4.3.2 Do…Loop循环 1. While循环 ⑵ D0 循环体 Loop While <条件> 语句块 ⑵ D0 循环体 Loop While <条件> Exit Do T 语句块 F 执行过程:(先执行,后判断) 先执行循环体,再判断循环条件, 若为真, 继续执行循环体; 否则,结束循环,执行Loop之后语句 循环条件 T F Visual Basic 程序设计
4.3.2 Do…Loop循环 While循环 ⑵ D0 ⑴ Do While <条件> 循环体 循环体 区别:(1)执行顺序不同 形式一:先判断,后执行循环体; 形式二:先执行循环体,后判断 (2)执行次数不同(特殊情况下) 形式一:条件不满足,循环体可能一次也不执行 形式二:不论条件如何,至少执行一次 Visual Basic 程序设计
4.3.2 Do…Loop循环 2.Until循环 ⑶ Do Until <条件> 循环体 Loop 循环条件 ⑶ Do Until <条件> 循环体 Loop T 语句块 F Exit Do 执行过程:(先判断,后执行) 先判断循环条件: 条件为假: 执行循环体, 然后再判断条件. 条件为真: 跳过循环体, 执行Loop之后语句 T 语句块 F Visual Basic 程序设计
4.3.2 Do…Loop循环 几种形式比较: Do While <条件> 循环体 Loop( While <条件>) Do Until <条件> 循环体 Loop( Until <条件>) 区别: While 条件为真时执行循环体,否则退出循环 Until 条件为假时执行循环体,否则退出循环 关系: while和Until可以相互转换,但循环条件取反 Visual Basic 程序设计
4.3.2 Do…Loop循环 1. While循环 Print s (1)循环体执行了几次? (2)没有I=1会怎样? ⑴ Do While <循环条件> 循环体 Loop Dim I,s As Integer I=1 Do While Loop Print I,s I=11 例1:求1+2+3+4+…+10的和. Dim I, s As Integer For I = 1 To 10 s = s + I Next I Print I, s I<=10 s=s+I I=I+1 Print s Visual Basic 程序设计
4.4.4 其他辅助控制语句 1.GoTo语句 2.Exit语句 作用:无条件的转移到标号或行号指定的语句 语法:GoTo {标号|行号} 4.4.4 其他辅助控制语句 1.GoTo语句 作用:无条件的转移到标号或行号指定的语句 语法:GoTo {标号|行号} 100 If I <= 100 Then s = s + I I = I + 2 GoTo 100 End If 2.Exit语句 满足循环条件的情况下,提前跳出循环体,结束循环。 两种形式:Exit For、Exit Do Visual Basic 程序设计
4.4.4 其他辅助控制语句 If I mod 17 =0 then print I Next I end If Exit for 例题: 4.4.4 其他辅助控制语句 例题: 求出100~200之间的第一个能被17整除的整数。 分析: 重复工作:判断每个数除17的余数是否为0 初值、终值和增量: Dim I As Integer For I=100 to 200 Next I If I mod 17 =0 then print I end If Exit for Visual Basic 程序设计
第5节 数组 5.1 数组的概念 5.2 数组的基本操作 5.3 动态数组 5.4 控件数组 Visual Basic 程序设计
5.1 数组的概念 数组是一组具有相同类型的有序变量的集合。数组可用于存储成组的有序数据。使用数组就是用一个相同的名字引用这一组变量中的数据,这个名字称为数组。 ☆ 数组元素是带有下标的变量,其一般形式为: 数组名(下标1 [,下标2,……]) 如: A(2) B(2+2,1) C(1*2,3,1) A(2) =(A(0) A(1) A(2)) 第1行 B(0,0) B(0,1) B(1,0) B(1,1) B(2,0) B(2,1) B(2,1)= 第2行 第3行 第1列 第2列 Visual Basic 程序设计
数组定义 通常,数组是由一组具有同一类型的变量组成的,在使用一个数 组之前必须对数组进行定义,确定其名称、类型及其规模。 在VB中有两种类型的数组: 固定大小的数组— 在定义时就确定了数组大小,并且在程序运行 过程中,它总是保持同样的大小; 动态数组—在定义时不指明其大小,并且在运行时其大小可以改变 声明固定大小数组应包含的信息: 数组名 数组的维数 数组的大小(体积) 数组的类型 Visual Basic 程序设计
⒈ 一维数组 Const k as integer=10 Dim x(10) As Single 正确 格式: Dim|Private| Public| static 数组名 ([维界定义]) [As 数组类型] 功能:定义一个一维数组,并初始化所有数组元素。 说明: ① 数组的维界定义必须为常数或常量符号,不能是表达式或变量。例如: Const k as integer=10 Dim x(10) As Single 正确 Dim a(k) as long 正确 而 n=10 Dim x(n) As Single 错误,下标不能是变量,只能是常数或常量符号。 Visual Basic 程序设计
③ As 数据类型: 用来说明数组元素的类型,如果缺省,默认为是变体型(Variant)。 ② 下标的形式是:[下界 To ]上界。一般情况下,当[下界 To]缺省时,默认值为0。下界≤上界。维的大小是:上界-下界+1。维界说明如果不是整数,将自动进行四舍五入处理。 ③ As 数据类型: 用来说明数组元素的类型,如果缺省,默认为是变体型(Variant)。 例如: Dim a (12) As Single ˊ声明a数组为单精度型,下标范围为0~12. Dim x (1 To 50 ) As Integer ˊ声明x数组为整型,下标范围为1~50. Dim y (1 To 10 ) ˊ声明y是一个下标范围为1到10的变体型数组. Visual Basic 程序设计
⑥ Dim语句中的维界定义可以是常数、也可以为空。下标为常数时为固定大小的数组,下标为空时则为动态数组。 ④ 数组必须先声明后使用。 ⑤ Dim语句声明数组,该语句把数值数组中的全部数组元素都初始化为0,把变体字符串数组中的数组元素初始化为空字符串,把定长字符串数组的元素初始化为给定长度的空格,把逻辑型数组元素初始化为False, 变体型初始化为Empty。 ⑥ Dim语句中的维界定义可以是常数、也可以为空。下标为常数时为固定大小的数组,下标为空时则为动态数组。 Visual Basic 程序设计
Dim a (4) as Integer ‘声明模块级数组 private sub command1_click( ) … ⑦ 可以使用以下方法声明数组: 建立公用数组,在模块的声明段用 Public 语句声明数组。 建立模块级数组,在模块的声明段用 Private 或Dim语句声明数组。 建立局部数组,在过程中用 Dim或Static 语句声明数组。 例如: Public Counters ( 14 ) As Double ‘定义Counters为15个元素的公用数组 Private Sums ( 1 To 20 ) As Double ‘定义Sums为20个元素的模块级数组 Dim a (4) as Integer ‘声明模块级数组 private sub command1_click( ) … end sub Private sub form_click( ) Dim Subs ( 20 ) As Double ‘定义Subs 为21个元素的局部数组 End sub Visual Basic 程序设计
用static定义静态局部数组 Visual Basic 程序设计 Private sub form_click( ) Static s(3) as Integer End sub 与前述的静态变量类似,静态数组的特点是,在调用过程时,它的各个元素会继承上次退出该过程时对应元素的值。 Visual Basic 程序设计
⒉ 多维数组 格式: 说明:此时的维界定义是对两维下标的定义。每一维的大小为:上界-下界+1;数组的大小为每一维大小的乘积。 Dim|Private| Public| static 数组名 ([维界定义]) [As 数组类型] 说明:此时的维界定义是对两维下标的定义。每一维的大小为:上界-下界+1;数组的大小为每一维大小的乘积。 数组声明中定义的数组名,用来说明数组的名字、维数、大小和类型。数组元素是数组中的一个成员,只能放在可执行语句中。两者虽然形式相同但意义不同。 例如: Dim b(1,2) as Single ‘声明2行3列的二维数组 b(1,2) = 3.2 ‘给数组元素b(1,2)赋值 Dim Arr(3,4)As Integer ‘声明Arr是整型数组,4行5列,共20个元素。 Dim MultiD (3, 1 To 10, 1 To 15) ‘声明MultiD是一个变体数组,大小为 4 * 10* 15 Visual Basic 程序设计
5.2 数组的基本操作 数组是常用的结构类型,数组在定义时用数组名表示该数组的整体,但在具体操作时是针对每个数组元素进行的。 5.2 数组的基本操作 数组是常用的结构类型,数组在定义时用数组名表示该数组的整体,但在具体操作时是针对每个数组元素进行的。 1、数组元素的赋值 利用循环语句对数组元素进行逐一地赋值。 Private sub Command1_click() dim a(5) as integer, I as integer for I=0 to 5 A(I)=Int(100*rnd)+1 print a(I); next I end sub Visual Basic 程序设计
5.2 数组的基本操作 1、数组元素的赋值 利用循环语句对数组元素进行逐一地赋值。 Private sub Command1_click() 5.2 数组的基本操作 1、数组元素的赋值 利用循环语句对数组元素进行逐一地赋值。 Private sub Command1_click() dim a(5) as integer, I as integer for I=0 to 5 a(I)=Inputbox(“给数组元素赋值”,“数组A赋值”) print a(I); next I end sub Visual Basic 程序设计
2.数组元素的输出 数组元素的输出可以使用For循环和Print语句来实现。 例: 输出方阵sc中的下三角元素。 Private Sub Command1_Click() Dim sc(4, 4) As Integer For i = 0 To 4 For j = 0 To i sc(i, j) = i * 5 + j Print sc(i, j); " "; Next j Print Next i End Sub Visual Basic 程序设计
3. 数组元素的引用 要使用数组中的元素,应使用这样的格式: 格式:数组名(下标,…) 说明:① 下标的个数必须与数组定义时的维数一致。对于多维数组元素,下标之间用逗号隔开。 ☆ ② 对数组元素的引用必须在各维的上下界之内。否则就会产生“下标越界”的错误。 Visual Basic 程序设计
5.3 动态数组 动态数组指在声明数组时未给出数组的大小(省略括号中的下标),当要使用该数组时,随时可用ReDim语句重新定义数组的大小。 5.3 动态数组 动态数组指在声明数组时未给出数组的大小(省略括号中的下标),当要使用该数组时,随时可用ReDim语句重新定义数组的大小。 使用动态数组的优点是:用户可以根据需要有效地利用存储空间,它是在程序执行到ReDim语句时分配存储空间。 建立动态数组的方法是,使用Dim、Private、Public等语句声明括号内为空的数组,给数组赋予一个空维数表。 如: Dim Dyn()as Integer 然后在过程中 用Redim语句指明该数组的大小。 格式:Redim [preserve ] 数组名 ( 下标1 [,下标2 …]) 功能:声明动态数组的大小。 Visual Basic 程序设计
Private sub form_click( ) Dim a( ) as integer, I as integer, j as integer, n as integer n =5 redim a(n) ‘重新说明A为一维数组 for I=1 to n A(I)=inputbox(“x=”, ,1) print a(I); next I End Sub Visual Basic 程序设计
Private sub form_click( ) Dim a( ) as integer, I as integer, j as integer, n as integer n =5 redim a(n,n) ‘重新说明A为二维数组 for I=1 to n for J=1 to n a(i,j)=i+j print a(i,j); next j print next i End Sub Visual Basic 程序设计
在声明数组时未给出数组的大小,在程序运行期间可变 定义时指明大小,运行时不变 固定大小的数组 动态数组 在声明数组时未给出数组的大小,在程序运行期间可变 Visual Basic 程序设计
例如: Dim sArray( ) As Single Sub Form_click( ) …… ReDim sArray(4,8) End Sub 在窗体级声明了数组sArray为动态数组,在Form_click( )事件函数中重新指明该数组的大小是5行9列。 说明:① ReDim语句中的下标可以是常量,也可以是有了确定值的变量。 ②在过程中可以多次使用ReDim语句来改变数组的大小。 Dim a( ) as Integer N=4 redim a(n) N=9 redim a(n) n=10 redim a(n,n) Visual Basic 程序设计
Dim att( ) as Integer I=2: J=2 redim att(i, j) j=j+1 redim preserve att(i , j) Visual Basic 程序设计
例:输入若干学生成绩到一维数组,计算平均分和高于平均分的人数,并将平均分和高于平均分的人数放在该一维数组的最后。 1、如何实现学生数的动态变化?可考虑用动态数组,其元素数表示学生数。 2、怎样结束学生成绩的输入?可用一个特殊值(如:-99)表示结束输入。 Visual Basic 程序设计
例:输入若干学生成绩到一维数组,计算平均分和高于平均分的人数,并将平均分和高于平均分的人数放在该一维数组的最后。 Private Sub Command1_Click() Dim a( ) as Integer Do score =val( InputBox(" id" +Str(i)+"成绩为:")) If score <> -99 Then i = i + 1 ReDim Preserve a(i) a(I)=score else Exit Do End If Loop End Sub Visual Basic 程序设计
5.4 控件数组 基本概念:由一组具有名称和相同类型的控件组成,数组中的每一控件共享同样的事件过程。当建立控件数组时,系统给每个元素赋一个唯一的索引号(Index),通过属性窗口的Index属性,可以知道该控件的下标是多少,第1个下标是0。 例如:一个控件数组有三个option按钮,不论单击哪一个,都会调用同一个Click事件过程。 建立的方法:1、创建同名控件。2、复制现存控件。 Visual Basic 程序设计
5.4 控件数组 Private Sub Command1_Click(Index As Integer) 5.4 控件数组 Private Sub Command1_Click(Index As Integer) Select Case Index Case 0 Text1.Text = “第一组” Case 1 Text1.Text = “第二组” Case 2 Text1.Text = “第三组” End Select End Sub Visual Basic 程序设计
第6节 过 程 6.1 事件过程 6.2 过程及调用 6.3 参数的传递 6.4 变量的作用域 Visual Basic 程序设计
第6节 过 程 将多处使用的代码分解为相对独立的部分,供使用处调用。这样可以大大解化程序的设计。 窗体过程 事件过程 子程序过程(Sub) 第6节 过 程 将多处使用的代码分解为相对独立的部分,供使用处调用。这样可以大大解化程序的设计。 过程 子程序过程(Sub) 函数过程(Function) 属性过程(Property) 事件过程 通用过程 窗体过程 控件过程 Visual Basic 程序设计
6.1 事件过程 1.事件: 定义:能被对象所识别的动作。 触发事件的条件:用鼠标或按键等 系统也会产生事件 建立事件过程 加入对发生事件进行处理的代码的过程,称为事件过程 事件过程的分类: 窗体事件过程 控件事件过程 建立事件过程 打开代码窗口(双击控件或窗体,单击查看代码) 选择对象和事件,并输入代码 Visual Basic 程序设计
6.1 事件过程 2.定义事件过程 1) 窗体事件过程形式: Private Sub Form_事件名 ([argumentlist]) 6.1 事件过程 2.定义事件过程 1) 窗体事件过程形式: Private Sub Form_事件名 ([argumentlist]) 语句块 End Sub 说明: (1) Private 表明该过程是模块级的,在该窗体之外不可用。 (2) 不论定义的窗体名称是什么,窗体事件过程名中均用 Form 或MIDFORM(多文档界面窗体)表示。 (3) 事件由VB提供。注意部分事件的发生顺序: Initialize、Load、Activate、GotFocus Visual Basic 程序设计
6.1 事件过程 2.定义事件过程 2) 控件事件过程形式: Private Sub 控件名_事件名 ([参数列表]) 语句块 6.1 事件过程 2.定义事件过程 2) 控件事件过程形式: Private Sub 控件名_事件名 ([参数列表]) 语句块 End Sub 说明: (1) 控件名必须与窗体中某个控件相匹配,属于私有过程。 (2) 参数列表:有无参数由事件本身决定,用户不可以自行添加。 Visual Basic 程序设计
6.2 过程及其调用 6.2.1 函数过程及调用 6.2.2 子过程及调用 6.2.3 调用其他模块中的过程 6.2 过程及其调用 将多次被重复使用的程序段设计成一个具有一定功能的独立程序段,即为通用过程。 6.2.1 函数过程及调用 6.2.2 子过程及调用 6.2.3 调用其他模块中的过程 Visual Basic 程序设计
6.2.1 函数过程及其调用 引例: 已知多边形的各条边的长度,求这个多边形的面积 6.2.1 函数过程及其调用 将多次被重复使用的程序段设计成一个具有一定功能的独立程序段,即为通用过程。 引例: 已知多边形的各条边的长度,求这个多边形的面积 a b c d e g S1 S2 S3 c=0.5*(x+y+z) Area=sqr(c(c-x)(c-y)(c-z)) f :由应用程序调用才能运行。 :由应用程序或函数名都可调用。 子 过 程 函数过程 Visual Basic 程序设计
6.2.1 函数过程的定义及调用 1.定义 ⑴ 利用对话框 “工具”菜单--->“添加过程”--->在对话框输入对应项 6.2.1 函数过程的定义及调用 1.定义 ⑴ 利用对话框 “工具”菜单--->“添加过程”--->在对话框输入对应项 在代码中,填入形参名称和类型,以及函数名的类型 Visual Basic 程序设计
6.2.1 函数过程的定义及调用 1.定义: ⑵ 利用代码窗口直接输入 把插入点放在所有过程之外 直接输入函数过程 6.2.1 函数过程的定义及调用 1.定义: ⑵ 利用代码窗口直接输入 把插入点放在所有过程之外 直接输入函数过程 Public Function area(x!,y!,z!) as single Visual Basic 程序设计
(变量名 [As 类型] , 变量名 [As 类型] . . .) 6.2.1 函数过程的定义及调用 2.定义格式: Public Function 函数名(形参列表)[As 数据类型] 定义变量或常量 语句序列 函数名 = 表达式 End Function (变量名 [As 类型] , 变量名 [As 类型] . . .) 如: Public Function area(x As Single,y!,z!) As Single c=0.5*(x+y+z) area=sqr(c*(c-x)*(c-y)*(c-z)) End Function 注意: 在函数体内,函数名最少赋值一次 形参列表没有值,只代表参数的个数、类型、位置 函数过程无参数,括号不能省略 Visual Basic 程序设计
6.2.1 函数过程的定义及调用 格式如下: 3.函数的调用 格式1:变量 = 过程名([实参表]) 格式2:CALL 过程名(实参) 6.2.1 函数过程的定义及调用 3.函数的调用 格式如下: 格式1:变量 = 过程名([实参表]) 格式2:CALL 过程名(实参) 格式3:过程名 实参 Call Year (Now) Year Now 说明:通常用第一种格式比较多,用后两种方法调用 函数时VB放弃函数的返回值。 Visual Basic 程序设计
6.2.1 函数过程的定义及调用 3.函数的调用 与前面使用的标准函数的调用相同,出现在赋值号的右侧 格式:函数名([实参列表]) 注意: 6.2.1 函数过程的定义及调用 3.函数的调用 与前面使用的标准函数的调用相同,出现在赋值号的右侧 格式:函数名([实参列表]) 注意: 函数过程不能作为独立语句使用调用,必须与其他成分结合使用 实参列表中的参数个数、位置和类型与形参一一对应 如: Public Function area(x!,y!,z!) As Single c=0.5*(x+y+z) area=sqr(c*(c-x)*(c-y)*(c-z)) End Function 如:Private Sub Form _ Click() a=5 : b=4 : c=3 : d=3 e=4 : f=5 : g=4 s1=area(a,b,c) s2=area(c,d,e) End Sub a b c d e g S1 S2 S3 Visual Basic 程序设计
Private Sub Form _ Click() dim a!,b!,c!,s1! a = 5:b = 4:c = 3 过程调用的参数传递关系: Private Sub Form _ Click() dim a!,b!,c!,s1! a = 5:b = 4:c = 3 s1=area (a,b,c) …… print s1+s2+s3 End Sub 实际参数 形式参数 Public Function area (x!,y!,z!) As Single c=0.5*(x+y+z) area=sqr(c*(c-x)*(c-y)*(c-z)) End Function Visual Basic 程序设计
Private Sub Command1_Click() 例:已知下图所示的立方柱底边长 a,b和柱高h, 求出立方柱两顶角之间的对角线d. a b d h c Public Function z(x!, y!) As Single z = Sqr(x * x + y * y) End Function 函数的定义 Private Sub Command1_Click() Dim a, b, c, d, h As Single 分析: (1)函数: 重复的工作(求矩形的对角线) (2)Command1_Click事件中: 完成数据的输入、函数的调用和输出 a = Val(Text1.Text) b = Val(Text2.Text) h = Val(Text3.Text) 输入部分 c = z(a, b) 调用函数求矩形的对角线 d = z(c, h) Print "d=" ; d End Sub Visual Basic 程序设计
Private Sub Command1_Click() Public Function fac(n%) As Integer fac = 1 For i = 1 To n fac = fac * i Next i End Function 分析: (1)函数过程: 完成求任一数n! (2)Command1_Click中: 各阶乘值的累加,和 函数调用及输出 Private Sub Command1_Click() Dim sum as integer,k As integer For k = 1 To 5 Sum = Sum + fac(k) Next print Sum Visual Basic 程序设计
(变量名 [As 类型,] 变量名 [As 类型] . . .) 6.2.2 子过程的定义及其调用 1.定义方式 ⑴ 进入代码窗口: 按定义格式敲入Sub及子程序名. ⑵ 在“工具”-->选择“添加过程” -->在对话框中选择“子过程”,并输入过程名 2.定义格式: [Public|Private] Sub 过程名(形参列表) 语句序列 End Sub (变量名 [As 类型,] 变量名 [As 类型] . . .) Visual Basic 程序设计
例: 编写一个计算一个一元二次方程根的Sub子过程 Public Sub result( a!,b!,c!,x1!,x2!) Dim t As Single t = b^2-4*a*c x1=(-1*b+sqr(t))/(2*a) x2=(-1*b-sqr(t))/(2*a) End Sub 总结: 形参应是变量 子过程名无值,不要在子过程中赋值 子过程的应用范围比函数过程范围广 Visual Basic 程序设计
6.2.2 子过程的定义及其调用 3.调用:两种格式 Call 子过程名 [(实参列表)] 子过程名 [实参列表] 6.2.2 子过程的定义及其调用 3.调用:两种格式 Call 子过程名 [(实参列表)] 子过程名 [实参列表] 无实参时,括号省略 Public Sub command1_click() Dim t As Single a1=5:b1=4:c1=3 call result(a1,b1,c1,y1,y2) End Sub result a1,b1,c1,y1,y2 Visual Basic 程序设计
6.2.2 子过程的定义及其调用 Exit Sub (通常与条件语句同时使用) 4.退出子过程 6.2.2 子过程的定义及其调用 4.退出子过程 Exit Sub (通常与条件语句同时使用) 在子程序中进行测试,并根据测试结果确定是否退出子程序. Public Sub result( a!,b!,c!,x1!,x2!) Dim t As Single t = b^2-4*a*c x1=(-1*b+sqr(t))/(2*a) x2=(-1*b-sqr(t))/(2*a) End Sub if t<0 then Exit Sub Visual Basic 程序设计
6.2.3 调用其它模块中的过程 在程序中只能调用其他模块中的公有过程。 1.窗体模块 格式:CALL 窗体名.过程名([实参表]) 2.标准模块 (1) 若调用自身模块中的过程,或标准模块中的过程且过程名唯一,则格式为: CALL 过程名(实参) (2) 若调用别的模块中的过程且有两个以上的模块中含有同名过程,则格式为: CALL 模块名.过程名(实参) 3.类模块 Visual Basic 程序设计
6.3 参数的传递 按地址传递 按值传递 数组参数 参数 对象参数 Visual Basic 程序设计
形参 可以是除定长字符串外的合法变量名, 后面跟有左右括号的数组名 实参 可以是:变量、数组名、常数、表达式、对象 6.3 参数的传递 在调用有参过程时,将调用程序中的实参和被调用过程中的形参结合,实现主调程序和过程之间的数据传递; 形参 可以是除定长字符串外的合法变量名, 后面跟有左右括号的数组名 实参 可以是:变量、数组名、常数、表达式、对象 参数传递方式分为:传值和传址(引用)两种。 按值传送:形参变量前应加有ByVal; 说明:如果形参是变量,实参是常数或表达式时,即使在形参前没有关键词ByVal,也是实现按值传递 按址传送:形参前没有加上任何修饰词,或加“ByRef” (VB默认) Visual Basic 程序设计
6.3.1 按地址传递 按地址传送时传送的是实参的地址,在调用时,被调用过程直接将接受到的地址里的值进行修改,从而实参值被改变。所以执行完调用语句后,实参的值将会有所改变。 按址传递形参的语法特点: 形式变量前没有修饰词; 或在形式变量前加“ByRef”关键词 如:Public Sub test(i!,ByRef j As Integer) …… End Sub Visual Basic 程序设计
6.3.1 按地址传递 Private Sub Form_Click() Dim x As Integer, y As Integer 6.3.1 按地址传递 Private Sub Form_Click() Dim x As Integer, y As Integer x = 10 y = 20 Print "执行过程前:x="; x , "y=" ; y test x, y Print "执行过程后:x="; x , "y=" ; y End Sub Public Sub test(i As Integer, j As Integer) i = i + 1 j = j + 1 Visual Basic 程序设计
6.3.2 按值传递 按值传送时传送的不是实参的值,仅传送实参变量的副本,执行完调用语句后,调用程序中的实参值不会改变。 6.3.2 按值传递 按值传送时传送的不是实参的值,仅传送实参变量的副本,执行完调用语句后,调用程序中的实参值不会改变。 按值传递形参的语法特点: 在相应的形式变量前加“ByVal”关键词 如:Public Sub test(ByVal j As Integer) …… End Sub Visual Basic 程序设计
6.3.2 按值传递 例: Dim m As Integer, n As Integer m = 15: n = 20 6.3.2 按值传递 Private Sub Command1_Click() Dim m As Integer, n As Integer m = 15: n = 20 Print “调用前:m="; m, "n="; n Call value(m, n) Print “调用后:m="; m, "n="; n End Sub Private Sub value(ByVal x%, ByVal y As Integer) x = x + 20: y = y + x Print “返回前:x="; x, "y="; y 例: Visual Basic 程序设计
6.3.3 数组参数 数组可以作为形式参数。 定义格式:Public 过程名(形参数组名() AS 类型 ) 说明: 6.3.3 数组参数 数组可以作为形式参数。 定义格式:Public 过程名(形参数组名() AS 类型 ) 说明: 形参数组只能按地址传递参数。 对应实参的类型,实参只写数组名,后面不加括号。 长度必须和形参一致, 在被调用的过程中不要再用Dim对形参声明,若动态数组时,可以用ReDim来重新定义数组的维界与大小。 Visual Basic 程序设计
例: Option Base 1 Private Sub Form_Click() Dim ArrayA() As Integer, i As Integer ReDim ArrayA(5) Print "调用前上界是:"; UBound(ArrayA) Call change(ArrayA) Print "调用后上界是:"; UBound(ArrayA) End Sub Private Sub change(a() As Integer) Dim i As Integer ReDim a(7) For i = 1 To 7 a(i) = I Next I End Sub Visual Basic 程序设计
6.3.4 对象参数 对象也可以作为参数传递,但也只能是按地址来传递。在形参中若是控件,则类型声明为“Contral”,若是窗体,则类型声明为“Form”。 定义格式:Public 过程名(变量名 AS Contral) Public 过程名(变量名 AS Form) Visual Basic 程序设计
6.3.4 对象参数 例: Private Sub Command1_Click() Call objarg(Label1) End Sub 6.3.4 对象参数 例: Private Sub Command1_Click() Call objarg(Label1) End Sub Public Function objarg(lad As Control) lad.BackColor = vbYellow lad.ForeColor = vbRed lad.FontSize = 18 lad.FontItalic = True lad. Font. name = "隶书" lad.Caption = "对象的参数传递" End Function Visual Basic 程序设计
6.4 变量的作用域 变量的作用域 过程的作用域 静态变量 示例 Visual Basic 程序设计
6.4 变量的作用域 全局级 应用程序 (.vbp文件) 模块级 类模块(.cls)文件 过程级 Visual Basic 程序设计 一个或若干个窗体 模块(*.frm)文件 一个或若干个标准 模块(*.bas)文件 类模块(.cls)文件 过程级 事件过程(Sub) 用户自定义子过程(Sub) 用户自定义函数过程(Function) 用户自定义子过程(Sub) 用户自定义函数过程(Function) Visual Basic 程序设计
6.4.1 变量的作用域 1.局部变量 作用域:定义的过程内. 指在过程内用Dim语句声明的变量, 或不加声明 直接使用的变量; 6.4.1 变量的作用域 1.局部变量 作用域:定义的过程内. 指在过程内用Dim语句声明的变量, 或不加声明 直接使用的变量; 只能在本过程中使用,别的过程不可访问; 局部变量随过程的调用而分配存储单元,并进行 初始化;该过程体结束,占用的存储单元被释放; 不同过程中可有相同名称的变量,彼此互不相干。 使用局部变量有利于程序的调试 Visual Basic 程序设计
6.4.1 变量的作用域 2.窗体/模块级变量 作用域:定义变量的窗体/模块内。 定义位置:指在窗体/模块的“通用声明”中 6.4.1 变量的作用域 2.窗体/模块级变量 作用域:定义变量的窗体/模块内。 定义位置:指在窗体/模块的“通用声明”中 定义词:用Dim语句或Private语句声明的变量 使用范围:可被本窗体/模块的任何过程访问。 Visual Basic 程序设计
6.4.1 变量的作用域 3.全局变量 作用域:为整个应用程序内 定义位置:在标准模块或窗体的“通用声明”段中 6.4.1 变量的作用域 3.全局变量 作用域:为整个应用程序内 定义位置:在标准模块或窗体的“通用声明”段中 关键词:用Public语句声明的变量。 调用对象:可被应用程序中的任何过程或函数访问。 全局变量的值在整个应用程序中始终不会消失和重新 初始化,只有当整个应用程序结束时,才会消失。 思考:如果出现不同作用域的同名变量,系统会如何处理? Visual Basic 程序设计
6.4.2 过程的作用域 1.窗体/模块级 2.全局级 指在某个窗体或标准模块内定义的过程; 定义子过程或函数时,加 Private关键字; 6.4.2 过程的作用域 1.窗体/模块级 指在某个窗体或标准模块内定义的过程; 定义子过程或函数时,加 Private关键字; 过程只能被本窗体或本标准模块中的过程调用 2.全局级 指在窗体或标准模块中定义的过程,其默认是全局的,也可加Public进行说明。 全局级过程可供该应用程序的所有窗体和所有标准模块调用,调用方式有如下两种: 在窗体定义的过程,外部过程调用时,必须加窗体名 在标准模块定义的过程,外部过程均可调用,但过程名必须唯一,否则要加标准模块名 Visual Basic 程序设计
6.4.3 静态变量 每次调用过程时,用Static说明的变量保持原来的值,而用Dim说明的变量,每次调用过程时,都重新初始化。 使用格式: 6.4.3 静态变量 每次调用过程时,用Static说明的变量保持原来的值,而用Dim说明的变量,每次调用过程时,都重新初始化。 使用格式: Static 变量名 [As 类型] Static Function 函数名([参数列表])[As 类型] Static Sub 过程名[(参数列表)] Visual Basic 程序设计