测绘VB语言程序设计课件

上传人:m**** 文档编号:591639384 上传时间:2024-09-18 格式:PPT 页数:331 大小:3.99MB
返回 下载 相关 举报
测绘VB语言程序设计课件_第1页
第1页 / 共331页
测绘VB语言程序设计课件_第2页
第2页 / 共331页
测绘VB语言程序设计课件_第3页
第3页 / 共331页
测绘VB语言程序设计课件_第4页
第4页 / 共331页
测绘VB语言程序设计课件_第5页
第5页 / 共331页
点击查看更多>>
资源描述

《测绘VB语言程序设计课件》由会员分享,可在线阅读,更多相关《测绘VB语言程序设计课件(331页珍藏版)》请在金锄头文库上搜索。

1、测绘测绘VBVB语言程序设计语言程序设计1 1测绘测绘VBVB语言程序设计语言程序设计第一章第一章2 2第一章第一章 Visual Basic Visual Basic 程序开发环程序开发环境境一、一、VB概述概述二、二、VB集成开发界面集成开发界面三、程序设计基础知识三、程序设计基础知识3 3一、一、VB概述概述1、程程序序设设计计语语言言选选择择(2011-2013年年编编程程语语言言Top20榜单榜单)第一章第一章 Visual Basic Visual Basic 程序开发环程序开发环境境4 4一、一、VB概述概述1、程程序序设设计计语语言言选选择择(2013年年7月月编编程程语语言言

2、Top10榜单榜单)第一章第一章 Visual Basic Visual Basic 程序开发环程序开发环境境5 5一、一、VB概述概述2、VB语言发展语言发展3、VB6.0的三个版本的三个版本学习版学习版(Learning)入门版本入门版本专业版专业版(Professional)计算机专家计算机专家企业版企业版(Enterprise)最高级版本最高级版本第一章第一章 Visual Basic Visual Basic 程序开发环程序开发环境境6 64、VB特点特点1、面向对象的可视化设计平台、面向对象的可视化设计平台2、事件驱动、事件驱动3、结构化的程序设计语言、结构化的程序设计语言4、软件

3、的集成式开发、软件的集成式开发5、强大的数据库访问功能、强大的数据库访问功能6、支持对象的链接与嵌入技术、支持对象的链接与嵌入技术7、网络功能、网络功能8、多个应用程序向导、多个应用程序向导9、支持动态交换、动态链接技术、支持动态交换、动态链接技术10、联机帮助功能、联机帮助功能第一章第一章 Visual Basic Visual Basic 程序开发环程序开发环境境7 7二、二、VB集成开发界面集成开发界面1、VB6IDE界面界面IDE(IntegratedDevelopEnvironment)界面界面第一章第一章 Visual Basic Visual Basic 程序开发环程序开发环境境

4、8 8VB6IDE界面界面:标题栏标题栏标标题题栏栏中中显显示示窗窗体体控控制制菜菜单单图图标标、当当前前激激活活的的工工程程名名称称、当当前前工作模式、最小按钮、最大工作模式、最小按钮、最大/还原按钮、关闭按钮。还原按钮、关闭按钮。工作模式:工作模式:设设计计模模式式:在在该该模模式式下下可可进进行行用用户户界界面面的的设设计计和和代代码码的的编编写写。进入设计模式时,在标题栏中显示进入设计模式时,在标题栏中显示“设计设计”字样。字样。运运行行模模式式:在在该该模模式式下下可可运运行行VisualBasic应应用用程程序序,但但不不可可编编辑辑代代码码,也也不不可可编编辑辑界界面面。进进入入

5、运运行行模模式式时时,在在标标题题栏栏中中显显示示“运行运行”字样。字样。中中断断模模式式:在在该该模模式式下下可可暂暂时时中中断断应应用用程程序序的的执执行行,可可编编辑辑代代码码,但但不不可可编编辑辑用用户户界界面面。进进入入中中断断模模式式时时,在在标标题题栏栏中中显显示示break字样。字样。第一章第一章 Visual Basic Visual Basic 程序开发环程序开发环境境9 9第一章第一章 Visual Basic Visual Basic 程序开发环程序开发环境境1010VB6IDE界面界面:工具栏工具栏工工具具栏栏提提供供了了在在编编辑辑环环境境下下快快速速访访问问常常用

6、用命命令令的的方方法法,当当光光标标指指向向工工具具栏栏上上的的按按钮钮时时,会会显显示示工工具具按按钮钮的的名名称称及及功功能能,单单击工具栏上的按钮,将执行该按钮所对应的功能。击工具栏上的按钮,将执行该按钮所对应的功能。VisualBasic6.0中中提提供供了了4种种工工具具栏栏:【标标准准】工工具具栏栏、【调调试】工具栏、【编辑】工具栏和【窗体编辑器】工具栏。试】工具栏、【编辑】工具栏和【窗体编辑器】工具栏。第一章第一章 Visual Basic Visual Basic 程序开发环程序开发环境境1111VB6IDE界面界面:工具栏工具栏pTop和和Left决定了窗体在屏幕中的位置。屏

7、幕的左上角为原决定了窗体在屏幕中的位置。屏幕的左上角为原点。点。pHeight和和Width决定了窗体显示的大小决定了窗体显示的大小p单位为单位为twip(缇缇)(1twip=1/20点点=1/1440英寸英寸=1/567厘米厘米)第一章第一章 Visual Basic Visual Basic 程序开发环程序开发环境境1212VB6IDE界面界面:工具栏工具栏第一章第一章 Visual Basic Visual Basic 程序开发环程序开发环境境1313其他窗口其他窗口:窗体设计器窗体设计器窗窗体体设设计计窗窗口口窗体名窗体名窗体文件名窗体文件名第一章第一章 Visual Basic Vi

8、sual Basic 程序开发环程序开发环境境p窗体设计器窗口简称窗体窗体设计器窗口简称窗体(Form),它是,它是VB最基本的对象,提供与用户交互的窗口,最基本的对象,提供与用户交互的窗口,是屏幕中央的主窗口,它可以作为自定义窗是屏幕中央的主窗口,它可以作为自定义窗口用来设计应用程序的界面。用户可以在窗口用来设计应用程序的界面。用户可以在窗体中添加控件、图形和图片来创建所希望的体中添加控件、图形和图片来创建所希望的外观。外观。p每个窗口必须有一个的窗体名字,建立窗每个窗口必须有一个的窗体名字,建立窗体时缺省名为体时缺省名为Form1,Form2,.。p添加窗口添加窗口:【工程】【工程】【添加

9、窗体】菜单【添加窗体】菜单创建新窗体。创建新窗体。对象列表框对象列表框对象列表框对象列表框事件列表框事件列表框事件列表框事件列表框真题:在设计阶段,当双击窗体上的某个控真题:在设计阶段,当双击窗体上的某个控件时,所打开的窗口是件时,所打开的窗口是A)工程资源管理器窗口工程资源管理器窗口B)工具箱窗口工具箱窗口C)代码窗口代码窗口D)属性窗口属性窗口真题:在设计阶段,当双击窗体上的某个控真题:在设计阶段,当双击窗体上的某个控件时,所打开的窗口是件时,所打开的窗口是A)工程资源管理器窗口工程资源管理器窗口B)工具箱窗口工具箱窗口C)代码窗口代码窗口D)属性窗口属性窗口1414其他窗口其他窗口:工程

10、资源管理器窗口工程资源管理器窗口p工程是指用于创建一个应用程序的文件的工程是指用于创建一个应用程序的文件的集合。集合。p工程资源管理器列出了当前工程中的窗体工程资源管理器列出了当前工程中的窗体和模块。和模块。VB把一个应用程序称为一个工程,把一个应用程序称为一个工程,而一个工程又是各种类型的文件的集合,这而一个工程又是各种类型的文件的集合,这些文件包括工程些文件包括工程(组组)文件(文件(.vbp/.vbg)、窗)、窗体文件(体文件(.frm)、标准模块文件()、标准模块文件(.bas)、)、类模块文件(类模块文件(.cls)、资源文件()、资源文件(.res)、)、ActiveX文档(文档(

11、.dob)、)、ActiveX控件控件(.ocx)、用户控件文件()、用户控件文件(.ctl)、)、属性页属性页文件(文件(.pag)。)。查看代码查看代码查看对象查看对象切换文件夹切换文件夹真题:以下不属于真题:以下不属于VisualBasic系统的文件类型是系统的文件类型是A).frmB).batC).vbgD).vbp真题:以下不属于真题:以下不属于VisualBasic系统的文件类型是系统的文件类型是A).frmB).batC).vbgD).vbp第一章第一章 Visual Basic Visual Basic 程序开发环程序开发环境境1515其他窗口其他窗口:属性窗口属性窗口p属性是

12、指对象的特征,如大小、标题或颜属性是指对象的特征,如大小、标题或颜色等数据。在色等数据。在VisualBasic6.0设计模式中,设计模式中,属性窗口列出了当前选定窗体或控件的属性属性窗口列出了当前选定窗体或控件的属性的值,用户可以对这些属性值进行设置。的值,用户可以对这些属性值进行设置。p打开属性窗口:【视图】菜单中的【属性打开属性窗口:【视图】菜单中的【属性窗口】命令。窗口】命令。p该窗口由对象选择框、属性显示排列方式、该窗口由对象选择框、属性显示排列方式、属性列表框及当前属性的说明框属性列表框及当前属性的说明框4部分组成。部分组成。对象名对象名.属性名称属性名称第一章第一章 Visual

13、 Basic Visual Basic 程序开发环程序开发环境境1616 真题真题 刚建立一个新的标准刚建立一个新的标准EXEEXE工程工程后,不在工具箱中出现的控件是后,不在工具箱中出现的控件是A) A) 单选按钮单选按钮 B) B) 图片框图片框 C) C) 通用对话框通用对话框 D) D) 文本框文本框 真题真题 刚建立一个新的标准刚建立一个新的标准EXEEXE工程工程后,不在工具箱中出现的控件是后,不在工具箱中出现的控件是A) A) 单选按钮单选按钮 B) B) 图片框图片框 C) C) 通用对话框通用对话框 D) D) 文本框文本框 p 将鼠标指向工具箱的任意位置,将鼠标指向工具箱的

14、任意位置,单击右键,显示快捷菜单,然后单单击右键,显示快捷菜单,然后单击【部件】选项,此时,在列表框击【部件】选项,此时,在列表框中显示出可以使用的外部控件列表,中显示出可以使用的外部控件列表,选中需要添加到工具箱的控件,然选中需要添加到工具箱的控件,然后单击【确定】按钮,选定的控件后单击【确定】按钮,选定的控件就会出现在工具箱中。就会出现在工具箱中。p 【工程】菜单中选择【部件】【工程】菜单中选择【部件】其他窗口其他窗口:工具箱工具箱第一章第一章 Visual Basic Visual Basic 程序开发环程序开发环境境1717其他窗口其他窗口:窗窗体体布布局局窗窗口口:在在窗窗体体布布局

15、局窗窗口口中中可可以以使使用用表表示示屏屏幕幕小小图图像像来来布布置置应应用用程程序序中中各各窗窗体体的的位位置置,设设计计时时可可以以使使用用鼠鼠标标把把窗窗体体拖动到一个新的位置。拖动到一个新的位置。立立即即窗窗口口:立立即即窗窗口口是是为为调调试试应应用用程程序序提提供供的的,可可以以在在立立即即窗窗口口利利用用Debug.Print方方法法,把把要要输输出出的的内内容容输输出出到到立立即即窗窗口口,也可以直接在该窗口使用也可以直接在该窗口使用Print语句或语句或“?”显示变量的值。显示变量的值。本本地地窗窗口口:显显示示当当前前过过程程中中变变量量的的值值。当当程程序序的的执执行行从

16、从一一个个过过程程切切换换到到另另一一个个过过程程时时,本本地地窗窗口口的的内内容容会会发发生生变变化化,他他只只是是反映当前过程中可用的变量。反映当前过程中可用的变量。监监视视窗窗口口:显显示示当当前前的的监监视视表表达达式式,在在设设计计阶阶段段,利利用用“调调试试”菜菜单单的的“添添加加监监视视”命命令令或或“快快速速监监视视”命命令令添添加加监监视视表表达达式式以以及及设设置置的的监监视视类类型型,运运行行时时在在“监监视视”窗窗口口根根据据所所设设置置的监视类型进行相应的显示。的监视类型进行相应的显示。第一章第一章 Visual Basic Visual Basic 程序开发环程序开

17、发环境境1818二、二、VB集成开发界面集成开发界面2、工程设置及编译、工程设置及编译第一章第一章 Visual Basic Visual Basic 程序开发环程序开发环境境1919第一章第一章 Visual Basic Visual Basic 程序开发环程序开发环境境2020第一章第一章 Visual Basic Visual Basic 程序开发环程序开发环境境三、程序设计基础知识三、程序设计基础知识1、算法的概念、算法的概念2、算法的表示、算法的表示3、程序设计基本步骤、程序设计基本步骤4、程序设计规范、程序设计规范2121第一章第一章 Visual Basic Visual Bas

18、ic 程序开发环程序开发环境境三、程序设计基础知识三、程序设计基础知识1、算法的概念、算法的概念一个程序应包括以下两方面内容一个程序应包括以下两方面内容:数数据据结结构构(datastructure):对对数数据据的的描描述述,在在程程序序中中要要指指定定数数据据的的类型和数据的组织形式。类型和数据的组织形式。算法算法(algorithm):对操作的描述,即操作步骤。对操作的描述,即操作步骤。数据结构数据结构+算法算法=程序程序(沃思沃思(NikiklausWirth)完整的程序设计:完整的程序设计:程序程序=算法算法+数据结构数据结构+程序设计方法程序设计方法+语言工具和环境语言工具和环境灵

19、魂灵魂加工对象加工对象合适的方法合适的方法工具工具2222三、程序设计基础知识三、程序设计基础知识1、算法的概念、算法的概念广广义义:为为解解决决一一个个问问题题而而采采取取的的方方法法和和步步骤骤,就就称称为为“算法算法”。例例:1+2,+3,+100加加99次次100+(1+99)+(2+98)+(49+51)+50=100+49100+50=5050加加51次次第一章第一章 Visual Basic Visual Basic 程序开发环程序开发环境境2323三、程序设计基础知识三、程序设计基础知识1、算法的概念、算法的概念计算机能执行的算法计算机能执行的算法数值算法数值算法:求数值解求数

20、值解。例如,求方程根等。例如,求方程根等。非非数数值值算算法法:包包括括的的面面十十分分广广泛泛,最最常常见见的的是是用用于于事事务务管管理理领领域域。例例如如,排排序序算算法法、图图书书检检索索等等。第一章第一章 Visual Basic Visual Basic 程序开发环程序开发环境境2424三、程序设计基础知识三、程序设计基础知识2、算法的表示、算法的表示自然语言自然语言:冗长、产生歧义冗长、产生歧义流程图流程图:形象直观形象直观计算机语言计算机语言:VisualBasic第一章第一章 Visual Basic Visual Basic 程序开发环程序开发环境境2525第一章第一章 V

21、isual Basic Visual Basic 程序开发环程序开发环境境三、程序设计基础知识三、程序设计基础知识3、程序设计基本步骤、程序设计基本步骤问题描述问题描述算法设计算法设计程序编码程序编码程序测试程序测试程序应用与维护程序应用与维护2626第一讲第一讲 测绘程序设计概述测绘程序设计概述三、程序设计基础知识三、程序设计基础知识4、程序设计规范、程序设计规范结构清晰、代码精简结构清晰、代码精简尽量使用标准函数、尽量使用局部变量尽量使用标准函数、尽量使用局部变量进行适当注释进行适当注释利用制表位利用制表位(Tab键键)显示程序逻辑结构显示程序逻辑结构循环和分支层次不要过多,慎循环和分支层

22、次不要过多,慎GOTO语句语句界面设计尽量美观统一界面设计尽量美观统一2727测绘测绘VBVB语言程序设计语言程序设计第二章第二章2828第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础一、基本数据类型一、基本数据类型二、变量与常量二、变量与常量三、运算符和表达式三、运算符和表达式四、常用内部函数四、常用内部函数五、语句五、语句2929一、基本数据类型一、基本数据类型1、语语言言的的基基本本要要素素:数数据据类类型型、变变量量和和常常量量、数数组组、运运算算符符和和表表达达式式、函函数数、流流程程控控制制(循循环环、分分支支、选择)、功能模块及参数传递

23、、数据文件访问选择)、功能模块及参数传递、数据文件访问.2、数据、数据描述事物的符号记录;用于载荷信息的物理符号。描述事物的符号记录;用于载荷信息的物理符号。VB基基本本数数据据类类型型:数数值值型型(Numeric)、逻逻辑辑型型(布布尔尔型型 ) (Bollean) 、 日日 期期 型型 (Data) 、 字字 符符 型型(String)、可可变变型型(Variant)、对对象象型型(Object)、货币型、货币型(Currency)、字节型、字节型(Byte)不不同同类类型型数数据据所所占占存存储储空空间间不不同同,使使用用合合适适的的数数据据类型可优化代码。类型可优化代码。第二章第二章

24、 Visual Basic Visual Basic 程序设计基础程序设计基础3030一、基本数据类型一、基本数据类型第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础3131一、基本数据类型:数值型一、基本数据类型:数值型-整型整型数值型可分为两大类:整型和实型数值型可分为两大类:整型和实型(浮点型浮点型)数数值值型型:Integer(整整型型)、Long(长长整整型型)、Single(单单精精度度浮浮点点型型)、Double(双双精精度度浮浮点点型)、型)、Byte(字节型)、(字节型)、Currency(货币型)(货币型)VB中中,可可用用八八进进

25、制制和和十十六六进进制制表表示示整整数数,八八进进制制数数前前加加“&”或或者者“&O”;十十六六进进制制数数前前加加“&H”。在在用用八八进进制制和和十十六六进进制制表表示示长长整整型型数数据据时时,在在数数字结尾加字结尾加“&”。&147、&147&分别是八进制整型数和八进制长整型数;分别是八进制整型数和八进制长整型数;&H147、&H147&分别是十六进制整型数和十六进制长整型数;分别是十六进制整型数和十六进制长整型数;第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础八进制整型数八进制整型数:&O0-&O177777;八进制长整型数八进制长整型数

26、:&O0&-&O37777777777&;十六进制整型数十六进制整型数:&H0-&HFFFF;十六进制长整型数十六进制长整型数:&H0&-&HFFFFFFFFF&;区别于区别于C语言语言pVB中,八进制整型数以中,八进制整型数以&或或&O开头,开头,C中,八进制整型数以中,八进制整型数以0开头;开头;pVB中,十六进制整型数以中,十六进制整型数以&H开头,开头,C中,中,十六进制整型数以十六进制整型数以0x开头;开头;pVB中,八进制或十六进制长整型数以中,八进制或十六进制长整型数以&结尾,结尾,C中,八进制或十六进制长整型数以中,八进制或十六进制长整型数以L结尾结尾3232一、基本数据类型:

27、数值型一、基本数据类型:数值型-浮点型浮点型Single:4个个字字节节中中符符号号占占1位位,指指数数占占8位位,其其余余23位位表表示示尾尾数数,有有效效数数字字精精确确到到7位位十十进进制制数数。当当要要赋赋给给Single变变量量的的数数的的有有效效数数字字超超过过7位位,超超出出部部分自动四舍五入分自动四舍五入Double:8个个字字节节中中符符号号占占1位位,指指数数占占11位位,其其余余52位位表表示示尾尾数数,有有效效数数字字精精确确到到15位位十十进进制制数数。当当要要赋赋给给Double变变量量的的数数的的有有效效数数字字超超过过15位位,超出部分自动四舍五入。超出部分自动

28、四舍五入。浮浮点点型型的的表表示示方方法法:定定点点表表示示法法和和浮浮点点表表示示法法(科科学学计数法计数法)定点表示法定点表示法:小数表示形式小数表示形式科学计数科学计数:Single用用E表示,表示,Double用用D表示。表示。Currency:专专门门用用来来表表示示货货币币数数量量的的数数据据类类型型。可可以以带带有有正正、负负号号的的实实数数,小小数数部部分分保保留留4位位有有效效数数字,整数部分可以达到字,整数部分可以达到15位精确数字。位精确数字。第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础浮点型与货币型区别:浮点型与货币型区别:

29、浮点型小数点可以移动,小数点可以出现浮点型小数点可以移动,小数点可以出现在数的任何位置在数的任何位置货币型小数点固定,也称定点数据类型货币型小数点固定,也称定点数据类型3333一、基本数据类型:数值型一、基本数据类型:数值型如果数据包含小数,则使用浮点型如果数据包含小数,则使用浮点型数数 值值 如如 果果 超超 出出 规规 定定 的的 范范 围围 出出 现现 “溢溢 出出 ”信信 息息(Overflow)。如如果果小小于于范范围围的的下下限限,系系统统将将按按“0”处处理理;如如果果大大于于上上限限,系系统统只只按按上上限限处处理理,并显示出错信息。并显示出错信息。VB一一般般使使用用十十进进

30、制制计计数数,如如使使用用八八进进制制或或十十六六进进制制计数,其值等价于十进制。计数,其值等价于十进制。所所有有数数值值变变量量都都可可相相互互赋赋值值,将将浮浮点点数数赋赋予予整整数数之之前前,VB将将浮浮点点数数的的小小数数部部分分四四舍舍五五入入到到整整数数(并并非将小数部分去掉非将小数部分去掉)。第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础区别于区别于C语言语言3434一、基本数据类型:字符型一、基本数据类型:字符型String:在在缺缺省省情情况况下下,String型型变变量量是是一一个个可可变变长长度度的的字字符符串串变变量量(变变长

31、长字字符符串串),随随着着对对其其赋赋予予新数据,它的长度可增可减。新数据,它的长度可增可减。声明具有固定长度声明具有固定长度String型变量(定长字符串)型变量(定长字符串)DimSAsStringS=DatabaseDim/Private/Public/StaticvariablenameString*sizeDimSSAsString*20SS定长定长20个字符个字符SS=“abcdfghh”不足部分补空格,超出部分截去不足部分补空格,超出部分截去第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础区别于区别于C语言语言p字符串型(字符串型(Str

32、ing)是)是VB基本数据类型之基本数据类型之一;字符型(一;字符型(char)是)是C语言基本数据类型语言基本数据类型之一;之一;pVB中,字符串是放在双引号内的若干个中,字符串是放在双引号内的若干个字符,可为空字符,字符串存放在字符串型字符,可为空字符,字符串存放在字符串型变量中;变量中;C中,中,“字符常量字符常量”是用单撇号括是用单撇号括起来的一个字符,字符型变量是用来存放字起来的一个字符,字符型变量是用来存放字符常量的;符常量的;pVB中,字符串型变量(除定长型)可以中,字符串型变量(除定长型)可以更改长度;更改长度;C中字符型变量只可存储一个字中字符型变量只可存储一个字符;符;35

33、35一、基本数据类型:布尔型(逻辑型)一、基本数据类型:布尔型(逻辑型)Boolean: 若若 变变 量量 的的 值值 只只 是是 “true/false”、“yes/no”、“on/off”信信息息,则则可可将将它它声声明明为为Boolean类型。类型。Boolean的值有两种的值有两种:True和和False,缺省值为,缺省值为False。数数值值型型转转为为布布尔尔型型时时,0转转为为False,非非0转转为为True;布尔型转为数值型时,布尔型转为数值型时,False转为转为0,True转为转为-1。Dima1AsBoolean,a2AsBooleana1=Truea2=False第二

34、章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础区别于区别于C语言语言3636一、基本数据类型:日期型一、基本数据类型:日期型Date:表表示示由由年年、月月、日日组组成成的的日日期期信信息息或或由由时时、分、秒组成的时间信息。分、秒组成的时间信息。在使用中有两种不同的方式:在使用中有两种不同的方式:格式型:采用符号码格式型:采用符号码“#”表示日期型数据。表示日期型数据。数字序列:数字序列:用小数点分割。用小数点分割。DimSomeDateAsDateSomeDate=#2012-02-22#SomeDate=#2-22-1213:20#SomeDate

35、=#March27,19931:20am#第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础日期信息日期信息:100年年1月月1日日-9999年年12月月31日日时间信息时间信息:0:00:00-23:59:59#mm/dd/yyyy#或或#mm-dd-yyyy#yyyy/mm/dd#或或#yyyy-mm-dd#mm/dd/yyyyhh:mm:ssAM|PM#或或#mm-dd-yyyyhh:mm:ssAM|PM#p当其他数据类型转换为日期型时,当其他数据类型转换为日期型时,小数点左边代表日期,右边代表时小数点左边代表日期,右边代表时间间p0为午夜,为午夜

36、,0.5为正午为正午p1899年年12月月30日对应日对应Date的的03737一、基本数据类型:变体型(可变型)一、基本数据类型:变体型(可变型)Variant:声声明明变变量量时时的的缺缺省省类类型型,能能够够存存储储所所有有类类型型的的数据,随着为它赋值的类型而改变自身的类型。数据,随着为它赋值的类型而改变自身的类型。如如果果把把数数据据赋赋予予Variant变变量量,则则不不必必在在这这些些数数据据的的类类型间进行转换,型间进行转换,VB会自动完成必要的转换。会自动完成必要的转换。Variant有三个特殊的值:有三个特殊的值:Empty:还还没没有有为为变变量量赋赋值值。不不同同于于数

37、数值值0、长长度度为为0的的“”或空值或空值Null。Null:通通常常用用于于数数据据库库应应用用程程序序,表表示示未未知知数数据据或或丢丢失的数据。失的数据。Error:特定值,指出已发生的过程中的错误状态。:特定值,指出已发生的过程中的错误状态。DimSomeValue缺省为缺省为VariantSomeValue=“18”值值:“18”SomeValue=SomeValue15值值:3SomeValue=“U”&SomeValue 值值:“U3”第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础p如果对如果对Variant型变量进行数学型变量进行数

38、学运算或函数运算,则该变量必须运算或函数运算,则该变量必须包含某个数;包含某个数;p要连接两个字符串,则用要连接两个字符串,则用“&”符,而非符,而非“+”符符3838一、基本数据类型:对象型一、基本数据类型:对象型Object:表表示示应应用用程程序序中中或或某某些些其其他他应应用用程程序序中中的的对对象。象。表示图形、表示图形、OLE对象或其他对象对象或其他对象用用Set语语句句指指定定一一个个被被声声明明为为Object的的变变量量去去引引用用应用程序所识别的任何实际对象应用程序所识别的任何实际对象声声明明对对象象变变量量时时,应应使使用用特特定定的的类类,而而不不是是一一般般的的Obj

39、ect。DimobjDbAsObjectSetobjDb=OpenDatabase(c:Vb6Biblio.mdb)第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础3939第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础一、基本数据类型一、基本数据类型二、变量与常量二、变量与常量三、运算符和表达式三、运算符和表达式四、常用内部函数四、常用内部函数五、语句五、语句4040二、变量与常量二、变量与常量1、变量、变量变量:在程序运行过程中其值可以发生改变的量。变量:在程序运行过程中其值可以发生改变的量。在在VB执执行

40、行应应用用程程序序期期间间,用用变变量量临临时时存存储储数数据据,即即在在程程序序中中处处理理数数据据时时,对对于于输输入入数数据据、参参加加运运算算的的数数据据、运运行行结结果果等等临临时时数数据据,暂暂时时存存储储在在计计算机内存中。算机内存中。变变量量的的两两个个特特性性:名名字字和和数数据据类类型型。名名字字:用用于于在在程程序序中中标标识识变变量量和和使使用用变变量量的的值值。数数据据类类型型:确定了变量中可以保存哪种数据。确定了变量中可以保存哪种数据。变量的分类:属性变量和用户声明变量变量的分类:属性变量和用户声明变量第二章第二章 Visual Basic Visual Basic

41、 程序设计基础程序设计基础4141二、变量与常量二、变量与常量1、变量、变量变量的命名原则:变量的命名原则:长度不能超过长度不能超过255个字符;个字符;必必须须以以字字母母或或汉汉字字为为首首字字母母,不不能能以以数数字字或或下下划划线为开头;线为开头;变变量量名名由由字字母母、汉汉字字、数数字字或或下下划划线线组组成成,不不能能含含有有+、*、/、$、&、%、!、#、?、小小数数点或逗号等字符;点或逗号等字符;不不能能使使用用VB中中的的关关键键字字,VB中中的的关关键键字字是是系系统统中中已经定义的词,如语句、函数、运算符等;已经定义的词,如语句、函数、运算符等;变变量量名名在在同同一一

42、范范围围内内必必须须是是唯唯一一的的,VB中中字字母母不不区分大小写,以第一次出现的变量形式为准;区分大小写,以第一次出现的变量形式为准;必必要要时时可可以以在在变变量量名名前前加加前前缀缀或或变变量量名名后后加加后后缀缀以说明变量的类型;以说明变量的类型;尽量避免使用汉字作为变量名。尽量避免使用汉字作为变量名。第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础区别于区别于C语言语言pVB中,必须以字母或汉字为首字母;中,必须以字母或汉字为首字母;C中,中,第一个字符必须是字母或下划线;第一个字符必须是字母或下划线;pVB中,变量名长度不超过中,变量名长

43、度不超过255个字符;个字符;C中,无明确规定,具体取决于编译系统规定;中,无明确规定,具体取决于编译系统规定;pVB中,变量名字母不区分大小写;中,变量名字母不区分大小写;C中,中,变量名字母区分大小写,表示不同变量变量名字母区分大小写,表示不同变量4242二、变量与常量二、变量与常量1、变量、变量变变量量的的声声明明:用用一一个个语语句句定定义义变变量量的的类类型型,又又称称显式声明。显式声明。声声明明变变量量的的语语句句并并不不把把值值分分配配给给变变量量,只只是是告告知知变变量量将将会会包包含含的的数数据据,只只有有变变量量赋赋值值后后,才才占占据据存储空间。存储空间。DimXAsSi

44、ngle,YAsSinglePublicH!StaticStuName,StuAgeAsStringDim|Private|Public|Static变量名变量名As类型类型,变量名变量名2As类型类型2Dim|Private|Public|Static变量名变量名,变量名变量名第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础区别于区别于C语言语言pVB中,中,DimiAsInteger;C中,中,inti;;pVB中,必须每个变量均指定类型中,必须每个变量均指定类型DimiAsInteger,aAsString;C中,可以用一个关键中,可以用一个关键

45、词声明多个变量,词声明多个变量,inti,a;;pVB中,中,Dima,b,c,dAsInteger此时只此时只有有d为整型,其他为变体型为整型,其他为变体型pC中,中,inta,b,c,d/a,b,c,d均为整型均为整型pVB中,可以用类型说明符来标识数据类中,可以用类型说明符来标识数据类型;型;4343二、变量与常量二、变量与常量1、变量、变量使使用用声声明明语语句句建建立立一一个个变变量量后后,VB自自动动为为声声明明过过的变量赋初值。的变量赋初值。数值型数值型初值为:初值为:0字符或字符或Variant型型初初值值为为:“”空串空串Boolean型型初值为:初值为:False日期型日期

46、型初初值值为为:00:00:00声声明明变变量量后后,VB自自动动转转换换变变量量值值的的类类型型,使使变变量量的值与说明语句中的类型匹配。的值与说明语句中的类型匹配。DimXAsIntegerA=1.0 自动将自动将A的值的值1.0转换为整型数转换为整型数1第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础4444二、变量与常量二、变量与常量1、变量、变量强制显式声明变量:强制显式声明变量:在在类类模模块块、窗窗体体模模块块或或标标准准模模块块的的声声明明段段加加入入语语句,作用范围语句所在模块;句,作用范围语句所在模块;工具工具选项选项编辑器(要求声

47、明变量)编辑器(要求声明变量)隐隐式式声声明明变变量量:在在第第一一次次使使用用变变量量时时,在在变变量量名名后加上类型修饰符后加上类型修饰符OptionExplicit第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础区别于区别于C语言语言pVB中,变量可以不声明就使用,默认为中,变量可以不声明就使用,默认为变体型;变体型;C中,变量必须先声明,后使用,中,变量必须先声明,后使用,否则报错;否则报错;4545二、变量与常量二、变量与常量2、常量、常量常量是在程序运行过程中固定不变的量。常量是在程序运行过程中固定不变的量。通通常常采采用用有有意意义义的的

48、标标识识符符表表示示常常量量值值,由由此此提提高高源代码的可读性和可维护性。源代码的可读性和可维护性。常常量量分分类类:直直接接常常量量、符符号号常常量量(用用户户声声明明的的符符号常量、系统常量)号常量、系统常量)第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础4646二、变量与常量二、变量与常量2、常量、常量直接常量:是指直接用值表示的常量。直接常量:是指直接用值表示的常量。包包括括字字符符串串常常量量(可可以以是是除除双双引引号号、回回车车符符、换换行行符符外外的的所所有有字字符符)、数数值值常常量量、逻逻辑辑常常量量、日日期期常量常量“DATE

49、”、“123”、“+”、“!”-23、&H45、-23、&H45、12.35、12.35#、50、50.756True、#12/20/2012#、#14:20:30#第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础4747二、变量与常量二、变量与常量2、常量、常量符号常量:用一个符号表示一个固定不变的量。符号常量:用一个符号表示一个固定不变的量。用户自定义符号常量用户自定义符号常量系统内部定义的符号常量系统内部定义的符号常量VB和控件提供的和控件提供的可可与与应应用用程程序序的的对对象象、方方法法和和属属性性一一起起使使用用,编编程程时时也可以直接使用

50、也可以直接使用选选择择“视视图图”中中的的“对对象象浏浏览览器器”命命令令可可查查看看内内部部常常量量ConstPIAsDouble=3.1415926ConstMax#=23.45ConstAs=第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础区别于区别于C语言语言pVB中声明符号常量关键词为中声明符号常量关键词为Const,格式为,格式为Const常量名常量名=表达式表达式;C中中声明符号常量用宏语句声明符号常量用宏语句#define常量名常量名常量常量(没有等号,不可放在函数内没有等号,不可放在函数内)pC中还可用语句定义中还可用语句定义cons

51、t数据类型数据类型常量名常量名=常量;常量;(可放于函数内可放于函数内)4848第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础一、基本数据类型一、基本数据类型二、变量与常量二、变量与常量三、运算符和表达式三、运算符和表达式四、常用内部函数四、常用内部函数五、语句五、语句4949三、运算符和表达式三、运算符和表达式1、运算符、运算符(Operator)运算符运算符:代表某种运算的符号代表某种运算的符号2、表达式、表达式(Expression)运算符与操作数连接起来组成表达式运算符与操作数连接起来组成表达式表表达达式式可可以以用用来来执执行行运运算算、操

52、操作作字字符符和和测测试试数数据据,每个表达式产生唯一的值。每个表达式产生唯一的值。表达式的类型由运算符的类型决定。表达式的类型由运算符的类型决定。第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础5050三、运算符和表达式三、运算符和表达式1、运算符、运算符算术运算符算术运算符字符串运算符字符串运算符日期运算符日期运算符关系运算符关系运算符逻辑运算符逻辑运算符2、表达式、表达式算术表达式算术表达式字符串表达式字符串表达式日期表达式日期表达式关系表达式关系表达式逻辑表达式逻辑表达式运算符的优先级运算符的优先级类型转换类型转换第二章第二章 Visual B

53、asic Visual Basic 程序设计基础程序设计基础5151三、运算符和表达式三、运算符和表达式1、算术运算符和算术表达式、算术运算符和算术表达式运算对象为数值型数据运算对象为数值型数据表达式中的表达式中的*不能省略不能省略;上下标上下标进进行行除除法法(包包括括整整除除)运运算算时时除除数数为为0,或或进进行行幂幂运运算指数为负数而底数为算指数为负数而底数为0,产生溢出的错误信息。,产生溢出的错误信息。、Mod:幂和负号相邻时,负号优先幂和负号相邻时,负号优先32Mod7值为值为225.58Mod6.91取取整整后后取取余余,值值为为51/20.5120第二章第二章 Visual B

54、asic Visual Basic 程序设计基础程序设计基础2-3值值为为0.1255252三、运算符和表达式三、运算符和表达式1、算术运算符和算术表达式、算术运算符和算术表达式第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础p整除时,如果参与运算的数据整除时,如果参与运算的数据含有小数,首先将其四舍五入,含有小数,首先将其四舍五入,然后再运算然后再运算p结果截尾为整数结果截尾为整数p如果参与运算的数据含有小数,如果参与运算的数据含有小数,首先将其四舍五入,然后再取余首先将其四舍五入,然后再取余区别于区别于C语言语言p取模运算取模运算:VB中为中为Mo

55、d,如果参与数为,如果参与数为浮点型,先四舍五入,再运算浮点型,先四舍五入,再运算;C中为中为%,如果参与数为浮点型,报错,如需运算,先如果参与数为浮点型,报错,如需运算,先强制类型转换强制类型转换p除法运算除法运算:VB中区分除和整除中区分除和整除;C中只有中只有除法运算,但如果两整数相除,结果舍去小除法运算,但如果两整数相除,结果舍去小数保留整数,相对应数保留整数,相对应VB整除,当有一个为整除,当有一个为浮点型,结果为浮点型,相对应浮点型,结果为浮点型,相对应VB除除p幂运算幂运算:VB中有幂运算符中有幂运算符;C中没有,要中没有,要靠函数实现靠函数实现(math.h)5353三、运算符

56、和表达式三、运算符和表达式1、算术运算符和算术表达式、算术运算符和算术表达式算术表达式又称数值型表达式算术表达式又称数值型表达式算算术术表表达达式式由由算算数数运运算算符符、数数值值型型常常量量、变变量量、函数和圆括号组成函数和圆括号组成算术表达式结果为一个数值算术表达式结果为一个数值第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础5454三、运算符和表达式三、运算符和表达式1、算术运算符和算术表达式、算术运算符和算术表达式算术表达式的书写规则算术表达式的书写规则(p22)算术表达式中数据类型的匹配原则算术表达式中数据类型的匹配原则运算结果的类型服从其

57、中运算结果的类型服从其中“级别级别”较高的类型较高的类型整整型型(2字字节节)长长整整型型和和单单精精度度型型(4字字节节)双双精精度型度型(8字节字节)第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础5555三、运算符和表达式三、运算符和表达式2、字符串运算符和字符串表达式、字符串运算符和字符串表达式字符串运算符:字符串运算符:&、+字字符符串串表表达达式式由由字字符符串串常常量量、字字符符串串变变量量、字字符符串函数和字符串运算符组成串函数和字符串运算符组成&运运算算规规则则:运运算算符符强强制制两两个个表表达达式式按按字字符符串串连连接接,尽尽管

58、管被被连连接接的的表表达达式式不不是是字字符符串串也也是是如如此此。若若在在变变量量后后使使用用此此运运算算符符,应应在在变变量量和和&之之间间加加一一个个空格空格+运运算算符符当当两两个个表表达达式式都都是是字字符符串串时时按按字字符符串串连连接接,否否则则视视具具体体情情况况会会有有不不同同结结果果。因因此此,在在进进行行字字符串连接时一般使用符串连接时一般使用&运算符。运算符。第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础&+5656三、运算符和表达式三、运算符和表达式2、字符串运算符和字符串表达式、字符串运算符和字符串表达式字符串运算符:字符

59、串运算符:+第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础太原太原+理工大学理工大学太原理工大学太原理工大学太原太原&理工大学理工大学太原理工大学太原理工大学12+abError12+132512&ab12abc12&131213Text1.Text+135757三、运算符和表达式三、运算符和表达式3、日期运算符和日期表达式、日期运算符和日期表达式日日期期运运算算符符:日日期期型型数数据据是是一一种种特特殊殊的的数数值值型型数数据据,运算符为运算符为+、-日日期期表表达达式式:日日期期运运算算符符、算算数数表表达达式式、日日期期型型常常量、日期型变量

60、和函数组成量、日期型变量和函数组成两两个个日日期期型型数数据据相相减减,结结果果为为数数值值型型数数据据(两两个个日日期期相差天数相差天数)一一个个表表示示天天数数的的数数值值型型加加到到日日期期型型数数据据中中,结结果果为为日日期型数据期型数据(向后推算日期向后推算日期)一一个个表表示示天天数数的的数数值值型型从从日日期期型型数数据据中中减减掉掉,结结果果为为日期型数据日期型数据(向前推算日期向前推算日期)第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础#9/16/2007#-#9/11/2007#结果:结果:5#9/16/2007#+12结果:结果

61、:#2007/9/28#9/16/2007#-10结果:结果:#2007/9/6#5858三、运算符和表达式三、运算符和表达式3、关系运算符和关系表达式、关系运算符和关系表达式关关系系运运算算符符:也也称称比比较较运运算算符符,将将两两个个数数据据进进行行比比较较,运算结果为运算结果为Boolean型值,即真型值,即真(True)或假或假(False)第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础pLike运算符用于字符串的模运算符用于字符串的模糊比较,可以与通配符糊比较,可以与通配符“*”、“?”、“#”等结合使用等结合使用区别于区别于C语言语言p

62、种类种类:VB有有8种;种;C有有6种,没有种,没有Like和和Isp等于等于:VB中为中为=;C中为中为=p不等于:不等于:VB中为中为;C中为中为!=p赋值运算符赋值运算符:VB没有赋值运算符,不允许没有赋值运算符,不允许连等;连等;C有赋值运算符,允许连等,连续赋有赋值运算符,允许连等,连续赋值;值;pVB中中:a=b=c=5a,b,c仍都为仍都为0pprinta=b=c=5结果为结果为FalsepC中中:a=b=c=5a,b,c仍都为仍都为55959三、运算符和表达式三、运算符和表达式3、关系运算符和关系表达式、关系运算符和关系表达式关关系系表表达达式式:由由关关系系运运算算符符、算算

63、数数表表达达式式、字字符符串串表表达达式式、日日期期表表达达式式或或作作为为表表达达式式特特列列的的常常量量、变变量量、函数组成函数组成关系运算符两侧数据类型必须完全一致关系运算符两侧数据类型必须完全一致被被比比较较的的数数据据是是数数值值型型、字字符符型型、日日期期型型,不不能能是是布尔型布尔型第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础6060三、运算符和表达式三、运算符和表达式3、关系运算符和关系表达式、关系运算符和关系表达式数数值值型型:按按其其数数值值大大小小比比较较。对对于于单单精精度度或或双双精精度度数数,进进行行“=”比比较较会会产

64、产生生误误差差得得出出非非常常接接近近但但不不相相等等的结果的结果对对字字符符型型的的比比较较,单单个个字字符符按按照照字字符符的的ASCII码码值值的的大大小小;对对于于汉汉子子字字符符,按按内内码码顺顺序序比比较较;字字符符串串则则逐一比较逐一比较日日期期型型看看成成“yymmdd”格格式式的的6位位整整数数,按按数数值值大大小小比较比较第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础6161三、运算符和表达式三、运算符和表达式4、逻辑运算符和逻辑表达式、逻辑运算符和逻辑表达式逻辑运算符逻辑运算符:第二章第二章 Visual Basic Visua

65、l Basic 程序设计基础程序设计基础区别于区别于C语言语言p种类种类:VB有有6种;种;C有有3种,没有异或、等种,没有异或、等价、蕴含价、蕴含p非非:VB中为中为Not;C中为中为!p与与:VB中为中为And;C中为中为&p或或:VB中为中为or;C中为中为|6262三、运算符和表达式三、运算符和表达式4、逻辑运算符和逻辑表达式、逻辑运算符和逻辑表达式逻逻辑辑表表达达式式:由由关关系系运运算算符符、逻逻辑辑运运算算符符、常常量量、变变量和函数组成量和函数组成结果为逻辑型数据结果为逻辑型数据优先级:算术运算优先级:算术运算关系运算关系运算逻辑运算逻辑运算关系表达式不能比较逻辑型数据关系表达

66、式不能比较逻辑型数据第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础Yn=True若若Yn为布尔型,为布尔型,此时此时“=”是赋值语句,不是关系运算符等于是赋值语句,不是关系运算符等于PrintYn=True此时此时“=”是关系运算符等于,不是赋值语句是关系运算符等于,不是赋值语句6363三、运算符和表达式三、运算符和表达式5、运算符优先级、运算符优先级括括号号函函数数算算术术运运算算字字符符串串运运算算关关系系运运算算逻逻辑辑运运算算同级从左到右运算同级从左到右运算第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计

67、基础高高低低高高低低高高低低6464三、运算符和表达式三、运算符和表达式第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础真题:设真题:设a=5,b=4,c=3,d=2,下列表达式的值是下列表达式的值是32*bOra=cAndbcOrcdA)1B)TrueC)FalseD)2真题:设真题:设a=5,b=4,c=3,d=2,下列表达式的值是下列表达式的值是32*bOra=cAndbcOrcdA)1B)TrueC)FalseD)2真题:设真题:设a=2,b=3,c=4,d=5,下列表达式的值是()。下列表达式的值是()。Nota=cOr4*c=b2Andba

68、+cA)-1B)1C)TrueD)False真题:设真题:设a=2,b=3,c=4,d=5,下列表达式的值是()。下列表达式的值是()。Nota=cOr4*c=b2Andba+cA)-1B)1C)TrueD)False写出写出5x10的的VB表达式表达式。写出写出5x=5Andx10写出表示写出表示y是是3或或5的倍数的的倍数的VB表达式。表达式。写出表示写出表示y是是3或或5的倍数的的倍数的VB表达式。表达式。xMod3=0OrxMod5=06565第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础一、基本数据类型一、基本数据类型二、变量与常量二、变量

69、与常量三、运算符和表达式三、运算符和表达式四、常用内部函数四、常用内部函数五、语句五、语句6666四、常用内部函数四、常用内部函数函数类型:内部函数函数类型:内部函数(标准函数标准函数)、用户定义函数、用户定义函数VB内内置置函函数数:数数学学运运算算函函数数、字字符符串串函函数数、判判断断函函数数、日日期期和和时时间间函函数数、随随即即函函数数、格格式式输输出出函函数。数。VB内置函数公用内置函数公用第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础区别于区别于C语言语言pVB中内置函数可直接使用;中内置函数可直接使用;C中,应连接中,应连接math.

70、h头文件头文件6767四、常用内部函数四、常用内部函数1、数学函数、数学函数第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础6868四、常用内部函数四、常用内部函数2、字符串函数、字符串函数第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础6969四、常用内部函数四、常用内部函数2、字符串函数、字符串函数字符串的编码方案字符串的编码方案ANSI方方式式:以以字字节节为为存存储储单单位位,一一个个西西文文字字符符占占用用1个个字字节节(ASCII),一一个个汉汉字字占占用用2个个字字节节(双双字字节编码节编码)。U

71、niCode方方式式(VB4.0以以后后):以以字字为为存存储储单单位位,西西文文字字符符和和汉汉字字统统一一进进行行编编码码,一一个个英英文文字字符符和和一一个汉字都看作一个字符,均占用个汉字都看作一个字符,均占用2个字节。个字节。第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础PrivateSubForm_Click()DimsAsStrings=“Vbasic程序设计程序设计”Printlen(s)输出输出10PrintlenB(s)输出输出20PrintLeft(s,8)输出输出“Vbasic程序程序”PrintLeftB(s,8)输出输出“V

72、bas”EndSubp原函数名后加原函数名后加B,可兼容,可兼容ANSI方式方式7070四、常用内部函数四、常用内部函数3、日期和时间函数、日期和时间函数日日期期和和时时间间函函数数使使用用程程序序能能向向用用户户显显示示日日期期和和时时间间,提提供供某某个个事事件件何何时时发发生生及及持持续续时时间间长长短短的的信信息。息。第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础p区别于区别于WeekDayName(),一个返回星期几,一个返回星期几,为数值型,一个返回星期几的中文名称为数值型,一个返回星期几的中文名称7171四、常用内部函数四、常用内部函数

73、3、日期和时间函数、日期和时间函数日日期期和和时时间间函函数数参参数数为为数数值值表表达达式式时时,表表示示距距1899年年12月月30日前或后的天数日前或后的天数DateDiff()函数函数DateDiff(“日期单位日期单位”,日期日期1,日期日期2)该该函函数数返返回回以以“日日期期单单位位”为为准准的的日日期期1与与日日期期2之之间间的的时时间间间间隔隔。日日期期单单位位参参数数的的具具体体表表示示形形式式,该参数必须加双引号,该参数必须加双引号.第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础7272四、常用内部函数四、常用内部函数3、日期和

74、时间函数、日期和时间函数DateDiff()函数函数为为了了计计算算日日期期1与与日日期期2相相差差的的天天数数,可可以以使使用用“一年的天数一年的天数”(y)或或“日日”(d)。当当使使用用“一一周周的的天天数数”(w)时时,函函数数返返回回两两日日期期间间的的周周数数。如如果果日日期期1是是星星期期一一,DateDiff计计算算到到日日期期2为为止止的的星星期期一一的的个个数数。这这个个数数包包含含日日期期2但但不包含日期不包含日期1。如如果果使使用用的的是是“星星期期”(ww),则则函函数数返返回回日日期期1与与日日期期2之之间间星星期期日日的的个个数数。这这个个数数包包含含日日期期2但

75、但不包含日期不包含日期1。第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础DateDiff(“d”,#1-1-2001#,#2002-1-1#)的值是的值是365DateDiff(“h”,#1-1-2001#,#2002-1-1#)的值是的值是8760DateDiff(“m”,#1-1-2001#,#2002-1-1#)的值是的值是12DateDiff(“q”,#1-1-2001#,#2002-1-1#)的值是的值是47373四、常用内部函数四、常用内部函数3、日期和时间函数、日期和时间函数DateDiff()函数函数返返回回包包含含一一个个日日期期的

76、的Variant(Date),这这一一日日期期加加上上了了一一段段时时间间间间隔隔。DateAdd(间间隔隔单单位位,增增减减量量,原日期变量原日期变量)第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础7474四、常用内部函数四、常用内部函数4、格式输出函数、格式输出函数使数值、日期或字符型数据按指定的格式输出使数值、日期或字符型数据按指定的格式输出格式输出函数返回变体型的值格式输出函数返回变体型的值第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础Format(,)p表达式可以是数值、日期、表达式可以是数值、日

77、期、字符字符p格式字符串是一个字符串常格式字符串是一个字符串常量或变量,由专门的格式说明量或变量,由专门的格式说明符组成符组成p格式说明符决定表达式的格格式说明符决定表达式的格式和长度式和长度p格式说明符为字符串常量时,格式说明符为字符串常量时,放在双引号内放在双引号内7575四、常用内部函数四、常用内部函数4、格式输出函数、格式输出函数第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础7676四、常用内部函数四、常用内部函数4、格式输出函数、格式输出函数数值型格式说明符数值型格式说明符第二章第二章 Visual Basic Visual Basic 程

78、序设计基础程序设计基础7777四、常用内部函数四、常用内部函数4、格式输出函数、格式输出函数日期型格式说明符日期型格式说明符第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础7878四、常用内部函数四、常用内部函数4、格式输出函数、格式输出函数字符型格式说明符字符型格式说明符第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础7979四、常用内部函数四、常用内部函数4、格式输出函数、格式输出函数第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础PrintFormat(2.718

79、28,#.#)PrintFormat(2.71828,00000.00)PrintFormat(271828,$#,#,#.#)PrintFormat(0.18,#.#%)PrintFormat(0.18,0.000E+00)PrintFormat(Time,ttttt)PrintFormat(Date,dddddd)8080四、常用内部函数四、常用内部函数5、随机数语句和函数、随机数语句和函数Rnd(N):可以可以0,1)单精度随机数单精度随机数.Randomize(N):该该语语句句要要用用在在Rnd函函数数之之前前,不不选选参参数数N时时,则则以以系系统统计计时时器器返返回回的的值值作作

80、为为新新的的“种子种子”若用若用Rnd函数产生函数产生A,B之间的整数之间的整数,可用公式可用公式:Int(Rnd*(B-A+1)+A)第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础若想得到若想得到10,99之间的两位随机整数之间的两位随机整数(包括包括10和和99),则用公式则用公式:Int(Rnd*(99-10+1)+10)获得获得.8181四、常用内部函数四、常用内部函数5、随机数语句和函数、随机数语句和函数例例:谁去打开水谁去打开水?第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础PrivateSub

81、Command1_Click()Randomizetemp!=Rnd()PrintInt(temp!*10*0.8);“号去吧号去吧EndSub8282四、常用内部函数四、常用内部函数6、数据类型转换函数、数据类型转换函数每每个个类类型型转转换换函函数数可可强强制制将将一一个个表表达达式式转转换换为为特特定的数据类型定的数据类型第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础8383四、常用内部函数四、常用内部函数6、数据类型转换函数、数据类型转换函数如如果果传传递递给给函函数数的的参参数数超超过过转转换换目目标标数数据据类类型型的的范围,报错范围,报

82、错LongInteger()如如 果果 需需 知知 VB正正 使使 用用 哪哪 种种 变变 量量 类类 型型 , 可可 使使 用用VarType函数函数第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础a=#2002-5-20#:PrintVarType(a)结果为结果为7b=False:PrintVarType(b)结果为结果为118484四、常用内部函数四、常用内部函数7、Shell函数函数Shell函函数数可可以以调调用用(执执行行)磁磁盘盘上上已已保保存存的的命命令令文文件件.所所谓谓命命令令文文件件就就是是可可执执行行文文件件。其其扩扩展展名名

83、必必须是须是.Com、.Exe、.Bat。第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础Shell(“命令文件名命令文件名”,窗体模式窗体模式)p必须是全名,必须是全名,包括盘符、路径、主文件名、包括盘符、路径、主文件名、扩展名扩展名p窗体模式窗体模式是可选项,取不同是可选项,取不同的值,打开的窗体模式不同的值,打开的窗体模式不同8585第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础一、基本数据类型一、基本数据类型二、变量与常量二、变量与常量三、运算符和表达式三、运算符和表达式四、常用内部函数四、常用内部函

84、数五、语句五、语句8686五、语句五、语句1、程序语句、程序语句每个语句都以每个语句都以Enter键结束键结束2、语句编写规则、语句编写规则自动语法检查自动语法检查如如没没有有自自动动语语法法检检查查,可可【工工具具】“选选项项”“编辑器编辑器”自动语法检查自动语法检查格式化处理格式化处理复合语句行和语句的续行复合语句行和语句的续行在在同同一一语语句句行行上上,可可以以书书写写多多条条语语句句,用用“:”分分割;割;一一个个单单行行语语句句可可以以分分为为若若干干行行书书写写,加加续续行行符符“_”(续续行行符符前前至至少少加加一一个个空空格格,续续行行符符只只可可位位于行尾于行尾);一行最多

85、允许书写一行最多允许书写1023个字符个字符第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础区别于区别于C语言语言pVB中,每个语句都以中,每个语句都以Enter键结束;键结束;C中,中,以以“;”结束结束8787五、语句五、语句2、语句编写规则、语句编写规则VB代码不区分字母的大小写代码不区分字母的大小写对对于于用用户户自自定定义义的的变变量量、过过程程名名,VB以以第第一一次次定定义义的的为为准准,以以后后输输入入的的形形同同的的变变量量、过过程程名名向向第第一次输入的形式转换;一次输入的形式转换;WindowsAPI函函数数或或第第三三方方的的D

86、LL中中的的函函数数名名区区分大小写。分大小写。注释语句注释语句以以Rem开头;开头;以以开头开头缩排格式缩排格式第二章第二章 Visual Basic Visual Basic 程序设计基础程序设计基础区别于区别于C语言语言pVB中,以中,以Rem开头或开头或“”开头表示注释;开头表示注释;C中,注释用中,注释用/*/或或/8888测绘测绘VBVB语言程序设计语言程序设计第三章第三章90第三章第三章 Visual Basic Visual Basic 可视化编程可视化编程一、可视化的基本概念一、可视化的基本概念二、窗体、控件、代码窗口二、窗体、控件、代码窗口三、可视化编程的一般步骤三、可视化

87、编程的一般步骤91一、可视化的基本概念一、可视化的基本概念1、对象、对象VB面面 向向 对对 象象 程程 序序 设设 计计 , 程程 序序 的的 核核 心心 是是 对对 象象(Object)预定义对象预定义对象(控件对象控件对象)、自定义对象、自定义对象第三章第三章 Visual Basic Visual Basic 可视化编程可视化编程92一、可视化的基本概念一、可视化的基本概念2、对象三要素、对象三要素事件:对象的响应事件:对象的响应属性:对象的性质属性:对象的性质方法:对象的动作方法:对象的动作第三章第三章 Visual Basic Visual Basic 可视化编程可视化编程93一、

88、可视化的基本概念一、可视化的基本概念2、对象三要素、对象三要素属性(属性(Property)属性属性:描述和反映对象特征的参数。描述和反映对象特征的参数。设置对象的属性设置对象的属性1)预设法:使用属性窗口,在设计状态设置属性)预设法:使用属性窗口,在设计状态设置属性2)现设法:通过赋值语句,在运行状态设置属性)现设法:通过赋值语句,在运行状态设置属性每每个个对对象象的的属属性性都都有有其其缺缺省省值值,我我们们只只按按需需要要对对其其中中的一些进行设置的一些进行设置对象名象名.属性名属性属性名属性值Form1.Caption=“VisualBasic”Form1.Visual=“True”第

89、三章第三章 Visual Basic Visual Basic 可视化编程可视化编程94一、可视化的基本概念一、可视化的基本概念2、对象三要素、对象三要素事件事件(Event)、事件过程、事件过程(EventProcedure)事件事件:对象所要完成的任务,对象响应的动作。对象所要完成的任务,对象响应的动作。VB中中:单单击击事事件件(Click),装装载载事事件件(Load),鼠鼠标标移移动动(MouseMove)事件等。事件等。对对象象与与对对象象之之间间,对对象象与与系系统统之之间间及及对对象象与与程程序序之之间间的通信都是通过事件进行的。的通信都是通过事件进行的。事事件件过过程程:附附

90、在在对对象象上上的的程程序序代代码码,是是事事件件的的处处理理过过程。程。事件过程的一般编写格式事件过程的一般编写格式:Sub对象名事件名对象名事件名(参数列表参数列表)(事件过程代码事件过程代码)EndSub第三章第三章 Visual Basic Visual Basic 可视化编程可视化编程95一、可视化的基本概念一、可视化的基本概念2、对象三要素、对象三要素事件驱动事件驱动事事件件过过程程要要经经过过事事件件的的触触发发才才会会被被执执行行,这这种种动动作作模模式式 称称 为为 事事 件件 驱驱 动动 程程 序序 模模 式式 (EventDrivenProgrammingModel)事件

91、控制整个程序的执行流程事件控制整个程序的执行流程第三章第三章 Visual Basic Visual Basic 可视化编程可视化编程96一、可视化的基本概念一、可视化的基本概念2、对象三要素、对象三要素方法方法(Method)方法方法:对象要执行的动作。对象要执行的动作。用用来来完完成成某某种种特特定定的的功功能能,是是VB的的一一种种专专用用子子程程序(函数或过程)。序(函数或过程)。与与事事件件过过程程类类似似,但但有有区区别别,不不能能响响应应某某个个事事件件,而而是是完完成成某某个个功功能能,其其实实现现步步骤骤和和细细节节用用户户既既看看不不到到,也也不不能能修修改改,用用户户能能

92、做做的的工工作作就就是是按按照照约约定直接调用它们。定直接调用它们。方方法法只只能能在在代代码码中中改改变变,其其用用法法依依赖赖于于方方法法所所需需的的 参参 数数 个个 数数 及及 是是 否否 具具 有有 返返 回回 值值对象象.方法方法参数列表参数列表Form1.Print“欢迎使用迎使用测量平差量平差计算系算系统!”第三章第三章 Visual Basic Visual Basic 可视化编程可视化编程97二、窗体、控件、代码窗口二、窗体、控件、代码窗口1、窗体对象、窗体对象各种控件对象必须建立在窗体上各种控件对象必须建立在窗体上一个窗体对应一个窗体模块一个窗体对应一个窗体模块第三章第三

93、章 Visual Basic Visual Basic 可视化编程可视化编程98二、窗体、控件、代码窗口二、窗体、控件、代码窗口2、控件、控件程程序序员员使使用用不不同同的的控控件件进进行行组组合合,并并设设置置内内部部联联系系VB中,控件是预先定义好的可直接使用的对象中,控件是预先定义好的可直接使用的对象每个控件有各自的属性、事件和方法每个控件有各自的属性、事件和方法控件的画法控件的画法先先单单击击控控件件工工具具箱箱上上的的某某个个控控件件,然然后后使使用用鼠鼠标标拖拖动动的的方方法法将将该该控控件件在在窗窗体体表表面面上上画画出出来来(控控件件大小和位置随意大小和位置随意)双双击击控控件

94、件工工具具箱箱上上的的某某一一个个控控件件,该该控控件件对对象象就就会自动出现在窗体中央,其大小是默认的会自动出现在窗体中央,其大小是默认的图图中中左左上上角角的的箭箭头头不不是是控控件件,单单击击它它可可以以把把鼠鼠标标指针由其他形状变为箭头形状。指针由其他形状变为箭头形状。第三章第三章 Visual Basic Visual Basic 可视化编程可视化编程99二、窗体、控件、代码窗口二、窗体、控件、代码窗口2、控件、控件控件的缩放和移动控件的缩放和移动当前控件:处于活动的当前控件:处于活动的缩放和移动缩放和移动直接拖动该表大小直接拖动该表大小通过属性改变大小通过属性改变大小第三章第三章

95、Visual Basic Visual Basic 可视化编程可视化编程100二、窗体、控件、代码窗口二、窗体、控件、代码窗口2、控件、控件控件的复制和删除控件的复制和删除给控件起相同的名称给控件起相同的名称将现有的控件复制并粘贴到窗体等上面将现有的控件复制并粘贴到窗体等上面将控件的将控件的Index属性设置为非属性设置为非Null数值数值控件的复制和删除控件的复制和删除选中选中-删除删除第三章第三章 Visual Basic Visual Basic 可视化编程可视化编程101二、窗体、控件、代码窗口二、窗体、控件、代码窗口2、控件、控件控件布局控件布局(排列方式、对齐方式排列方式、对齐方式

96、)【格式】【格式】普通方法普通方法(Shift)多控件格式操作以最后选中的对象为准多控件格式操作以最后选中的对象为准第三章第三章 Visual Basic Visual Basic 可视化编程可视化编程102二、窗体、控件、代码窗口二、窗体、控件、代码窗口2、代码窗口、代码窗口打开代码窗口打开代码窗口双击窗体任何位置双击窗体任何位置单击右键单击右键“查看代码查看代码”工程窗口工程窗口查看代码查看代码【视图】【视图】代码窗口代码窗口代码窗口组成代码窗口组成对象列表框对象列表框对象列表框对象列表框代码区代码区代码区代码区事件列表框事件列表框事件列表框事件列表框过程查看钮过程查看钮过程查看钮过程查看

97、钮全模块查看钮全模块查看钮全模块查看钮全模块查看钮第三章第三章 Visual Basic Visual Basic 可视化编程可视化编程103三、可视化编程的一般步骤三、可视化编程的一般步骤1、可视化编程的一般步骤、可视化编程的一般步骤建立用户界面建立用户界面:由窗体和控件组成由窗体和控件组成窗体是应用程序最终用户界面窗体是应用程序最终用户界面设置属性设置属性编写代码编写代码第三章第三章 Visual Basic Visual Basic 可视化编程可视化编程104三、可视化编程的一般步骤三、可视化编程的一般步骤2、加法计算器、加法计算器第三章第三章 Visual Basic Visual B

98、asic 可视化编程可视化编程测绘测绘VBVB语言程序设计语言程序设计第四章第四章105105第四章第四章 顺序结构程序设计顺序结构程序设计一、顺序结构程序的概念一、顺序结构程序的概念二、数据输出二、数据输出三、常用的基本语句三、常用的基本语句四、利用文本框输入数据四、利用文本框输入数据五、使用对话框五、使用对话框106106第四章第四章 顺序结构程序设计顺序结构程序设计一、顺序结构程序的概念一、顺序结构程序的概念VB虽虽采采用用事事件件驱驱动动方方式式调调用用子子过过程程,但但对对于于具具体体过过程本身,仍用结构化方法。程本身,仍用结构化方法。三种基本结构化程序三种基本结构化程序顺顺序序结结

99、构构:线线性性结结构构,如如没没有有控控制制流流程程语语句句,程程序序自上而下执行自上而下执行选择结构选择结构循环结构循环结构107107第四章第四章 顺序结构程序设计顺序结构程序设计二、数据输出二、数据输出1、直接输出到窗体、直接输出到窗体Print方法方法对象名对象名.PrintSpc(n)|Tab(n)1,|;Print“TYUT”输出到窗体输出到窗体Picutre1.Print“TYUT”输出到图片框输出到图片框Printer.Print“TYUT”输出到打印机输出到打印机108108第四章第四章 顺序结构程序设计顺序结构程序设计二、数据输出二、数据输出1、直接输出到窗体、直接输出到窗

100、体Print方法方法Print方方法法具具有有计计算算和和显显示示双双重重功功能能,表表达达式式可可以以是是数值表达式或字符串数值表达式或字符串表表达达式式列列表表开开始始打打印印的的位位置置由由对对象象的的CurrentX和和CurrentY属性决定,默认为左上角属性决定,默认为左上角x=1:y=2PrintPicture1.CurrentXPrintPicture1.CurrentYPicture1.CurrentX=200Picture1.CurrentY=200PrintPicture1.CurrentXPrintPicture1.CurrentYPicture1.Printx+y=;

101、x+y109109第四章第四章 顺序结构程序设计顺序结构程序设计二、数据输出二、数据输出1、直接输出到窗体、直接输出到窗体与与Print方法有关的函数方法有关的函数Tab函函数数:定定位位于于第第n列列(从从对对象象界界面面最最左左端端第第1列列开开始始计算的第计算的第n列列).格式格式Tab(n)(1)如如果果当当前前的的显显示示位位置置已已超超出出n,则则自自动动跳跳到到下下一一输输出行上等于出行上等于n的列的列(2)当当n大大于于行行的的宽宽度度时时,显显示示位位置置为为“nMod行行宽宽”(3)如果如果n1,则把输出位置移到第一列,则把输出位置移到第一列(4)当当在在一一个个Print

102、方方法法中中有有多多个个Tab函函数数时时,每每个个Tab函数对应一个输出项,各输出项之间用分号隔开函数对应一个输出项,各输出项之间用分号隔开PrintTab(2);“学号学号”;Tab(11);姓名姓名“;Tab(21);成绩成绩学号学号姓名姓名成绩成绩1个汉字占个汉字占2个位置个位置110110第四章第四章 顺序结构程序设计顺序结构程序设计二、数据输出二、数据输出1、直接输出到窗体、直接输出到窗体与与Print方法有关的函数方法有关的函数Spc函数函数:表示输出时插入表示输出时插入n个空格个空格(1)从当前打印位置开始,允许重复使用从当前打印位置开始,允许重复使用(2)当当打打印印不不同同

103、大大小小的的字字体体时时,用用此此函函数数打打印印的的空空格格字字符符的的宽宽度度为为所所有有字字符符的的平平均均宽宽度度(单单位位为为磅磅)Print学号学号;Spc(2);姓名姓名;Spc(5);成绩成绩学号学号姓名姓名成绩成绩111111第四章第四章 顺序结构程序设计顺序结构程序设计二、数据输出二、数据输出1、直接输出到窗体、直接输出到窗体与与Print方法有关的函数方法有关的函数Spc函数、函数、Tab函数函数:(1)可结合使用,可相互替换可结合使用,可相互替换(2)Tab函函数数从从对对象象的的左左端端开开始始计计数数,Spc函函数数只只表示两个输出项之间的间隔表示两个输出项之间的间

104、隔112112第四章第四章 顺序结构程序设计顺序结构程序设计二、数据输出二、数据输出1、直接输出到窗体、直接输出到窗体使用位置属性和字体属性使用位置属性和字体属性位置属性位置属性:横坐标横坐标(CurrentX)和纵坐标和纵坐标(CurrentY)(1)坐标原点坐标原点(0,0)在对象的左上角在对象的左上角(2)坐标轴刻度单位为缇坐标轴刻度单位为缇(Twip)Y YX X (CurrentX, CurrentY) 当前位置当前位置113113第四章第四章 顺序结构程序设计顺序结构程序设计二、数据输出二、数据输出1、直接输出到窗体、直接输出到窗体使用位置属性和字体属性使用位置属性和字体属性字体属

105、性字体属性:114114第四章第四章 顺序结构程序设计顺序结构程序设计二、数据输出二、数据输出1、直接输出到窗体、直接输出到窗体Cls方法方法用用来来清清除除由由Print方方法法在在窗窗体体或或图图片片框框中中显显示示的的文文本本或者使用绘图方法在窗体或图片框中显示的图形。或者使用绘图方法在窗体或图片框中显示的图形。在在设设计计时时在在窗窗体体中中使使用用Picture属属性性设设置置的的背背景景图图形形不受不受Cls方法的控制方法的控制Cls方方法法使使用用后后,CurrentX和和CurrentY属属性性均均被被设设置为置为0对象名对象名.Cls115115第四章第四章 顺序结构程序设计

106、顺序结构程序设计二、数据输出二、数据输出2、使用标签控件输出、使用标签控件输出标签标签(Label)用于显示用于显示(输出输出)文本信息,不能作为输入信息的界面文本信息,不能作为输入信息的界面标标签签控控件件的的内内容容只只能能用用Caption属属性性设设置置或或修修改改,不不能能直接编辑直接编辑Label主主要要用用来来显显示示比比较较固固定定的的提提示示性性信信息息,经经常常用用于于标注不具有标注不具有Caption属性的控件属性的控件116116第四章第四章 顺序结构程序设计顺序结构程序设计二、数据输出二、数据输出2、使用标签控件输出、使用标签控件输出标签标签(Label)的常用属性的

107、常用属性Caption属属性性:用用于于在在标标签签中中显显示示文文本本,默默认认情情况况下下,Caption属属性性的的Label控控件件中中唯唯一一的的可可见见部部分分。允允许许文本的长度最多为文本的长度最多为1024个字符个字符BorderStyle属性属性:设置边界样式,取值为设置边界样式,取值为(1)0-None(无边界线无边界线)(默认情况默认情况)(2)1-FixedSingle(固定单线框固定单线框)BackColor属性、属性、ForeColor属性、属性、Font属性属性:117117第四章第四章 顺序结构程序设计顺序结构程序设计三、常用基本语句三、常用基本语句1、赋值语句

108、、赋值语句将指定的值赋给某个变量或对象的某个属性将指定的值赋给某个变量或对象的某个属性Let通常省略通常省略名称名称:变量或属性的名称变量或属性的名称表表达达式式:算算数数表表达达式式、字字符符串串表表达达式式、关关系系型型表表达达式式、逻逻辑辑表表达达式式。表表达达式式中中的的变变量量必必须须是是赋赋过过值值的的;类类型型与与变变量量名名类类型型一一致致;当当类类型型相相同同,精精度度不不同同时时,强制转换为强制转换为=左边的精度。左边的精度。赋值语句先运算,后赋值赋值语句先运算,后赋值Let=118118第四章第四章 顺序结构程序设计顺序结构程序设计三、常用基本语句三、常用基本语句2、卸载

109、对象语句、卸载对象语句当当要要结结束束应应用用程程序序,或或从从内内存存中中卸卸载载窗窗体体,或或从从内内存存中卸载某种控件时,使用卸载对象语句中卸载某种控件时,使用卸载对象语句:Unload对对象象名名:要要卸卸载载的的窗窗体体对对象象或或控控件件的的名名称称,可可用用Me来来表示当前所在的窗体对象表示当前所在的窗体对象窗窗体体卸卸载载前前,发发生生QueryUnload(窗窗体体列列队队关关闭闭)事事件件,然后是然后是Unload事件事件任任一一事事件件过过程程代代码码中中设设置置Cancel参参数数为为True可可防防止止窗窗体被卸载体被卸载Unload119119第四章第四章 顺序结构

110、程序设计顺序结构程序设计三、常用基本语句三、常用基本语句3、注释语句、注释语句Rem可注释任何文本可注释任何文本pRem后加一空格后加一空格p如在语句行后,必须在前加冒号如在语句行后,必须在前加冒号120120第四章第四章 顺序结构程序设计顺序结构程序设计四、利用文本框输入数据四、利用文本框输入数据1、文本框控件、文本框控件:TextBoxTextBox控控件件也也称称作作编编辑辑字字段段或或编编辑辑控控件件,可可以以在在程程序序运运行行过过程程中中接接收收数数据据(字字符符型型),也也可可以以用用来来显显示示程程序的运行结果序的运行结果文本框的常用属性文本框的常用属性Text属性属性:表示文

111、本框中的文本内容表示文本框中的文本内容Locked属性属性:决定控件运行时是否可编辑决定控件运行时是否可编辑(1)属性值为属性值为True:表示不可编辑表示不可编辑(2)属性值为属性值为False:表示可编辑表示可编辑(默认值默认值)121121第四章第四章 顺序结构程序设计顺序结构程序设计四、利用文本框输入数据四、利用文本框输入数据1、文本框控件、文本框控件:TextBox文本框的常用属性文本框的常用属性MultiLine属性属性:设定设定Text字符串中是否接收换行符字符串中是否接收换行符此属性只能在属性窗口更改此属性只能在属性窗口更改(1)属属性性值值为为False:文文本本框框中中的的

112、字字符符只只能能在在一一行行中中显显示示(默认值默认值)(2)属属性性值值为为True:文文本本框框中中的的字字符符可可以以多多行行显显示示。设设计计时时,在在属属性性窗窗口口中中直直接接写写入入文文本本,按按回回车车键键则则换换行行;运运行行时时,用用赋赋值值语语句句修修改改Text属属性性,加加入入回回车车(Chr(13)、换行符、换行符(Chr(10)换行。换行。Text1.Text=a&vbCrLf&b&Chr(13)&Chr(10)&c122122第四章第四章 顺序结构程序设计顺序结构程序设计四、利用文本框输入数据四、利用文本框输入数据1、文本框控件、文本框控件:TextBox文本框

113、的常用属性文本框的常用属性ScrollBars属属性性:决决定定是是否否为为文文本本框框加加滚滚动动条条。当当文文本本过过长长,可可能能超超过过文文本本输输入入/显显示示边边界界时时,应应为为该该控控件件添加滚动条。添加滚动条。此此属属性性只只能能在在属属性性窗窗口口更更改改,当当MultiLine属属性性为为True时,此属性才有效时,此属性才有效(1)0-None(默认值默认值):无滚动条无滚动条(默认值默认值)(2)1-Horizontal:有水平滚动条有水平滚动条(3)2-Vertical:有垂直滚动条有垂直滚动条(4)3-Both:有水平和垂直两种滚动条有水平和垂直两种滚动条1231

114、23第四章第四章 顺序结构程序设计顺序结构程序设计四、利用文本框输入数据四、利用文本框输入数据1、文本框控件、文本框控件:TextBox文本框的常用属性文本框的常用属性PasswordChar属属性性:设设定定输输入入文文本本的的特特殊殊显显示示字字符符,在设计密码程序时非常有效。在设计密码程序时非常有效。其值只能为其值只能为1个字符,默认值为空个字符,默认值为空当当MultiLine属属性性为为False且且PasswordChar值值为为非非空空格格符时,该属性设置有效。符时,该属性设置有效。无无论论用用户户按按下下了了什什么么字字符符,在在输输入入框框中中一一律律是是用用Password

115、Char值显示值显示124124第四章第四章 顺序结构程序设计顺序结构程序设计四、利用文本框输入数据四、利用文本框输入数据1、文本框控件、文本框控件文本框控件显示文本文本框控件显示文本在设计时设定在设计时设定Text属性属性在运行时通过代码在运行时通过代码Text属性赋值属性赋值在运行时由用户输入在运行时由用户输入通过读通过读Text属性能在运行时检索文本框的当前内容属性能在运行时检索文本框的当前内容文文本本框框的的Locked属属性性设设为为True或或Enabled属属性性设设为为False,文本框文本框Text属性在运行时则不可更改属性在运行时则不可更改文本框控件名文本框控件名.Text

116、=125125第四章第四章 顺序结构程序设计顺序结构程序设计四、利用文本框输入数据四、利用文本框输入数据2、焦点与、焦点与Tab键序键序焦点焦点:对象接收鼠标或键盘输入的能力。对象接收鼠标或键盘输入的能力。当对象具有焦点时,可接收用户的输入。当对象具有焦点时,可接收用户的输入。当当对对象象的的Visible和和Enabled属属性性为为True时时,对对象象才才能能接接收焦点。收焦点。Visible属属性性决决定定对对象象在在屏屏幕幕上上是是否否可可见见;Enabled属属性性允许对象响应由用户产生的事件允许对象响应由用户产生的事件Frame、Label、Menu、Line、Image、Tim

117、er等等控控件件不能接收焦点不能接收焦点126126第四章第四章 顺序结构程序设计顺序结构程序设计四、利用文本框输入数据四、利用文本框输入数据2、焦点与、焦点与Tab键序键序对对象象得得到到焦焦点点产产生生GotFocus事事件件,失失去去焦焦点点产产生生LostFocus事件事件利用利用SetFocus方法设置焦点方法设置焦点运行时,用鼠标选定对象运行时,用鼠标选定对象运运行行时时,按按快快捷捷键键选选定定对对象象(按按Tab键键或或Shift+Tab键键在在当前窗体的各对象之间切换焦点当前窗体的各对象之间切换焦点)在代码中用在代码中用SetFocus方法来设置焦点方法来设置焦点对象名对象名

118、.SetFocus127127第四章第四章 顺序结构程序设计顺序结构程序设计四、利用文本框输入数据四、利用文本框输入数据2、焦点与、焦点与Tab键序键序Tab键键序序:是是指指用用户户按按Tab键键时时,焦焦点点在在控控件件间间移移动动的的顺序顺序默认状态,默认状态,Tab键序与建立这些控件的顺序相同键序与建立这些控件的顺序相同TabIndex属性属性:决定控件接收焦点的顺序决定控件接收焦点的顺序运运行行中中,当当Tab键键被被按按下下,焦焦点点根根据据TabIndex属属性性值值所指定的焦点移动顺序移到下一个控件所指定的焦点移动顺序移到下一个控件不不能能获获得得焦焦点点的的控控件件及及无无效

119、效的的和和不不可可见见的的控控件件,不不具具有有TabIndex属属性性,不不在在Tab键键序序中中,按按Tab键键时时这这些些控件被跳过控件被跳过TabStop属属 性性 : 决决 定定 焦焦 点点 是是 否否 能能 停停 在在 该该 控控 件件 上上 。TabStop属属性性为为False,控控件件从从Tab键键序序中中删删除除,但但仍仍保保留留在在实实际际Tab键键序序中中的的位位置置,只只不不过过在在按按Tab键键时时这个控件被跳过。这个控件被跳过。128128第四章第四章 顺序结构程序设计顺序结构程序设计四、利用文本框输入数据四、利用文本框输入数据3、框架控件、框架控件(Frame)

120、框架是一种容器控件框架是一种容器控件容器中的控件可以随容器移动容器中的控件可以随容器移动容容器器中中控控件件的的位位置置属属性性也也是是以以相相对对于于容容器器内内的的位位置置设设置的置的容容器器中中控控件件的的某某些些属属性性(Visible、Enabled等等)受受框框架架的控制的控制129129第四章第四章 顺序结构程序设计顺序结构程序设计四、利用文本框输入数据四、利用文本框输入数据3、框架控件、框架控件(Frame)使用框架控件分组使用框架控件分组用于区分一个控件组,可把几个单选按钮分成组用于区分一个控件组,可把几个单选按钮分成组使用框架控件分组的方法使用框架控件分组的方法先建好框架,

121、再在框架里增加控件先建好框架,再在框架里增加控件将已建好的控件剪切、黏贴到框架内将已建好的控件剪切、黏贴到框架内130130第四章第四章 顺序结构程序设计顺序结构程序设计五、使用对话框五、使用对话框对话框既可以用来显示信息,也可以用于输入信息对话框既可以用来显示信息,也可以用于输入信息VB中能够建立两种预制对话框:输入框和消息框中能够建立两种预制对话框:输入框和消息框使使用用系系统统提提供供的的函函数数(InputBox和和MsgBox),而而不不必必为为对话框另建窗体对话框另建窗体131131第四章第四章 顺序结构程序设计顺序结构程序设计五、使用对话框五、使用对话框1、输入框函数、输入框函数

122、(Inputbox函数函数)Inputbox()的使用的使用信信息息内内容容:必必需需的的。作作为为对对话话框框消消息息出出现现的的字字符符串串表表达达式式。最最大大长长度度大大约约是是1024个个字字符符,由由所所用用字字符符的的宽宽度度决决定定。如如果果信信息息内内容容包包含含多多个个行行,则则可可在在各各行行之之间间用用回回车车符符(Chr(13)、换换行行符符(Chr(10)或或回回车车换行符的组合换行符的组合(Chr(13)&Chr(10)或或vbCrLf来分隔。来分隔。对对话话框框标标题题:可可选选的的。显显示示对对话话框框标标题题栏栏中中的的字字符符串串表表达达式式。如如果果对对

123、话话框框标标题题缺缺省省,则则把把应应用用程程序序名名放放入入标题栏中。标题栏中。默默认认内内容容:可可选选的的。显显示示文文本本框框中中的的字字符符串串表表达达式式,在在没没有有其其它它输输入入时时作作为为缺缺省省值值。如如果果省省略略default,则则文本框为空。文本框为空。变量变量=InputBox(,默认内容默认内容)132132第四章第四章 顺序结构程序设计顺序结构程序设计五、使用对话框五、使用对话框1、输入框函数、输入框函数(Inputbox函数函数)Inputbox()的使用的使用如如果果用用户户单单击击OK或或按按下下Enter,则则InputBox函函数数返返回回文文本本框

124、框中中的的内内容容。如如果果用用户户单单击击Cancel,则则此此函函数返回一个长度为零的字符串数返回一个长度为零的字符串()。如果省略了某些可选项,其间的逗号分隔符不可省略。如果省略了某些可选项,其间的逗号分隔符不可省略。133133第四章第四章 顺序结构程序设计顺序结构程序设计五、使用对话框五、使用对话框1、输入框函数、输入框函数(Inputbox函数函数)例例4-13:鸡鸡兔兔同同笼笼问问题题:鸡鸡有有2只只脚脚,兔兔有有4只只脚脚,如如果果已已知知鸡鸡和和兔兔的的总总头头数数为为h,总总脚脚数数为为f,问问笼笼中中鸡鸡(x)和和兔兔(y)各有多少只各有多少只?134134第四章第四章

125、顺序结构程序设计顺序结构程序设计五、使用对话框五、使用对话框2、消息框函数、消息框函数(MsgBox函数函数)在在对对话话框框中中显显示示消消息息,等等待待用用户户单单击击按按钮钮,并并返返回回一一个个Integer告诉用户单击哪一个按钮。告诉用户单击哪一个按钮。信信息息内内容容:必必需需的的。显显示示在在对对话话框框中中的的消消息息。最最大大长长度度大大约约为为1024个个字字符符,由由所所用用字字符符的的宽宽度度决决定定。如如果果内内容容超超过过一一行行,则则可可以以在在每每一一行行之之间间用用回回车车符符(Chr(13)、换换行行符符(Chr(10)或或是是回回车车与与换换行行符符的的组

126、合组合(Chr(13)&Chr(10)或或vbCrLf将各行分隔开来。将各行分隔开来。变量变量=MsgBox(,)如不需要返回值,变量可省略如不需要返回值,变量可省略135135第四章第四章 顺序结构程序设计顺序结构程序设计五、使用对话框五、使用对话框2、消息框函数、消息框函数(MsgBox函数函数)对对话话框框类类型型:可可选选的的。指指定定显显示示按按钮钮的的数数目目及及形形式式,使使用用的的图图标标样样式式,缺缺省省按按钮钮是是什什么么以以及及消消息息框框的的强强制制回应等。回应等。对对话话框框类类型型,一一般般由由三三个个参参数数组组成成,如如果果省省略略,则则Buttons的缺省值为

127、的缺省值为0。(1)05描述了对话框中显示的按钮的类型与数目;描述了对话框中显示的按钮的类型与数目;(2)16,32,48,64描述了图标的样式;描述了图标的样式;(3)0,256,512说明哪一个按钮是缺省值;说明哪一个按钮是缺省值;(4)将将这这些些数数字字相相加加以以生生成成Buttons参参数数值值的的时时候候,只能由每组值取用一个数字。只能由每组值取用一个数字。(5)这这些些常常数数都都是是 Visual Basic for Applications(VBA)指指定定的的。可可以以在在程程序序代代码码中中使使用用这这些些常常数数名名称,而不必使用实际数值。称,而不必使用实际数值。13

128、6136第四章第四章 顺序结构程序设计顺序结构程序设计五、使用对话框五、使用对话框2、消息框函数、消息框函数(MsgBox函数函数)137137第四章第四章 顺序结构程序设计顺序结构程序设计五、使用对话框五、使用对话框2、消息框函数、消息框函数(MsgBox函数函数)138138第四章第四章 顺序结构程序设计顺序结构程序设计五、使用对话框五、使用对话框2、消息框函数、消息框函数(MsgBox函数函数)139139第四章第四章 顺序结构程序设计顺序结构程序设计五、使用对话框五、使用对话框2、消息框函数、消息框函数(MsgBox函数函数)对对话话框框标标题题:可可选选的的。在在对对话话框框标标题题

129、栏栏中中显显示示的的字字符符串串表表达达式式。如如果果省省略略Title,则则将将应应用用程程序序名名放放在在标标题题栏中。栏中。MsgBox函数的返回值指明在对话框中选择哪一个按钮。函数的返回值指明在对话框中选择哪一个按钮。msg=MsgBox(“请确认输入的数据是否正确请确认输入的数据是否正确!”,3+32+0,“数据检查数据检查”)如不需要返回值,变量可省略如不需要返回值,变量可省略140140第四章第四章 顺序结构程序设计顺序结构程序设计五、使用对话框五、使用对话框例例:编制一账号和密码输入的检验程序。编制一账号和密码输入的检验程序。(1)账账 号号 不不 超超 过过 6位位 数数 字

130、字 ,密密 码码 4位位 字字 符符 (本本 例例 为为“TYUT”)(2)密码输入时屏幕上只显示密码输入时屏幕上只显示“*”(3)输输入入不不正正确确时时显显示示相相关关信信息息.“重重试试”是是清清除除原原输输入入内内容容,焦焦点点定定位位在在原原输输入入的的文文本本框框,再再输输入入;“取取消消”是放弃并终止程序运行是放弃并终止程序运行.141141第四章第四章 顺序结构程序设计顺序结构程序设计五、使用对话框五、使用对话框分析分析:(1)输输入入账账号号的的文文本本框框的的MaxLength属属性性设设置置为为6,使使账账号号不不超超过过6位位数数字字;当当输输入入结结束束时时按按Tab

131、键键,引引发发LostFocus事事件件.判判断断账账号号输输入入的的正正确确性性.出出错错显显示示相相应的信息应的信息.(2)输输入入文文本本框框的的PasswordChar属属性性设设置置为为“*”,并并将将文文本本框框置置为为空空;当当输输入入结结束束时时按按“确确定定”按按钮钮,引引发发Click事事件件,判判断断密密码码输输入入的的正正确确性性.出出错错显显示示相相应应信息信息.142142测绘测绘VBVB语言程序设计语言程序设计第五章第五章143143第五章第五章 选择结构程序设计选择结构程序设计一、一、If语句语句二、多分支条件选择语句二、多分支条件选择语句SelectCase三

132、、计时器控件三、计时器控件四、单选钮和复选钮四、单选钮和复选钮144144一、一、If语句语句1、单行条件语句、单行条件语句条条件件表表达达式式:关关系系表表达达式式、逻逻辑辑表表达达式式、数数值值表表达达式式(非非0为真,为真,0为假为假)操作部分必须是单个语句操作部分必须是单个语句单行格式不用单行格式不用EndIf语句语句IfThenElseIfabThenMax=aElseMax=bIf.ThenIf.Then.Else.第五章第五章 选择结构程序设计选择结构程序设计区别于区别于C语言语言pVB中,条件表达式不用加括号;中,条件表达式不用加括号;C中,中,条件表达式加括号;条件表达式加括

133、号;pVB中,有中,有Then;C中中,没有没有Then;145145一、一、If语句语句2、块结构条件语句、块结构条件语句第五章第五章 选择结构程序设计选择结构程序设计If条件表达式条件表达式Then语句体语句体1Else语句体语句体2EndIfIf条件表达式条件表达式Then语句体语句体EndIf区别于区别于C语言语言pVB中,块结构条件语句之后要有中,块结构条件语句之后要有EndIf;C中,无需中,无需EndIf;146146一、一、If语句语句2、块结构条件语句、块结构条件语句第五章第五章 选择结构程序设计选择结构程序设计If条件表达式条件表达式Then语句体语句体1Else语句体语句

134、体2EndIfIf条件表达式条件表达式Then语句体语句体EndIfIfabThenMax=aEndIfIfabThenMax=aElseMax=bEndIf147147一、一、If语句语句3、条件函数、条件函数IIf():根根据据表表达达式式的的值值,来来返返回回两两部部分分中中的的其其中中一一个个第五章第五章 选择结构程序设计选择结构程序设计IIf(,)当当为真时,返回为真时,返回的值;的值;为假时,返回为假时,返回的值。的值。Max=IIf(ab,a,b)关系表达式、逻辑表达式、数值表关系表达式、逻辑表达式、数值表达式达式(非非0为真,为真,0为假为假)区别于区别于C语言语言pVB中,可

135、使用条件函数中,可使用条件函数IIF();C中,中,可用条件运算符构成条件表达式可用条件运算符构成条件表达式x=?:;pVB的条件函数的条件函数IIF()和和C的条件运算符的条件运算符都可嵌套使用都可嵌套使用148148一、一、If语句语句3、条件函数、条件函数Choose():根据表达式的值,来返回选项列表中的值根据表达式的值,来返回选项列表中的值index:必必选选项项,运运算算结结果果是是一一个个数数值值,界界于于1和和可可选择的项目数之间选择的项目数之间(1)index小小于于1或或大大于于列列出出选选择择项项数数目目时时,函函数数返回返回Null(2)index不不是是整整数数时时,

136、四四舍舍五五入入为为与与其其最最接接近近的整数的整数choice:必选项必选项,Variant表达式表达式不论不论index值为多少,系统均对所有返回值进行计算值为多少,系统均对所有返回值进行计算第五章第五章 选择结构程序设计选择结构程序设计Choose(数字类型变量数字类型变量,值为值为1的返回值的返回值,值为值为2的返回值的返回值值为值为n的返回值的返回值)149149一、一、If语句语句3、条件函数、条件函数Switch():计计算算一一组组表表达达式式列列表表的的值值,返返回回与与表表达达式式列列表表中中最最先先为为True的的表表达达式式所所相相关关的的Variant数数值值或表达式

137、或表达式第五章第五章 选择结构程序设计选择结构程序设计Switch(条条件件表表达达式式1,条条件件表表达达式式1为为True时时的的值值,条条件件表表达达式式2,条条件件表表达达式式2为为True时的值时的值)区别于区别于C语言语言pVB中,可使用条件函数中,可使用条件函数Switch();C中,中,可用可用Switch语句;语句;150150一、一、If语句语句4、If语句的嵌套语句的嵌套If语句的嵌套语句的嵌套:第五章第五章 选择结构程序设计选择结构程序设计If条件条件1ThenIf条件条件2ThenEndIfElseEndIf说明:使用条件语句嵌套说明:使用条件语句嵌套说明:使用条件语

138、句嵌套说明:使用条件语句嵌套时,一定要注意时,一定要注意时,一定要注意时,一定要注意IfIfIfIf与与与与ElseElseElseElse,IfIfIfIf与与与与End IfEnd IfEnd IfEnd If的配的配的配的配对关系。对关系。对关系。对关系。区别于区别于C语言语言pVB中,用中,用IfEndIf标示条件开始、结标示条件开始、结束;束;C中,用中,用标示标示If语句体;语句体;151151一、一、If语句语句4、If语句的嵌套语句的嵌套If语句的嵌套格式语句的嵌套格式ElseIF:第五章第五章 选择结构程序设计选择结构程序设计If条件条件1Then语句块语句块1ElseIf条

139、件条件2Then语句块语句块2ElseIf条件条件3Then语句块语句块3Else语句块语句块nEndIf说明:说明:说明:说明:(1)(1)(1)(1)先测试条件先测试条件先测试条件先测试条件1 1 1 1,如果为,如果为,如果为,如果为假,就依次测试条件假,就依次测试条件假,就依次测试条件假,就依次测试条件2 2 2 2,依此类推,直到找到为依此类推,直到找到为依此类推,直到找到为依此类推,直到找到为真的条件。真的条件。真的条件。真的条件。(2)(2)(2)(2)一旦找到一个为真的条一旦找到一个为真的条一旦找到一个为真的条一旦找到一个为真的条件时,件时,件时,件时,VBVBVBVB会执行相

140、应的会执行相应的会执行相应的会执行相应的语句块,然后执行语句块,然后执行语句块,然后执行语句块,然后执行End End End End IfIfIfIf语句后面的代码。语句后面的代码。语句后面的代码。语句后面的代码。(3)(3)(3)(3)如果所有条件都是假,如果所有条件都是假,如果所有条件都是假,如果所有条件都是假,那么执行那么执行那么执行那么执行ElseElseElseElse后面的语后面的语后面的语后面的语句块句块句块句块n n n n,然后执行,然后执行,然后执行,然后执行End IfEnd IfEnd IfEnd If语句后面的代码。语句后面的代码。语句后面的代码。语句后面的代码。1

141、52152二、多分支条件选择语句二、多分支条件选择语句SelectCase1、SelectCase语句的语法格式语句的语法格式第五章第五章 选择结构程序设计选择结构程序设计SelectCase测试表达式测试表达式Case表达式表表达式表1语句块语句块1Case表达式表表达式表2语句块语句块2.CaseElse语句块语句块nEndSelect说明:说明:说明:说明:(1)(1)(1)(1)多分支选择结构特点多分支选择结构特点多分支选择结构特点多分支选择结构特点: : : : 从多个选择结构中,选从多个选择结构中,选从多个选择结构中,选从多个选择结构中,选择第一个条件为真的路择第一个条件为真的路择

142、第一个条件为真的路择第一个条件为真的路线作为执行的路线。线作为执行的路线。线作为执行的路线。线作为执行的路线。(2) (2) (2) (2) 测试表达式为必需项,测试表达式为必需项,测试表达式为必需项,测试表达式为必需项,可以是任何数值表达式可以是任何数值表达式可以是任何数值表达式可以是任何数值表达式或字符串表达式。或字符串表达式。或字符串表达式。或字符串表达式。(3)(3)(3)(3)先计算表达式的值,然先计算表达式的值,然先计算表达式的值,然先计算表达式的值,然后将该值依次与每个后将该值依次与每个后将该值依次与每个后将该值依次与每个CaseCaseCaseCase的值进行比较,如的值进行比

143、较,如的值进行比较,如的值进行比较,如果该值符合某个果该值符合某个果该值符合某个果该值符合某个CaseCaseCaseCase指指指指定的值条件时,就执行定的值条件时,就执行定的值条件时,就执行定的值条件时,就执行该该该该CaseCaseCaseCase的语句块,然后的语句块,然后的语句块,然后的语句块,然后跳到跳到跳到跳到End SelectEnd SelectEnd SelectEnd Select,从,从,从,从End End End End SelectSelectSelectSelect出口。如果没有出口。如果没有出口。如果没有出口。如果没有相符合的相符合的相符合的相符合的CaseC

144、aseCaseCase值,则执值,则执值,则执值,则执行行行行Case ElseCase ElseCase ElseCase Else中的语句块。中的语句块。中的语句块。中的语句块。区别于区别于C语言语言pC中,中,Switch语句语法语句语法pswitch(表达式表达式)pcase常量常量1:语句:语句1pcase常量常量2:语句:语句2p pcase常量常量n:语句:语句npdefault:语句语句n+1p153153二、多分支条件选择语句二、多分支条件选择语句SelectCase2、SelectCase语句中表达式表的使用说明语句中表达式表的使用说明形形式式1:(可可以以为为数数值值表表

145、达达式式或或字字符符串串表表达达式式)形形式式2:To(用用来来指指定定一一个个值值范范围,小值放在围,小值放在To之前之前)形式形式3:Is(用来指定一个值范围用来指定一个值范围)第五章第五章 选择结构程序设计选择结构程序设计Case3*xCase1To10Case“a”To“d”CaseIs100p使用多个表达式时,表达式和表使用多个表达式时,表达式和表达式之间用达式之间用“,”隔开隔开Case2,4,6Case1To10,100To200Case“A”To“Z”,“a”To“z”CaseIs300CaseIs300 p注意注意Case的顺序的顺序(例例5-10)154154二、多分支条件

146、选择语句二、多分支条件选择语句SelectCase3、示例、示例第五章第五章 选择结构程序设计选择结构程序设计PrivateSubCommand1_Click()DimmAsInteger,nAsInteger,rAsIntegerm=Val(Text1.Text)n=Val(Text2.Text)SelectCasemCaseIs=5,10,11Ifn20Thenr=20Elser=30Case7To9Ifn0AndText1.Text0ThenCommand1.SetFocusEndIfEndSub(5)此段程序使得此段程序使得Text2中按下中按下Enter键后,命令按钮得到焦点键后,命

147、令按钮得到焦点158158三、计时器控件三、计时器控件1、计时器控件、计时器控件(Timer)计计时时器器每每隔隔一一定定的的时时间间间间隔隔自自动动产产生生一一次次Timer事事件件(或或称称报报时时),可可以以根根据据这这个个特特性性来来定定时时控控制制某某些操作,或计时。些操作,或计时。运行时计时器不显示运行时计时器不显示第五章第五章 选择结构程序设计选择结构程序设计159159三、计时器控件三、计时器控件1、计时器控件的主要属性和事件、计时器控件的主要属性和事件Enabled属性属性当当Enabled属属性性值值为为True(默默认认值值)时时,激激活活定定时时器器,开始计时开始计时当

148、当Enabled属属性性值值为为False时时,定定时时器器处处于于休休眠眠状状态态,不计时不计时Interval属性属性该该属属性性表表示示定定时时的的时时间间间间隔隔,以以毫毫秒秒(ms)为为单单位位(即设置为即设置为1000时,时间间隔为时,时间间隔为1秒秒)Interval属性值为属性值为0,则定时器不起作用,则定时器不起作用Interval属性的最大值为属性的最大值为65535Timer事件事件在在控控件件的的Enabled属属性性值值为为True时时,Interval属属性性值值的设定决定了间隔多少时间调用一次的设定决定了间隔多少时间调用一次Timer事件事件第五章第五章 选择结构

149、程序设计选择结构程序设计160160三、计时器控件三、计时器控件2、示例、示例第五章第五章 选择结构程序设计选择结构程序设计PrivateSubCommand1_Click()IfCommand1.Caption=12小时制小时制ThenForm1.Tag=hh:mm:ssAM/PMCommand1.Caption=24小时制小时制ElseForm1.Tag=hh:mm:ssCommand1.Caption=12小时制小时制EndIfEndSubPrivateSubTimer1_Timer()Label1.Caption=Format(Time,Form1.Tag)EndSub161161四、

150、单选钮和复选钮四、单选钮和复选钮1、单选钮控件、单选钮控件(OptionButtion)单单选选钮钮一一般般多多个个构构成成一一组组,同同一一时时刻刻只只能能选选择择同同一一组组中中的一个单选钮,并最多只能选择一个的一个单选钮,并最多只能选择一个对于具有互斥性的答案,一般都采用单选按钮作为选择对于具有互斥性的答案,一般都采用单选按钮作为选择常用属性常用属性Alignment属属性性:决决定定单单选选按按钮钮的的标标题题(Caption属属性性值值)在控件上的位置在控件上的位置(1)Alignment属属性性值值为为0:表表示示左左对对齐齐(LeftJustify),即单选按钮的标题在右边即单选

151、按钮的标题在右边(默认方式默认方式)(2)Alignment属属性性值值为为1:表表示示右右对对齐齐(RightJustify),即单选按钮的标题在左边即单选按钮的标题在左边第五章第五章 选择结构程序设计选择结构程序设计162162四、单选钮和复选钮四、单选钮和复选钮1、单选钮控件、单选钮控件(OptionButtion)常用属性常用属性Value属属性性:设设置置单单选选钮钮在在执执行行时时的的状状态态,使使用用这这个个属属性可以判断哪个按钮被选中性可以判断哪个按钮被选中(1)Value属属性性为为True:表表示示选选中中,运运行行时时该该单单选选钮钮的的圆圈中出现一个黑点圆圈中出现一个黑

152、点(2)Value属属性性为为False(默默认认值值):表表示示未未选选中中,运运行行时时该单选钮的圆圈中没有黑点该单选钮的圆圈中没有黑点Enabled属属性性:将将Enabled属属性性设设为为False,程程序序运运行行时时,此单选按钮显示为浅灰色,表无法选取。此单选按钮显示为浅灰色,表无法选取。第五章第五章 选择结构程序设计选择结构程序设计163163四、单选钮和复选钮四、单选钮和复选钮1、单选钮控件、单选钮控件(OptionButtion)常用属性常用属性Style属性:属性:(1)0-Standard:标准方式标准方式(默认默认)(2)1-Graphical:图图形形方方式式。在在

153、Style属属性性设设置置为为1时时,可可 使使 用用 Picture属属 性性 、 DownPicture属属 性性 、DisabledPicture属性属性第五章第五章 选择结构程序设计选择结构程序设计164164四、单选钮和复选钮四、单选钮和复选钮1、单选钮控件、单选钮控件(OptionButtion)选用单选钮的方法选用单选钮的方法运行时,单击运行时,单击用用Tab键定位,组内使用方向键选择键定位,组内使用方向键选择运行中,用代码运行中,用代码使用在单选钮标题中指定的快捷键使用在单选钮标题中指定的快捷键第五章第五章 选择结构程序设计选择结构程序设计Option1.Value=True1

154、65165四、单选钮和复选钮四、单选钮和复选钮1、单选钮控件、单选钮控件(OptionButtion)第五章第五章 选择结构程序设计选择结构程序设计SelectCaseTrueCaseOption1.Values=PI*r*rLabel4.Caption=Str(s)CaseOption2.Valuel=2*PI*rLabel3.Caption=Str(l)CaseOption3.Values=PI*r*rLabel4.Caption=Str(s)l=2*PI*rLabel3.Caption=Str(l)EndSelect166166四、单选钮和复选钮四、单选钮和复选钮2、复选框控件、复选框控

155、件(CheckBox)一一组组复复选选框框控控件件可可以以提提供供多多个个选选项项,它它们们彼彼此此独独立立工工作作,所所以以用用户户可可以以同同时时选选择择任任意意多多个个选选项项,实实现现一一种种“不定项选择不定项选择”的功能的功能常用属性常用属性Value属属性性:复复选选标标志志,这这是是复复选选框框最最重重要要的的属属性性,它它的值与复选框控件的状态有关的值与复选框控件的状态有关(1)Value属属性性为为0:复复选选框框未未被被选选择择,复复选选框框内内为为空空白白(默认默认)(2)Value属属性性为为1:复复选选框框被被选选择择,复复选选框框内内显显示示一一个个“”(3)Val

156、ue属属性性为为2:复复选选框框内内为为灰灰色色的的“”标标志志,表表示选中,但不允许用户修改它的状态示选中,但不允许用户修改它的状态第五章第五章 选择结构程序设计选择结构程序设计167167四、单选钮和复选钮四、单选钮和复选钮单选钮与复选钮单选钮与复选钮Value属性的比较属性的比较第五章第五章 选择结构程序设计选择结构程序设计168168四、单选钮和复选钮四、单选钮和复选钮2、复选框控件示例、复选框控件示例第五章第五章 选择结构程序设计选择结构程序设计169169第五章第五章 选择结构程序设计选择结构程序设计作业:课后题作业:课后题5.15,5.16 ,5.18,5.21170170测绘测

157、绘VBVB语言程序设计语言程序设计第六章第六章171171第六章第六章 循环结构程序设计循环结构程序设计一、一、ForNext循环语句循环语句二、二、DoLoop循环语句循环语句三、列表框与组合框三、列表框与组合框172172第六章第六章 循环结构程序设计循环结构程序设计一、一、ForNext循环语句循环语句For.Next循循环环主主要要是是用用在在知知道道循循环环次次数数的的情情况况下下,按指明的循环次数来执行循环体部分按指明的循环次数来执行循环体部分For.Next循环语句是计数型控制循环语句是计数型控制173173第六章第六章 循环结构程序设计循环结构程序设计一、一、ForNext循环

158、语句循环语句1、ForNext语句的语法格式语句的语法格式For=ToStep语句组语句组1ExitFor语句组语句组2Next其其中中参参数数:循循环环变变量量、初初始始值值、终终止止值值和和增增量量都都必必须须是是数数值型的变量值型的变量174174第六章第六章 循环结构程序设计循环结构程序设计一、一、ForNext循环语句循环语句1、ForNext语句的语法格式语句的语法格式循环变量、初始值、终止值循环变量、初始值、终止值:必要参数必要参数For语句与语句与Next语句必须成对出现,缺一不可语句必须成对出现,缺一不可For语句必须在语句必须在Next语句之前语句之前For语语句句中中的的

159、循循环环变变量量与与Next语语句句中中的的循循环环变变量量必必须须为同一变量为同一变量如果步长为如果步长为+1,则则“Step1”可省略可省略175175第六章第六章 循环结构程序设计循环结构程序设计一、一、ForNext循环语句循环语句2、ForNext语语句句的的执执行行过程过程1、系系统统将将初初值值赋赋给给循循环环变变量量,并并自自动动记记下下终终值值和和步长。步长。2、检检查查循循环环变变量量的的值值是是否否超超过过终终值值。如如果果超超过过就就结结束束循循环环,执执行行Next后后面面的的语语句句;否否则则,执执行行一次循环体。一次循环体。3、执执行行Next语语句句,将将循循环

160、环变变量量增增加加一一个个步步长长值值再再赋赋给给循循环环变变量量,转转到到步步骤骤2继续执行。继续执行。p当步长为正时当步长为正时,循环变量必须大于循环变量必须大于终值才终止循环终值才终止循环;p当步长为负时当步长为负时,循环变量必须小于循环变量必须小于终值才终止循环终值才终止循环p循环变量超过终值循环变量超过终值,是指沿循环变是指沿循环变量变化的方向超过终值量变化的方向超过终值176176第六章第六章 循环结构程序设计循环结构程序设计一、一、ForNext循环语句循环语句2、ForNext语句的执行过程语句的执行过程Forn=1To10Step3Printn,Nextn第几次循环第几次循环

161、n与终值比较与终值比较执行循环体否执行循环体否1110执行执行2410执行执行3710停止执行停止执行上面程序的执行结果为:上面程序的执行结果为:14710177177第六章第六章 循环结构程序设计循环结构程序设计一、一、ForNext循环语句循环语句3、ForNext循环的循环次数循环的循环次数循环最少执行次数为循环最少执行次数为0次次当当初初值值等等于于终终值值时时,不不管管步步长长是是正正数数还还是是负负数数,均均执行一次循环体执行一次循环体当当循循环环体体内内没没有有对对循循环环变变量量进进行行修修改改时时,循循环环的的次次数数可可以以直直接接从从根根据据循循环环变变量量的的初初值值、

162、终终值值和和步步长长计算出来:计算出来:当步长为零时当步长为零时,循环永不终止循环永不终止循环次数循环次数=Int(终值初值终值初值)/步长步长)+1178178第六章第六章 循环结构程序设计循环结构程序设计一、一、ForNext循环语句循环语句4、ForNext语句使用示例语句使用示例例例6-1设计程序,用设计程序,用ForNext语句语句求求1+2+3+100的值的值PrivateSubCommand1_Click()DimsAsInteger,nAsIntegers=0Forn=1To100s=s+nNextnText1.Text=Str(s)EndSub179179第六章第六章 循环结

163、构程序设计循环结构程序设计一、一、ForNext循环语句循环语句4、ForNext语句使用示例语句使用示例例例6-2输出输出1000以内的所有能被以内的所有能被37整除的自然数整除的自然数PrivateSubCommand1_Click()DimaAsString,nAsIntegera=Forn=1To1000IfnMod37=0Thena=a&Str(n)&vbCrLfEndIfNextnText1.Text=aEndSub180180第六章第六章 循环结构程序设计循环结构程序设计一、一、ForNext循环语句循环语句5、ForNext语句的嵌套语句的嵌套嵌套层数没有限制嵌套层数没有限制每

164、个循环必须有一个唯一的变量作为控制变量每个循环必须有一个唯一的变量作为控制变量内内层层循循环环必必须须完完全全放放在在外外层层循循环环内内,内内外外循循环环不不能能相互交叉相互交叉Fora=1To5Forb=3To9NextaNextb错误错误(外循环和外外循环和外循环交叉循环交叉)Fora1=Fora2=Fora3=Nexta3Nexta2Nexta1 Fora=Forb=Forc=Nextc,b,a Fori=1to10Fori=1to10.NextiNexti错误错误(内循环变量内循环变量与外循环变量同名与外循环变量同名) 181181第六章第六章 循环结构程序设计循环结构程序设计一、一

165、、ForNext循环语句循环语句例例6-3打印打印“九九乘法表九九乘法表”Fori=1To9PrintTab(i*6);i;NextiPrintForj=1To9Printj;Fork=1To9m=j*kPrintTab(k*6);m;NextkPrintNextj182182第六章第六章 循环结构程序设计循环结构程序设计二、二、DoLoop循环语句循环语句若若事事先先不不知知道道循循环环次次数数,或或循循环环的的初初值值和和终终值值不不明明了,可以使用当型循环了,可以使用当型循环Do.LoopDo.Loop有两种语法形式有两种语法形式:前测型循环结构前测型循环结构后测型循环结构后测型循环结构

166、183183第六章第六章 循环结构程序设计循环结构程序设计二、二、DoLoop循环语句循环语句1、前测型循环结构、前测型循环结构DoLoop的语法格式的语法格式无无条条件件循循环环(DoLoop)、当当循循环环前前测测试试型型(DoWhileLoop) 、 直直 到到 循循 环环 前前 测测 试试 型型 (DoUntilLoop)条件是条件表达式条件是条件表达式DoWhile|Until满足某条件时满足某条件时ExitDoLoop184184第六章第六章 循环结构程序设计循环结构程序设计二、二、DoLoop循环语句循环语句1、前测型循环结构、前测型循环结构DoLoop的执行过程的执行过程前前测

167、测型型DoLoop循循环环语语句句先先判判断断条条件件,再再执执行行循循环体。环体。当当循循环环前前测测试试型型(DoWhileLoop):如如果果条条件件成成立立,就执行循环体;否则,终止循环。就执行循环体;否则,终止循环。直直到到循循环环前前测测试试型型(DoUntilLoop):如如果果条条件件不不成成立,就执行循环体;否则,终止循环。立,就执行循环体;否则,终止循环。如如果果在在嵌嵌套套的的DoLoop语语句句中中使使用用ExitDo,则则ExitDo会会将将控控制制权权转转移移到到ExitDo所所在在的的外外层层循循环。环。执行循环的最少次数为执行循环的最少次数为0185185第六章

168、第六章 循环结构程序设计循环结构程序设计二、二、DoLoop循环语句循环语句1、前测型循环结构、前测型循环结构DoLoop的使用示例的使用示例例例6-4用用DoLoop语句求语句求1+2+3+100的值的值PrivateSubCommand1_Click()DimsAsInteger,nAsIntegers=0:n=1DoWhilen100s=s+nn=n+1LoopLabel2.Caption=sEndSubPrivateSubCommand1_Click()DimsAsInteger,nAsIntegers=0:n=1Dos=s+nn=n+1Ifn100ThenExitDoLoopLabe

169、l2.Caption=sEndSub186186第六章第六章 循环结构程序设计循环结构程序设计二、二、DoLoop循环语句循环语句1、前测型循环结构、前测型循环结构DoLoop的使用示例的使用示例例例6-4用用DoLoop语句求语句求1+2+3+100的值的值PrivateSubCommand1_Click()DimsAsInteger,nAsIntegers=0:n=1DoWhilen=100s=s+nn=n+1LoopLabel2.Caption=sEndSub说明:说明:说明:说明:(1)(1)(1)(1)在设置在设置在设置在设置CaptionCaptionCaptionCaption属

170、性时如属性时如属性时如属性时如果某个字母前加入果某个字母前加入果某个字母前加入果某个字母前加入”&”, ”&”, ”&”, ”&”, 程序运行时标题中该字母程序运行时标题中该字母程序运行时标题中该字母程序运行时标题中该字母带有下划线带有下划线带有下划线带有下划线, , , , 该带下划线该带下划线该带下划线该带下划线的字母成为快捷键的字母成为快捷键的字母成为快捷键的字母成为快捷键, , , , 当用当用当用当用户按下户按下户按下户按下Alt+Alt+Alt+Alt+快捷键快捷键快捷键快捷键, , , , 便可便可便可便可激活并操作此按钮激活并操作此按钮激活并操作此按钮激活并操作此按钮. . .

171、 .Command1.Caption=&Ok187187第六章第六章 循环结构程序设计循环结构程序设计二、二、DoLoop循环语句循环语句1、前测型循环结构、前测型循环结构DoLoop的使用示例的使用示例例例6-6判断一个正整数是否是素数判断一个正整数是否是素数DoWhilei=Sqr(n)Ands=0IfnModi=0Thens=1Elsei=i+1EndIfLoop说明:说明:说明:说明:i = Sqr(n): i = Sqr(n): i = Sqr(n): i = Sqr(n): 素数判断法,素数判断法,素数判断法,素数判断法,只计算只计算只计算只计算2-2-2-2-s = 0: s =

172、 0: s = 0: s = 0: 给给给给s s s s 设初值为设初值为设初值为设初值为0 0 0 0,如,如,如,如有整除将其设为有整除将其设为有整除将其设为有整除将其设为1 1 1 1,最后,最后,最后,最后依据其值为依据其值为依据其值为依据其值为1 1 1 1或或或或0 0 0 0来判断是来判断是来判断是来判断是否为素数否为素数否为素数否为素数188188第六章第六章 循环结构程序设计循环结构程序设计二、二、DoLoop循环语句循环语句2、后测型、后测型DoLoop循环结构循环结构后后测测型型DoLoop循循环环语语句句先先执执行行循循环环体体,然然后后判判断条件,根据条件决定是否继

173、续执行循环。断条件,根据条件决定是否继续执行循环。执行循环的最少次数为执行循环的最少次数为1189189第六章第六章 循环结构程序设计循环结构程序设计二、二、DoLoop循环语句循环语句2、后测型、后测型DoLoop循环结构循环结构后测型循环结构后测型循环结构DoLoop的语法格式的语法格式当当循循环环后后测测试试型型(DoLoopWhile)、直直到到循循环环后后测测试试型型(DoLoopUntil)条件是条件表达式条件是条件表达式Do满足某条件时满足某条件时ExitDoLoopWhile|Until190190第六章第六章 循环结构程序设计循环结构程序设计二、二、DoLoop循环语句循环语

174、句2、后测型、后测型DoLoop循环结构循环结构后测型循环结构后测型循环结构DoLoop的执行过程的执行过程后后测测型型DoLoop循循环环语语句句先先执执行行一一次次循循环环体体后后,再再判判断条件,再依据条件判断结果决定是否执行循环体。断条件,再依据条件判断结果决定是否执行循环体。当当循循环环后后测测试试型型(DoLoopWhile):如如果果条条件件成成立立,就就执行循环体;否则,终止循环。执行循环体;否则,终止循环。直直到到循循环环后后测测试试(DoLoopUntil):如如果果条条件件不不成成立立,就执行循环体;否则,终止循环。就执行循环体;否则,终止循环。191191第六章第六章

175、循环结构程序设计循环结构程序设计二、二、DoLoop循环语句循环语句2、后测型、后测型DoLoop循环结构循环结构后测型循环结构后测型循环结构DoLoop的使用示例的使用示例例例6-8输入有效数字的位数,计算输入有效数字的位数,计算m=Val(Text1.Text)p=0:s=2Dot=s:p=Sqr(2+p):s=s*2/pLoopUntilAbs(t-s)0.1mf=String(m-1,#)Text2.Text=Format(s,0.&f)Text1.SetFocus说明:说明:说明:说明:Sn+1=Sn*2/pn+1Sn+1=Sn*2/pn+1Sn+1=Sn*2/pn+1Sn+1=Sn

176、*2/pn+1Abs(t - s) 0.1 m: tAbs(t - s) 0.1 m: tAbs(t - s) 0.1 m: tAbs(t - s) 0.1 m: t代表上一轮的代表上一轮的代表上一轮的代表上一轮的s, ss, ss, ss, s代表新代表新代表新代表新计算出的值计算出的值计算出的值计算出的值0.1 m: 0.1 m: 0.1 m: 0.1 m: 控制圆周率的计控制圆周率的计控制圆周率的计控制圆周率的计算精度算精度算精度算精度f = String(m - 1, “#”)f = String(m - 1, “#”)f = String(m - 1, “#”)f = String(

177、m - 1, “#”)和和和和Format(s, “0.” & Format(s, “0.” & Format(s, “0.” & Format(s, “0.” & f) : f) : f) : f) : 为控制最终显示结为控制最终显示结为控制最终显示结为控制最终显示结果的有效位数果的有效位数果的有效位数果的有效位数192192二、循环结构补充二、循环结构补充1、条件型循环语句、条件型循环语句:While循环循环(当型循环当型循环)第六章第六章 循环结构程序设计循环结构程序设计While条件条件循环体循环体Wend条件为关系表达式或逻辑表达式,结果为布尔变量条件为关系表达式或逻辑表达式,结果为

178、布尔变量193193二、循环结构补充二、循环结构补充1、条条件件型型循循环环语语句句:While循循环环(当型循环当型循环)1、判断条件是否成立。、判断条件是否成立。2、如如果果条条件件成成立立,就就执执行行循循环环体;否则,转到体;否则,转到4执行。执行。3、执行、执行Wend语句,转到语句,转到1执行。执行。4、执行、执行Wend语句下面的语句。语句下面的语句。第六章第六章 循环结构程序设计循环结构程序设计9/18/20249/18/2024194194二、循环结构补充二、循环结构补充1、条件型循环语句、条件型循环语句:While循环循环(当型循环当型循环)x=1Whilex5Printx

179、,x=x+1Wend第几次循环第几次循环x与终值比较与终值比较执行循环体否执行循环体否115执行执行225执行执行335执行执行445执行执行55not5停止执行停止执行上面程序的执行结果为:上面程序的执行结果为:1234第六章第六章 循环结构程序设计循环结构程序设计195195pVB中,用中,用Next表示表示For循环结束,用循环结束,用Loop表示表示Do循环结束,用循环结束,用Wend表示表示While循循环结束;环结束;C中中,没有没有Next,Loop,Wend,均以,均以表示循环结束;表示循环结束;pVB中,中,DoLoop中可以使用中可以使用Until直到型循环;直到型循环;C

180、中中,没有没有Until直到型循环;直到型循环;pVB中,可以用中,可以用ExitFor,ExitDo结束结束ForNext,DoLoop循环;循环;C中,可以用中,可以用break跳出循环;跳出循环;第六章第六章 循环结构程序设计循环结构程序设计二、循环结构的二、循环结构的VB和和C对比对比VB中中 的的 循循 环环 包包 括括 : ForNext, DoLoop,WhileWendC中中的的循循环环包包括括:for,dowhile,while,loop:gotolooppVB中,中,For之后没有括弧,格式为之后没有括弧,格式为Forn=1To10Step3;C中中,For之后有括弧,之后

181、有括弧,格式为格式为For(n=1;n=10;i+=3),三个表达式中,三个表达式中1和和3可省略;可省略;pVB中,中,DoLoop、WhileWend循环中循环中While或或Until后的条件表达式不用括号;后的条件表达式不用括号;C中中,dowhile、while循环中循环中While后的条件表达式用括号;后的条件表达式用括号;196196第六章第六章 循环结构程序设计循环结构程序设计三、列表框与组合框三、列表框与组合框列列表表框框(ListBox):是是用用户户可可以以从从中中进进行行选选择择的的滚滚动动列列表表组组合合框框(ComboBox):将将文文本本框框和和列列表表框框的的功

182、功能能结结合合在在一一起起。用用户户可可通通过过在在组组合合框框中中输输入入文文本本来来选选定定项项目目,也可从列表中选定项目。也可从列表中选定项目。197197第六章第六章 循环结构程序设计循环结构程序设计三、列表框与组合框三、列表框与组合框1、列表框控件、列表框控件ListBox控控件件显显示示项项目目列列表表,从从其其中中可可以以选选择择一一项项或或多多项。项。如如果果项项目目总总数数超超过过了了可可显显示示的的项项目目数数,就就自自动动在在ListBox控件上添加滚动条。控件上添加滚动条。列列表表框框不不具具备备编编辑辑功功能能,程程序序运运行行后后用用户户不不能能脱脱离离代代码而改变

183、列表框项目内容,只能选择项目码而改变列表框项目内容,只能选择项目198198第六章第六章 循环结构程序设计循环结构程序设计三、列表框与组合框三、列表框与组合框1、列表框控件、列表框控件ListBox控件常用属性控件常用属性基基本本属属性性:ListBox最最常常用用的的属属性性有有Name、Enabled、Visible和和Index(控件数组中用控件数组中用)等等.List属属性性(字字符符串串数数组组):返返回回或或设设置置控控件件的的列列表表部部分分的的项目。项目。(1)列列表表框框控控件件的的各各个个表表项项是是使使用用数数组组的的方方式式保保存存的,数组的每一个元素存储列表框控件的一

184、个表项的,数组的每一个元素存储列表框控件的一个表项(2)利用索引可以访问列表项目利用索引可以访问列表项目(3)运运行行时时对对List数数组组从从0到到ListCount-1依依次次取取值值可可以以获获得得列列表表的的所所有有项项目目(List数数组组的的下下标标是是从从0开开始始,所以所以ListCount-1是最后一个项目的是最后一个项目的Index)Object.List(index)=string199199第六章第六章 循环结构程序设计循环结构程序设计三、列表框与组合框三、列表框与组合框1、列表框控件、列表框控件ListBox控件常用属性控件常用属性ListIndex属属性性(整整数

185、数类类型型):该该属属性性值值为为被被选选中中表表项项的的索引索引(1)通通过过ListIndex属属性性,可可以以区区分分已已经经选选中中和和未未被被选中的表项选中的表项(2)如果未选中任何项,如果未选中任何项,ListIndex属性为属性为-1Text属性属性(字符串类型字符串类型)(1)该属性返回当前选中的表项内容该属性返回当前选中的表项内容(2)对对 于于 单单 选选 的的 列列 表表 框框 控控 件件 List1, 字字 符符 串串List1.list(List1.ListIndex)与与List1.Text相相等等,都都是是被被选中表项的文本选中表项的文本ListCount属属性性

186、(正正整整数数):该该属属性性值值为为控控件件列列表表项项目目的个数。的个数。200200第六章第六章 循环结构程序设计循环结构程序设计三、列表框与组合框三、列表框与组合框1、列表框控件、列表框控件ListBox控件常用属性控件常用属性Selected属性属性(逻辑类型逻辑类型)(1)该该属属性性是是一一个个与与List数数组组中中的的各各个个元元素素相相对对应应的一维数组,记录的一维数组,记录List数组中每个项目是否被选中数组中每个项目是否被选中(2)若若列列表表框框控控件件的的第第i个个表表项项被被选选中中,则则Selected(i-1)的值为的值为True(3)若若为为Selected

187、(i-1)赋赋值值True,则则列列表表框框控控件件的的第第i个个表项被突出显示表项被突出显示Fori=0ToList1.ListCount-1IfList1.Selected(i)=TrueThenPrintList1.List(i)Nexti201201第六章第六章 循环结构程序设计循环结构程序设计三、列表框与组合框三、列表框与组合框1、列表框控件、列表框控件ListBox控件常用属性控件常用属性Sorted属性属性(逻辑类型逻辑类型)(1)确定列表框控件的各表项是否按字母升序排列确定列表框控件的各表项是否按字母升序排列(2)属性值为属性值为True:按字母升序排列按字母升序排列(3)属属

188、性性值值为为False(默默认认值值):不不按按升升序序排排列列,按按项项目目加加入的先后顺序排列入的先后顺序排列202202第六章第六章 循环结构程序设计循环结构程序设计三、列表框与组合框三、列表框与组合框1、列表框控件、列表框控件ListBox控件常用属性控件常用属性MultiSelect属属性性(整整数数0、1、2):设设置置列列表表框框“单单选选”或或“允许多选允许多选”(1)值值为为0(默默认认值值):只只能能单单选选,若若选选中中一一个个表表项项则则其他表项取消突出显示其他表项取消突出显示(2)值值为为1:可可以以多多选选,鼠鼠标标单单击击或或按按下下空空格格键键在在列列表表中中选

189、中或取消选中项选中或取消选中项,被选中的表项都被突出显示被选中的表项都被突出显示(3)值值为为2:扩扩展展多多选选,按按下下Shift并并单单击击鼠鼠标标将将在在以以前前选选中中项项的的基基础础上上扩扩展展选选择择到到当当前前选选中中项项。按按下下Ctrl并并单单击击鼠鼠标标来来在在列列表表中中选选中中或或取取消消选选中中项项,并并可可以以用鼠标在列表栏内拖动、选中相邻的若干个表项用鼠标在列表栏内拖动、选中相邻的若干个表项203203第六章第六章 循环结构程序设计循环结构程序设计三、列表框与组合框三、列表框与组合框1、列表框控件、列表框控件ListBox控件的方法控件的方法AddItem方法方

190、法:将项目添加到将项目添加到ListBox控件中控件中(1)索索引引号号可可以以指指定定项项目目文文本本的的插插入入位位置置,如如果果省省略略索索引引号号,当当Sorted属属性性值值为为True,加加入入到到排排序序位位置,当置,当Sorted为为False,自动加到列表框末尾,自动加到列表框末尾.AddItem表项文本表项文本,索引号索引号204204第六章第六章 循环结构程序设计循环结构程序设计三、列表框与组合框三、列表框与组合框1、列表框控件、列表框控件ListBox控件的方法控件的方法Clear方法方法:用于清空列表框控件中所有表项用于清空列表框控件中所有表项RemoveItem方法

191、方法:用于删除列表框中指定的表项用于删除列表框中指定的表项.Clear.RemoveItem索引号索引号205205第六章第六章 循环结构程序设计循环结构程序设计三、列表框与组合框三、列表框与组合框1、列表框控件、列表框控件ListBox控件使用示例控件使用示例例例6-11在列表框中,显示在列表框中,显示200以内能被以内能被6整整除的自然数除的自然数PrivateSubCommand1_Click()List1.ClearForn=1To200IfnMod6=0ThenList1.AddItemnNextnEndSub206206第六章第六章 循环结构程序设计循环结构程序设计三、列表框与组合

192、框三、列表框与组合框1、列表框控件、列表框控件ListBox控件使用示例控件使用示例例例6-12从文本框中输入或从列表框中选择姓名,并显从文本框中输入或从列表框中选择姓名,并显示示PrivateSubList1_Click()Text1.Text=List1.TextEndSubPrivateSubText1_Change()Label1.Caption=您所选择的为:您所选择的为:EndSubPrivateSubCommand1_Click()Text1.SelStart=0Text1.SelLength=Len(Text1.Text)Label1.Caption=您所选择的为:您所选择的为

193、:&Text1.TextEndSub207207第六章第六章 循环结构程序设计循环结构程序设计三、列表框与组合框三、列表框与组合框1、列表框控件、列表框控件例例列表框中选项相互移动列表框中选项相互移动PrivateSubForm_Load()初始化控件初始化控件Label1.Caption=经营商品经营商品Label2.Caption=需采购商品需采购商品Label3.Caption=Ctrl或或Shift+鼠标鼠标左键可以在右框中选择多项数据左键可以在右框中选择多项数据List1.AddItem电冰箱电冰箱List1.AddItem洗衣机洗衣机List1.AddItem彩色电视机彩色电视机L

194、ist1.AddItem组合音响组合音响“EndSub说明:说明:说明:说明:List1.AddItem “List1.AddItem “List1.AddItem “List1.AddItem “电冰电冰电冰电冰箱箱箱箱” :” :” :” :通过通过通过通过AddItemAddItemAddItemAddItem对列表框内容进行初对列表框内容进行初对列表框内容进行初对列表框内容进行初始化始化始化始化208208第六章第六章 循环结构程序设计循环结构程序设计例例列表框中选项相互移动列表框中选项相互移动PrivateSubCommand1_Click()选项选项右移右移DimiAsIntege

195、ri=0DoWhileiList1.ListCountIfList1.Selected(i)=TrueThenList2.AddItemList1.List(i)List1.RemoveItem(i)Elsei=i+1EndIfLoopEndSub说明:说明:说明:说明:i List1.ListCount i List1.ListCount i List1.ListCount i List1.ListCount : : : : 控制列表中表项控制列表中表项控制列表中表项控制列表中表项内容内容内容内容List1.Selected(i) = List1.Selected(i) = List1.Se

196、lected(i) = List1.Selected(i) = True : True : True : True : 当第当第当第当第i-1i-1i-1i-1项项项项表项被选中时,将表项被选中时,将表项被选中时,将表项被选中时,将列表列表列表列表2 2 2 2中添加进此项中添加进此项中添加进此项中添加进此项文本,并将列表文本,并将列表文本,并将列表文本,并将列表1 1 1 1中中中中此项删除;每删除此项删除;每删除此项删除;每删除此项删除;每删除一项后,列表一项后,列表一项后,列表一项后,列表1 1 1 1的的的的ListCountListCountListCountListCount属性减

197、属性减属性减属性减1 1 1 1,列表,列表,列表,列表2 2 2 2的的的的ListCountListCountListCountListCount属性加属性加属性加属性加1 1 1 1i = i + 1: i = i + 1: i = i + 1: i = i + 1: 推进循环推进循环推进循环推进循环进行,并保证循环进行,并保证循环进行,并保证循环进行,并保证循环可终止可终止可终止可终止209209第六章第六章 循环结构程序设计循环结构程序设计例例列表框中选项相互移动列表框中选项相互移动PrivateSubCommand2_Click()全部全部右移右移DimiAsIntegerFori

198、=0ToList1.ListCount-1List2.AddItem(List1.List(i)NextiList1.ClearEndSub说明:说明:说明:说明:i List1.ListCount i List1.ListCount i List1.ListCount i List1.ListCount -1: i-1: i-1: i-1: i为列表项下标,为列表项下标,为列表项下标,为列表项下标,只可到只可到只可到只可到List1.ListCount -1List1.ListCount -1List1.ListCount -1List1.ListCount -1List1.Clear :

199、ForList1.Clear : ForList1.Clear : ForList1.Clear : For循循循循环将列表环将列表环将列表环将列表1 1 1 1的表项全的表项全的表项全的表项全部移入列表部移入列表部移入列表部移入列表2 2 2 2后,列后,列后,列后,列表表表表1 1 1 1清空清空清空清空210210第六章第六章 循环结构程序设计循环结构程序设计三、列表框与组合框三、列表框与组合框2、组合框控件、组合框控件(ComboBox)组合框控件将文本框和列表框的功能结合在一起。组合框控件将文本框和列表框的功能结合在一起。可可通通过过在在组组合合框框中中输输入入文文本本来来选选定定项

200、项目目,也也可可从从列列表表中选定项目。中选定项目。组组合合框框提提供供了了供供选选择择的的列列表表。如如果果项项目目数数超超过过了了组组合合框能够显示的项目数,控件上将自动出现滚动条。框能够显示的项目数,控件上将自动出现滚动条。211211第六章第六章 循环结构程序设计循环结构程序设计三、列表框与组合框三、列表框与组合框2、组合框控件、组合框控件(ComboBox)常用属性常用属性:Style属属性性(整整数数0、1、2):该该属属性性决决定定组组合合框框的的样样式式,是只读属性,只能在设计时设置是只读属性,只能在设计时设置(1)0-vbComboDropDown(默默认认值值):为为下下拉

201、拉式式组组合框合框,包括一个文本框和一个下拉式列表框包括一个文本框和一个下拉式列表框(2)1-vbComboSimple:为为简简单单组组合合框框,包包括括一一个个文文本本框和一个非下拉式列表框框和一个非下拉式列表框(3)2-vbComboDropDownList:为为下下拉拉式式列列表表框框,包包括括一个不可输入的文本框和一个下拉式列表框一个不可输入的文本框和一个下拉式列表框212212第六章第六章 循环结构程序设计循环结构程序设计三、列表框与组合框三、列表框与组合框2、组合框控件、组合框控件(ComboBox)使用示例使用示例:例例6-15简易抽奖机简易抽奖机PrivateSubForm_

202、Load()初始控件初始控件Frame1.Caption=请输入参加抽奖的号码请输入参加抽奖的号码Label1.Caption=输入所有抽奖号码后,按开始按钮,将得到中奖号码输入所有抽奖号码后,按开始按钮,将得到中奖号码Command1.Caption=开始开始Command2.Caption=自动生成抽奖号码自动生成抽奖号码Combo1.Text=EndSub说明:说明:说明:说明:FormFormFormForm的的的的Load Load Load Load 事件进行事件进行事件进行事件进行初始化初始化初始化初始化213213第六章第六章 循环结构程序设计循环结构程序设计三、列表框与组合框

203、三、列表框与组合框2、组合框控件、组合框控件(ComboBox)使用示例使用示例:例例6-15简易抽奖机简易抽奖机PrivateSubCombo1_KeyPress(KeyAsciiAsInteger)IfKeyAscii=13ThenCombo1.AddItemCombo1.Text,0Combo1.SelStart=0Combo1.SelLength=Len(Combo1.Text)EndIfIfKeyAscii=27ThenIfCombo1.ListIndex-1ThenCombo1.RemoveItemCombo1.ListIndexEndIfEndIfEndSub说明:说明:说明:说

204、明: Combo1.AddItCombo1.AddItCombo1.AddItCombo1.AddItem em em em Combo1.Text, Combo1.Text, Combo1.Text, Combo1.Text, 0: 0: 0: 0: 将写入的将写入的将写入的将写入的文本内容放入文本内容放入文本内容放入文本内容放入到第一个表项到第一个表项到第一个表项到第一个表项位置位置位置位置keyascii = 27 keyascii = 27 keyascii = 27 keyascii = 27 And And And And Combo1.ListICombo1.ListICombo

205、1.ListICombo1.ListIndex -1 : ndex -1 : ndex -1 : ndex -1 : 当按下当按下当按下当按下EscEscEscEsc键,键,键,键,且选中且选中且选中且选中 一个一个一个一个表项则把选中表项则把选中表项则把选中表项则把选中表项删除表项删除表项删除表项删除214214第六章第六章 循环结构程序设计循环结构程序设计三、列表框与组合框三、列表框与组合框2、组合框控件、组合框控件(ComboBox)使用示例使用示例:例例6-15简易抽奖机简易抽奖机PrivateSubCommand2_Click()生成抽奖号过程生成抽奖号过程DimnAsInteger

206、,aAsLongRandomizeTimeForn=1To100a=Int(Rnd*1000000000)Combo1.AddItema,0NextnEndSub说明:说明:说明:说明:Command2Command2Command2Command2的的的的Click: Click: Click: Click: 随机随机随机随机生成生成生成生成100100100100个抽奖号个抽奖号个抽奖号个抽奖号Randomize Time: Randomize Time: Randomize Time: Randomize Time: 产生产生产生产生随机种子,保证每次随机种子,保证每次随机种子,保证每次

207、随机种子,保证每次生成的抽奖号不同生成的抽奖号不同生成的抽奖号不同生成的抽奖号不同215215第六章第六章 循环结构程序设计循环结构程序设计三、列表框与组合框三、列表框与组合框例例6-15简易抽奖机简易抽奖机PrivateSubCommand1_Click()抽奖抽奖过程过程Randomizen=Combo1.ListCounta=Int(Rnd*n)Combo1.ListIndex=aMsgBox中将号码是中将号码是:&Chr(13)&Combo1.Text,0,恭喜!恭喜!EndSub说明:说明:说明:说明:Command1Command1Command1Command1的的的的Click

208、: Click: Click: Click: 实现抽奖过程实现抽奖过程实现抽奖过程实现抽奖过程Randomize : Randomize : Randomize : Randomize : 产生随产生随产生随产生随机种子,保证每次机种子,保证每次机种子,保证每次机种子,保证每次抽中的抽奖号不同抽中的抽奖号不同抽中的抽奖号不同抽中的抽奖号不同n = n = n = n = Combo1.ListCountCombo1.ListCountCombo1.ListCountCombo1.ListCount和和和和Int(Rnd * n): Int(Rnd * n): Int(Rnd * n): Int

209、(Rnd * n): 用用用用a a a a表示被选中抽表示被选中抽表示被选中抽表示被选中抽奖号的下标,随机奖号的下标,随机奖号的下标,随机奖号的下标,随机函数函数函数函数*n*n*n*n保证下标在保证下标在保证下标在保证下标在0-990-990-990-99Combo1.Text: Combo1.Text: Combo1.Text: Combo1.Text: 把下把下把下把下标为标为标为标为a a a a的表项输出的表项输出的表项输出的表项输出216216作业:课后题作业:课后题6.22,6.26 ,6.28, 6.37第六章第六章 循环结构程序设计循环结构程序设计217217测绘测绘VBV

210、B语言程序设计语言程序设计第七章第七章218218第七章第七章 数数 组组1、数组和数组元素、数组和数组元素2、静态数组、静态数组3、动态数组、动态数组4、ForEachNext语句语句5、控件数组、控件数组219219第七章第七章 数数 组组1、数组和数组元素、数组和数组元素数数组组:将将一一组组排排列列有有序序的的、个个数数有有限限的的变变量量作作为为一一个个整整体体,用用统统一一的的名名字字来来表表示示,这这些些有有序序变变量量的的全体称为数组。全体称为数组。(1)A(n):A为为数数组组的的名名称称,n为为下下标标变变量量,不不同同的下标表示不同的数据的下标表示不同的数据(2)数数组组

211、名名命命名名原原则则同同简简单单变变量量,但但一一数数组组名名不不可以与某一变量名同名可以与某一变量名同名维维数数:下下标标变变量量中中下下标标的的个个数数。二二维维以以上上的的数数组组称称为多维数组。为多维数组。220220第七章第七章 数数 组组1、数组和数组元素、数组和数组元素数数组组元元素素:数数组组中中的的每每一一个个数数据据称称为为数数组组元元素素。数数组元素又称为下标变量。组元素又称为下标变量。引用数组元素引用数组元素:下标放在数组名后的括号里下标放在数组名后的括号里下下标标可可以以是是常常数数、变变量量、表表达达式式或或另另一一个个数数组组的的元素。元素。下下标标可可以以是是正

212、正整整数数、0和和负负整整数数,如如果果为为非非整整数数,小数部分将会自动地四舍五入取整。小数部分将会自动地四舍五入取整。下标变量与简单变量一样,可以被赋值和引用下标变量与简单变量一样,可以被赋值和引用数组名数组名(下标表下标表)p多维的话用逗号分隔多维的话用逗号分隔p特例,只有一位小数特例,只有一位小数时,整数是偶数时则五时,整数是偶数时则五舍舍221221第七章第七章 数数 组组1、数组和数组元素、数组和数组元素例例数组元素下标四舍五入数组元素下标四舍五入PrivateSubForm_click()Dimx(1To5)AsSingleFori=1To5x(i)=iNextiPrintx(1

213、);x(1);x(2);x(2);x(3);x(3);x(4);x(4)Printx(1.4);x(1.5);x(2.4);x(2.5);x(3.4);x(3.5);x(4.6);x(4.51)EndSuba(2.5),a(3.5),a(-2.5),a(-3.5)分别相当于分别相当于a(2)、a(4)、a(-2)、a(-4)Dima(-6.5To7.5)AsSingle相当于相当于a(-6To8)Dima(-6.51To7.5)AsSingle相当于相当于a(-7To8)222222第七章第七章 数数 组组1、数组和数组元素、数组和数组元素数据类型数据类型:可可以以声声明明任任何何基基本本数数

214、据据类类型型的的数数组组,数数组组中中的的元元素素都都是是同同类类型型的的量量,不不允允许许在在一一个个数数组组中中含含有有不不同类型的数据。同类型的数据。只只有有当当数数组组类类型型为为Variant时时,各各个个元元素素才才能能够够是是不同类型的数据。不同类型的数据。223223第七章第七章 数数 组组1、数组和数组元素、数组和数组元素数据的形式数据的形式:静静态态数数组组:数数组组元元素素个个数数固固定定不不变变。计计算算机机在在程程序序执执行行前前,系系统统进进行行编编译译时时,根根据据数数组组说说明明语语句句开开辟辟固固定定的的存存储储空空间间,直直到到程程序序执执行行完完毕毕,在在

215、整整个个过程中不再改变。过程中不再改变。动动态态数数组组:数数组组元元素素个个数数在在运运行行时时可可以以改改变变。计计算算机机在在执执行行过过程程中中才才给给数数组组开开辟辟存存储储空空间间,当当不不需需要要时时,可可以以用用Erase语语句句删删除除它它,收收回回分分配配给给它它的的存存储储空空间间。还还可可以以用用Redim语语句句再再次次分分配配存存储储空空间间。Erase语语句句用用来来清清除除静静态态数数组组的的内内容容,或或者释放动态数组占用的内存空间。者释放动态数组占用的内存空间。224224第七章第七章 数数 组组2、静态数组、静态数组声声明明静静态态数数组组:静静态态数数组

216、组在在使使用用时时要要严严格格遵遵循循先先定定义义后后使使用用的的原原则则,目目的的是是通通知知计计算算机机为为其其留留出出所所需要的空间。需要的空间。维维数数定定义义:数数组组元元素素在在内内存存中中占占用用一一片片连连续续的的存存储储空空间间,分分配配空空间间的的大大小小由由数数组组下下标标的的最最大大值值和和最最小小值值确确定定。数数组组下下标标的的最最大大值值称称为为下下标标的的上上界界,下标的最小值称为下标的下界。下标的最小值称为下标的下界。Dim数组名数组名(下界下界1to上界上界1,下界下界2to上界上界2)As数据类型数据类型Dimy(5)AsInteger声明声明y是是Int

217、eger类型数组类型数组Dimx(1to5)AsDouble声明声明x是是Double类型数组类型数组DimS(2,3)声明声明S是是3行行4列的二维数组列的二维数组p多维的话用逗号分隔多维的话用逗号分隔Dimy%(5),C#(12),B!(3To5),C%(3,1To5)p下界上界的值必下界上界的值必须为数值常数或常须为数值常数或常数表达式数表达式n = InputBox(输输 入入n)Dimx(n)AsSingle 225225第七章第七章 数数 组组2、静态数组、静态数组OptionBase语句语句:VB默认的数组下标从默认的数组下标从0开始开始可通过可通过OptionBase语句更改默

218、认下标下界语句更改默认下标下界(1)OptionBase0|1声声明明所所有有数数组组的的第第1个个元元素素下下标为标为0(默认值默认值)|1。(2)数数组组还还有有一一种种表表示示方方式式不不受受OptionBase语语句句的的影影响响,即即程程序序员员在在定定义义数数组组时时指指定定数数组组的的上上下下界线。界线。OptionBaseOptionBase0Dimy(5)AsInteger元素个数为元素个数为6,05OptionBase1Dimy(5)AsInteger元素个数为元素个数为5,15Dimy(-1to5)AsInteger元素个数为元素个数为7,-15226226第七章第七章

219、数数 组组2、静态数组、静态数组声明静态数组声明静态数组:Dim数组名数组名(下界下界1to上界上界1,下界下界2to上界上界2)As数据类型数据类型区别于区别于C语言语言p定义定义:VB中,不用方括号,用括号,以逗号间隔;中,不用方括号,用括号,以逗号间隔;C中,类型说明符中,类型说明符数组名数组名常量常量表达式表达式常量表达式常量表达式;p上下界上下界:VB中,可以自己指定任意上下界;中,可以自己指定任意上下界;C中,不可以自己指定任意上下界;中,不可以自己指定任意上下界;p下标上界下标上界:VB中,上界表示可以使用的最大下标;中,上界表示可以使用的最大下标;C中,数组定义指定的是数组元中

220、,数组定义指定的是数组元素个数素个数pVB中,默认下标起始从中,默认下标起始从0,可由,可由OptionBase1语句指定从语句指定从1开始;开始;C中,默认中,默认下标起始从下标起始从0;227227第七章第七章 数数 组组2、静态数组、静态数组数组的基本操作数组的基本操作:数数组组定定义义时时根根据据类类型型初初始始化化:数数值值型型为为0,字字符符型型为空为空数组元素引用数组元素引用:注意与数组声明时下标上界的区别注意与数组声明时下标上界的区别(1)引用引用:A(5)中中5表示下标为表示下标为5的元素的元素(2)声明声明:A(5)中中5表示声明的数组表示声明的数组A的下标上界的下标上界引

221、引用用数数组组元元素素要要保保证证数数组组名名、数数组组类类型型、数数组组维维数、使用的索引号的范围都必须与数组声明一致。数、使用的索引号的范围都必须与数组声明一致。228228第七章第七章 数数 组组2、静态数组、静态数组数组元素的输入、输出和复制数组元素的输入、输出和复制:用用赋赋值值语语句句输输入入:当当数数组组较较小小或或只只需需要要对对数数组组中中的的指定元素赋值时,用赋值语句来实现数据输入指定元素赋值时,用赋值语句来实现数据输入用用InputBox函函数数输输入入:用用For循循环环语语句句反反复复输输入入多多个数据个数据VB中中数数组组是是按按行行存存储储的的,如如果果用用For

222、循循环环输输入入多多维维数数组组,一一般般把把控控制制数数组组第第一一维维的的循循环环变变量量放放在在最最外层。外层。229229第七章第七章 数数 组组2、静态数组、静态数组数组元素的输入、输出和复制数组元素的输入、输出和复制:用用赋赋值值语语句句输输入入:规规则则数数据据或或自自动动生生成成数数据据的的输输入入和输出和输出OptionBase1数组下界从数组下界从1开始计数开始计数PrivateSubForm_Click()DimiAsInteger数据定义数据定义Dimx(10)AsIntegerFori=1To10数据输入数据输入x(i)=Int(Rnd*90)+10NextiFori

223、=1To10数据输出数据输出Printx(i);NextiEndSubDimx$(10)x(1)=Asc(a)设定起始点设定起始点Fori=1To9x(i+1)=x(i)+2PrintChr(x(i);NextiPrintChr(x(i)打印最后一个打印最后一个230230第七章第七章 数数 组组2、静态数组、静态数组数组元素的输入、输出和复制数组元素的输入、输出和复制:用用InputBox函数输入函数输入OptionBase1PrivateSubForm_Click()DimiAsIntegerDimx(5)AsStringFori=1To5x(i)=InputBox(请输入姓名:请输入姓名

224、:)IfLeft(x(i),1)=张张ThenPrintx(i);NextiEndSubOptionBase1PrivateSubForm_Click()ClsDima(10)AsInteger,i%Print输入的数据为输入的数据为Fori=1To10a(i)=InputBox(请输入一个整型数请输入一个整型数)Printa(i),NextiPrintPrint逆序输出为逆序输出为Fori=10To1Step-1Printa(i),NextiEndSub231231第七章第七章 数数 组组2、静态数组、静态数组例例7-2随机产生随机产生10个两位数个两位数,找出其最大的值、最小找出其最大的值

225、、最小值和平均值值和平均值(课后题课后题7.13)。Dima(9)AsInteger模块级数组模块级数组RandomizeTimep=Fori=0To9Dox=Int(Rnd*90)+10yes=0Forj=0Toi-1Ifx=a(j)Thenyes=1:ExitForNextjLoopWhileyes=1a(i)=xp=p&Str(a(i)&,NextiLabel4.Caption=LTrim(Left(p,Len(p)-1)EndSub说明:说明:说明:说明:Dim a(9) As Integer : Dim a(9) As Integer : Dim a(9) As Integer :

226、Dim a(9) As Integer : 应应应应声明为模块级数组声明为模块级数组声明为模块级数组声明为模块级数组Randomize Time: Randomize Time: Randomize Time: Randomize Time: 保证每次保证每次保证每次保证每次产生不同种子产生不同种子产生不同种子产生不同种子yes = 0: yes = 0: yes = 0: yes = 0: 用以标示是否有重用以标示是否有重用以标示是否有重用以标示是否有重复,以便跳出复,以便跳出复,以便跳出复,以便跳出ForForForFor循环并继循环并继循环并继循环并继续产生新数续产生新数续产生新数续产生

227、新数(DoLoop)(DoLoop)(DoLoop)(DoLoop)Left(p, Len(p) - 1): Left(p, Len(p) - 1): Left(p, Len(p) - 1): Left(p, Len(p) - 1): 去去去去掉最后一个掉最后一个掉最后一个掉最后一个,LTrim: LTrim: LTrim: LTrim: 去掉产生的去掉产生的去掉产生的去掉产生的10101010个两位个两位个两位个两位数前的空格,因数字转换数前的空格,因数字转换数前的空格,因数字转换数前的空格,因数字转换成的字符串前面有一个符成的字符串前面有一个符成的字符串前面有一个符成的字符串前面有一个符号

228、位号位号位号位232232第七章第七章 数数 组组2、静态数组、静态数组PrivateSubCommand1_Click()重置重置Form_LoadEndSubPrivateSubCommand2_Click()计算计算DimmaxAsInteger,minAsInteger,sAsSingle,iAsIntegermin=100:max=10:s=0Fori=0To9Ifa(i)maxThenmax=a(i)Ifa(i)minThenmin=a(i)s=s+a(i)NextiText1.Text=maxText2.Text=minText3.Text=s/10EndSub说明:说明:说明:

229、说明:Command1_Click() : Command1_Click() : Command1_Click() : Command1_Click() : 通过调通过调通过调通过调用用用用FormFormFormForm的的的的LoadLoadLoadLoad事件过程再事件过程再事件过程再事件过程再产生一组新的数产生一组新的数产生一组新的数产生一组新的数Command2_Click : Command2_Click : Command2_Click : Command2_Click : 用到产生用到产生用到产生用到产生数据后的模块级数组进行数据后的模块级数组进行数据后的模块级数组进行数据后的

230、模块级数组进行运算运算运算运算233233第七章第七章 数数 组组2、静态数组、静态数组数组元素的输出数组元素的输出:可用可用Print方法输出方法输出可以在多行文本框、列表框或组合框输出可以在多行文本框、列表框或组合框输出数组元素的复制数组元素的复制:单个元素复制单个元素复制:同简单变量同简单变量整个数组复制整个数组复制:通过循环通过循环234234第七章第七章 数数 组组例例7-3设有一个设有一个55的方阵,其中元素由计算机随机的方阵,其中元素由计算机随机生成小于生成小于100的整数,并求对角线上元素之和、对角的整数,并求对角线上元素之和、对角线上元素之积和方阵中最大的元素。线上元素之积和

231、方阵中最大的元素。Dima(1To5,1To5)AsInteger定义模块数组定义模块数组PrivateSubCommand1_Click()生成矩阵生成矩阵,或重置重或重置重新生成矩阵新生成矩阵DimpAsString,iAsInteger,jAsIntegerRandomizeTimeFori=1To5p=Forj=1To5a(i,j)=Int(Rnd*99)+1p=p&Format(a(i,j),!)NextjList1.AddItemp,i-1NextiEndSub说明:说明:说明:说明:Dim a(1 To 5, 1 To 5) As Dim a(1 To 5, 1 To 5) As

232、 Dim a(1 To 5, 1 To 5) As Dim a(1 To 5, 1 To 5) As Integer : Integer : Integer : Integer : 应声明为模块应声明为模块应声明为模块应声明为模块级数组级数组级数组级数组Randomize Time: Randomize Time: Randomize Time: Randomize Time: 保证每次保证每次保证每次保证每次产生不同种子产生不同种子产生不同种子产生不同种子a(i, j) = Int(Rnd * 99) + a(i, j) = Int(Rnd * 99) + a(i, j) = Int(Rnd

233、 * 99) + a(i, j) = Int(Rnd * 99) + 1: 1: 1: 1: 产生小于产生小于产生小于产生小于100100100100的整数的整数的整数的整数Format(a(i, j), Format(a(i, j), Format(a(i, j), Format(a(i, j), “!”) : “!”) : “!”) : “!”) : 控制数据控制数据控制数据控制数据格式,使形成是矩阵元素格式,使形成是矩阵元素格式,使形成是矩阵元素格式,使形成是矩阵元素间有间隔间有间隔间有间隔间有间隔List1.AddItem p, i - 1: List1.AddItem p, i -

234、1: List1.AddItem p, i - 1: List1.AddItem p, i - 1: 将产生的数组元素加到列将产生的数组元素加到列将产生的数组元素加到列将产生的数组元素加到列表框中表框中表框中表框中235235第七章第七章 数数 组组2、静态数组、静态数组PrivateSubCommand2_Click()计算计算s=0:t=1Fori=1To5求对角线之和、积求对角线之和、积s=s+a(i,i)t=t*a(i,i)NextiMax=0Fori=1To5求方阵中的最大元素求方阵中的最大元素Forj=1To5IfMaxa(i,j)ThenMax=a(i,j)p=i:q=jEndI

235、fNextjNextiText2.Text=sText3.Text=tText4.Text=a(&p&,&q&)EndSub说明:说明:说明:说明:s = 0: t = 1: ss = 0: t = 1: ss = 0: t = 1: ss = 0: t = 1: s存放对角线存放对角线存放对角线存放对角线元素之和元素之和元素之和元素之和, t, t, t, t存放对角线元存放对角线元存放对角线元存放对角线元素之积,因此赋初值分别素之积,因此赋初值分别素之积,因此赋初值分别素之积,因此赋初值分别为为为为0 0 0 0和和和和1 1 1 1Max = 0: Max = 0: Max = 0: M

236、ax = 0: 存放矩阵中最大元存放矩阵中最大元存放矩阵中最大元存放矩阵中最大元素,设初值为素,设初值为素,设初值为素,设初值为0 0 0 0p = i:q = j : p = i:q = j : p = i:q = j : p = i:q = j : 存放最大元存放最大元存放最大元存放最大元素所在位置素所在位置素所在位置素所在位置236236第七章第七章 数数 组组2、静态数组、静态数组初始化初始化:Array函函数数:对对变变体体一一维维动动态态数数组组的的数数据据进进行行初初始始化化用用Array函函数数创创建建的的数数组组下下界界,默默认认为为0,也也可可以以由由OptionBase指

237、定(在通用段中声明)指定(在通用段中声明)=Array()DimS声明变量声明变量S为变体类型为变体类型S=Array(1,2,3,4)为为S数组的每个数据赋初值数组的每个数据赋初值OptionBase1DimS声明变量声明变量S为变体类型为变体类型S=Array(1,2,3,4)为为S数组的每个数据赋初值数组的每个数据赋初值237237第七章第七章 数数 组组2、静态数组、静态数组初始化初始化:区别于区别于C语言语言pVB中,用中,用Array函数,并只能对一维的变体型数组;函数,并只能对一维的变体型数组;C中,定义时直接初始化,中,定义时直接初始化,加大括号加大括号p默认初值默认初值:VB

238、中,例如数值型为中,例如数值型为0;C中,不赋初值,则为任意值中,不赋初值,则为任意值=Array()238238第七章第七章 数数 组组2、静态数组、静态数组静态数组使用示例静态数组使用示例:例例7-6Fibonacci数列问题。数列问题。有趣的古典数学问题有趣的古典数学问题有一对兔子,从出生后第有一对兔子,从出生后第3个月个月起每个月都生一对兔子。起每个月都生一对兔子。小兔子长到第小兔子长到第3个月后每个月又个月后每个月又生一对兔子。生一对兔子。假设所有兔子都不死,问每个假设所有兔子都不死,问每个月的兔子总数为多少?月的兔子总数为多少?Fib(n)=Fib(n-1)+Fib(n-2)239

239、239第七章第七章 数数 组组2、静态数组、静态数组静态数组使用示例静态数组使用示例:PrivateSubText1_KeyPress(KeyAsciiAsInteger)Dimf()AsInteger,iAsInteger,pAsStringList1.ClearIfKeyAscii=13Thenn=Val(Text1.Text)ReDimf(n)f(1)=1:f(2)=1p=f(&1&)=&Str(f(1)List1.AddItemp,0p=f(&2&)=&Str(f(2)List1.AddItemp,1Fori=3Tonf(i)=f(i-1)+f(i2)p=f(&i&)=&Str(f(i

240、)List1.AddItemp,i-1NextiEndIfEndSub说明:说明:说明:说明:Dim f() As Integer : Dim f() As Integer : Dim f() As Integer : Dim f() As Integer : 定义为动态数组定义为动态数组定义为动态数组定义为动态数组ReDim f(n) : ReDim f(n) : ReDim f(n) : ReDim f(n) : 依据用依据用依据用依据用户给出的数组大小重户给出的数组大小重户给出的数组大小重户给出的数组大小重新定义数组新定义数组新定义数组新定义数组f(i) = f(i - 1) + f(i

241、) = f(i - 1) + f(i) = f(i - 1) + f(i) = f(i - 1) + f(i 2) :f(i 2) :f(i 2) :f(i 2) :List1.AddItem p, i - List1.AddItem p, i - List1.AddItem p, i - List1.AddItem p, i - 1 :1 :1 :1 :240240第七章第七章 数数 组组2、静态数组、静态数组静态数组使用示例静态数组使用示例:例例7-7随机生成随机生成10个互不相同的两位数,按由小个互不相同的两位数,按由小到大的顺序显示出来。到大的顺序显示出来。PrivateSubComm

242、and2_Click()排序排序DimiAsInteger,jAsInteger,pAsStringFori=1To9Fork=i+1To10Ifa(i)a(k)Thent=a(i):a(i)=a(k):a(k)=tEndIfNextkNextip=Str(a(1)Fori=2To10p=p&,&Str(a(i)NextiLabel2.Caption=LTrim(p)EndSub说明:说明:说明:说明:For i = 1 To 9 For For i = 1 To 9 For For i = 1 To 9 For For i = 1 To 9 For k = i + 1 To 10: k =

243、i + 1 To 10: k = i + 1 To 10: k = i + 1 To 10: 实现排序实现排序实现排序实现排序241241第七章第七章 数数 组组2、静态数组、静态数组静态数组使用示例静态数组使用示例:例例7-8用数组建立成绩表,实现成绩的查用数组建立成绩表,实现成绩的查询、计算各科平均成绩、显示平均分以询、计算各科平均成绩、显示平均分以上的同学的姓名。上的同学的姓名。Dima(1To10)AsString,b(1To10,1To4)AsIntegerPrivateSubForm_Activate()在学生名在学生名单加入列表框,并计算一同学各科成绩单加入列表框,并计算一同学各

244、科成绩的总分的总分DimnAsIntegerForn=1To10List1.AddItema(n),n-1b(n,4)=b(n,1)+b(n,2)+b(n,3)NextnEndSub说明:说明:说明:说明:Dim a(1 To 10) As Dim a(1 To 10) As Dim a(1 To 10) As Dim a(1 To 10) As String, b(1 To 10, String, b(1 To 10, String, b(1 To 10, String, b(1 To 10, 1 To 4) As 1 To 4) As 1 To 4) As 1 To 4) As Integ

245、er: Integer: Integer: Integer: 声明为模声明为模声明为模声明为模块级数组,其中数组块级数组,其中数组块级数组,其中数组块级数组,其中数组a a a a用于存放学生姓名,用于存放学生姓名,用于存放学生姓名,用于存放学生姓名,b b b b用于存放各科成绩用于存放各科成绩用于存放各科成绩用于存放各科成绩及总成绩及总成绩及总成绩及总成绩Private Sub Private Sub Private Sub Private Sub Form_Activate(): Form_Activate(): Form_Activate(): Form_Activate(): 保证每

246、次产生不同种保证每次产生不同种保证每次产生不同种保证每次产生不同种子子子子List1.AddItem a(n), List1.AddItem a(n), List1.AddItem a(n), List1.AddItem a(n), n 1: n 1: n 1: n 1: 将学生名字将学生名字将学生名字将学生名字添加到列表框添加到列表框添加到列表框添加到列表框b(n, 4) = b(n, 1) + b(n, 4) = b(n, 1) + b(n, 4) = b(n, 1) + b(n, 4) = b(n, 1) + b(n, 2) + b(n, 3) b(n, 2) + b(n, 3) b(n

247、, 2) + b(n, 3) b(n, 2) + b(n, 3) : : : : 计算每个学生的总计算每个学生的总计算每个学生的总计算每个学生的总成绩成绩成绩成绩242242第七章第七章 数数 组组2、静态数组、静态数组静态数组使用示例静态数组使用示例:PrivateSubList1_Click()查阅成绩查阅成绩DimnAsIntegern=List1.ListIndex+1Text1.Text=b(n,1)Text2.Text=b(n,2)Text3.Text=b(n,3)Text4.Text=b(n,4)EndSub说明:说明:说明:说明:Private Sub Private Sub

248、Private Sub Private Sub List1_Click() : List1_Click() : List1_Click() : List1_Click() : 单单单单击列表框,即可显示击列表框,即可显示击列表框,即可显示击列表框,即可显示各学生各科成绩及弄各学生各科成绩及弄各学生各科成绩及弄各学生各科成绩及弄成绩成绩成绩成绩n = List1.ListIndex n = List1.ListIndex n = List1.ListIndex n = List1.ListIndex + 1: + 1: + 1: + 1: 列表框项目下列表框项目下列表框项目下列表框项目下标与数组

249、下标变对应标与数组下标变对应标与数组下标变对应标与数组下标变对应Text1.Text = b(n, 1) Text1.Text = b(n, 1) Text1.Text = b(n, 1) Text1.Text = b(n, 1) : : : : 通过变换下标通过变换下标通过变换下标通过变换下标n n n n的的的的值实现显示选中学生值实现显示选中学生值实现显示选中学生值实现显示选中学生的成绩的成绩的成绩的成绩243243第七章第七章 数数 组组2、静态数组、静态数组静态数组使用示例静态数组使用示例:PrivateSubCommand1_Click()计算数学计算数学平均成绩平均成绩DimsA

250、sInteger,pAsString,nAsIntegers=0Forn=1To10s=s+b(n,1)Nextns=s/10p=Forn=1To10Ifb(n,1)sThenp=p&a(n)&NextnMsgBox低于平均分数的同学有:低于平均分数的同学有:&Chr(13)&Chr(13)&p,0,数学平均分数数学平均分数为:为:&Str(s)EndSub说明:说明:说明:说明:s = 0s = 0s = 0s = 0、 s = s / 10 : s = s / 10 : s = s / 10 : s = s / 10 : 用于存储相应科目的用于存储相应科目的用于存储相应科目的用于存储相应科

251、目的总成绩,同时存储平总成绩,同时存储平总成绩,同时存储平总成绩,同时存储平均成绩均成绩均成绩均成绩If b(n, 1) s Then If b(n, 1) s Then If b(n, 1) s Then If b(n, 1) 10ThenMsgBox输入的数不能超过输入的数不能超过10ExitSubEndIfReDima(n,n)Fori=1Tona(i,1)=1:a(i,i)=1NextiPicture1.PrintTab(18);Format(1,!)&Chr(13)第一行第一行Picture1.PrintTab(16);Format(1,!)&Space(2)&Format(1,!)

252、&Chr(13)连上第二行连上第二行说明:说明:说明:说明:Text1_KeyPress:Text1_KeyPress:Text1_KeyPress:Text1_KeyPress:因行数因行数因行数因行数通过文本框输入通过文本框输入通过文本框输入通过文本框输入a() As Integer: a() As Integer: a() As Integer: a() As Integer: 因行因行因行因行数需用户指定,先将数需用户指定,先将数需用户指定,先将数需用户指定,先将数组定义为动态数组数组定义为动态数组数组定义为动态数组数组定义为动态数组ReDim a(n, n) : ReDim a(n,

253、 n) : ReDim a(n, n) : ReDim a(n, n) : 依据依据依据依据用户输入行数重新定用户输入行数重新定用户输入行数重新定用户输入行数重新定义数组义数组义数组义数组252252第七章第七章 数数 组组3、动态数组、动态数组创建动态数组创建动态数组:Fori=3TonPicture1.PrintTab(20-i*2);Format(a(i,1),!)&Space(4);连上第一列连上第一列Forj=2Toi-1a(i,j)=a(i-1,j-1)+a(i-1,j)Picture1.PrintFormat(a(i,j),!);NextjPicture1.PrintSpace(

254、4)&Format(a(i,i),!)&Chr(13)NextiEndIfEndSub说明:说明:说明:说明:For i = 3 To n For i = 3 To n For i = 3 To n For i = 3 To n For j = 2 For j = 2 For j = 2 For j = 2 To i - 1 : To i - 1 : To i - 1 : To i - 1 : 用于计用于计用于计用于计算其他元素值算其他元素值算其他元素值算其他元素值a(i, j) = a(i - 1, j a(i, j) = a(i - 1, j a(i, j) = a(i - 1, j a(

255、i, j) = a(i - 1, j - 1) + a(i - 1, j) - 1) + a(i - 1, j) - 1) + a(i - 1, j) - 1) + a(i - 1, j) : : : :253253第七章第七章 数数 组组4、ForEachNext语句语句ForEachNext语语句句用用于于数数组组或或对对象象集集合合中中的的每每个个元素元素ForEachNext语句的语法语句的语法element:必必要要参参数数。用用来来遍遍历历集集合合或或数数组组中中所所有有元元素素的的变变量量。对对于于集集合合来来说说,成成员员可可能能是是一一个个Variant变变量量、一一个个通通

256、用用对对象象变变量量或或任任何何特特殊殊对对象象变变量量。对对于于数数组组而而言言,成成员员只只能能是是一一个个Variant变量。变量。group:必要参数。对象集合或数组的名称。:必要参数。对象集合或数组的名称。ForEachelementIngroupstatementsExitForstatementsNextelementp没有上下界没有上下界254254第七章第七章 数数 组组4、ForEachNext语句语句ForEachNext语句的执行过程语句的执行过程ForEachNext语语句句可可对对数数组组中中元元素素的的操操作作包包括括:查询、显示或读取,但不能赋值。查询、显示或读

257、取,但不能赋值。ForEachNext语语句句重重复复执执行行的的次次数数由由数数组组中中元元素素的的个个数数确确定定:如如果果集集合合中中至至少少有有一一个个元元素素,就就会会进进入入For.Each块块执执行行。一一旦旦进进入入循循环环,便便先先针针对对group中中第第一一个个元元素素执执行行循循环环中中的的所所有有语语句句。如如果果group中中还还有有其其它它的的元元素素,则则会会针针对对它它们们执执行行循循环环中中的的语语句句,当当group中中的的所所有有元元素素都都执执行行完完了了,便便会会退退出出循循环环,然然后后从从Next语语句句之之后的语句继续执行。后的语句继续执行。可

258、可以以将将一一个个ForEach.Next循循环环放放在在另另一一个个之之中中来来组组成成嵌嵌套套式式ForEach.Next循循环环。但但是是每每个个循环的循环的element必须是唯一的。必须是唯一的。不不能能在在ForEach.Next语语句句中中使使用用用用户户自自定定义义类类型数组,因为型数组,因为Variant不能包含用户自定义类型不能包含用户自定义类型255255第七章第七章 数数 组组4、ForEachNext语句语句ForEachNext语句使用示例语句使用示例例例7-12用用ForEachNext语句语句,求求1+2+3+100的值。的值。PrivateSubCommand

259、1_Click()Dimx(1To100)AsInteger,aFori=1To100x(i)=iNextis=0ForEachaInx()s=s+aNextaLabel1.Caption=sEndSub说明:说明:说明:说明:Dim x(1 To 100) Dim x(1 To 100) Dim x(1 To 100) Dim x(1 To 100) As Integer, a: As Integer, a: As Integer, a: As Integer, a: a a a a定义为变体型定义为变体型定义为变体型定义为变体型For Each a In For Each a In For

260、 Each a In For Each a In x(): xx(): xx(): xx(): x后的括号后的括号后的括号后的括号可有可无可有可无可有可无可有可无256256第七章第七章 数数 组组5、控件数组、控件数组控件数组的概念控件数组的概念控控件件数数组组是是一一组组具具有有相相同同名名称称、类类型型和和事事件件过过程程的的控控件件在在控控件件数数组组中中可可用用到到的的最最大大索索引引值值为为32767。同同一一控控件数组中的元素有自己的属性设置值件数组中的元素有自己的属性设置值控控件件数数组组中中每每个个元元素素都都有有唯唯一一与与之之相相关关联联的的下下标标,或或称为索引称为索引

261、(Index)控控件件数数组组中中的的控控件件由由它它的的索索引引,即即下下标标来来区区分分控控件件数数组中的元素,如组中的元素,如Command1(0)、Command1(1)当当数数组组中中的的一一个个控控件件识识别别某某一一事事件件时时,它它将将调调用用此此控控件件组组的的相相应应事事件件过过程程,并并把把相相应应索索引引作作为为参参数数传传递递,允许用代码决定是哪一个控件识别此事件允许用代码决定是哪一个控件识别此事件控控件件数数组组的的下下标标由由系系统统内内定定,与与OptionBase的的设设置置无关,总是从无关,总是从0开始计数开始计数Label1(0),Label1(1),La

262、bel1(2),Label1,Label2,Label3,不是控件数组不是控件数组257257第七章第七章 数数 组组5、控件数组、控件数组使用控件数组的意义使用控件数组的意义在在设设计计时时,使使用用控控件件数数组组添添加加控控件件所所消消耗耗的的资资源源比比直直接向窗体添加多个相同类型的控件消耗的资源要少。接向窗体添加多个相同类型的控件消耗的资源要少。若若干干控控件件数数组组共共享享代代码码。如如果果创创建建了了一一个个包包含含三三个个选选项项按按钮钮的的控控件件数数组组,则则无无论论单单击击哪哪个个按按钮钮时时都都将将执执行相同的代码。行相同的代码。若若要要在在运运行行时时创创建建一一个

263、个控控件件的的新新实实例例,则则新新控控件件必必须须是是控控件件数数组组的的成成员员。使使用用控控件件数数组组时时,每每个个新新成成员员继承数组的公共事件过程。继承数组的公共事件过程。258258第七章第七章 数数 组组5、控件数组、控件数组控件数组的建立控件数组的建立给控件起相同的名称给控件起相同的名称将现有的控件复制并粘贴到窗体等上面将现有的控件复制并粘贴到窗体等上面将控件的将控件的Index属性设置为非属性设置为非Null数值数值每每个个新新数数组组元元素素的的索索引引值值与与其其添添加加到到控控件件数数组组中中的的次次序相同序相同259259第七章第七章 数数 组组5、控件数组、控件数

264、组控件数组使用示例控件数组使用示例-命令按钮命令按钮例例7-14PrivateSubCommand1_Click(indexAsInteger)计算平均成绩计算平均成绩DimsAsInteger,pAsString,nAsInteger,kAsIntegerk=indexSelectCasekCase0t=数学的平均分为数学的平均分为:Case1t=语文的平均分为语文的平均分为:Case2t=外语的平均分为外语的平均分为:EndSelect说明:说明:说明:说明:index As index As index As index As Integer : Integer : Integer :

265、Integer : 将将将将命令按钮控件命令按钮控件命令按钮控件命令按钮控件数组下标作为数组下标作为数组下标作为数组下标作为单击事件过程单击事件过程单击事件过程单击事件过程的参数的参数的参数的参数k = index: k = index: k = index: k = index: 将下将下将下将下标参数存放在标参数存放在标参数存放在标参数存放在k k k k中中中中Select Case : Select Case : Select Case : Select Case : 通过选择语句通过选择语句通过选择语句通过选择语句决定哪个命令决定哪个命令决定哪个命令决定哪个命令按钮被单击按钮被单击按

266、钮被单击按钮被单击t = “t = “t = “t = “数学的平数学的平数学的平数学的平均分为均分为均分为均分为:” : :” : :” : :” : 为最后结果显为最后结果显为最后结果显为最后结果显示示示示260260第七章第七章 数数 组组5、控件数组、控件数组控件数组使用示例控件数组使用示例-命令按钮命令按钮例例7-14s=0Forn=1To10s=s+b(n,k+1)Nextns=s/10p=Forn=1To10Ifb(n,k+1)sThenp=p&a(n)&NextnMsgBox低于平均分数的同学有:低于平均分数的同学有:&Chr(13)&Chr(13)&p,0,t&Str(s)E

267、ndSub说明:说明:说明:说明:k+1: k+1: k+1: k+1: 将控件数组将控件数组将控件数组将控件数组下标和数组下标和数组下标和数组下标和数组b b b b第第第第二维下标对应二维下标对应二维下标对应二维下标对应261261第七章第七章 数数 组组5、控件数组、控件数组控件数组使用示例控件数组使用示例-单选按钮单选按钮例例银行存款程序银行存款程序:设银行定期存款年利率为:设银行定期存款年利率为:1年期年期2.25%,2年期年期2.43%,3年期年期2.70%,5年期年期2.88%。今有本金。今有本金a元,元,5年以后使用年以后使用PrivateSubOption1_Click(In

268、dexAsInteger)DimaAsSingle,xAsSingle,nAsIntegera=Val(Text1.Text)n=Index262262第七章第七章 数数 组组5、控件数组、控件数组控件数组使用示例控件数组使用示例-单选按钮单选按钮SelectCasenCase0x=(1+5*0.0288)*aCase1x=(1+3*0.027)*(1+2*0.0243)*aCase2x=(1+3*0.027)*(1+0.0225)2*aCase3x=(1+2*0.0243)2*(1+0.0225)*aCase4x=(1+2*0.0243)*(1+0.0225)3*aCase5x=(1+0.0

269、225)5*aEndSelectText2.Text=Format(x,#0.0#)Text1.SetFocusEndSub说明:说明:说明:说明:Select Case n Select Case n Select Case n Select Case n :通过选择判:通过选择判:通过选择判:通过选择判断哪个单选钮断哪个单选钮断哪个单选钮断哪个单选钮被按下被按下被按下被按下Format(x, Format(x, Format(x, Format(x, “#0.0#“#0.0#“#0.0#“#0.0#”) ”) ”) ”) :将数据:将数据:将数据:将数据保留到分保留到分保留到分保留到分26

270、3263第七章第七章 数数 组组5、控件数组、控件数组控件数组使用示例控件数组使用示例-文本框组文本框组例例7-17Dima(10)AsTextBoxPrivateSubForm_Activate()RandomizeTimeFori=0To9Seta(i)=Text1(i)a(i).Text=Int(Rnd*199)-99a(i).BackColor=RGB(255,255,255)NextiEndSub264264作业:课后题作业:课后题7.18,7.20,7.23第七章第七章 数数 组组265265第七章第七章 数数 组组课后题课后题7-23Dima(10)AsTextBoxPrivat

271、eSubForm_Activate()RandomizeTimeFori=0To9Seta(i)=Text1(i)a(i).Text=Int(Rnd*199)-99a(i).BackColor=RGB(255,255,255)NextiEndSub266266测绘测绘VBVB语言程序设计语言程序设计第八章第八章267267第八章第八章 过过 程程1、事件过程、事件过程2、子过程、子过程3、函数过程、函数过程4、参数传递、参数传递5、过程的嵌套和递归调用、过程的嵌套和递归调用268268第八章第八章 过过 程程pVB程序结构程序结构模块模块1模块模块2模块模块n过程过程1过程过程2程程序序过程过

272、程nSub过程过程函数过程函数过程属性过程属性过程269269第八章第八章 过过 程程p过程的定义过程的定义p过程过程:完成某种特殊功能的一组独立的程序代码。完成某种特殊功能的一组独立的程序代码。p包括在声明语句和包括在声明语句和End语句之间的语句之间的VB语句块。语句块。p可供其它程序调用的独立程序段。可供其它程序调用的独立程序段。用户定义用户定义系统内部系统内部过程过程通用过程通用过程自定义函数过程自定义函数过程(Function过程过程)事件过程事件过程内部函数过程内部函数过程子过程子过程(Sub过程过程)270270第八章第八章 过过 程程pVisualBasic过程过程p事件过程事

273、件过程p响应由用户操作或程序中触发的事件而执行的过程响应由用户操作或程序中触发的事件而执行的过程p事件过程一般由事件过程一般由VB创建,用户不能增加或删除创建,用户不能增加或删除p事件过程是附加在窗体和控件上的事件过程是附加在窗体和控件上的p通通用用过过程程:通通用用过过程程与与控控件件对对象象、事事件件均均无无关关,是是在在代代码码窗窗口口中中的的一一个个独独立立过过程程,随随时时等等待待其其它它过过程程(主主要要是是事事件件过过程程)调调用。用。pSub过程过程:不返回值不返回值pFunction过程过程:返回值返回值p属性过程属性过程:返回或设置属性的值,设置对象的引用返回或设置属性的值

274、,设置对象的引用271271第八章第八章 过过 程程1、事件过程、事件过程一一个个窗窗体体事事件件过过程程将将词词汇汇Form、下下划划线线(_)和事件名组合起来和事件名组合起来一一个个控控件件的的事事件件过过程程将将控控件件的的(在在Name属属性性中中规规定定的的)实实际际名名字字、下下划划线线(_)和和事事件件名名组组合合起来。起来。PrivateSubForm_()EndSubPrivateSub_()EndSubp窗体也有唯一的名字,但不窗体也有唯一的名字,但不能在事件过程的名字中使用这能在事件过程的名字中使用这些名字些名字p事件过程中要的控件名要与控事件过程中要的控件名要与控件在属

275、性列表中的件在属性列表中的Name属性一属性一致致272272第八章第八章 过过 程程2、子过程、子过程创建方法创建方法:一是在代码窗口中直接按规定的格式编写一是在代码窗口中直接按规定的格式编写利利用用VB的的过过程程添添加加工工具具生生成成过过程程框框架架,然然后后编编写过程体写过程体Public|PrivateStaticSub过程名过程名(形式参数列表形式参数列表)局部变量或常数定义局部变量或常数定义ExitSubEndSub273273第八章第八章 过过 程程2、子过程、子过程子过程子过程:Private|Public为为可可选选关关键键字字,用用来来说说明明过过程程的的性质性质Pri

276、vate和和Public用用来来声声明明该该Sub过过程程是是私私有有的的(局局部部的的),还还是是公公有有的的(全全局局的的);系系统统默默认认为为Public。Public关关键键字字声声明明全全局局级级过过程程,全全局局过过程程在在应应用用程程序序的的所所有有模模块块中中都都可可以以调调用用;Private关关键键字字声声明明模模块块级级过过程程,只只有有在在本本窗窗口口和和声声明明它它的的模模块中才可以调用此过程。块中才可以调用此过程。Static是是静静态态变变量量声声明明。指指定定该该过过程程中中所所有有局局部部变变量量均均为为静静态态变变量量,在在过过程程被被调调用用后后其其值值

277、仍仍然然保留。保留。过程名与变量名的命名规则相同。过程名与变量名的命名规则相同。274274第八章第八章 过过 程程2、子过程、子过程调用子过程调用子过程:Call过程名过程名(实际参数列表实际参数列表)Callsum(a,b,c)过程名过程名实际参数列表实际参数列表suma,b,c调用过程调用过程CallSubACallSubACallSubB子过程子过程SubA子过程子过程SubBp参数间用逗号分隔参数间用逗号分隔p实参可以是常量、实参可以是常量、变量、表达式变量、表达式275275第八章第八章 过过 程程例例8-1PublicSubButton_Manage(ButtomAsObject

278、)管理通用过程,以对象名为参数管理通用过程,以对象名为参数SelectCaseButtomCaseCommand1Command2.Enabled=FalseCaseCommand2Command1.Enabled=FalseCaseCommand3Command1.Enabled=TrueCommand2.Enabled=TrueEndSelectEndSubPrivateSubCommand1_Click()Button_ManageCommand1调用通用过程调用通用过程EndSubPrivateSubCommand2_Click()Button_ManageCommand2EndSub

279、PrivateSubCommand3_Click()Button_ManageCommand3EndSub276276第八章第八章 过过 程程例例8-2计算阶乘计算阶乘5!,6!,8!,以及以及5!+6!+8!PublicSubFact(mAsInteger,TotalAsLong)求阶乘的通用过程求阶乘的通用过程DimiAsIntegerTotal=1Fori=1TomTotal=Total*iNextEndSub277277第八章第八章 过过 程程PrivateSubCommand1_Click(IndexAsInteger)点击按钮组的事件过程点击按钮组的事件过程DimaAsIntege

280、r,bAsInteger,cAsInteger,sAsLong,TotAsLongn=IndexSelectCasenCase0a=5Facta,TotLabel1.Caption=a&!=&TotCase1a=6Facta,TotLabel1.Caption=a&!=&TotCase2a=8Facta,TotLabel1.Caption=a&!=&TotCase3Fact5,Tots=s+TotFact6,Tots=s+TotFact8,Tots=s+TotLabel1.Caption=5!+6!+8!=&sEndSelectEndSub278278第八章第八章 过过 程程3、函数过程、函数

281、过程定义函数过程定义函数过程:与与Sub过过程程一一样样,Function过过程程也也是是一一个个独独立立的的过程,可传递参数,执行一系列语句。过程,可传递参数,执行一系列语句。Function过程有返回值过程有返回值Private|PublicStaticFunction函数过程名函数过程名(参数列表参数列表)As类型类型局部变量或常数定义局部变量或常数定义语句块语句块函数过程名函数过程名=表达式表达式ExitFunction语句块语句块函数过程名函数过程名=表达式表达式EndFunction279279第八章第八章 过过 程程3、函数过程、函数过程定义函数过程定义函数过程:Private|

282、Public为为可可选选关关键键字字,用用来来说说明明该该函函数数过过程的性质。程的性质。Static:可可选选用用,指指定定该该过过程程内内的的所所有有局局部部变变量量为为静态变量,在过程被调用后其值仍然保留。静态变量,在过程被调用后其值仍然保留。As类类型型:函函数数返返回回值值的的数数据据类类型型,与与变变量量一一样样,如果没有如果没有As子句,默认的数据类型为子句,默认的数据类型为Variant。函函数数过过程程名名表表达达式式:在在函函数数体体中中用用该该语语句句给给函函数赋值。如省略,函数返回默认值。数赋值。如省略,函数返回默认值。ExitFunction语语句句用用于于提提前前从

283、从Function过过程程中中退退出出,但但用用户户退退出出函函数数之之前前,应应该该有有给给函函数数过过程名赋值的语句被执行。程名赋值的语句被执行。280280第八章第八章 过过 程程3、函数过程、函数过程调用函数过程调用函数过程:以以表表达达式式方方式式调调用用:把把函函数数看看作作一一个个数数,可可以以放放在赋值号右端。在赋值号右端。用用Call语语句句调调用用(以以独独立立语语句句方方式式):同同调调用用子子过过程程,此时此时,放弃函数的返回值。放弃函数的返回值。无参函数的调用无参函数的调用=函数名函数名(实际参数列表实际参数列表)pix=pi(100000)callpi(100000

284、)281281第八章第八章 过过 程程3、函数过程、函数过程例例8-8求求3到到10的阶乘的和。的阶乘的和。PublicFunctionFact(nAsInteger)s=1Fork=1Tons=s*nNextkFact=sEndFunctionPrivateSubCommand1_Click()DimiAsInteger,sAsDoubles=0Fori=3To10p=p&i&!&+s=s+Fact(i)NextiLabel1.Caption=Left(p,Len(p)-1)&=Label2.Caption=sEndSub282282第八章第八章 过过 程程4、参数传递、参数传递过程与外界的

285、数据传递方式过程与外界的数据传递方式:通过非局部变量通过非局部变量通过参数通过参数283283第八章第八章 过过 程程4、参数传递、参数传递形式参数与实际参数形式参数与实际参数:形形式式参参数数(简简称称形形参参):定定义义过过程程时时,在在过过程程名名的的参参数列表中的参数称为形式参数。数列表中的参数称为形式参数。数组名数组名()除定长字符串外的合法变量名除定长字符串外的合法变量名实实际际参参数数(简简称称实实参参):调调用用过过程程时时,在在过过程程名名后后的的参数列表中的参数称为实际参数。参数列表中的参数称为实际参数。常量、表达式、合法的变量名、数组名常量、表达式、合法的变量名、数组名在

286、在调调用用过过程程时时实实际际参参数数表表中中,参参数数的的其其个个数数、类类型必须与形参表一一对应。型必须与形参表一一对应。284284第八章第八章 过过 程程4、参数传递、参数传递PrivateSubDivisor(ByValmAsInteger,ByValnAsInteger)EndSub过程调用过程调用:CallDivisor(x,y)过程定义过程定义:SubDivisor(ByValmAsInteger,ByValnAsInteger)285285第八章第八章 过过 程程4、参数传递、参数传递按值传递与按地址传递按值传递与按地址传递:ByVal表示该参数按值传递表示该参数按值传递By

287、Ref表示该参数按地址传递表示该参数按地址传递如如果果没没有有明明确确指指明明参参数数的的传传递递方方式式,默默认认为为ByRef。参参数数名名遵遵循循标标准准的的变变量量命命令令约约定定。如如果果是是数数组组变变量,则要在数组名后加上一对小括号。量,则要在数组名后加上一对小括号。OptionalByVal|ByRef|ParamArray()As=defaultvalue286286第八章第八章 过过 程程4、参数传递、参数传递按地址传递按地址传递:按按地地址址传传递递参参数数使使过过程程用用变变量量的的内内存存地地址址去去访访问问实际变量的内容实际变量的内容按按地地址址传传递递参参数数是是

288、把把实实参参的的地地址址传传递递给给形形参参,在在过过程程中中对对形形参参的的访访问问就就是是对对内内存存中中实实参参变变量量单单元元的访问,结果,实参值将随着形参值改变。的访问,结果,实参值将随着形参值改变。调用过程时传址的形式有调用过程时传址的形式有:变量名、数组名变量名、数组名()例例8-9按地址传递。按地址传递。PrivateSubForm_Click()DimaAsInteger,bAsIntegera=5b=6Print原原a=;a,原原b=;btrya,bPrinta=;a,b=;bEndSubSubtry(xAsInteger,yAsInteger)x=x+2y=y+3Prin

289、tx=;x,y=;yEndSub287287第八章第八章 过过 程程4、参数传递、参数传递按值传递按值传递:值传递参数时,传递的只是变量的副本。值传递参数时,传递的只是变量的副本。如如果果过过程程改改变变了了这这个个值值,则则所所作作变变动动只只影影响响副副本本而不会影响变量本身。而不会影响变量本身。变变量量名名(定定义义时时用用ByVal说说明明过过)、常常数数、表表达达式式、(变量名变量名)例例8-10按值传递。按值传递。PrivateSubForm_Click()DimaAsInteger,bAsIntegera=5b=6Print原原a=;a,原原b=;btrya,bPrinta=;a

290、,b=;bEndSubSubtry(ByValxAsInteger,ByValyAsInteger)x=x+2y=y+3Printx=;x,y=;yEndSubp如果希望强制以单个变量为实如果希望强制以单个变量为实参进行按值传递,可以给这个参进行按值传递,可以给这个实参变量加上一个额外的小括实参变量加上一个额外的小括号,这样号,这样VisualBasic就把它理就把它理解为一个表达式,实行按值传解为一个表达式,实行按值传递。递。288288第八章第八章 过过 程程4、参数传递、参数传递使用参数使用参数-使用可选的参数使用可选的参数:在在过过程程的的参参数数列列表表中中列列入入Optional关

291、关键键字字,就就可可以指定过程的参数为可选的。以指定过程的参数为可选的。如如果果指指定定了了可可选选参参数数,则则参参数数表表中中此此参参数数后后面面的的其其它它参参数数也也必必是是可可选选的的,并并且且要要用用Optional关关键字来声明。键字来声明。289289第八章第八章 过过 程程4、参数传递、参数传递例例8-11含可选参数的过程。含可选参数的过程。PrivateSubListText(xAsString,OptionalyAsString)DimtempAsStringIfIsMissing(y)Thentemp=Format(x,)Elsetemp=Format(x,)&Form

292、at(y,)EndIfList1.AddItemtempEndSub说明:说明:说明:说明: IsMissing(y): IsMissing(y): IsMissing(y): IsMissing(y): 返回布尔型,返回布尔型,返回布尔型,返回布尔型,指出一个可选指出一个可选指出一个可选指出一个可选的变体型参数的变体型参数的变体型参数的变体型参数是否已经传递是否已经传递是否已经传递是否已经传递给过程。如果给过程。如果给过程。如果给过程。如果对特定参数没对特定参数没对特定参数没对特定参数没有传递值过去,有传递值过去,有传递值过去,有传递值过去,返回返回返回返回TrueTrueTrueTrue,

293、否,否,否,否则返回则返回则返回则返回FalseFalseFalseFalse。 在未提供某个可在未提供某个可在未提供某个可在未提供某个可选参数时,实选参数时,实选参数时,实选参数时,实际上将该参数际上将该参数际上将该参数际上将该参数作为具有作为具有作为具有作为具有 Empty Empty Empty Empty 值的变值的变值的变值的变体来赋值。体来赋值。体来赋值。体来赋值。290290第八章第八章 过过 程程4、参数传递、参数传递PrivateSubCommand1_Click()传递两传递两个参数的个参数的Commnad1_Click事件过程事件过程:DimaAsString,bAsSt

294、ringa=InputBox(请输入一串数据:请输入一串数据:)b=InputBox(请输入一串数据请输入一串数据:)CallListText(a,b)EndSubPrivateSubCommand2_Click()传递一传递一个参数的个参数的Command2_Click事件过程事件过程:DimaAsStringa=InputBox(请输入一串数据:请输入一串数据:)CallListText(a)EndSub说明:说明:说明:说明:调用过程时没有为调用过程时没有为调用过程时没有为调用过程时没有为y y y y提供参数,提供参数,提供参数,提供参数,y=y=y=y=291291第八章第八章 过过

295、 程程4、参数传递、参数传递使用参数使用参数-提供可选参数的缺省值提供可选参数的缺省值:例例8-12为可选参数指定一个缺省值。为可选参数指定一个缺省值。PrivateSubListText(xAsString,OptionalyAsString=*)DimtempAsStringIfIsMissing(y)Thentemp=Format(x,)Elsetemp=Format(x,)&Format(y,)EndIfList1.AddItemtempEndSub说明:说明:说明:说明: Optional y As Optional y As Optional y As Optional y As

296、String= String= String= String= *:为未传递的参为未传递的参为未传递的参为未传递的参数指定一个默数指定一个默数指定一个默数指定一个默认值认值认值认值292292第八章第八章 过过 程程4、参数传递、参数传递使使用用参参数数-使使用用不不定定数数量量的的参参数数:ParamArray关关键字指明,过程将接受任意个数的参数。键字指明,过程将接受任意个数的参数。ParamArray关键字修饰的参数称为可变参数关键字修饰的参数称为可变参数ParamArray关关键键字字只只用用于于参参数数表表的的最最后后一一个个参参数数,指指明明最最后后这这个个参参数数是是一一个个Va

297、riant元元素素的的数数组组。使使用用ParamArray关关键键字字可可以以提提供供任任意意数数目目的参数。的参数。ParamArray关关 键键 字字 不不 能能 与与 ByVal、 ByRef 或或Optional一起使用。一起使用。293293第八章第八章 过过 程程4、参数传递、参数传递使使用用参参数数-使使用用不不定定数数量量的的参参数数:ParamArray关关键字指明,过程将接受任意个数的参数。键字指明,过程将接受任意个数的参数。例例8-13为可选参数指定一个缺省值。为可选参数指定一个缺省值。PrivateSubListText(ParamArraystrx()ForEach

298、xInstrxtemp=temp&Format(x,|)NextList1.AddItemtempEndSubPrivateSubCommand1_Click()DimaAsString,bAsString,cAsStringa=Left(InputBox(请输入一串数据:请输入一串数据:),6)b=Left(InputBox(请输入一串数据:请输入一串数据:),6)c=Left(InputBox(请输入一串数据:请输入一串数据:),6)CallListText(a,b,c)EndSubPrivateSubCommand2_Click()DimaAsStringa=Left(InputBox(

299、请输入一串数据:请输入一串数据:),6)b=Left(InputBox(请输入一串数据:请输入一串数据:),6)CallListText(a,b)EndSub294294第八章第八章 过过 程程4、参数传递、参数传递传递数组传递数组:定定义义过过程程时时的的形形参参可可以以是是简简单单变变量量,但但不不能能是是数数组的元素。组的元素。调用过程时的实参可以是数组的元素调用过程时的实参可以是数组的元素整整个个数数组组既既可可以以作作为为过过程程的的实实参参,又又可可以以作作为为数数组的形参。组的形参。SubA(t(1),t(2) CallA(t(1),t(2) SubS(a(),b().EndSu

300、bFunctionS(a(),b().EndFunction CallS(p(),q()295295第八章第八章 过过 程程4、参数传递、参数传递传递数组传递数组:用用数数组组作作过过程程参参数数时时,在在数数组组名名的的后后面面应应加加一一对对空空圆括弧。圆括弧。当当数数组组作作为为过过程程的的参参数数时时,采采取取的的是是传传地地址址方方式式,而而不不是是传传值值的的方方式式,因因此此对对数数组组元元素素的的修修改改将将带带回调用程序。回调用程序。实实参参数数组组在在调调用用程程序序中中定定义义,在在过过程程中中不不必必再再对对形形参参数数组组给给出出定定义义,只只要要在在过过程程中中形形

301、参参数数组组使使用用的的下下标标值值,不不超超过过调调用用程程序序中中实实参参数数组组定定义义的的下下标标范围。范围。296296第八章第八章 过过 程程4、参数传递、参数传递传递数组传递数组:例例8-14生成生成10个随机数并排序。将随机数个随机数并排序。将随机数组作为参数传递。组作为参数传递。PrivateSubPai_xu(p()AsInteger)以数组以数组为过程参数为过程参数,对数组中的各元素进行排序对数组中的各元素进行排序DimiAsInteger,kAsInteger,tAsIntegerFori=1To9Fork=i+1To10Ifp(i)p(k)Thent=p(i):p(i

302、)=p(k):p(k)=tEndIfNextkNextiEndSubPrivateSubCommand2_Click()DimiAsInteger,pAsStringCallPai_xu(a()p=Str(a(1)Fori=2To10p=p&,&Str(a(i)NextLabel2.Caption=LTrim(p)EndSub297297第八章第八章 过过 程程5、过程的嵌套和递归调用、过程的嵌套和递归调用在在一一个个过过程程(子子过过程程或或函函数数过过程程)中中调调用用另另外外一一个个过程,称过程的嵌套调用。过程,称过程的嵌套调用。一一个个过过程程直直接接或或间间接接地地调调用用自自身身,

303、便便构构成成了了过过程程的的递递归归调调用用,前前者者称称为为直直接接递递归归调调用用,后后者者称称为间接递归调用。为间接递归调用。298298第八章第八章 过过 程程5、过程的嵌套和递归调用、过程的嵌套和递归调用过程的嵌套调用过程的嵌套调用299299第八章第八章 过过 程程5、过程的嵌套和递归调用、过程的嵌套和递归调用过程的嵌套调用过程的嵌套调用例例8-16输入参数输入参数n,m,求组合数求组合数的值。的值。PrivateFunctionFact(x)AsLong计算阶乘的函数计算阶乘的函数DimpAsLongp=1Fori=1Toxp=p*iNextiFact=pEndFunctionP

304、rivateFunctionComb(nAsInteger,mAsInteger)AsLong计算组合的函数计算组合的函数Comb=Fact(n)/(Fact(m)*Fact(n-m)EndFunction300300第八章第八章 过过 程程5、过程的嵌套和递归调用、过程的嵌套和递归调用过程的嵌套调用过程的嵌套调用PrivateSubCommand1_Click()按钮过程按钮过程DimmAsInteger,nAsIntegerm=Val(Text1.Text)n=Val(Text2.Text)IfmnThenMsgBox请保证输入正确的参数请保证输入正确的参数,0,请检查!请检查!ExitS

305、ubEndIfLabel3.Caption=Comb(n,m)EndSub301301第八章第八章 过过 程程5、过程的嵌套和递归调用、过程的嵌套和递归调用过程的递归过程的递归可可以以把把要要解解决决的的问问题题转转化化为为一一个个新新的的问问题题,而而这这个个新新的的问问题题的的解解法法仍仍与与原原来来的的解解法法相相同同,只只是是所处理的对象有规律地递增或递减。所处理的对象有规律地递增或递减。有有一一个个明明确确的的结结束束递递归归的的条条件件,任任何何有有意意义义的的递递归归总总是是由由两两部部分分组组成成的的:递递归归方方式式与与递递归归终终止止条件。条件。302302第八章第八章 过

306、过 程程5、过程的嵌套和递归调用、过程的嵌套和递归调用例例8-17利用递归求利用递归求n!PrivateSubText1_KeyPress(KeyAsciiAsInteger)DimnAsInteger,mAsDoubleLabel2.Caption=IfKeyAscii=13Thenn=Val(Text1.Text)Ifn20ThenMsgBox非法数据!非法数据!:ExitSubm=fact(n)Label2.Caption=Format(m,!)Text1.SetFocusEndIfEndSub303303第八章第八章 过过 程程5、过程的嵌套和递归调用、过程的嵌套和递归调用Functi

307、onfact(n)计算阶乘的递归函数计算阶乘的递归函数Ifn;CElseHanoin-1,A,C,BPrintA;-;CHanoin-1,B,A,CEndIfEndSubPrivateSubForm_Click()DimxAsIntegerx=Val(InputBox(请出入盘子数:请出入盘子数:)Hanoix,A,B,CEndSubp假假设设有有n片片,移移动动次次数数是是f(n).显显然然f(1)=1,f(2)=3,f(3)=7,且且f(k+1)=2*f(k)+1。此后不难证明。此后不难证明f(n)=2n-1。n=64时,时,pf(64)=264-1=1844674407370955161

308、5p假假如如每每秒秒钟钟一一次次,共共需需多多长长时时间间呢呢?一一个个平平年年365天天有有31536000秒,闰年秒,闰年366天有天有31622400秒,平均每年秒,平均每年31556952秒秒:p18446744073709551615/31556952=584554049253.855年年p这这表表明明移移完完这这些些金金片片需需要要5845亿亿年年以以上上,而而地地球球存存在在至至今今不不过过45亿亿年年,太太阳阳系系的的预预期期寿寿命命据据说说也也就就是是数数百百亿亿年年。真真的的过过了了5845亿亿年年,不不说说太太阳阳系系和和银银河河系系,至至少少地地球球上上的的一一切切生生

309、命命,连连同梵塔、庙宇等,都早已经灰飞烟灭。同梵塔、庙宇等,都早已经灰飞烟灭。p307307作业:课后题作业:课后题8.18,8.20第八章第八章 过过 程程308308测绘测绘VBVB语言程序设计语言程序设计第九章第九章309309第九章第九章 变量与过程的作用域变量与过程的作用域一、代码模块的概念一、代码模块的概念二、变量的作用域和生存期二、变量的作用域和生存期三、过程的作用域三、过程的作用域四、按钮控件四、按钮控件310310pVB程序结构程序结构第九章第九章 变量与过程的作用域变量与过程的作用域311311一、代码模块的概念一、代码模块的概念1、窗体模块窗体模块每每个个窗窗体体都都有有

310、一一个个包包含含其其代代码码的的相相关关的的窗窗体体模模块块(.frm)窗体模块包含窗体模块包含事事件件过过程程:即即代代码码部部分分,其其中中有有为为响响应应特特定定事事件件而而执执行的指令;行的指令;控控件件:在在窗窗体体模模块块中中,对对窗窗体体上上的的每每个个控控件件都都有有一一个个对应的事件过程集;对应的事件过程集;窗窗体体模模块块还还可可包包含含通通用用过过程程,它它对对来来自自任任何何事事件件过过程的调用都作出响应。程的调用都作出响应。第九章第九章 变量与过程的作用域变量与过程的作用域312312一、代码模块的概念一、代码模块的概念2、标准模块标准模块标标准准模模块块(.bas)

311、可可以以包包含含类类型型、常常数数、变变量量、外外部部过程和公共过程的公共的或模块级的声明。过程和公共过程的公共的或模块级的声明。默认标准模块中的代码为默认标准模块中的代码为Public。可将与特定窗体或控件无关的代码放入标准模块中。可将与特定窗体或控件无关的代码放入标准模块中。一一个个过过程程可可能能用用来来响响应应几几个个不不同同对对象象中中的的事事件件,应应该该将将这这个个过过程程放放在在标标准准模模块块中中,而而不不应应在在每每一一个个对象的事件过程中重复相同的代码。对象的事件过程中重复相同的代码。第九章第九章 变量与过程的作用域变量与过程的作用域313313一、代码模块的概念一、代码

312、模块的概念3、类模块、类模块类类模模块块(.cls)与与窗窗体体模模块块类类似似,只只是是没没有有可可见见的的用用户户界界面面。可可以以使使用用类类模模块块创创建建含含有有方方法法和和属属性性代代码的自己的对象。码的自己的对象。用类模块创建对象,可被应用程序内的过程调用。用类模块创建对象,可被应用程序内的过程调用。标标准准模模块块只只包包含含代代码码,而而类类模模块块既既包包含含代代码码又又包包含含数据,可视为没有物理表示的控件。数据,可视为没有物理表示的控件。第九章第九章 变量与过程的作用域变量与过程的作用域314314二、变量的作用域和生存期二、变量的作用域和生存期1、变量的作用域、变量的

313、作用域变量的作用域变量的作用域:指变量的有效范围指变量的有效范围变变量量的的作作用用范范围围确确定定了了能能够够识识别别并并使使用用变变量量的的那那部部分分代代码码按按变变量量的的作作用用域域不不同同,可可以以将将变变量量分分为为局局部部变变量量、窗窗体体/模块级变量和全局变量。模块级变量和全局变量。第九章第九章 变量与过程的作用域变量与过程的作用域315315二、变量的作用域和生存期二、变量的作用域和生存期1、变量的作用域、变量的作用域窗体文件窗体文件模块文件模块文件VB应用程序应用程序通用过程通用过程声明部分声明部分事件过程事件过程通用过程通用过程全局声明部分全局声明部分模块层声明部分模块

314、层声明部分通用过程通用过程模块层声明部分模块层声明部分类模块文件类模块文件第九章第九章 变量与过程的作用域变量与过程的作用域316316二、变量的作用域和生存期二、变量的作用域和生存期1、变量的作用域、变量的作用域局部变量局部变量(过程级变量过程级变量):在在过过程程内内用用Dim或或Static语语句句声声明明的的变变量量(或或不不加加声声明明直直接使用的变量接使用的变量)均为过程级变量均为过程级变量只能在本过程中使用只能在本过程中使用,别的过程不可访问别的过程不可访问.过过程程级级变变量量在在过过程程被被调调用用时时分分配配存存储储并并初初始始化化,一一旦旦过过程执行结束程执行结束,变量自

315、动释放所分配的存储单元变量自动释放所分配的存储单元.第九章第九章 变量与过程的作用域变量与过程的作用域317317二、变量的作用域和生存期二、变量的作用域和生存期1、变量的作用域、变量的作用域例例9-1PrivateSubForm_Activate()DimaAsInteger,bAsInteger,cAsIntegera=4:b=7Form1.ForeColor=RGB(255,0,0)PrintTab(31);a;Tab(41);b;Tab(50);c=a+bForm1.ForeColor=RGB(0,0,0)Print调用子过程调用子过程test前的变量值前的变量值;Tab(30);a;

316、Tab(40);b;Tab(52);cCalltestPrint调用子过程调用子过程test后的变量值后的变量值;Tab(30);a;Tab(40);b;Tab(52);cEndSubPrivateSubtest()DimaAsInteger,bAsInteger,cAsIntegerc=a+bPrint子程序子程序test中的变量值中的变量值;Tab(30);a;Tab(40);b;Tab(52);cEndSub第九章第九章 变量与过程的作用域变量与过程的作用域318318二、变量的作用域和生存期二、变量的作用域和生存期1、变量的作用域、变量的作用域窗体窗体/模块级变量模块级变量:在模块的通

317、用段中声明的变量为模块级变量。在模块的通用段中声明的变量为模块级变量。私有模块级变量私有模块级变量:在在窗窗体体/模模块块内内通通用用声声明明段段,过过程程之之外外用用Dim语语句句或或用用Private语语句句声声明明的的变变量量,可可被被本本窗窗体体/模模块块中中的的任任何何过过程访问程访问.公有模块级变量公有模块级变量/全局变量全局变量:在在标标准准模模块块通通用用声声明明段段,用用Public声声明明的的变变量量,可可被被应应用用程程序序中中的的任任何何过过程程或或函函数数访访问问.在在该该应应用用程程序序运运行行过过程程,全全局局变变量量都都不不会会消消失失或或重重新新初初始始化化,

318、应应用用程程序序运运行行结束才会释放所占用的存储单元结束才会释放所占用的存储单元.p注意无意修改注意无意修改第九章第九章 变量与过程的作用域变量与过程的作用域319319二、变量的作用域和生存期二、变量的作用域和生存期1、变量的作用域、变量的作用域例例9-2DimaAsInteger,bAsInteger,cAsIntegerPrivateSubForm_Activate()a=4:b=7Form1.ForeColor=RGB(255,0,0)PrintTab(31);a;Tab(41);b;Tab(50);c=a+bForm1.ForeColor=RGB(0,0,0)Print调用子过程调用

319、子过程test前的变量值前的变量值;Tab(30);a;Tab(40);b;Tab(52);cCalltestPrint调用子过程调用子过程test后的变量值后的变量值;Tab(30);a;Tab(40);b;Tab(52);cEndSubPrivateSubtest()c=a+bPrint子程序子程序test中的变量值中的变量值;Tab(30);a;Tab(40);b;Tab(52);cEndSub第九章第九章 变量与过程的作用域变量与过程的作用域320320二、变量的作用域和生存期二、变量的作用域和生存期1、变量的作用域、变量的作用域第九章第九章 变量与过程的作用域变量与过程的作用域321

320、321二、变量的作用域和生存期二、变量的作用域和生存期2、变量的生存期、变量的生存期当当一一个个过过程程被被调调用用时时,系系统统将将给给该该过过程程中中的的变变量量分分配配存存储储单单元元,当当该该过过程程执执行行结结束束时时,是是释释放放还还是是保保留留变变量量的存储单元,这就是变量的生存期问题。的存储单元,这就是变量的生存期问题。变量的生存期即指变量的作用时间。变量的生存期即指变量的作用时间。根根据据变变量量的的生生存存期期,可可以以将将变变量量分分为为动动态态变变量量和和静静态态变变量。量。第九章第九章 变量与过程的作用域变量与过程的作用域322322二、变量的作用域和生存期二、变量的

321、作用域和生存期2、变量的生存期、变量的生存期动动态态变变量量:在在应应用用程程序序中中除除使使用用Static语语句句进进行行声声明明的的变变量之外的所有变量量之外的所有变量静态变量静态变量:在应用程序中使用在应用程序中使用Static语句声明的变量语句声明的变量局局部部变变量量定定义义成成静静态态的的以以后后,程程序序运运行行期期间间静静态态变变量量的的值值都都被被程程序序保保留留,当当再再次次进进入入定定义义的的过过程程时时,上上一一次次操操作作的的值值便便是是本本次次操操作作的的初初值值。静静态态变变量量所所分分配配的的存存储空间要到程序运行结束后才释放。储空间要到程序运行结束后才释放。

322、第九章第九章 变量与过程的作用域变量与过程的作用域323323二、变量的作用域和生存期二、变量的作用域和生存期2、变量的生存期、变量的生存期例例9-4PrivateSubForm_Activate()DimiAsIntegerFori=1To4TestsubNextiEndSubPrivateSubTestsub()DimxAsInteger,mAsStringStaticyAsInteger,nAsString定义静态变量定义静态变量x=x+1:y=y+1m=m&*:n=n&*Printx=;x,y=;y,m=;m,n=;nEndSub第九章第九章 变量与过程的作用域变量与过程的作用域324

323、324三、过程的作用域:可以调用的范围三、过程的作用域:可以调用的范围1、模块级过程和全局级过程、模块级过程和全局级过程模模块块级级过过程程:在在模模块块内内用用Sub或或Function定定义义的的过过程程,前前面面加加有有关关键键字字Private。模模块块级级过过程程只只能能被被所所在在模模块块中中定义的其它过程调用。定义的其它过程调用。全全局局级级过过程程:定定义义时时,前前面面加加有有Public或或没没有有加加Private的的过过程程为为全全局局过过程程。全全局局过过程程可可以以被被程程序序中中各各模模块块定定义的过程调用。作用域为整个应用程序。义的过程调用。作用域为整个应用程序

324、。第九章第九章 变量与过程的作用域变量与过程的作用域325325三、过程的作用域:可以调用的范围三、过程的作用域:可以调用的范围2、调用其他模块中的过程、调用其他模块中的过程调用窗体过程的格式调用窗体过程的格式:调用标准模块中的过程的格式调用标准模块中的过程的格式:第九章第九章 变量与过程的作用域变量与过程的作用域Call窗体名窗体名.sub过程名过程名(参数表参数表)窗体名窗体名.sub过程名过程名参数表参数表窗体名窗体名.function过程名过程名(参数表参数表)Call模块名模块名.sub过程名过程名(参数表参数表)模块名模块名.sub过程名过程名参数表参数表模块名模块名.functi

325、on过程名过程名(参数表参数表)p若过程名是唯一的若过程名是唯一的可以省略模块名。可以省略模块名。326326三、过程的作用域:可以调用的范围。三、过程的作用域:可以调用的范围。2、调用其他模块中的过程、调用其他模块中的过程第九章第九章 变量与过程的作用域变量与过程的作用域Form1模块中的代码模块中的代码PrivateSubCommand1_Click(IndexAsInteger)DimaAsSingle,bAsSinglea=Val(Text1(0).Text)b=Val(Text1(1).Text)n=IndexIfn=0ThenLabel3(0).Caption=Mian_ji(a,

326、b)调用本模块内的公有调用本模块内的公有过程过程ElseLabel3(1).Caption=Zhou_chang(a,b)调用本模块内的调用本模块内的过程过程EndIfEndSubPublicFunctionMian_ji(xAsSingle,yAsSingle)AsSingle窗体窗体Form1中的公有过程中的公有过程Mian_ji=x*yEndFunctionPrivateFunctionZhou_chang(xAsSingle,yAsSingle)AsSingle窗体窗体Form1中的模块级过程中的模块级过程Zhou_chang=2*(x+y)EndFunction327327三、过程的

327、作用域:可以调用的范围。三、过程的作用域:可以调用的范围。2、调用其他模块中的过程、调用其他模块中的过程第九章第九章 变量与过程的作用域变量与过程的作用域Form2模块中的代码模块中的代码PrivateSubCommand1_Click(IndexAsIntegerDimaAsSingle,bAsSinglea=Val(Text1(0).Text)b=Val(Text1(1).Text)n=IndexIfn=0ThenLabel3(0).Caption=Form1.Mian_ji(a,b)调用调用Form1中中的公有过程的公有过程ElseLabel3(1).Caption=Module1.Zh

328、ou_chang(a,b)调用标准模中的公有过程调用标准模中的公有过程EndIfEndSub标准模块中的代码标准模块中的代码PublicFunctionZhou_chang(xAsSingle,yAsSingle)AsSingleZhou_chang=2*(x+y)EndFunction328328第九章第九章 变量与过程的作用域变量与过程的作用域题:一个工程中含有窗体题:一个工程中含有窗体Form1、Form2和标准模块和标准模块Model1,如果在,如果在Form1中有中有语句语句PubilcXAsInteger,在,在Model1中有语句中有语句PubilcYAsInteger,则以下叙

329、述中正,则以下叙述中正确的是确的是。A)变量变量X、Y的作用域相同的作用域相同B)Y的作用域是的作用域是Model1C)在在Form1中可以直接使用中可以直接使用XD)在在Form2中可以直接使用中可以直接使用X和和Y题:若已编写了一个题:若已编写了一个Sort子过程,在该工程中有多个窗体,为了方便的调用子过程,在该工程中有多个窗体,为了方便的调用Sort子子过程,应该将该过程放在过程,应该将该过程放在(B)。A、窗体模块、窗体模块B、标准模块、标准模块C、类模块、类模块D、工程、工程329329第九章第九章 变量与过程的作用域变量与过程的作用域题:题:以下叙述中错误的是以下叙述中错误的是A)

330、如果过程被定义为如果过程被定义为Static类型,则该过程中的局部变量都是类型,则该过程中的局部变量都是Static类型类型B)Sub过程中不能嵌套定义过程中不能嵌套定义Sub过程过程C)Sub过程中可以嵌套调用过程中可以嵌套调用Sub过程过程D)事件过程可以像通用过程一样由用户定义过程名事件过程可以像通用过程一样由用户定义过程名题:如果一个工程含有多个窗体及标准模块,则以下叙述中错误的是。题:如果一个工程含有多个窗体及标准模块,则以下叙述中错误的是。A、如果工程中含有、如果工程中含有SubMain过程,则程序一定首先执行该过程过程,则程序一定首先执行该过程B、不能把标准模块设置为启动模块、不

331、能把标准模块设置为启动模块C、用、用Hide方法只是隐藏一个窗体,不能从内存中清除该窗体方法只是隐藏一个窗体,不能从内存中清除该窗体D、任何时刻最多只有一个窗体是活动窗体、任何时刻最多只有一个窗体是活动窗体题:若已编写了一个题:若已编写了一个Sort子过程,在该工程中有多个窗体,为了方便的调用子过程,在该工程中有多个窗体,为了方便的调用Sort子子过程,应该将该过程放在过程,应该将该过程放在(B)。A、窗体模块、窗体模块B、标准模块、标准模块C、类模块、类模块D、工程、工程330330第九章第九章 变量与过程的作用域变量与过程的作用域题题:以下关于过程及过程参数的描述中,错误的是。:以下关于过

332、程及过程参数的描述中,错误的是。A、过程的参数可以是控件名称、过程的参数可以是控件名称B、用数组作为过程的参数时,使用的是、用数组作为过程的参数时,使用的是“传地址传地址”方式方式C、只有函数过程能够将过程中处理的信息传回到调用的程序中、只有函数过程能够将过程中处理的信息传回到调用的程序中D、窗体可以作为过程的参数、窗体可以作为过程的参数题题:下面子过程语句说明合法的是:下面子过程语句说明合法的是A、Subf1(ByValn()AsInteger)B、Functionf1(f1AsInteger)AsIntegerC、Subf1(n()AsInteger)AsIntegerD、Functionf1(ByValnAsInteger)AsInteger331331

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号