新手入门到实践VB编程教程.ppt
第1章 Visual Basic概述,Visual Basic是1991年美国微软公司推出的可视化Basic语言.。它是在原来的Basic语言基础上发展而成的。Visual Basic中无需编写大量代码来编辑界面元素,只需要采用搭积木构建程序方式来编写程序,是现在开发人数最多的最通用的编程工具之一。本章内容包括:Visual Basic特点Visual Basic安装Visual Basic集成开发环境,1.1 Visual Basic简介,Visual Basic是一种可视化的、面向对象和采用事件驱动机制的结构化高级程序设计语言。它可用于开发Windows环境下的各类应用程序。它具有简单易学、效率高、功能强大的特点,可以与Windows专业开发工具SDK相媲美。在Visual Basic环境下,开发人员利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的应用程序接口(API)函数、动态链接库(DLL)、对象的链接与嵌入(OLE)、开放式数据连接(ODBC)等技术,可以高效、快速地开发Windows环境下功能强大、图形界面丰富的应用软件系统。,1.1.1 版本区分,Visual Basic有学习版、专业版和企业版三种版本,以满足不同层次的开发需要。不同版本编写的应用程序大多数可以在三种版本中通用。学习版为Visual Basic的基本版本,适用于初期学习者及使用Visual Basic开发一般应用程序的开发人员。专业版为专业开发人员提供了功能完备的软件开发工具。企业版为专业编程人员开发程序提供了功能强大的组内分布式应用程序。,1.1.2 Visual Basic的特点,1可视化编程2面向对象的程序设计3事件驱动机制4强大开放的特点,1.1.3 集成开发环境,1.1.3 集成开发环境,1.1.4 面向对象功能,从Visual Basic 4开始,用户可以通过类模型方式创建和使用对象。对象可以被当作一个数据和单元的组合,如窗体、数据库等。Visual Basic对象可以封装属性、方法和事件,创建时可以重新定义其封装属性、方法和事件。Visual Basic对象可以极大简化重复代码的编写,使开发人员精力集中在程序内容而不是数量庞大的代码上。Visual Basic后续版本增强了该功能,并添加了许多新的面向对象的编程功能。,1.1.5 数据访问,在现代信息技术高度发达的今天,数据信息已经成为最重要资源之一。Visual Basic为开发人员提供了强大的数据访问技术,能够更快捷、更迅速、更高效地存储和读取数据信息。Visual Basic提供了更为强大功能来支持大中型数据库,如Oracle、SQL Server、Sybase等。,1.1.6 Internet功能,互联网(Internet)在现在通讯日益发达的信息世界占据了重要的地位。Visual Basic提供了许多功能为开发具有互联网功能的应用程序提供支持和帮助。Visual Basic在开发过程中可以创建服务器端的动态HTML(DHTML),使用Internet Transfer控件检索和传输文件,利用WebBrowser控件浏览网页信息,采用MAPI收发电子邮件等一系列激动人心的功能。,1.2 Visual Basic 6安装,本节将介绍如何安装Visual Basic 6开发环境。将Visual Basic 6的安装光盘放入计算机的光驱内,一般情况下计算机可以自动运行其中的安装程序。如果计算机没有自动运行安装程序,双击光盘盘符下的Setup.exe文件,将显示Visual Basic安装程序界面,按照安装程序的提示进行相应的操作。,1.3 开始使用Visual Basic 6,Visual Basic开发程序使用图形化界面与用户交流。本节介绍如何使用Visual Basic集成开发环境开发程序界面、设计窗体并通过实例演示如何使用Visual Basic进行应用程序开发。,1.3.1 开发界面,1标题栏2菜单栏3工具栏4工具箱5窗体设计窗口6工程资源管理器7“属性”面板8“布局”面板,1.3.2 窗体使用,应用程序界面是直接面对用户的窗体及其他控件。一个优秀的应用程序应该窗体界面简洁、漂亮,控件布局科学、合理,用户使用舒适、方便。本小节重点介绍窗体的使用技巧。窗体布局调整可以在“格式”菜单中调整,也可以在“窗体编辑器”工具栏中进行编辑。,1.3.3 第一个程序Hello,World,本节将创建第一个程序Hello-World。创建一个应用程序之前,必须明确以下几个重要步骤:(1)制定计划。(2)创建界面。(3)编写代码。(4)测试和调试程序。(5)生成可执行文件。(6)打包文件。,1.3.3 第一个程序Hello,World,1.3.3 第一个程序Hello,World,1.3.4 文件类型,1工程组和工程文件2窗体文件3程序模块文件4类模块文件5资源文件,1.3.5 编译可执行文件,应用程序创建后,必须生成可执行文件才能发布给最终用户。Visual Basic中生成可执行文件操作非常简单。选择“文件”|“生成xxx.exe”命令(xxx为工程名称),弹出“生成工程”对话框.,1.4 常见问题及解答,1将Visual Basic程序安装光盘放入光驱内,为何不自动安装Visual Basic?2Visual Basic程序安装后,如何在系统中运行Visual Basic程序?,1.5 小结,本章简单介绍了Visual Basic基本知识、安装步骤、集成开发环境。本章重点和难点是如何安装Visual Basic和使用Visual Basic开发应用程序界面。读者需要重点练习使用Visual Basic集成开发环境。下一章将介绍数据类型、变量和常量。,第2章 数据类型、变量和常量,数据是用来存储程序需要调用的文字、数值、对象、图像等,包括多种类型。变量是程序用来临时存储数据。常量是以字符串形式用来代替固定数值。本章内容包括:数据类型变量常量,2.1 数据类型,在应用程序中Visual Basic将以更高效率来处理已定义数据类型。Visual Basic包含七种数据类型,分别为数值型(Numeric)、字符型(String)、字节型(Byte)、布尔型(Boolean)、日期型(Date)、对象型(Object)、变体型(Variant)等。本节将详细介绍七种数据类型的定义和特点。,2.1.1 数值型 Numeric,1整数整型:整型取值范围为-3267832677,以2个字节(16位)存储,用二进制码表示和参加运算。长整型:长整型取值范围为-21474836482147483647,以4个字节(32位)存储。2浮点型(1)单精度型(2)双精度型(3)货币型,2.1.2 字节型Byte,字节型(Byte)专为存储二进制数值类型,以1个字节来存储。如果变量声明包含二进制数,则声明为Byte数据类型的数组。取值范围为:0255。除了减法外,所有对整数进行处理的运算符均可处理该类型。,2.1.3 字符型String,字符型(String)为最通用的数据类型之一,用来储存文本信息。每个字符对应1个字节,由ASCII字符序列组成,包括标准的ASCII字符和扩展ASCII字符及汉字等。字符型为包含在双引号内的若干个字符。【示例2-3】显示不同类型字符串。“”表明长度为零的字符串为空字符串;“Visual Basic”表明为字母字符串,赋予变量为“Visual Basic”;“Hello,World 2008。”表明为混合字符串。固定字符串最大取值范围为65535字节;变长字符串最大取值范围为0231。,2.1.4 布尔型Boolean,布尔型(Boolean)为逻辑型,以2个字节来存储。它包含True或False、Yes或No。在程序中一般用于判断语句,或者声明该数值为两种状态,如“开”或“关”。,2.1.5 日期型Date,日期型(Date)为浮点数值形式保存,以8个字节存储。默认日期范围为1/1/1001/1/9999。Windows操作系统下日期范围为1/1/198012/31/2099;时间范围为0:00:0023:59:59。日期型数据用来表示日期类型,格式为:mm-dd-YYYY或者mm/dd/YYYY。在Visual Basic开发应用程序中可以定制日期模式:YYYY-mm-dd。(Y或y为年,m为月,d为日)。,2.1.6 对象型Object,对象型(Object)为保存引用应用程序中的对象,以4个字节(32位)来存储。它可以用来引用图形图像、Word文件、Excel文件等。如果在运行应用程序之前,Visual Basic定义该特定类型对象的属性和方法,应用程序在运行时速度会更快。,2.1.7 变体型Variant,变体型(Variant)能保存所有类型数据,可以随时转换该数据为其他类型。变体型可以在程序中直接声明定义,用户不必过多关注Variant变量中的类型。Visual Basic可以在应用程序运行时自动进行必要的转换。,2.1.8 数据类型转换,程序开发过程中,需要将不同数据类型进行必要的转换。Visual Basic提供了各种类型转换相关的函数,可以在程序中直接调用。如果想把某种数据类型转换为另外一种类型,必须保证该类型数值处于待转换数值有效范围内。,2.2 变量简介,变量在程序执行过程中用以保存临时数据信息,包含在程序执行阶段修改的数据。变量都有变量名称,在其作用范围内作为惟一标识存在。,2.2.1 变量作用域,声明变量可以使用Dim、Private、Public、Static作为关键字。以上关键字分别作用于不同的作用域。,2.2.2 变量命名,变量必须要命名后才能赋值。在过程内部声明的变量,在该过程执行时才存在。当运行过程结束时,该变量的值自动清除。变量命名必须符合以下规定:变量名必须以字母开头,不能以数字或下划线开始。变量不能包含嵌入的句号、空格或者其他停顿符号。变量长度不得超过255个字符。变量名不能是Visual Basic的保留字,如Name、For等。,2.2.2 变量命名,2.2.3 变量类型,变量类型包含2.1小节中所有的数据类型。除此之外,根据应用程序需要还可以创建用户自定义的类型。自定义类型声明使用Type语句。,2.2.4 静态变量,程序运行时变量保存临时数据。一旦程序终止,变量将自动被Visual Basic删除。下一次程序运行时该变量将重新被初始化。但是,应用程序在运行时也有可能需要保留变量数据。Visual Basic可以通过声明静态变量来保存记忆变量数值。,Static varName as type,2.3 变量声明,Visual Basic中声明是事先将变量定义为保存数据内容。在变量使用之前,进行声明是一个重要的编程技巧。变量声明后可以在程序中更高效的使用变量。声明包括显式声明和隐式声明。本节将分别介绍如何显式声明、隐式声明和使用定长字符串。,2.3.1 显式声明,显式声明要求在程序中使用变量前,强制声明该变量。如果不声明该变量,将出现错误提示。显式声明使用Option Explicit语句。选择“工具”|“选项”命令,弹出“选项”对话框。选择“编辑器”选项卡,复选“要求变量声明”选项。该复选框自动在新模块中自动插入以下语句。,Option Explicit,2.3.1 显式声明,Dim varName As vartype,varName2 As vartype2 Private varName As vartype,varName2 As vartype2Public varName As vartype,varName2 As vartype2Static varName As vartype,varName2 As vartype2,2.3.2 隐式声明,2.3.2 隐式声明,nNumber%=0 将nNumber尾部添加%表示为整数sString$=”Visual Basic”将sString尾部添加$表示为整数vVar=6,2.3.3 定长字符串,Visual Basic中也可以声明定义定长字符串,最长为216个字符。该字符串大小长度是固定不变的。如果该变量被赋予短于该长度的表达式,变量的剩余长度将以空格填充。如果长于该长度,自动截取等于该长度的字符,其余部分将被截取。,Dim varName as string*strlength,2.4 常量简介,常量与变量区别在于运行过程中常量表示不变的数值或字符串。常量用以代替繁复难以记忆或输入的数值或字符。变量可以在程序中根据需要修改数据,常量在定义之后无法进行修改。常量的使用有助于改进代码的可读性和可维护性。,2.4.1 标准常量,Visual Basic为应用程序开发提供了许多标准常量。例如,颜色定义常量、关键代码常量等可以在开发过程直接引用。例如,vbBlack在Visual Basic定义为黑色,vbWhite为白色、vbBlue为蓝色。用户可以在程序开发中直接使用该常量。,Form1.backcolor=vbBlack窗体背景颜色赋予黑色Form1.Forecolor=vbWhite窗体前景色赋予白色,2.4.1 标准常量,2.4.2 自定义常量,虽然Visual Basic中为开发人员提供了大量标准常量,根据应用程序开发需要使用自定义常量。自定义常量使用Const语句进行定义,赋予常量名称和数值。,Public|Private const varName as consttype=value,2.5 本章实例,本章实例实现显式声明、隐式声明变量、声明静态变量、声明常量。【实例2-1】将使用Visual Basic程序创建一个新工程,添加一个新窗体,在代码编辑窗口中输入代码要求强制显式声明变量,并在代码中赋予显式声明变量、隐式声明变量和自定义常量内容。,2.6 常见问题及解答,1既然变体型变量可以包含所有类型数值,是否可以将变量直接声明为变体型?2数值型变量包含多种不同类型。声明何种类型将更高效率在程序中使用数值型变量?3字符型变量中的数字是否可以进行数学运算?,2.7 小结,本章介绍了Visual Basic中数据类型的定义、如何显示或隐式声明变量和常量、变量和常量的定义及适用范围。本章重点和难点包括如何定义和使用各种数据类型的变量、常量。变量包括多种数据类型,Visual Basic中自定义常量数量庞大不易于记忆和开发使用。读者需要在开发过程中结合实例声明变量和常量。下一章将介绍程序设计基础。,第3章 程序设计基础,程序设计基础为程序设计所必需的基础知识。这部分内容主要包括赋值语句、数学运算语句、代码编写、流程控制等。创建用户界面形成应用程序的外表和框架,还需要为应用程序添加代码。本章内容包括:赋值语句数学运算语句代码模块编写事件,3.1 赋值语句,赋值,顾名思义是将字符、数值等赋予变量。在程序开发过程中,创建一个变量后,必须通过设置一个等号赋予变量数值。,Let varName=Expression,3.2 数学运算语句,(TxtTax+100)*1.089/69,3.2.1 加法和减法,1加法运算Result=Expression1+Expression22减法运算Result=Number1-Number2,3.2.2 乘法和除法,1乘法运算Result=Number1*Number22除法运算Result=Number1/Number2Result=Number1Number2Result=Number1 Mod Number2,3.2.3 指数运算,Visual Basic中指数运算符是符号“”,用来求一个数字的次方。,Result=NumberExponent,3.2.4 比较运算符,比较运算符用来比较两个操作数的大小。比较运算符运算结果是一个逻辑值True或False。,3.2.5 逻辑运算符,逻辑运算又被称为布尔运算。逻辑运算符要求两个操作数都为逻辑值。,3.2.6 运算顺序,3.3 代码模块,Visual Basic的程序代码存储在代码模块中。代码模块包括三种类型:窗体模块、标准模块和类模块。以上三种模块都可以包含作用域不同的声明段和过程。本小节分别介绍窗体模块、标准模块和类模块。,3.3.1 窗体模块,在Visual Basic开发程序过程中,最简单的应用程序只包含一个窗体,应用程序的所有代码都保存在窗体模块中。窗体模块(后缀frm)是大多数Visual Basic应用程序的基础。窗体模块可以包含处理事件的过程、通用过程以及变量、常数、类型和外部过程的窗体级声明。,3.3.2 标准模块,标准模块(后缀bas)在应用程序中保存其他模块访问的全局过程、函数、声明。当开发的应用程序相对庞大复杂时,在不同窗体中包含相同的可执行的公共代码。可在标准模块中编写该公共代码并允许被其他窗体或模块调用。,3.3.3 类模块,Visual Basic中类模块(后缀cls)是面向对象编程的基础。开发时可以在类模块中编写代码建立新对象。该新对象可以包含自定义的属性和方法。实际上窗体正是这样一种类模块,可显示为内置其他控件的窗体。,3.4 事件简介,事件是一种响应指定时间被特定对象(窗体或控件等)识别并执行的操作。开发人员可以在事件过程中编写特定程序代码,事件一旦发生就会被执行。每个对象都包括一组事件集合。本节将介绍如何编写和调用事件过程。,3.4.1 编写事件过程,3.4.2 调用事件过程,应用程序开发时需要编写和调用许多过程。事件过程是由Visual Basic调用自身的特殊过程。与普通过程调用相同,需要在不同时段中运行相同事件过程。只要调用事件过程名称正确,就可以在多处运行该事件过程。,Private Sub Command1_Click()MsgBox 当前日期为:&DateEnd SubPrivate Sub Form_Load()Call Command1_ClickEnd Sub,3.5 编辑代码,本节介绍如何编写代码,包括合并多个代码行、添加注释以及Visual Basic命名约定。,3.5.1 单行语句分成多行,复杂应用程序代码编写过程中会遇到非常长的字符串。为了更好的编写代码,可以使用续行符(一个空格和一个下划线)将一段长语句分成多行。使用续行符使代码易于阅读和编写。,Data1.recordsource=&_“Select*from title_company”&_“where titleName=salary”&_”and company=skyrising”,3.5.2 多行语句合并一行,一般情况下,Visual Basic一行只有一条语句。但是可以将两条或多条短语句合并到一行,中间需要用冒号(:)将其分开。,nRed=38:ngreen=36:nblue=128:nmycolor=nRed+ngreen+nblue,3.5.3 添加注释,优秀的程序员都具有在关键步骤下添加注释的好习惯。添加注释需要在Visual Basic一条语句的最后添加注释符()或关键字Rem。注释符在程序运行时会通知Visual Basic自动忽略注释符之后的语句。这样便于日后检查修改程序。,这是第一条注释内容,以后将会有大量注释添加Rem 这是用rem添加注释内容Msgbox“添加注释是一个良好的习惯”,3.5.4 命名约定,在编写Visual Basic代码时,分别要给变量、常量、函数、过程命名。在声明变量、常量、函数、过程时必须遵守以下命名规定:命名必须以字母开头。命名不可以超过255个字符。命名不可以包含特殊符号。命名不可以和默认关键字同名。,3.6 本章实例,本节主要鼠标移动时显示横坐标和纵坐标的差值。【实例3-1】编写窗体Mousemove事件,显示鼠标横坐标和纵坐标的差值。,3.7 常见问题及解答,1是否可以使用Name、Dim等与关键字同名赋予变量、函数等?2添加注释是否增加程序大小、影响程序运行效率?3编写程序代码时,经常出现提示“编译错误,缺少标识符”?,3.8 小结,本章主要介绍了Visula Basic中赋值语句、数学运算语句、代码模块、编写事件、编辑代码、添加注释的使用方法。本章重点难点是比较运算符和逻辑运算符的使用。以上两种运算符逻辑复杂、不易于掌握。读者需要结合实例源码进行分析学习。,第4章 流程控制,流程控制是Visual Basic应用程序开发中对特定条件进行分析、比较、判断,主要包括判断语句和循环语句。判断语句为根据不同的判断结果进行不同的操作。循环语句可以进行多次数学运算。本章内容包括:判断语句。循环语句。,4.1 判断语句,判断语句在复杂应用程序流程控制中具有重要作用。程序中如果不添加判断语句,程序将从第一行代码开始运行,直至最后一行程序终止,无法响应用户的操作。判断语句可根据所给的条件控制程序流程,只运行其中特定程序代码。判断语句包括If语句和Select Case语句。,4.1.1 If语句,应用程序中可能只需要运行某个符合条件的语句。If语句根据表达式的结果选择执行一段代码。标准语法有单行语句和多行语句两种形式。,If condition Then statementsElse Elsestatements,If condition Then statementsElse ElsestatementsEnd If,4.1.2 多重If语句,Visual Basic还支持多重If语句,对多个条件进行判断执行指定代码。,If condition Then statementsElseIf condition-n Then ElseIfstatementsElse ElsestatementsEnd If,4.1.3 Select Case语句,判断语句另一个重要方法是使用Select Case语句。根据运算表达式的条件结果,允许有条件执行多个代码段中的指定段。对于多重If语句,使用Select Case语句相对更加富有可读性。,Select Case testExpression Case Expressionlist1 statementblock-1 Case Expressionlist2 statementblock-2.Case Else statementblock-nEnd Select,4.2 循环语句,流程控制的重要方法之一是循环语句。循环语句主要在程序中重复运行特定任务。Visual Basic开发程序中主要包括计数循环、条件循环、枚举循环。本节主要讲述For循环(计数循环)、Do和While循环(条件循环)、For-each循环(枚举循环)。,4.2.1 For循环,Viusal Basic语言中使用For循环主要用来进行计数。For循环又可以称为For-Next循环,主要采用For关键字和Next关键字。,For Counter=Start To End Step step statements Exit For statementsNext counter,4.2.2 Do循环,For循环通过步长计数来运行程序。在特定条件下运行特定代码,需要用到Do循环和下节的While循环。Do循环通过判断表达式条件是True还是False来确定是否结束循环。,Do While|Until condition statements Exit Do statementsLoop,4.2.3 While循环,在Visual Basic应用程序开发中,经常可以看到类似While-WEnd这样的循环语句。这种循环是早期版本遗留下来的,高版本的Visual Basic中依然支持此用法。但是,笔者推荐使用前两种循环。,While condition statementsWEnd,4.2.4 枚举循环,枚举循环又被称为For-each-next循环。与For-next循环语句略有不同,它将数组或对象集合中的对象重复执行一段代码,并不是重复执行一定次数相同代码。For-each-next循环语句对不知数目的相同对象进行操作时具有明显优点。,For Each element In group statements Exit For statementsNext element,4.3 本章实例,本章实例实现单行If语句、多重If语句判断工资范围计算税款、Select Case语句判断不同职务人员工资和显示学生成绩、For循环显示高斯运算总和、Do循环显示5行#号、枚举循环显示打印机设备名称。【实例4-1】演示单行If语句的使用。,4.4 常见问题及解答,1是否可以使用多重If语句代替Select Case语句?2运行包括循环语句的程序时系统没有任何反映?3For循环与Do循环、While循环有什么区别?,4.5 小结,本章主要介绍了判断语句和循环语句的定义,主要包括If语句和Select Case语句、For循环、Do循环、While循环、枚举循环的语法知识,以及如何根据应用程序需要使用判断和循环语句。其中,循环语句循环过程难于控制,需要结合实例多加分析和实践。,第5章 过程和函数,过程和函数就是在程序中可以被重复使用的代码。当应用程序比较复杂时,开发人员可能需要在程序多处使用相同的代码。在Visual Basic应用程序开发中,重要任务之一就是创建可重复使用的代码。本章内容包括:过程函数,5.1 过程,过程就是在应用程序可以被多次重复使用的代码段。使用过程具有以下优点:复杂任务分解成多个简单代码段;易于读写,具有较强的可读性和可维护性。前面章节介绍的事件过程就是Visual Basci定义过程的一种。本节介绍的过程是用户创建的自定义过程。,5.1.1 Sub过程概述,Sub过程是可以被重复执行的无返回值的代码段。,Private|Public Static Sub Name(Arglist)statements Exit Sub statementsEnd Sub,5.1.2 添加Sub过程,添加Sub过程有第一种方法:,5.1.2 添加Sub过程,添加Sub过程有第二种方法。,Sub showmsg()End Sub,5.1.3 调用Sub过程,调用Sub过程主要使用Call语句或过程名+参数形式调用。,Call SubName Arglist,SubName Arglist,5.1.4 使用Sub Main,1设置启动窗体2无启动窗体时启动,5.1.5 确定过程作用域,1公共过程2局部过程3静态变量过程,5.2 传递参数,Visual Basic提供了非常灵活的传递参数方式,允许使用可选参数和可变参数,使用传值引用和传地址引用方法。,Optional ByVal|ByRef ParamArray varName()As type=defaultvalue,5.2.1 可选参数和可变参数,1可选参数2可变参数,5.2.2 传值引用和传地址引用,1传值引用2传地址引用,Sub prog(byval a as integer)(添加代码)End Sub,Sub prog(byref a as integer)(添加代码)End Sub,5.3 函数,函数为编辑代码时可以被程序调用带有返回值的代码段。本节将介绍函数定义和使用方法。,5.3.1 定义函数,Function过程又被称为函数过程,与Visual Basic内置函数完全相同。函数与子过程区别为,函数带有返回值,而子过程没有返回值。,Public|Private|Static Function Name(Arglist)As type statements Name=ExpressionExit Function statementsName=ExpressionEnd Function,5.3.2 确定函数作用域,1公共函数2局部函数3静态变量函数,5.3.3 调用函数,函数调用和过程调用基本相似,惟一不同之处在于函数可以有返回值。如果无返回值,用Call语句调用函数。,Call funName Arglist,Return=funName Arglist,5.3.4 传递参数和返回值,函数传递参数的方法与过程完全相同。不在此赘述。函数与过程最重要的区别是函数有返回值。过程的数据类型决定其返回值的数据类型。可以在Arglist之后使用As关键字来指定函数返回值的数据类型。在Arglist中,可以使用As子句来指定任何传给该过程的参数的数据类型。不但可以指定为任何标准数据类型,还可以在Arglist中指定As Any来禁止类型检查,从而允许将任意数据类型传递给该过程。,5.4 本章实例,本章实例创建过程、函数计算三个数平方之和、创建加密字符串。【实例5-1】创建一个过程,计算三个数平方之和。图5.4 运行窗体,5.5 常见问题及解答,1过程或函数在窗体和模块有什么区别?2参数可以设计为可选参数和可变参数,是否可以多设计几个可选参数?3如何使用传值引用和传地址引用?,5.6 小结,本章主要介绍了过程和函数的定义以及如何根据应用程序的需要调用过程和函数。本章重点难点包括:过程和函数如何传递参数、函数如何返回值。其中,函数传递参数和返回值结构复杂难于掌握。,第6章 数组,数组是具有相同名字、不同下标的一组变量。使用数组可以缩短和简化程序,可以利用索引值设计循环,高效处理各种程序运行需要。数组包括固定大小的数组和动态数组。本章内容包括:固定数组。动态数组。,6.1 固定数组,固定数组顾名思义就是固定元素数量的数组。固定数组包括一维数组和多维数组。固定数组中使用一个下标就能确定数组元素在数组中的位置称为一维数组。具有两个或多个下标的变量数组称为二维或多维数组。本节将介绍固定数组的定义和使用方法。,6.1.1 声明数组,数组和变量使用方法不完全相同。变量可以有隐式声明。数组必须显式声明后使用。,Public|Dim|private|static arraryname(Num1 to Num2)as type,6.1.2 设定上下界,Visual Basic声明数组时,在数组名之后跟一个用括号括起来的上界。上界不得超过长整型Long数据类型的范围(-2,147,483,648到2,147,483,647)。默认下标下界为0。如果希望下标下界从1开始,可以通过Option Base语句来声明。该语句用来指定数组下标默认下界。,Option base 1数组下界从1开始Dim Numbers(10)As Integer数组包含10个元素Dim Sums(20)As Double数组包含20个元素,6.1.3 多维数组,多维数组与一维数组相对应。多维数组在现实生活中具有很重要的意义。如屏幕坐标、三维动画数据的设定值等是典型的多维数组。声明多维数组与一维数组完全相同。,Dim matrix(9,9)as integer,Dim matrix(9,9,9)as integer,6.2 动态数组,动态数组可以在程序运行时动态改变数组大小。Visual Basic应用程序开发中需要动态数组来保存多维数组数值。动态数组具有灵活方便管理数组的能力。本节介绍动态数组定义和使用方法。,6.2.1 创建动态数组,声明动态数组和普通数组基本相同。根据不同关键字定义不同作用域范围。为数组赋予一个空维数表,将该数组声明为动态数组。,Public|Private|Static|Dim arr(),ReDim Preserve varname(subscripts)As type,6.2.2 使用动态数组,动态数组使用ReDim关键字。每次使用ReDim关键字,以前数组内容全部自动清空。,声明数组Dim array_m()动态声明数组为二维数组ReDim array_m(3,3)For i=1 To 3For j=1 To 3 计算表达式 array_m(i,j)=i*j Print 动态数组乘积为:&array_m(i,j)Next jNext i,6.3 本章实例,本章实例创建声明数组、多维数组、动态数组,说明如何计算数组最大值、二维数组运算表达式数值、动态数组运算结果。【实例6-1】计算数组最大值。图6.3 运行窗体,6.4 常见问题及解答,1数组num(9)中共计9个数字是否正确?2动态数组可以在程序运行时改变数组大小,是否可以将数组全部声明为动态数组?3可以在声明动态数组时保存以前动态数组内容?,6.5 小结,本章主要介绍了固定数组、动态数组的创建、使用方法。并结合实例演示如何创建固定数组和动态数组。本章重点难点包括:如何正确声明和使用动态数组。动态数组在编程开发中使用方法复杂,需要结合实例多分析和实践。,第7章 错误处理,现在的Windows应用程序都非常庞大和复杂,不可避免将出现一些错误。当事情出现错误时应用程序如何响应是用户程序设计非常重要的一部分。一个功能完善的应用程序应该预料到错误可能出现并及时处理或提示用户。Visual Basic不仅提供了功能强大的程序设计环境,也提供了一个界面友好、简便实用的程序调试工具。本章内容包括:错误概述。错误捕获和处理。调试程序。,7.1 错误概述,错误在应用程序开发和运行过程中表现多样。错误通常包括语法错误、运行错误、逻辑错误三种。本节将分别介绍三种错误不同的表现形式和处理方法。,7.1.1 语法错误,语法错误是初学编程者最常见的错误。通常是输入不正确的代码,包括错误地输入关键字、遗忘了标点符号或引用不正确的数据结构。具有语法错误的程序不能正常运行,也不能编译成可执行文件。通常Visual Basic中包含“自动语法检测”选项,可以发现大部分语法错误并提示改正。,7.1.2 逻辑错误,如果代码没有语法错误可以运行,但是运行结果与设计时完全不同。这样的代码中必然存在逻辑错误,如语法错误(陷入死循环)、符号错误(加法改为减法)、数值范围错误(设计数值为1至100,运行时为1至99)等。程序逻辑错误是最不容易发现的严重错误。大部分逻辑错误可以归结为数据错误、流程控制错误。,Dim n As Integer声明变量Dim s As IntegerN=1For n=1 To 3for循环3次 s=s+n运算表达式Next n,7.1.3 运行错误,运行错误是在程序运行过程中发生的。有时语法没有错误,但Visual Basic中却无法运行程序。例如,除法运算中,除数为0;读取文件时,该文件不存在等。当出现运行错误时,Visual Basic会自动终止应用程序,并弹出错误信息提示。,7.2 错误捕获处理,优秀的应用程序应该具备较强的捕获和处理运行错误的能力。硬件问题或用户错误操作都将引发错误并终止应用程序。错误捕获功能可以拦截错误并进行处理,进而可以避免硬件问题或用户操作错误。本节将介绍错误捕获和处理方法。,7.2.1 错误捕获,Visual Basic中使用On Error语句来进行错误捕获,当错误发生,程序自动运行到处理错误的相关代码,予以解决错误或提示用户可能需要的帮助。标准代码如下:On Error GoTo line发生错误时,跳转到指定处理错误程序代码。On Error Resume Next发生错误时,忽略错误行,继续执行下一语句。On Error GoTo 0发生错误时,不使用错误处理程序代码。,7.2.2 错误处理,在理想程序中,Visual Basic过程根本不需要错误处理代码。但实际上硬件问题或用户操作都会造成运行时错误。没有错误捕获和处理的程序中,只能选择终止程序。但是优秀的应用程序应该按以下方式处理错误:(1)错误发生时,提示用户出错并退出子过程,程序有限的功能继续运行。(2)跳过错误语句,继续执行下一句。(3)继续尝试纠正错误并重新运行该语句。,7.3 调试程序,Visual Basic集成开发环境可以分为三种模式:设计模式、执行模式、中断模式。设计模式下可以进行程序的界面设计和代码编写。执行模式运行程序,可以查阅代码,不允许更改程序。中断模式下程序处于挂起状态,可以阅读和修改代码并进行调试程序。,7.3.1 单步调试,单步调试包括三