1、第三章第三章程序设计基础第2 2页本章目标d初步了解Visual Basic程序设计语言;d掌握程序语言的基本要素:关键字和标识符、数据类型、常量和变量、运算符和表达式;d能够使用程序控制结构中的If语句、Selset Case语句、ForNext语句、WhileWend语句和DoLoop语句进行编程。第3 3页任务任务1演示表达式运算演示表达式运算应用程序在文本框输入两个数字,按下“演示”命令按钮,接收数据后,转换成“数值型数据”进行算术运算、关系运算和逻辑运算,然后将结果显示在窗体上。图3-1 演示表达式运算第4 4页任务分析该任务我们要研究以下几项内容:VB语言的基本语法 关键字和标识符
2、、数据类型、常量和变量、运算符和表达式 数据类型的转换框架控件 图3-2 框架(Frame)控件第5 5页任务分析1.VB语言的基本语法 1)数据类型数据类型用来描述数据存储的内存空间的大小和数据值的范围。Visual Basic 6.O提供的基本数据类型主要有字符串型数据和数值型数据,此外还提供了字节、货币、对象、日期、布尔和变体数据类型。字符型字符型(String)数据:数据:字符型是一个字符序列,由ASCII字符组成,包括标准的ASCII字符和扩展的ASCII字符。在VB中,字符型是放在双引号内的若干个字符,其中长度为0(即不含任可字符)的字符串称为空字符串。如:“Visual Basi
3、c程序设计”“控件”“123456”“L”“”第6 6页任务分析1.VB语言的基本语法(续)1)数据类型 数值型数据:数值型数据:Visual Basic的数值型数据分为整数和浮点数两类。其中整数又分为整型(Integer)和长整型(Long),浮点数分为单精度浮点数(Single)和双精度浮点数(Double)。如:1234 54321 123.45 1.2345e2 1.2e-127第7 7页任务分析 货币型货币型(Currency)数据:数据:货币数据类型是为表示钱款而设置的。货币型数据小数点前最多有15位数,小数点后只保留4位数,超过4位的小数,系统按四舍五入自动截取。如:123470
4、4345 13258.3962 日期型(日期型(Date)数据)数据:日期型数据表示法有两种:一种是以数字符号(#)扩起来的格式化表示法,例如,#January 1,1993#或#1 Jan 93#。另一种是以数字序列表示,小数点左边是日期,右边是时间,例如,2.5表示1900-1-1 12:00:00 1.VB语言的基本语法(续)1)数据类型第8 8页任务分析 布尔型(布尔型(Boolean)数据:)数据:布尔型数据是表示真假的数据,用于表示逻辑判断的结果。取值只有真布尔型数据是表示真假的数据,用于表示逻辑判断的结果。取值只有真(True)和假()和假(False)两个值。)两个值。变体型变
5、体型(Variant)数据:数据:变体数据类型是一种可变的数据类型,可以表示任何值,包括数值、字变体数据类型是一种可变的数据类型,可以表示任何值,包括数值、字符串、日期时间等。符串、日期时间等。1.VB语言的基本语法(续)1)数据类型第9 9页任务分析1.VB语言的基本语法(续)2)常量和变量常量和变量.常量:常量:常量是程序运行中不可改变的量。常量是程序运行中不可改变的量。Visual Basic系统中常量分为直接常系统中常量分为直接常量,用户声明的符号常量,系统预定义常量。量,用户声明的符号常量,系统预定义常量。1)直接常量)直接常量直接常量也称为常数,如:直接常量也称为常数,如:-78.
6、9 “程序设计程序设计”#04/12/2008#True等等2)符号常量)符号常量符号常量是用户命名的数据项,其值和类型由由定义时确定符号常量是用户命名的数据项,其值和类型由由定义时确定一般格式为:一般格式为:Const 常量名表达式常量名表达式,常量名表达式常量名表达式.3)系统常量)系统常量VB系统提供了应用程序和控件的预定义常量,用户可以直接引用。如系统提供了应用程序和控件的预定义常量,用户可以直接引用。如系统的颜色常量:系统的颜色常量:vbBlack、vbRed、vbGreen等等第1010页任务分析1.VB语言的基本语法(续)2)常量和变量常量和变量变量:变量:Visual Basi
7、c用变量来储存数据值。用变量来储存数据值。每个变量都有一个名字和相应的数据类型,通过名字每个变量都有一个名字和相应的数据类型,通过名字来引用一个变量,而数据类型则决定了该变量的储来引用一个变量,而数据类型则决定了该变量的储存方式。存方式。变量是程序中数据的临时存放场所,可以保存程序运变量是程序中数据的临时存放场所,可以保存程序运行时用户输入的数据、特定运算的结果以及要在窗行时用户输入的数据、特定运算的结果以及要在窗体上显示的一段数据等。变量的值在程序运行中是体上显示的一段数据等。变量的值在程序运行中是可以变化的。可以变化的。第1111页任务分析1.VB语言的基本语法(续)2)常量和变量常量和变
8、量变量:变量:1)变量的声明)变量的声明变量的声明就是定义变量名和变量的数据类型。变量的声明就是定义变量名和变量的数据类型。(1)显式声明显式声明声明局部变量的格式:声明局部变量的格式:Dim|Static 变量名变量名 As 类型类型,变量名变量名 As 类型类型如:如:Dim x As Integer 定义定义x为整型变量为整型变量Dim str As String 定义定义str为变长字符串变量为变长字符串变量Dim a Integer,b Double 定义定义a为整型变量,为整型变量,b为双精度浮点型变量为双精度浮点型变量第1212页任务分析1.VB语言的基本语法(续)2)常量和变量
9、常量和变量变量:变量:1)变量的声明)变量的声明(2)隐式声明隐式声明如果不进行显式声明而通过赋值语句直接使用的变量,或省略了如果不进行显式声明而通过赋值语句直接使用的变量,或省略了As类类型型短语的变量,其类型为变体类型短语的变量,其类型为变体类型(Variant)。(3)强制声明强制声明在程序的开始处,如果写入如下语句:在程序的开始处,如果写入如下语句:Opting Explicit则程序中所有变量必须进行显式声明。当有未定义的变量出现或已定义则程序中所有变量必须进行显式声明。当有未定义的变量出现或已定义的变量名发生拼写错误时,系统都会提出警告,建议初学者采用强的变量名发生拼写错误时,系统
10、都会提出警告,建议初学者采用强制声明。制声明。第1313页任务分析1.VB语言的基本语法(续)2)常量和变量常量和变量变量的作用域变量的作用域变量的作用域就是引用变量的有效范围。在变量的作用域就是引用变量的有效范围。在Visual Basic中,通常分为中,通常分为局部级变量、窗体、模块级变量和全局变量。局部级变量、窗体、模块级变量和全局变量。(1)局部变量(过程级变量)局部变量(过程级变量)在在Sub过程中使用过程中使用Dim或或Static定义的变量属于局部变量,其有效范定义的变量属于局部变量,其有效范围在其所声明的过程内部。围在其所声明的过程内部。使用使用static定义的变量与定义的变
11、量与Dim定义的变量不同之处在于:在执行一个过定义的变量不同之处在于:在执行一个过程结束时,其所用到的程结束时,其所用到的static变量的值会保留,下次再调用此过程时,变量的值会保留,下次再调用此过程时,变量的初值是上次调用结束时被保留的值;而变量的初值是上次调用结束时被保留的值;而Dim定义的变量在过定义的变量在过程结束时不保留,每次调用时需要重新初始化。程结束时不保留,每次调用时需要重新初始化。第1414页任务分析1.VB语言的基本语法(续)2)常量和变量常量和变量变量的作用域变量的作用域(2)窗体变量和模块变量)窗体变量和模块变量Visual Basic程序由窗体模块、标准模块和类模块
12、等程序由窗体模块、标准模块和类模块等3种模块组成。种模块组成。模块包括过程和声明两部分,在模块的声明部分使用模块包括过程和声明两部分,在模块的声明部分使用private和和Dim声明的变量的有效作用范围是模块内部的任何过程,称为模块级变声明的变量的有效作用范围是模块内部的任何过程,称为模块级变量。量。(3)全局变量)全局变量全局变量可以在整个程序的任何模块、任何过程中使用的变量。在全局变量可以在整个程序的任何模块、任何过程中使用的变量。在模块的声明部分使用模块的声明部分使用public声明的变量,是全局变量。声明的变量,是全局变量。第1515页任务分析1.VB语言的基本语法(续)3)表达式和运
13、算符表达式和运算符表达式是把常量、变量、函数以及关键字通过运算符按照一定规则组合表达式是把常量、变量、函数以及关键字通过运算符按照一定规则组合起来生成新值的式子。起来生成新值的式子。运算符包括运算符包括 算术运算符算术运算符 关系运算符关系运算符 字符串运算符字符串运算符 逻辑运算符。逻辑运算符。第1616页任务分析1.VB语言的基本语法(续)3)表达式和运算符表达式和运算符 算术运算符和表达式算术运算符和表达式运算符运算符含义含义表达式表达式结果结果+加2+35-减5-32*乘6*318/除7/32.333333整除832Mod求余数25 mod 31幂238第1717页任务分析字符串运算符
14、和表达式字符串运算符和表达式Visual Basic有两个字符串连接符:“&”和“+”,用于将两个字符串连接成一个字符串。“&”连接符不论两个操作数是字符串还是数值,都可以连接;“+”运算符只有两个操作数都是字符串时才起连接作用,当两个操作数是数值或数字字符串时进行求和运算,其中一个是非数字字符串,另一个是数值时出错。1.VB语言的基本语法(续)3)表达式和运算符表达式和运算符第1818页任务分析1.VB语言的基本语法(续)3)表达式和运算符表达式和运算符 关系运算符和表达式关系运算符和表达式 运算符运算符含义含义表达式表达式结果结果大于2+38False=大于等于5-3=2True小于“3w
15、ad”“3wbf”True=小于等于7/3=3True=等于“abc”=”ABC”False不等于“abc”ABC”True第1919页任务分析1.VB语言的基本语法(续)3)表达式和运算符表达式和运算符 逻辑运算符和表达式逻辑运算符和表达式逻辑运算符用于两个逻辑量的比较,结果只有逻辑运算符用于两个逻辑量的比较,结果只有True和和False。运算符运算符含义含义表达式表达式结果结果Not非运算Not(35)TrueAnd与运算32 and 52 Or 52 Xor 52TrueEqv等价运算32 Eqv 52TrueImp蕴含运算32 Imp 5字符串运算符字符串运算符关系运算符关系运算符逻
16、辑运算符逻辑运算符第2121页任务分析2.数据类型的转换(下一任务中讲解)3.框架控件的使用功能是为控件提供可标识的分组。使用方法是首先需要绘制框架控件,然后再添加框架里面的控件。这样就可以把框架和里面的控件同时移动,通过框架控件的Caption属性可以设置框架的标题。第2222页任务分析本任务通过文本框输入的数据为字符串类型本程序中的算术表达式、关系表达式处理的数据要求是数值类型,逻辑表达式处理的数据要求是布尔类型,因此需要数据类型转换输出由标签控件实现,为显示多行内容,在标签控件的Caption属性里加入了字符Chr(13),表示换行。第2323页任务实施1.创建新工程2.从工具箱中选择控
17、件拖入窗体第2424页任务实施3.设置窗体及控件的属性对象对象属性名称属性名称属性值属性值窗体Form1Caption演示表达式运算标签Label1Caption空Label2Caption空Label3Caption空Label4Caption空Label5Caption空文本框TextBox1Text空TextBox2Text空框架Frame1Caption算术表达式Frame2Caption关系表达式Frame3Caption逻辑表达式Frame4Caption输入数据按钮Commend1Caption演 示Commend2Caption退 出第2525页任务实施4.在代码窗口编写事件代
18、码并保存、运行源代码 Label2.Caption=Label2.Caption&Chr(13)&x*y 的值是:&x*y Label3.Caption=x=y 的值是:&CStr(x=y)Label3.Caption=Label3.Caption&Chr(13)&x y 的值是:&CStr(x y)Label5.Caption=Label5.Caption&Chr(13)&a And b 的值是:&CStr(a And b)部分代码:第2626页任务设计完成效果 第2727页任务任务2猜数游戏猜数游戏d 应用程序随机生成一个100以内的整数,由用户猜一猜这个数有多大。窗体提示用户按下“开始”
19、按钮进入游戏,窗体提示用户输入一个100以内的正整数。程序给出猜想的结果和猜想的次数;如果没有猜中,程序将给出猜想的数与随机数相比较的大小关系,允许用户继续猜数。图3-4程序启动后窗体的状态 图3-5单击“开始”按钮后窗体的状态 第2828页任务分析该任务我们要研究以下几项内容:VB语言的分支语句 随机函数数据类型的转换第2929页任务分析3.数据类型的转换常用的字符串转换函数通过文本框控件输入的数据是字符串类的,而应用程序需要各种类型的数据,VB提供了各种函数对数据进行转换,以满足各种需求。第3030页任务分析1.VB语言的分支语句Select Case语句中的表达式写法有:Case 1表示
20、测试表达式的取值为1Case a+5 表示测试表达式的取值为a+5,a的值必须是确定的Case 1,3,5 表示测试表达式在1,3,5中的取值Case 20 To 30 表示测试表达式的取值在20至30之间Case Is5 表示测试表达式取值在小于5的范围,Is代表表达式值第3131页任务分析1.VB语言的分支语句If Then ElseIf Then ElseIf Then Else End If1.多分支If-Then-Elseif语句为真时,执行 第3232页任务分析1.VB语言的分支语句VB中If-Then-Elseif语句的条件表达式和语句块的个数没有限制。第3333页任务分析1.V
21、B语言的分支语句Select Case Case Case Case Case Else End Select为真时,执行 第3434页任务分析1.VB语言的分支语句第3535页任务分析1.VB语言的分支语句执行过程说明:1)首先计算测试表达式的值;2)然后用这个值与表达式1、表达式2、表达式n的值相比较;3)若与表达式i的值相匹配,则执行语句块i;执行完语句块i后,则结束Select Case语句,不再与后面的表达式进行比较,开始执行End Select语句后面的语句,。第3636页任务分析1.VB语言的分支语句执行过程说明:4)当测试表达式的值与后面所有的表达式都不匹配时,若有Case E
22、lse语句,则执行Case Else语句后面的语句块n+1,然后则结束Select Case语句;若没有Case Else语句,则直接结束Select Case语句。第3737页任务分析1.VB语言的分支语句例:Case 1表示测试表达式的取值为1Case a+5 表示测试表达式的取值为a+5,a的值必须是确定的Case 1,3,5 表示测试表达式在1,3,5中的取值Case 20 To 30 表示测试表达式的取值在20至30之间Case Is r Then Val函数将数字字符串转换成数字 Label1.Caption=Text1.Text&大了,已猜了&s&次 s=s+1 Text1.Te
23、xt=ElseIf Val(Text1.Text)r Then Label1.Caption=Text1.Text&小了,已猜了&s&次 s=s+1 Text1.Text=Else Label1.Caption=恭喜您答对了!共猜了&s&次 Text1.Locked=True Cmd1.Enabled=True Cmd2.Enabled=False End If第4545页任务设计完成效果 第4646页任务任务3九九乘法表九九乘法表d在窗体显示九九乘法表。九九乘法表用下三角格式显示,要求每个乘法表达式的乘积个位数对齐。图3-12 九九乘法表第4747页任务分析本任务由多个乘法表达式运算得到,而
24、不是使用print方法显示字符串常数使用循环嵌套,分别控制九九乘法表的行和列,利用循环变量实现表达式的计算,即第i行第j列的表达式的值为“j*i”。要求下三角格式,而第i行的列的个数只有i列,因此控制列循环的变量j的上限等于当前行的循环变量i。第4848页任务分析所谓循环,就是重复地执行某些操作。在程序设计中,表现为从某处开始规律地反复执行某一程序块,重复执行的程序块称为“循环体”。VB的循环结构及相应语句表示如下:计数型循环 ForNext语句循环结构 WhileWend语句 条件型循环 DoLoop语句第4949页任务分析计数型循环(ForNext)在知道要执行多少次时最好用For Nex
25、t偱环结构。1.格式:For =To Step Next 第5050页任务分析其中:1)“循环变量”用作循环计数器的数值型变量,“初值”、“终值”均是数值表达式,用于表示循环变量的变动范围。2)“步长”也是一个数值表达式,其值可以是正数(递增循环),也可以是负数(递减循环),但不能为0。若步长为1,可略去不写。3)循环次数=INT(终值-初值)/步长)+1。4)“Exit For”是中途退出循环,一般与If语句联用。第5151页任务分析2.功能:重复执行FOR和NEXT之间的循环体,重复执行的次数由循环变量来控制。该语句主要用于已知循环次数的循环控制。3.执行过程:设有以下循环结构:For i
26、=a To b Step cNext i第5252页任务分析图3-15 步长为正数的ForNext循环控制流程图第5353页任务分析例3-1:输出如图所示的图形。程序代码为:Private Sub Form_Click()For i=1 To 6Print Tab(10-i);String(i,);Next iEnd Sub第5454页任务分析条件型循环在很多情况下并不知道循环的次数,VB提供了条件控制的循环结构,相应语句为WhileWend和DOLOOP。1.当循环语句(WhileWend)1)格式:While Wend第5555页任务分析2)功能:当条件表达式的值为“true”时,重复执行
27、循环体;为“false”时,跳出循环,执行Wend语句的下一条语句。3)必须先给While条件中的变量赋值即初始化,在循环体中要有能改变循环条件值的语句,让循环条件表达式最终取“false”值,结束循环,否则有可能造成死循环。第5656页任务分析循环控制流程图 图3-17 WhileWend第5757页任务分析例3-2 用WhileWend语句求1+2+3+100的值。程序代码为:Private Sub Form_Click()Dim s,i As Integers=0:i=1 循环初始化While i=100 s=s+i 累加器 i=i+1 改变条件中的变量i的值WendPrint Tab(
28、20);s=&sEnd Sub 第5858页任务分析2.DO循环语句(DoLoop)DoLoop循环结构较为灵活,有当型(即While型)和直到型(即Until)两种结构,当型结构是条件为真时,执行循环体,直到型结构是条件为真时,结束循环体;根据测试条件在循环体的先后,又分为先判断后执行型和先执行后判断型,二者的区别在于前者循环体有可能一次也不执行,而后者循环体至少执行一次。第5959页任务分析格式:1)Do WhileLoopDo While Loop 图3-18 Do WhileLoop循环控制流程图第6060页任务分析Do While n max Then max=r 新的随机数新的随机
29、数r大于大于max,则则r替换替换max ElseIf r min Then min=r 新的随机数新的随机数r小于小于min,则则r替换替换min End If sum=sum+r 求和求和 Print Spc(2);r;n=n+1 计算已产生的随机数总计算已产生的随机数总数数Loop例3-3 由系统产生m个1100之间随机数,求出其中的最大值、最小值和平均值,m是210以内的随机数。第6161页任务分析2)DoLoop WhileDo Loop While 图3-19 DoLoop While循环控制流程图第6262页任务分析i=2Do If n Mod i=0 Then Exit Do
30、i=i+1Loop While i=Int(Sqr(n)例3-4 产生一个1100之间的随机整数,编程判断是否为素数。第6363页任务分析3)Do UntilLoop Do Until Loop 图3-20 Do UntilLoop循环控制流程图第6464页任务分析r=m Mod nDo Until r=0 m=n n=r r=m Mod nLoop例3-5用欧几里德辗转法求正整数m、n(m、n不为0)的最大公约数。第6565页任务分析4)DoLoop UntilDo Loop Until 图3-21 DoLoop Until循环控制流程图第6666页任务分析 i=1 Do n=Int(Rnd
31、*100)+1 Print n;Spc(2);If n Mod 3=0 And n Mod 2 0 Then Exit Do i=i+1 Loop Until i 10例3-6 产生10个随机数,用Do UntilLoop语句找出第一个能被3整除的奇数,如果没有一个满足要求,则输出“没有找到”。第6767页任务分析d 多重循环多重循环就是指循环嵌套,即在一个循环体内有包含另一个或多个完整的循环结构。例如可以在For循环中包含While循环、Do循环或For循环。在多重循环中,外面的大循环称为外层循环,里面的小循环称为内层循环。第6868页任务分析d 循环嵌套,应注意以下问题:1内层循环一定要包
32、含在外层循环内2内外层循环不能交叉使用3各层循环的控制变量名应不相同,以免造成混乱4外层循环变量取值一次,内层循环变量取值一遍。5内层循环体内的变量取初值,一般应放在内循环之前,外层循环之内,如下例的i。第6969页任务实施1新建一个工程2在属性窗口中设置窗体的下列属性:表3-8 在属性窗口中设置窗体属性属性名称属性名称属性值属性值Caption九九乘法表第7070页任务实施3.在代码窗口编写事件代码并保存、运行源代码 For j=1 To i Form1.Print i&*&j&=;If i*j 10 Then Form1.Print ;为了使结果对齐,当乘积为一位数时加一空格 End If
33、 Form1.Print i*j&;Next j第7171页任务实施4.在原有代码的基础上改进获得带有边框的九九乘法表改进源代码 For j=1 To i Form1.Print j&x&i&=;If i*j 10 Then Form1.Print ;为了使结果对齐,当积为一位数时加一空格 End If Form1.Print i*j&;Next j If i 9 Then If j=i+1 Then 该该if-else块输出表格的第二行到块输出表格的第二行到第九行横线第九行横线 Form1.Print;Else Form1.Print;End If第7272页任务设计完成效果 第7373页任
34、务任务4排序排序d本任务利用数组和循环控制结构对一组数据进行排序。启动程序后,窗体屏幕显示出10个随机数据,按下“排序”命令按钮,窗体屏幕显示出排序后的数据。图3-22窗体启动后屏幕显示的信息 图3-23单击窗体后屏幕显示的信息第7474页任务分析d 一组无序的数据集合,查询过程需要耗费大量的人力物力,而在有序的数据集合中查询特定的数据,效率就会大大提高。因此在需要对数据集合进行查询时,往往需要对数据集合进行排序,以便快速准确地查询。第7575页任务分析“冒泡排序”涉及到的知识点有:1.用数组表示一组在位置上有顺序的数,因为数组元素的下标就是表示元素位置上的顺序;2.用循环控制结构扫描前n-1
35、个数;3.当扫描到第i个数时,在从i开始到n结束的剩余数中,用内层循环进行查找最小数的操作;4.数据交换 b=x:x=y:y=b第7676页任务分析d 一组具有相同名字、不同下标的下标变量来代表一组具有相同性质的数据,可以更为方便,更能清楚地表示它们之间的关系,同时更便于计算机处理和编程。第7777页任务分析d 1.数组与数组元素我们把具有同一个名字、相同数据类型、不同下标的一组变量称为数组。数组中的每一个元素称为数组元素,它是由数组名和带圆括号的下标组成的。数组用于保存大量的、逻辑上有联系的、相同数据类型的数据。第7878页任务分析1)数组名的取名规则:和简单变量相同。2)数组下标:在VB中
36、必须把下标放在一对紧跟在数组名后的圆括号中,下标必须为等于或大于零的整数,否则舍去小数部分自动取整。下标的作用是指出某个数组元素在数组中的位置,Stu(7)代表了Stu数组中的第七个数组元素。下标的最小值称为下标下界最大值称为下标上界由下标的上下界可以确定数组中元素的个数数组元素的个数称为数组的大小。3)数组的特点:数据中的元素在类型上是一致的;数组元素在内存空间上是连续存放的。第7979页任务分析 2.数组的数据类型数组类型:与一般变量类型一样,如单精度、双精度、整数、字符串等。数组中的所有数组元素应具有相同的数据类型但如果数组类型是variant时,则数组元素能够为不同的数据类型。3.数组
37、的维数只有一个下标的数组称为一维数组,其数组元素称为单下标变量,其下标又称为索引。有两个下标的数组称为二维数组,其数组元素称为双下标变量。VB中至多可以使用16维的数组。第8080页任务分析4.数组的形式VB中有两种类型的数组:静态数组动态数组数组必须先声明才使用。声明时要指定数组的类型与数组名。如果数组在声明时指定了下标的上下界,称为静态数组,如DIM B(1 to 5),这样的数组一旦定义,它的大小是不能改变的。第8181页任务分析1)静态数组的定义数组也分为全局的(应用程序级)、模块级的或局部的(过程级),声明方法如下。(l)全局数组。在标准模块的声明部分使用Public语句声明,可在所
38、有模块中的对其元素进行存取的数组。Public 数组名(下界to上界)As类型名注意,不能在窗体模块与类模块中声明全局数组。第8282页任务分析1)静态数组的定义(2)模块级数组。在模块的声明部分使用Private或Dim语句(二者等价)声明,模块级数组只在声明它的模块中可用。Private|Dim数组名(下界to上界)As类型名(3)过程级数组。在过程中使用Dim或Static语句声明,只能在本过程中使用。Dim|Static数组名(n)As 类型名使用Static声明的是静态数组,在过程的两次执行之间,它的所有元素的值均被保留。第8383页任务分析定义一维数组的格式为:Public Pri
39、vate Dim Static()AS 定义二维数组的格式为:Public Private Dim Static(,)AS 示例:Dim a(10)AS Integer 定义了a(0)a(10)共11个数组元素Dim b(2,3)AS String 定义了b(0,0)b(2,3)共12个数组元素第8484页任务分析d 排序程序的设计有许多经典的算法d“冒泡排序”算法在程序设计的思路和程序结构上是其中最具典型的算法。该算法的基本思路是:n个数,从第一个数开始,对所有的数进行扫描;扫描到某个数时,找出其后面的所有数中最小的数,然后将这个最小的数与其交换位置;由于最后一个数后面没有数,因此扫描的次数
40、是n-1;每次扫描都会把剩余数中的最小数交换到前面,就像水中的“气泡”一样,“轻”的上升,“重”的下降,故称为“冒泡排序”。第8585页任务分析1625990231625909923169016232590第8686页任务分析将最少的数排在最将最少的数排在最上面,就像冒泡上面,就像冒泡一样一样第8787页任务分析2)静态数组的使用要访问数组元素,其格式为:数组名(下标)例3-7将某班级30名学生的姓名用数组存储,并输出显示,其中下界为1 For i=1 To 10 names(i)=InputBox(请输入第&i&个学生姓名:,输入框)Next i For i=1 To 10 Print i&
41、:&names(i)Next i第8888页任务分析3)动态数组动态数组是指数组的维数和类型是固定的,但声明时不指定下标上下界(每维的上下界可以变化)的数组称为动态数组。动态数组是在程序运行过程中定义的,其大小可以由用户指定,也可以由用户在程序中添加的逻辑根据特定条件来决定。第8989页任务分析(1)在设计阶段,在程序中规定数组的名称和类型,但不能指定数组元素的个数。Public Names()as String(2)在程序运行过程中添加代码以确定数组应包含的元素个数。ReDim Names(r)第9090页任务分析d 例3-8 使用数组,产生一个10到1000000之间的随机数,统计其中包含
42、数字5的个数。Dim n As Long Dim a(),i,m As Integer Randomize n=Int(999991*Rnd)+10)10-1000000之间的随机数 Print Tab(10);n;i=0 Do ReDim a(i)重新定义a数组的大小 i=i+1 Loop While n 0 经过降位后的n是否为0第9191页任务实施1新建一个工程2.在窗体上添加两个框架(Frame)控件,分别在每个框架控件中添加一个标签控件Label,最后添加两个命令按钮控件Command 表3-9 在属性窗口中设置属性对象对象属性名称属性名称属性值属性值标签Label1Caption空
43、 Label2Caption空 框架Frame1Caption排序前Frame2Caption排序后按钮Command1Caption排 序Command2Caption退 出第9292页任务实施3.在代码窗口编写事件代码并保存、运行源代码 Randomize 对随机数生成器做初始化的动作对随机数生成器做初始化的动作 For i=1 To 10 a(i)=Int(100*Rnd)+1)s=s&a(i)Next i Label1.Caption=s For i=1 To 9 min=i For j=i+1 To 10 If a(j)a(min)Then min=j Next j t=a(i):a
44、(i)=a(min):a(min)=t Next i s=第9393页任务设计完成效果 第9494页任务任务5简易计算器简易计算器d本任务设计了一个简易计算器,能够进行简单的有理数加减乘除运算,在输入和运算过程中发生意外和错误时,具有清除功能。图3-24简易计算器第9595页任务分析d将按钮按照功能进行分类,有数字按钮、运算符按钮(加减乘除键)、运算按钮(=)、符号按钮和清除按钮。在数字按钮的Click事件中完成这些操作:Text1.Text=Text1.Text+Command(Index).Captiond算术运算都是双目运算,运算符按钮的功能是记录第一个数和记录要进行的运算。4个运算符按
45、钮的具有相同的操作,故处理成控件数组。第9696页任务分析d 运算按钮(=)是计算器的核心控件。当按下运算按钮后,根据已记录的运算符进入不同的分支,将已记录的第一个运算量与文本框当前的内容进行转换和运算,并将结果显示在文本框中。把运算过程设计成函数,在运算按钮的Click事件中调用该函数。d符号按钮,其作用是输入负数。操作过程分三种情形:从负号开始输入数字;在文本框当前的正数前加负号(正变负);去掉文本框当前的负数的负号(负变正)。第9797页任务分析1.控件数组控件数组是由具有相同名称和类型并具有相同事件过程的一组控件构成。每个控件数组至少有1个元素,最多可有32767个元素。第一个下标也是
46、0。(1)控件数组的应用在程序设计中,使用控件数组添加控件所消耗的资源比直接向窗体添加多个相同类型的控件消耗的资源少,而且如果希望若干个控件共享代码时,控件数组也很有用。第9898页任务分析(2)控件数组的创建1.一般采用在设计时通过复制现有的控件来创建控件数组。注意一是在复制前,应把被复制的控件公共属性设置好,如:名称、大小等;二是在粘贴第一个控件是会弹出对话框要求确认,按下“确认”按钮即可。2.另一种在设计时创建控件数组的办法是在添加好一组同种控件后,将其“名称”属性改成相同的名称即可。第9999页任务分析2.过程VB中有两类过程:事件过程通用过程。事件过程是对发生的事件进行处理的代码。在
47、VB中可使用下列几种过程:Function过程(返回值)Sub过程(不返回值)第100100页任务分析1)函数过程(Function过程)函数过程是标准模块中位于Function语句与End Function语句之间的一系列语句。使用函数过程与使用内置函数,比如Time、Int或Str等的方法完全相同。提示:在标准模块中声明的函数在缺省状态下是公用函数,它们可在任何事件过程中使用。函数的基本语法为:Function 函数名(参数列表)As 数据类型 函数体End Function函数体End Function第101101页任务分析其中:“函数名”是在模块中要创建函数的函数名称。“参数列表”为
48、可选项,由函数中用到的一系列参数组成(参数之间用逗号隔开)。“As 数据类型”为可选项,用于指定函数返回值的数据类型(缺省类型为变体类型)。“函数体”是完成函数功能的一组语句第102102页任务分析Function add(a As Integer,b As Integer)As Integer Dim c As Integer c=a+b add=cEnd FunctionPrivate Sub Command1_Click()Dim sum As Integer sum=add(18,23)Label1.Caption=CStr(sum)End Sub例3-9,使用函数过程Add计算两个参
49、数的和,然后将结果返回。第103103页任务分析2)sub过程子过程类似于用户自定义函数,不同之处是子过程不返回与子过程类似于用户自定义函数,不同之处是子过程不返回与其名称相关联的值,而是采用参数的办法返回多个值。其名称相关联的值,而是采用参数的办法返回多个值。子过程一般用来从用户那里得到输入数据、显示或打印子过程一般用来从用户那里得到输入数据、显示或打印信息,或者操纵与某一条件相关的几种属性。子过程也信息,或者操纵与某一条件相关的几种属性。子过程也用来在过程调用中处理和返回数个变量。大多数函数只用来在过程调用中处理和返回数个变量。大多数函数只能返回唯一一个值,但子过程却能够返回多个值。能返回
50、唯一一个值,但子过程却能够返回多个值。子过程的基本语法为:Sub 过程名(参数列表)过程体End Sub第104104页任务分析d 其中:“过程名”是定义子过程的名称。“参数列表”是一系列可选的、可在该子过程中使用的参数(如果不止一个参数,则由逗号分开)。“过程体”是完成该过程工作的一组语句。第105105页任务分析3)参数传递参数是指传递到过程中的数据。在调用过程时,需要将过程运行时的环境信息和要处理的数据传递给过程,称为参数传递。根据数据参数的作用不同,可以将参数分为形式参数和实际参数。在过程定义时,过程名后面圆括号中的参数是形式参数在过程调用时,过程名后面圆括号中的参数是实际参数第106