第6章 VBNet程序设计基础.ppt
第13章 VB.Net程序设计基础,Visual Studio.NET是Microsoft公司针对互联网推出的新一代可视化开发工具。Visual Basic.NET就是支持该结构的编程语言之一。,Visual Basic.NET :面向对象的可视化程序设计语言,事件驱动程序 基于Windows程序的基本特点。面向对象编程(OOP) 将特征属性抽象为变量,行为方法编写为函数。用户界面 窗体和控件、菜单等可视化应用程序集成开发环境 编辑、调试、运行,VB.NET的程序开发的特点,解决方案:在.NET环境中,开发工作以解决方案的形式进行组织,每个解决方案包含一个或多个项目.项目:每个项目可以执行一项不同的任务,它由VB.NET代码、图片和文档等相关文件的构成。编程的第一步是新建一个项目。,13.1.1 VB.NET简介,13.1.2 VB.NET可视化集成开发环境,(1)启动VB.NET: 开始/程序/Microsoft Visual Studio.NET2008,“起始页”区域 :显示了最近打开过的项目链接及其修改日期,新建一个项目的操作步骤:,(2)单击“起始页”中间区域中的“新建项目”或选择“文件/新建/项目”,(3) 在“新建项目”对话框中,在“项目类型”列表框中选择“Visual Basic项目”;在“模板”列表框中选择“Windows应用程序”模板;在“名称”文本框中输入项目的名称,这里输入“project1”,并在其下方的“位置”列表框中为项目选定一个保存路径。,(4)单击“确定”按钮,完成了“project1”项目的新建,进入了.NET开发环境。,13.1.3 VB.NET中面向对象的基本概念,1对象和类 (1)对象:一个实体的抽象描述,包括属性和方法,可以识别并响应事件。属性: 对象中的数据,用来描述和反映对象特征的参数。方法: 对象中的程序过程, 可执行的功能,作为方法供用户直接调用。事件: 用户或操作系统执行的操作,如单击控件、鼠标移动、键盘按下等。,在VB.NET程序设计语言中,对象是程序设计的基本单元,也是设计时的核心。,(2) 类 :具有相同操作功能和相同属性的对象的集合和抽象。,在VB.NET中,工具箱内列出的各种控件都是系统设计好的标准控件类。 当把控件设置在窗体上后,才把控件类实例化为对象,即创建了一个控件对象。例如:命令按钮(Button)类,它集中了命令按钮对象的共有特征。在把“命令按钮”画到窗体上之前,“命令按钮”控件对象是不存在的,只有当把“命令按钮”控件设置在窗体上后,才把类实例化为对象,即创建了一个命令按钮控件对象。,设置对象属性的二种方法:(1)设计阶段:在属性窗口中设置(2)在程序代码中设置。格式如下: 对象名.属性=属性值,2对象的属性、方法和事件 (1)对象属性:用以描述和反映对象特征的参数,例如:Button1.Text=”打开”Button1.ForeColor=Color.Red,调用格式如下: 对象名.方法 (参数名表) 注:方括号内内容可省略例如: Text1.Focus() /用该方法把光标置于Text1文本框上。,(2)对象方法:描述了该对象能执行的动作。 是在对象上可执行的动作。是由VB系统已设计好的过程、函数,可供用户直接调用。,(3)对象事件 :由VB.NET预先设置好的、能够被对象设别的动作。例如单击(Click)、DblClick(双击)等,格式如下:Private Sub 对象名称_事件名称(对象引用,事件信息)Handles 事件处理程序 事件过程代码 End Sub 其中,“对象名称”是对象的Name属性,“事件名称”是该对象能够识别的事件,是VB.NET预先定义好并赋于该对象的。,Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Button1.Text = "打开" Button1.ForeColor = Color.Red End Sub,13.1.4 创建一个简单的应用程序实例,1.建立程序窗体;2.在程序窗体上设置控件对象;3.确定控件对象的属性;4.编写对象的事件驱动代码。5.程序运行和调试13.保存文件,VB.NET程序的基本组成文件包括:解决方案文件(.sln)窗体文件(.frm)Basic模块文件(.vb)资源文件(.resx),每创建一个解决方案会生成一个文件夹,所有这些文件都在该文件夹下。 如要拷贝所开发程序,应该拷贝整个文件夹。,【例13-1】设计一个小程序。窗体的标题为“VB.NET应用程序设计示例”,在窗体上设置一个文本框显示“您好,欢迎使用VB.NET”,两个命令按钮【下一步】和【结束】,单击【下一步】按钮时,文本框中显示的内容改变为“VB.NET简单易学,功能强大”,单击【结束】按钮时,程序结束。程序运行界面如图13-5和13-6所示。,13.2 VB.NET基本语法,VB.NET作为一种程序设计语言同样规定了编写程序所必须的一些语言元素如常量、变量、基本语句、函数和过程等。,13.2.1数据类型、常量和变量1数据类型 数据类型确定数据在内存中的存储容量和取值范围等。VB.NET的基本数据类型可分为数值型、字符型、字符串型、逻辑型、日期型、对象型等。,表13-1 数值型数据类型,表13-2 其他数据类型,说明:1)Date类型用于表示日期或时间;常量需要用#括起来,格式为:#mm/dd/yyyy#,如:#02/15/2007#。2)Char类型只能接受一个用双引号括起来的字符。String类型表示字符串。字符串是用双引号括起来的字符序列,如"ABC"。String类型的缺省规定为可变长度的字符串,即在对字符串操作时,其长度可增可减。,2常量和变量(1)常量和变量的命名规则1)必须以英文字母(或汉字)开头,后跟字母、汉字、数字或下划线。字母大小写意义相同。2)常量名、变量名的长度不能超过255个字符。3)在同一个有效范围内,每个常量或变量的名称必须唯一。4)不能使用VB.NET关键字作为常量和变量的名字。,Dim x As Double ' 声明双精度型变量x Dim m%, v '声明整型变量m和对象型变量v,如缺省类型则为Object Dim f As Boolean=False '声明逻辑型变量f,并设置初值False,(2) 变量声明 基本语法格式: Dim 变量名类型说明符|As 类型,(3)常量 VB.NET中常量有两种形式:直接常量和符号常量。例如:12、-1.23、a为直接常量。 符号常量 :用一个标识符来代表一个数值或字符串。定义符号常量的格式如下: Const常量名As数据类型=表达式例如:Const UserName As String="John" '符号常量UserName是字符串常量Const Max As Integer=100 '符号常量Max是整型常量,13.2.2 运算符和表达式 1运算符 (1)算术运算符 (乘方运算符)、*(乘法运算符)、/(除法运算符)、(整除运算符)、Mod(模运算符)、+(加法运算符或正值运算符)、-(减法运算符或负值运算符)、&(连接运算符),例如:1913.7=2 19 Mod 6=1 19 Mod 6=1 23.67 Mod 7.88=0,"abcd"+"efg"="abcdefg" "123" + 123 =246123 & "abcd" ="123abcd" "abc" + 123 (不允许),(2)复合赋值运算符在赋值运算符(=)之前加上一些算术运算符,可以构成复合的赋值运算符。例如:a+=3 等价于a=a+3 “+=”称为“自反加赋值运算符” x*=y+8 等价于x=x*(y+8) “*=”称为“自反乘赋值运算符” m=2 等价于m=m2 “=”称为“自反指数赋值运算符”,VB.NET中还可使用以下的复合赋值运算符:-=(自反减赋值运算符) /=(自反浮点除赋值运算符)=(自反整除赋值运算符) &=(自反字符串连接赋值运算符),(3)关系运算符 >(大于运算符)、(不等于运算符)>=(大于等于运算符)、<=(小于等于运算符)、Like(字符串的比较运算符)、Is(两个对象比较运算符),(4)逻辑运算符 Not(逻辑非运算符) And(逻辑与运算符) Or (逻辑或运算符) Xor(逻辑异或运算符),2表达式 表达式由运算对象、运算符及圆括号组成。 如果在一个表达式中包含了多种运算符号,则运算次序由运算符的优先级决定,即优先级别高的运算符先运算。优先级别相同时,从左向右依次运算。,其中:(1)关系运算符优先级相同;(2)算术运算符的优先级分别为: -(负号) * / Mod + - &(3)逻辑运算符的优先级分别为: Not And Or Xor,13.2.3 标准函数 VB.NET提供了丰富的函数,一部分继承于VB13.0,编程时可直接调用;另一部分包含在 .Net框架的公共语言运行时库(CLR)和基础类库中。,有两种引用方式: 1)直接引用:即在函数前加上其名称空间。例如:TextBox1.text=System.Math.Sqrt(100)或 TextBox1.text=Math.Sqrt(100)。 2)Imports语句:在程序中引入一个名称空间,这样在使用该名称空间内的函数时不用再引用。 例如:Imports System.Math, 则可TextBox1.text=Sqrt(100),TextBox2.text=Sin(0.5)。,表13-4数学函数,表13-4数学函数(在System.Math名称空间),表13-5转换函数 (数值与非数值、数制、大小写字母等 ),表13-6字符串函数,表13-7日期函数,13.2.4 VB.NET编码规则,(1)在程序计算过程中需要使用的常量、变量必须事先声明。(2)程序代码中字母大小写意义相同。(3)在同一行上可以书写多个语句,语句之间用冒号分隔。每一行最多允许255个字符。(4)如果一个语句太长,需要分几行书写时,则要在一行的最后面加上续行符(一个空格再加一个下划线)。(5)为方便阅读、理解程序,在程序中可加入注释。 注释以单引号字符或关键字REM开头;注释可在程序代码的任何位置开始,随物理行的结束而结束。,Private Sub Button1_Click( ) Handles Button1.Click Const PI = 3.14159 Dim r, Area As Single r = Val(TextBox1.Text): Area = r 2 * PI TextBox2.Text = Str(Area) 将数值Area转换为字符串End Sub,13.2.5 流程控制结构 VB.NET语言具有这3种基本结构:顺序结构、分支结构和循环结构。,1顺序结构 计算机在执行程序时,按照语句的排列顺序从上往下逐句执行。顺序执行的语句主要包括赋值语句、输入/输出语句。,(1)赋值语句基本语法格式 :变量名=表达式 作用:将赋值号“=”右边表达式的值赋予“=”左边的变量。,例: Const num = 10 Dim I As Integer, K As Integer K = num + I I = 10: K = num + I 注:变量的值为最后一次赋值的结果。,赋值语句练习,例:交换变量A与B的值。,单击交换按钮程序开始执行 Dim A, B, C As Integer A= Val(TextBox1.Text ) B= Val(TextBox2.Text ) C = B B = A A = C TextBox3.Text = Str(A) TextBox4.Text = Str(B),(2)与用户交互的函数和语句 1) InputBox函数函数功能:产生一输入对话框(包含一个用于输入信息的文本框),用户输入文本信息并选择按钮。如果用户选择“确定”按钮,函数返回文本内容,供程序下一步使用。 函数格式:InputBox (提示信息,标题,默认值,Xpos,Ypos) 其中: 提示信息:提示信息是必需的字符串,它是在对话框中所显示的信息。标题:在对话框标题栏上显示的字符串。若省略,标题为应用程序的名字。默认值是显示在对话框中文本框内的信息,作为输入文本的缺省值。若省略此参数,则文本框内空白。 Xpos、Ypos是数值表达式,指定从屏幕左端(Xpos)或屏幕上端(Ypos)到对话框左端或对话框上端的距离。省略Xpos ,对话框水平置中;省略Ypos,对话框垂直于屏幕顶端下约三分之一处。1inch=1440 twips。,例: R=InputBox("请输入你的姓名:", "操作练习", , 200, 300),2)MsgBox函数与MsgBox语句函数功能:产生一个消息对话框,在对话框中显示提 示(或警告)信息,同时需要用户通过选择按钮作出如何处理的回答,以决定程序的走向。 函数格式:MsgBox (提示信息,按钮样式,标题) 或 变量%=MsgBox(提示信息,按钮样式,标题)其中: 提示信息是必需的字符串,它是在对话框中所显示的信息。该字符串的长度若超过一行,可用回车符chr(13)、换行符chr(10)或VBCRLF进行回车换行。标题是在对话框标题栏上显示的字符串。若省略此参数,对话框标题为应用程序的名字。按钮样式是数值表达式,用于指定对话框中按钮的个数及类型、图标的类型等。如果省略该项,则默认值为0。,按钮参数的值及其对应功能,图标样式的值及其对应功能,指定缺省按钮的值及其对应功能,例如:R=MsgBox(“退出练习吗?”,vbYesNoCancel+vbQuestion + MsgBoxStyle.DefaultButton2, “操作练习”) If R=vbYes Then MsgBox(“退出练习”, vbOKOnly + vbInformation, “操作练习”),3+32+256,MsgBox函数语法格式:变量%=MsgBox (提示信息,按钮样式,标题),表13-9 MsgBox按钮返回值,2选择结构 根据所给定的条件是否满足,决定从给定的两组或多组操作中选择其一。 (1)If语句 If语句是用来判定所给定的条件是否满足,根据判断的结果(True或False)来决定执行给出的操作之一。 VB.NET提供了3种形式的If语句。,1)单分支If语句If 条件表达式 Then 语句块EndIf或: If 条件 Then 语句,图13-12 单分支语句流程图,【例13-2】输入两个整型数,按由小到大的顺序输出这两个数。如果在弹出第一个对话框时输入24,第二个对话框输入12,程序运行结果如图13-13所示。,Private Sub Form1_Click() Handles MyBase.Click 限于篇幅,事件框架中的参数省略。 Dim a As Integer, b As Integer, t As Integer a = InputBox("第1个数", "输入数据", , 200, 200) b = InputBox("第2个数", "输入数据", , 200, 200) If a > b Then 如果a>b,交换a和b的值 t = a a = b b = t End If MsgBox("较小数" & a & " " & "较大数" & b, , "从小到大排序") 报告结果End Sub,图13-13 两数排序结果,或:If a > b Then t = a:a = b:b = t,2)If语句格式2 If 条件 Then 语句1 Else 语句2 EndIf或:If 条件 Then 语句1 Else 语句2,【例】计算分段函数的值,程序1:Dim a, x, y As Singlea = Val(InputBox("请输入a 的值", "计算分段函数")x = Val(InputBox("请输入x 的值", "计算分段函数")If x -a) And (x a / 2 Then y = xMsgBox ("a=" & a & "x=" & x & "y=" & y),程序2If x -a) And (x a / 2 Then y = xEnd IfMsgBox ("a=" & a & "x=" & x & "y=" & y),3)多分支If语句If 条件表达式1 Then 语句块1ElseIf 条件表达式2 Then 语句块2 Else 语句块n,图13-15 多分支语句的流程图,不管有几个分支,当某条件满足,执行相应的语句块,其余分支不再执行。,4)If语句的嵌套If语句的嵌套是指If语句中的语句块又包含If语句。语句格式如下;If 条件表达式1 Then If 条件表达式11 Then 语句块1 EndIfEndIf,(2)Select Case语句 Select Case语句也称为情况语句,它可以用来实现多分支选择结构程序。,语句格式:Select Case 表达式 Case 表达式列表1 语句块1 Case 表达式列表2 语句块2 Case Else 语句块nEnd Select,Case子句的表达式可以由以下几种形式构成: 表达式1 to 表达式2: Case 1 To 5 表达式值在1到5范围内。Is运算表达式:Case Is>5 表达式的值大于5的值。枚举常量:Case “q”, “Q” 表达式的值等于”q”或”Q”。多种表达混合:Case 1 To 5, Is>Min 表达式的值在1到5或大于Min的值。,测试表达式可以是变量、函数、数值表达式、字符串表达式或逻辑表达式。Case子句中表达式列表的数据类型应当与表达式的数据类型一致。,【例13-3】从键盘输入一个字符,判断它是大写字母、小写字母、数字字符还是其他字符。本例使用标签Label1报告结果,首先在窗体上添加一个Label1。,Private Sub Form1_Click() Handles MyBase.Click Dim ch As Charch = InputBox("请输入字符", "字符判断", , 200, 200)Select Case chCase "A" To "Z"Label1.Text = ch + "是大写字母" Case "a" To "z"Label1.Text = ch + "是小写字母"Case "0" To "9"Label1.Text = ch + "是数字字符"Case ElseLabel1.Text = ch + "是其他字符"End SelectEnd Sub,3循环结构VB.NET提供了两种类型的循环控制:计数循环控制与条件循环控制。,For I=1 To 10 Step 1 TextBox1.Text = TextBox1.Text & I & " "Next I,一般用于循环次数已知的情况,(1)计数循环控制语句(For Next语句)语法格式:For 循环变量 = 初值To 终值 Step 步长值 语句块 Exit For 语句块Next 循环变量,循环次数,图13-17 For循环语句流程图,说明: (1)循环变量必须是数值型变量。(2)初值、终值、步长值可以是表达式。类型必须与循环变量的类型相同。(3)步长值可以是正数(初值小于终值)或负数(初值大于终值)。缺省值为1。(4)Exit For:退出循环,执行Next语句的后继语句。(5)For与Next中间的语句称为循环体,可以是多个语句。,Private Sub Form1_Click() Handles MyBase.ClickDim s As Single, num As Integer, smax As Integer, smin As Integer 's读入成绩, num学号, smax最高分, smin最低分Dim nummax As Integer, nummin As Integer 'nummax最高分学号, nummin最低分学号Dim sum As Integer, ave As Single, ch As String ' sum总分, ave平均分, ch为InputBox提示smax = -1 : smin = 101 '最高分赋值为-1, 最低分赋值为101For num = 1 To 10 ch = "请输入第" & num & "个学生的成绩" s = InputBox(ch) : '输入学生成绩 sum = sum + s '学生成绩累加 If s > smax Then smax = s : nummax = num '保留最高分及对应学号 If s < smin Then smin = s : nummin = num '保留最低分及对应学号Next numave=sum / (num - 1) '计算平均成绩, 注意学生总数为num-1MsgBox("最高分=" & smax & " 学号=" & nummax & vbCrLf & _ vbCrLf是回车换行符"最低分=" & smin & " 学号=" & nummin & vbCrLf & _ vbCrLf=Chr(13)+Chr(10) "总分=" & sum & " 平均分=" & ave) End Sub,【例13-4】学生分数统计。通过键盘输入10个学生某一门课程的成绩,如69,70,80,99,78。每个数据按前后次序对应学生的学号,即:第一个数据是1号学生的成绩,第二个数据是2号学生的成绩,最后一个数据是10号学生的成绩。试编写一程序统计该课程的总分、平均分、最高分及对应的学号、最低分及对应的学号。,(2)条件循环控制语句,Do WhileLoop和Do UntilLoop,(2)条件循环控制语句,2)DoLoop While和DoLoop Until,【例13-5】编写一个译码程序,将一个由大写字母组成的英语句子译成数字代码。译码规则是:以数字1代替字母A、数字2代替字母B、数字26代替字母Z,如遇空格则输出*号。英语句子以句号结束。,Private Sub Form1_Click() Handles MyBase.Click Dim Code As Integer, Letter As String TextBox1.Text = "" Letter = InputBox("请输入一个大写字母(输入小数点结束程序):") Do While Letter "." If Letter = " " Then TextBox1.Text = TextBox1.Text & "*" & Space(3) Space(3)是3个空格字符串 Else Code = Asc(Letter) - Asc("A") + 1 TextBox1.Text = TextBox1.Text & Code & Space(3) End If Letter = InputBox("请输入一个大写字母(输入小数点结束程序):") Loop TextBox1.Text = TextBox1.Text & "." End Sub,译码算法如下: Code=ASC(Letter)-ASC("A")+1,(3)循环嵌套 所谓循环嵌套就是在一个循环结构的循环体内包含另一个或多个循环结构,也称为多重循环。,对于循环的嵌套,要注意以下事项:1)内循环变量与外循环变量不能同名;2)外循环必须完全包含内循环,不能交叉;3)不能从循环体外转向循环体内,也不能从外循环转向内循环, 反之则可以。,【例13-6】编写一个程序输出九九乘法表。该程序窗体界面有1个命令按钮Button1和1个文本框TextBox1,需将TextBox1的Multiline属性设置为True,并拖至足够大。,For m = 1 To 9 For n = 1 To 9 k = m * n If k >= 10 Then TextBox1.Text = TextBox1.Text & k & " " Else TextBox1.Text = TextBox1.Text & k & " " EndIf Next n TextBox1.Text = TextBox1.Text & vbCrLf Next m,外重循环执行一次,内重循环执行一遍。,13.2.6 数组 1数组的定义 一维数组定义格式: Dim 数组名(下标上界)As 类型名称注意:下标下界为0,一维数组的大小为上界+1。 无数据类型表示Object类。例如:Dim A (10) As Integer 定义了一个一维数组,该数组的名字为A,类型为Integer(整型),该数组由11个数组元素组成,即A (0)- A (10)),二维数组定义格式:Dim 数组名(第一维下标上界,第二维下标上界)As 类型名称例如:Dim Page(1,2) As Integer定义了一个二维数组,该数组的名字为Page,类型为Integer(整型),共6个数组元素,分别是:,Page(0,0)、Page(0,1)、Page(0,2)Page(1,0)、Page(1,1)、Page(1,2),2数组的初始化和引用 (1)数组的初始化 1)一维数组元素初始化格式如下: Dim 数组名( )As 类型名称=值1,值2,值n注意:VB.NET规定不允许对指定上界的数组进行初始化,所以圆括号中必须为空,根据实际初值的个数确定数组的上界。,例如:Dim Season() As String = "春天","夏天","秋天","冬天"定义了一个字符串数组Season该数组有4个初值,分别为: Season(0)=“春天”、Season(1)=“夏天”、 Season(2)="秋天"、Season(3)="冬天",2)二维数组元素初始化格式如下:Dim 数组名(,)As 类型名称=第一行值,第二行值,第n行值例如:Dim AI(,) As Integer=1,2,3,4,5,6定义了一个二维数组AI,内层花括号的个数表示数组的行数,每个内层花括号中数值个数表示数组的列数,该语句定义了一个2行3列的数组,即AI(2,3)。各元素的值分别为: AI(0,0)=1 AI(0,1)=2 AI(0,2)=3 AI(1,0)=4 AI(1,1)=5 AI(1,2)=6,(2)数组元素的引用 只能逐个引用数组元素而不能一次引用整个数组,数组元素的表示形式如下。 数组名(下标1,下标2) 其中,下标可以是整型常量或整型表达式,例如: A(5)、Season(2)、AI(1,1)、 AI(1+1,2)。数组元素可以出现在表达式中,也可以被赋值。,【例13-7】设计一个应用程序,使用数组对新进榜歌曲按输入顺序逆序排列并显示结果。该程序窗体界面有2个标签Label1和Label2、1个命令按钮Button1 。,Private Sub Button1_Click() Handles Button1.Click Const n = 6 '声明常量,歌曲数目为6首 Dim i As Integer, j As Integer 'i为循环控制变量, i和j为数组下标变量 Dim t As String 't用于逆序排列的中间变量 Dim Song(n - 1) As String '声明字符串数组变量,下标上界为n-1 '为数组元素赋值,建立歌曲榜单,并显示在标签Label1上 For i = 0 To n - 1 Song(i) = InputBox("请输入歌曲名称:") Label1.Text = Label1.Text & " " & Song(i)图13-19程序运行结果 Next i '采用首尾元素对换完成逆序排列 For i = 0 To (n - 1) 2 j = n - 1 - i t = Song(i) Song(i) = Song(j) Song(j) = t Next i '在标签Label2上输出逆序排列结果 For i = 0 To n - 1 Label2.Text = Label2.Text & " " & Song(i) Next iEnd Sub,【例13-8】编写程序,要求能输入4名学生的英语、数学、政治、物理四门课的考试成绩。计算并输出每名学生的平均分。,Private Sub Form1_Click() Handles MyBase.Click Const StuNum = 4, CourseNum = 4 Dim StuGrade(StuNum - 1, CourseNum - 1) As Single 'StuGrade成绩二维数组 Dim AveGrade(StuNum - 1) As Single 'AveGrade平均成绩一维数组 Dim CurrentGrade As String Dim i As Integer, j As Integer, k As Integer TextBox1.Text = TextBox1.Text & "学号" & " 英语" _图13-20 程序运行结果 & " 数学" & " 政治" & " 物理" & " 平均" & vbCrLf For i = 0 To StuNum - 1 k = 0 TextBox1.Text = TextBox1.Text & i & " " For j = 0 To CourseNum - 1 '输入一个人各门课成绩, 并计算和,输出成绩 CurrentGrade = "请输入" & i + 1 & "号学生第" _ & j + 1 & "门课程的成绩" StuGrade(i, j) = InputBox(CurrentGrade) k = k + StuGrade(i, j) TextBox1.Text = TextBox1.Text & StuGrade(i, j) & " " Next j'计算平均成绩并输出 AveGrade(i) = k / 4 TextBox1.Text = TextBox1.Text & AveGrade(i) & vbCrLf Next iEnd Sub,13.2.7 子程序过程与函数过程 通用过程分为两类:子程序过程和函数过程。子程序过程又称为Sub过程,函数过程称为Function过程或自定义函数。Sub过程与自定义函数的区别在于:(1)过程较为灵活,可以带参数,也可以不带参数,而且不返回值。(2)函数通常都要求带参数,并有返回值。,1Sub过程的定义和调用(1)Sub过程的定义定义Sub过程的格式如下:Private|Public Static Sub 过程名(形式参数表) 局部变量和常量声明 语句块 Exit Sub 语句块EndSub,过程必须以Sub开始,使用说明:1)过程必须以Sub开始,EndSub结束。Public(默认)为全局(公有)过程,全局有效;Private 为局部(私有)过程,本模块有效;Static为静态过程(每次调用该过程后,都将保留其中的局部变量值)。2)形式参数(简称形参)是过程与主程序(调用过程的程序)之间进行数据传递的变量。多个参数之间用逗号分隔。 形参有两种类型,格式如下:ByVal | ByRef 参数名 () As 数据类型其中:ByVal表示该参数以传值的方式传递数据(值传递)。ByRef表示以传地址的方式传递数据。3)过程中说明的变量和常量仅在该过程中有效。4)Exit Sub表示退出过程,返回到调用过程的主程序的下一个语句继续执行。,(2)Sub过程的建立通用过程不属于任何一个事件过程,因此不能用事件过程定义。通用过程可以在窗体、模块或类中建立, 由程序员在程序代码窗口直接输入整个过程,包括框架。,