数据组和自定义类型--课件

上传人:无*** 文档编号:241432135 上传时间:2024-06-25 格式:PPT 页数:83 大小:1.65MB
返回 下载 相关 举报
数据组和自定义类型--课件_第1页
第1页 / 共83页
数据组和自定义类型--课件_第2页
第2页 / 共83页
数据组和自定义类型--课件_第3页
第3页 / 共83页
点击查看更多>>
资源描述
1ppt课件4.14.1数组的概念 4.2 4.2 静态数组及声明 4.3 4.3 动态数组及声明 4.4 4.4 数组的基本操作 4.5 4.5 控件数组 4.6 4.6 自定义数据类型 2ppt课件做一个爱思考的人:请看题:输入n(n(可以任意指定)个同学的成绩,求这批成绩的平均分、最高分与最低分。聪明的你应该想到该这样做:3ppt课件4ppt课件Private Sub Command1_Click()Private Sub Command1_Click()Dim Dim mark(1 mark(1 To To 100)100)As As Integer,Integer,sum sum As As Integer,Integer,aver aver As As Integer,Integer,i i As IntegerAs Integersum=0sum=0For i=1 To 100 Step 1For i=1 To 100 Step 1mark(i)=InputBox(mark(i)=InputBox(请输入学生成绩)sum=sum+mark(i)sum=sum+mark(i)Next iNext iaver=sum/100aver=sum/100Dim max As Integer,min As IntegerDim max As Integer,min As Integermax=mark(1)max=mark(1)min=mark(1)min=mark(1)For i=2 To 100 Step 1For i=2 To 100 Step 1If mark(i)mark(1)ThenIf mark(i)mark(1)Then5ppt课件max=mark(i)max=mark(i)End IfEnd IfIf mark(i)mark(1)ThenIf mark(i)mark(1)Thenmin=mark(i)min=mark(i)End IfEnd IfNext iNext iText1.Text=sumText1.Text=sumText2.Text=averText2.Text=averText3.Text=maxText3.Text=maxText4.Text=minText4.Text=minEnd SubEnd Sub6ppt课件数组和自定义数据类型数组概念:在VB程序设计中,为方便对各个变量进行统一管理,故将各同类变量定义成一个集合,该集合就被称为 一 个 数 组。例 如:X0=301,X1=302,X2=303,X3=304,X0=301,X1=302,X2=303,X3=304,.7ppt课件数组的组成一维数组一维数组的构成的构成8ppt课件三三维维数数组组的的构构成成9ppt课件数组与变量相比具有的优点u数组能够保存多个值u数组可与循环语句配合实现复杂算法u数组可作通用过程的参数,传递大量的值u数组可以作为函数过程的返回值,可以返回大量的值u数组常用来表示与一维、二维、三维空间分布相关的数据,非常直观u动态数组可根据需要开辟内存空间,优化程序、提高效率10ppt课件 数组按数组的大小按数组的大小 是否确定是否确定常规数组常规数组动态数组动态数组(静态或定长)(静态或定长)(可定长)(可定长)(即按元素的个数)(即按元素的个数)11ppt课件 数组按元素的按元素的数据类型数据类型数值型数组数值型数组字符串数组字符串数组日期型数组日期型数组变体型数组变体型数组12ppt课件数组按数组的按数组的维数划分维数划分一维数组一维数组二维数组二维数组多维数组多维数组13ppt课件对象数组菜单对象数组菜单对象数组控件数组控件数组(数组元素由控件组成的(数组元素由控件组成的数组称为控件数组)数组称为控件数组)14ppt课件4.1 常规数组常规数组,即固定大小的数组(也称静态数组)。由括号的数值决定数组的维数和下标的上下界。(常规数组至少应该有一个元素,这时下标的上下界相同)语法格式:PublicPrivateDimStatic 数组名(维数与下标界限)As 数据类型名注解:PublicPrivateDimStatic 决定数组的作用范围(全局级、模板级、过称级和静态模板级),用法和定义变量相同。Dim a As integer(%)定义变量Dim X(5 5)As integer(%)定义数组15ppt课件16PublicPrivateDimStatic 数组名(维数与下标界限)As 数据类型名“维数与下标界限”部分决定数组的维数和元素 个数“数据类型名”指定数组的数据类型,即每个元素的类型,决定元素占用内存的大小和数据的存储方式。例如:Dim X(3 3)As Integer(%),Y Y(3(3,4 4)As Single(!),Z(3,4,53,4,5)As String($)该过程分别定义一个一维数组X,一个二维数组Y,一个三维数组Z。数组X、Y和Z中的每个元素分别接受整形、单精度浮点型和字符串的数值 16ppt课件例:Dim Dim mark(1 mark(1 to to 100)100)As As IntegerInteger17ppt课件一维数组语法格式:PublicPrivateDimStatic 数组名(下标下界 To 下标上界)As 数据类型或PublicPrivateDimStatic 数组名 (下标下界 To 下标上界)例如:Dim Dim b(2 b(2 to to 10)10)As As Integer Integer =Dim Dim b%(2 b%(2 to 10)to 10)下标下界下标下界下标上界下标上界数据类型数据类型数组元素个数上界数组元素个数上界下界下界+118ppt课件 一维数组的声明说明:1 1数组名的命名规则与变量的命名相同。2 2数组的元素个数:上界-下界+1+1。3 3缺省 为0 0,若希望下标从1 1开始,可在模块的通用部分使用Option BaseOption Base语句将设为1 1。其使用格式是:Option Base 0|1 Option Base 0|1 后面的参数只能取0 0或1 1例如:Option Option Base Base 1 1 将数组声明中缺省 下标设为1 14 4 和 不能使用变量,必须是常量,常量可以是直接常量、符号常量,一般是整型常量。19ppt课件一维数组的声明5 5如果省略AsAs子句,则数组的类型为变体类型。6 6数组中各元素在内存占一片连续的存储空间,一维数组在内存中存放的顺序是下标大小的顺序,如图所示:20ppt课件一维数组元素的赋值数组在被定义后,数组中的各元素和变量一样,都被赋一个初值。数组型数组中各元素的初值为0 0;字符串型数组中各元素的初值为空串;字符串型数组中各元素的初值为空串;逻辑型数组中各个元素的初值为逻辑型数组中各个元素的初值为False;False;日日期期型型数数组组中中各各个个元元素素的的初初值值为为0000:00:00;00:00;变变体体型型数数组组中中各各个个元元素素的的初初值值为为空空值值(EmptyEmpty)21ppt课件一维数组元素的赋值方法方法(一):为单个元素赋值a(0)=1:a(1)=3:a(2)=5:a(3)=7:a(4)=9:a(5):11a(0)=1:a(1)=3:a(2)=5:a(3)=7:a(4)=9:a(5):11注:P.86 P.86 每条语句占一行,以回车键结束。多条语句写在同一行时,各语句之间用冒号“:”隔开。方法(二):通过循环语句为各元素赋值For i=0 to 5For i=0 to 5 a(i)=2*i+1a(i)=2*i+1Next iNext i22ppt课件23一维数组的基本操作 ArrayArray函数数组一经定义后,系统将自动根据数组的数据类型,为数组中的每个元素赋初值,但这种赋值是由系统进行的,用户不能决定初值的大小,所以VBVB提供了ArrayArray函数来给数组赋初值。ArrayArray函数可方便地对数组整体赋值,但它只能给声明VariantVariant的变量或仅由括号括起的动态数组赋值。赋值后的数组大小由赋值的个数决定。例如,要将1,2,3,4,5,6,7 1,2,3,4,5,6,7 这些值赋值给数组a a,可使用下面的方法赋值。Dim a()Dim a()A=array(1,2,3,4,5,6,7)A=array(1,2,3,4,5,6,7)Dim a Dim a A=array(1,2,3,4,5,6,7)A=array(1,2,3,4,5,6,7)23ppt课件语法格式:数组变量名=ArrayArray(数组元素值)说明:利用ArrayArray函数赋初值时,数组变量必须是一个变体;例如:Dim A as variant Dim A as variant 创建一个variantvariant的变量A AA=Array(10,20,30)A=Array(10,20,30)B=A(2)B=A(2)将数组的第二个元素值赋给另一个变量数组中每个元素的数据类型可以不同。例如:Dim a as variantDim a as variant a=Array(111,a=Array(111,”abcabc”,2.22),2.22)print a(0),a(1),a(2)print a(0),a(1),a(2)打印结果为“111 abc 2.22111 abc 2.22”ArrayArray函数只适用于一维数组,不能对二维或多维数组进行初始化。Array Array函数函数24ppt课件25一维数组的基本操作(2)Array(2)Array函数 Dim ib()As Variant Dim ib()As Variant ib=Array(abc,def,67)ib=Array(abc,def,67)For i=0 To UBound(ib)For i=0 To UBound(ib)Picture1.Print ib(i);Picture1.Print ib(i);Next I Next I注意:利用ArrayArray对数组各元素赋值,声明的数组是可调数组或连圆括号都可省,并且其类型只能是VariantVariant。数组的下界为零,上界由ArrayArray函数括号内的参数个数可决定,也可通过函数UboundUbound获得。25ppt课件26一维数组的基本操作 数组的赋值在VB6.0中,提供了数组直接对数组的赋值。例如:Dim a()As Variant,b()As Variant,Dim a()As Variant,b()As Variant,i%i%a=Array(1,2,3,4,5)a=Array(1,2,3,4,5)ReDim b(UBound(a)ReDim b(UBound(a)b=ab=a注意:赋值号左边的数组只能声明为注意:赋值号左边的数组只能声明为Variant的可调数组或简单变量的可调数组或简单变量 26ppt课件IsArray函数作用:判断变量是否为一个数组作用:判断变量是否为一个数组语法格式:语法格式:IsArray IsArray()变量名变量名 数组名数组名数组的变体数组的变体类型变量名类型变量名未重定义的未重定义的动态数组动态数组数组元素或数组元素或其他其他返回值:返回值:True返回值返回值:False27ppt课件 Split 函数作用:从一个字符串中以某个指定符号为分隔符,分离若干个子字符串,建立一个下标从零开始的一维数组。28ppt课件Split 函数语法格式:Split Split(,,)说明:是一必选项。包含子字符串和分隔符的字符串表达式。如果 是一个长度为零的字符串(”),Split Split 则返回一个空数组,即没有元素和数据的数组。是可选的。用于标示子字符串边界的字符串字符。如果忽略,则使用空格字符(“”“”)作为分隔符。如果 是一个长度为零的字符串,则返回的数值仅包含一个元素,即完整的 字符串 是可选的。表示返回的子字符串数,-1-1表示返回所有的子字符串。29ppt课件例如:设计一个窗体,窗体中添加一个文本框。程序运行后,用户在文本框输入多个用“,”分割的整数,按回车键后,将各数据按升序显示在一个对话框中。程序运行界面如下:Private Private Sub Sub Text1_KeyPress(KeyAscii Text1_KeyPress(KeyAscii As As Integer)Integer)If If KeyAscii KeyAscii=13 13 Then Then 判断是否按了回车键Dim i%,j%,P%,n%,m%,t%,msg$Dim i%,j%,P%,n%,m%,t%,msg$Dim a()As String,b()As IntegerDim a()As String,b()As Integera=Split(Text1.Text,)a=Split(Text1.Text,)将文本框中输入的文本,以,为分隔符分离子字符串存入数组a a的各元素中30ppt课件n=LBound(a)m=UBound(a)计算数组a的上下界ReDim b(n To m)For i=n To m b(i)=Val(a(i)将数组a中的数字字符串转化成数字存入数组b中NextFor i=n To m-1 排序,参见4.5 节“排序问题”的有关内容For j=n To m-1-i If b(j)b(j+1)Then i=b(j):b(j)=b(j+1):b(j+1)=t 交换数据End IfNext jNext i31ppt课件For i=n To m msg=msg&b(i)&Next i MsgBox msg,排序后的数据End IfEnd Sub32ppt课件For Each Next语句作用:专门用于对数组、集合等数组结构中的每一个元素进行循环操作的语句,通过它可以列举数组、对象集合中的每一个元素,并且通过执行循环对每个元素进行需要的操作。33ppt课件 For Each For Each NextNext语句语句格式:For For Each Each InIn Next Next 说明说明34ppt课件 必须是一个变体变量循环执行的次数取决于数组或对象集合元素的个数,数组或对象集合元素的个数就是循环执行的次数。每次执行循环之前都把数组或对象集合中的一个元素赋给,第一次是数组或对象集合中的第一个元素,第二次是第二个,依此类推可以使用Exit For Exit For 语句退出循环For For Each Each NextNext语句不能使用用户定义数据类型的数组 在数组操作中有时使用For For Each Each NextNext语句比用For For 循环遍历数组元素更加方便,因为它不需要指定循环条件35ppt课件For Each Next语句举例例:使用For For Each-Next Each-Next 语句求二维数组的最大值,程序设计界面如图所示。程序运行时单击“生成数组”按钮将产生一个6 6行7 7列的二维数组并显示出来,单击“求最大值”按钮将求出最大值并显示出来,如图所示36ppt课件37ppt课件Dim arr(5,6)As Integer Dim arr(5,6)As Integer 定义一个6 6行7 7列的数组Private Sub Command1_Click()Private Sub Command1_Click()Dim i%,j%Dim i%,j%Randomize Randomize For i=0 To 5 For i=0 To 5 For j=0 To 6 For j=0 To 6 arr(i,j)=Int(Rnd*90+10)arr(i,j)=Int(Rnd*90+10)Next NextNextNextLabel1.Caption=Label1.Caption=二维数组如下:For i=0 To 5 For i=0 To 5 Label1.Caption=Label1.Caption&vbCrLf For j=0 To 6 Label1.Caption=Label1.Caption&vbCrLf For j=0 To 6Label1.Caption=Label1.Caption&arr(i,j)&Space(2)Label1.Caption=Label1.Caption&arr(i,j)&Space(2)38ppt课件 NextNext Next Next End Sub End Sub Private Sub Command2_Click()Private Sub Command2_Click()Dim max%,tDim max%,tmax=arr(0,0)max=arr(0,0)For Each t In arrFor Each t In arrIf max t Then If max t Then 如果数组中的元素比maxmax的值大,则用maxmax记下该元素的值 max=tmax=t End If End IfNextNextLabel2=Label2=最大值为:&max:&max 显示最大值39ppt课件End SubEnd SubPrivate Sub Command3_Click()Private Sub Command3_Click()EndEndEnd SubEnd Sub40ppt课件41一维数组的基本操作(1)(1)求数组的上界Ubound(Ubound()函数、下界 Lbound(Lbound()函数分别用来确定数组某一维的上界和下界值。使用形式如下:UBound(UBound(,),)LBound(LBound(,),)其中:代表维数 :必需的。数组变量的名称,遵循标准变量命名约定。:可选的;一般是整型常量或变量。指定返回哪一维的上界。1 1 表示第一维,2 2 表示第二维,如此等等。如果省略默认是1 1。41ppt课件例如:Dim Dim a(1 a(1 To To 5,5,2 2 To To 6,6,5 5 To To 10)As Integer10)As Integer Print Print LBound(a),LBound(a),UBound(a),UBound(a),LBound(a,LBound(a,2),2),UBound(a,2)UBound(a,2)最终程序运行的结果为 1 1 5 5 2 62 642ppt课件二维数组的声明声明格式如下:Dim Dim 数组名(to to ,to to)As As 其中的参数与一维数组完全相同。例如:Dim a(2,3)As Single Dim a(2,3)As Single 二维数组在内存的存放顺序是“先行后列”。例如数组a a的各元素在内存中的存放顺序是:a(0,0)a(0,1)a(0,2)a(0,3)a(1,0)a(1,1)a(a(0,0)a(0,1)a(0,2)a(0,3)a(1,0)a(1,1)a(1,2)a(1,3)a(2,0)(2,1)a(2,2)a(2,3)1,2)a(1,3)a(2,0)(2,1)a(2,2)a(2,3)二维数组元素个数二维数组元素个数=第一维元素个数第一维元素个数第二维元素个数第二维元素个数43ppt课件二维数组的声明Dim Dim lArray(lArray(0 0 To To 3 3,0 0 To To 4)4)As As Long Long 共有 4 45 5个元素 等价于:Dim lArray(3:Dim lArray(3,4)As Long4)As Long 44ppt课件多维数组的声明定义多维数组的格式如下:Dim Dim 数组名(to to ,to to ,)As)As 例如:Dim Dim a(5,5,5)a(5,5,5)As As Integer Integer 声明a a是三维数组 Dim Dim b(2,6,10,5)b(2,6,10,5)As As Integer Integer 声明b b是四维数组 45ppt课件动态数组 动态数组是指在程序执行过程中数组元素的个数可以改变的数组。动态数组也叫可变大小的数组。使用动态数组就可以在任何时候改变其大小,并且可以在不需要时清除动态数组所占的存储空间。因此,使用动态数组更加灵活、方便,并有助于高效管理内存。46ppt课件动态数组的建立及使用 建立动态数组包括声明和大小说明两步:1 1在使用DimDim、PrivatePrivate或PublicPublic语句声明括号内为空的数组。格式:Dim|Private|Public Dim|Private|Public 数组名()As As 数据类型 例:Dim a()As IntegerDim a()As Integer2 2在过程中用ReDimReDim语句指明该数组的大小。格式:ReDim Preserve ReDim Preserve 数组名(下标11,下标2 2)例:Redim A(10)Redim A(10)Redim Preserve A(20)Redim Preserve A(20)Preserve参数:保留数组中原来的数据参数:保留数组中原来的数据 47ppt课件说明(1 1)ReDimReDim语句是一个可执行语句,只能出现在过程中,并且可以多次使用,改变数组的维数和大小。(2 2)定长数组声时中的下标只能是常量,而动态数组ReDim ReDim 语句中的下标是常量,也可以是有了确定值的变量。例:Private Sub Form_Click()Private Sub Form_Click()dim a()dim a()Dim N As Integer Dim N As Integer N=Val(InputBox(N=Val(InputBox(“输入N=N=?”)reDim a(N)As Integer reDim a(N)As Integer .End sub End sub48ppt课件说明(3 3)在过程中可以多次使用ReDimReDim来改变数组的大小,也可改变数组的维数。例:ReDim x(10)ReDim x(10)ReDim x(20)ReDim x(20)x(20)=30 x(20)=30 Print x(20)Print x(20)ReDim x(20,5)ReDim x(20,5)x(20,5)=10 x(20,5)=10 Print x(20,5)Print x(20,5)(4 4)每次使用ReDimReDim语句都会使原来数组中值丢失,可以在ReDimReDim后加Preserve Preserve 参数来保留数组中的数据。但此时只能改变最后一维的大小。49ppt课件数组的基本操作数组声明后,方可使用。可以对数组元素进行各种操作:对数组元素赋值 进行各种表达式运算、排序、统计、输出 使用数组可以缩短和简化程序。50ppt课件51一维数组元素的引用数组必须先定义后使用使用形式:数组名(下标)其中:下标可以是整型变量、常量或表达式。例如:设有下面的数组A(10),B(10)As IntegerA(10),B(10)As Integer 则下面的语句都是正确的。A(1)=A(2)+B(1)+5 A(1)=A(2)+B(1)+5 取数组元素运算 A(i)=B(i)A(i)=B(i)下标使用变量 B(i+1)=A(i+2)B(i+1)=A(i+2)下标使用表达式51ppt课件 一维数组的基本操作1.1.可通过循环给数组元素赋初值For i=1 to 10 For i=1 to 10 A A数组的每个元素值为1 1A(i)=1A(i)=1Next iNext i2.2.数组的输入For i=1 to 4For i=1 to 4For j=1 to 5For j=1 to 5sc(i,j)=Inputbox(sc(i,j)=Inputbox(“输入sc(sc(”&i&i&”,”&j&j&”)的值”)Next jNext jNext iNext i52ppt课件一维数组的基本操作3.数组的输出数组的输出输出如下图所示的下三角数据输出如下图所示的下三角数据Dim sc(5,5)As Integer,i%,j%For i=1 To 5For j=1 To isc(i,j)=i*5+jPrint sc(i,j);Next jPrintNext i53ppt课件一维数组的基本操作4.4.求数组中最大元素及所在下标例:定义一个内含1010个元素的数组,数组中各元素是随机产生的二位整数。求数组中最大元素及所在下标。分析:数组中各元素是随机产生的二位整数,其可由Int(Rnd*90+10)Int(Rnd*90+10)得到,然后用比较的方法得到数组中的最大值及最大值所在元素的下标值。54ppt课件Option Base 1 数组下标值由1开始 Private Sub Form_Load()Private Sub Form_Load()RandomizeRandomizeEnd SubEnd Sub Private Sub Form_Click()Dim a(10)As IntegerDim k%,max%,indexk%max和index分别表示最大值和所在下标值max=a(1)For k=2 To 10 a(k)=Int(Rnd*90+10)Print a(k);55ppt课件NextPrintPrintFor k=1 To 10For k=1 To 10If a(k)max ThenIf a(k)max Then max=a(k)max=a(k)indexk=k indexk=kEnd IfEnd IfNextNextPrint Print 数组各元素的最大值是:;:;max,max,所在下标号是:;indexk:;indexk End SubEnd Sub56ppt课件一维数组的基本操作将数组元素倒置将数组元素倒置57ppt课件58将数组元素倒置For i=1 To 102 t=A(i)A(i)=A(10-i+1)A(10-i+1)=tNext I58ppt课件59将数组元素倒置Option Base 1Option Base 1Private Sub Command1_Click()Private Sub Command1_Click()Dim i%,t%:Dim a(1 To 10)As IntegerDim i%,t%:Dim a(1 To 10)As IntegerFor i=1 To 10For i=1 To 10a(i)=i a(i)=i 1 1NextNextFor i=1 To 10For i=1 To 10Print a(i);Print a(i);NextNextFor i=1 To 10 2For i=1 To 10 2 t=a(i):a(i)=a(10-i+1):a(10-i+1)=t t=a(i):a(i)=a(10-i+1):a(10-i+1)=tNext iNext iPrintPrintFor i=1 To 10For i=1 To 10Print a(i);Print a(i);NextNextEnd SubEnd Sub59ppt课件60将数组元素倒置Option Base 1Option Base 1Private Sub Command1_Click()Private Sub Command1_Click()Dim i%,t%:Dim a()As VariantDim i%,t%:Dim a()As Varianta=Array(0,1,2,3,4,5,6,7,8,9)a=Array(0,1,2,3,4,5,6,7,8,9)For i=1 To 10For i=1 To 10Print a(i);Print a(i);NextNextFor i=1 To 10 2For i=1 To 10 2 t=a(i):a(i)=a(10-i+1):a(10-i+1)=t t=a(i):a(i)=a(10-i+1):a(10-i+1)=tNext iNext iPrintPrintFor i=1 To 10For i=1 To 10Print a(i);Print a(i);NextNextEnd SubEnd Sub60ppt课件61选择排序法算法思想:1 1)对有n n个数的序列(存放在数组a(n)a(n)中),从中选出最小(升序)或最大(降序)的数,与第1 1个数交换位置;2 2)除第1 1 个数外,其余n-1n-1个数中选最小或最大的数,与第2 2个数交换位置;3 3)依次类推,选择了n-1n-1次后,这个数列已按升序排列。61ppt课件62选择排序法算法思想:1 1)对有n n个数的序列(存放在数组a(n)a(n)中),从中选出最小(升序)或最大(降序)的数,与第1 1个数交换位置;2 2)除第1 1 个数外,其余n-1n-1个数中选最小或最大的数,与第2 2个数交换位置;3 3)依次类推,选择了n-n-1 1次后,这个数列已按升序排列。62ppt课件63选择排序法For i=1 To n-1 iMin=i For j=i+1 To n If iA(j)iA(iMin)Then iMin=j end if Next j t=iA(i)iA(i)=iA(iMin)iA(iMin)=t Next I 63ppt课件64选择排序法Picture1.Cls:Dim i%,imin%:Dim ia(1 To 6)As IntegerPicture1.Cls:Dim i%,imin%:Dim ia(1 To 6)As IntegerFor i=1 To 6For i=1 To 6 ia(i)=Int(Rnd*101)ia(i)=Int(Rnd*101)Next NextFor i=1 To 6For i=1 To 6 Picture1.Print ia(i);Picture1.Print ia(i);NextNextPicture1.PrintPicture1.PrintFor i=1 To 5For i=1 To 5 imin=i imin=i For j=i+1 To 6 For j=i+1 To 6 If ia(j)ia(imin)Then imin=j If ia(j)ia(imin)Then imin=j Next j Next j t=ia(i):ia(i)=ia(imin):ia(imin)=t t=ia(i):ia(i)=ia(imin):ia(imin)=tNext iNext i64ppt课件65冒泡排序法算法思想:(将相邻两个数比较,小的调到前头)1 1)有n n个数(存放在数组a(n)a(n)中),第一趟将每相邻两个数比较,小的调到前头,经n-1n-1次两两相邻比较后,最大的数已“沉底”,放在最后一个位置,小数上升“浮起”;2 2)第二趟对余下的n-1n-1个数(最大的数已“沉底”)按上法比较,经n-2n-2次两两相邻比较后得次大的数;3 3)依次类推,n n个数共进行n-1n-1趟比较,在第j j 趟中要进行n-jn-j次两两比较。65ppt课件66冒泡排序法选择法排序在每一轮排序时找最小(递增次序)数的下标,出了内循环(一轮排序结束),再交换最小数的位置;而冒泡法排序在每一轮排序时只要将第一个与其他几个比较,只要次序不对,就交换,出了内循环,最小数已冒出。66ppt课件67冒泡排序法For i=1 To 5For i=1 To 5 For j=6 To i+1 Step-1 For j=6 To i+1 Step-1 If ia(j)ia(j-1)Then If ia(j)ia(j-1)Then temp=ia(j)temp=ia(j)ia(j)=ia(j-1)ia(j)=ia(j-1)ia(j-1)=temp ia(j-1)=temp End If End If Next j Next jNext iNext i67ppt课件68冒泡排序法Picture1.Cls:Dim Picture1.Cls:Dim i%,i%,imin%:Dim imin%:Dim ia(1 ia(1 To To 6)6)As As IntegerIntegerFor i=1 To 6For i=1 To 6 ia(i)=Int(Rnd*101)ia(i)=Int(Rnd*101)Next NextFor i=1 To 6For i=1 To 6 Picture1.Print ia(i);Picture1.Print ia(i);NextNextPicture1.PrintPicture1.PrintFor i=1 To 5For i=1 To 5 For j=6 To i+1 Step-1 For j=6 To i+1 Step-1 If ia(j)ia(j-1)Then If ia(j)ia(j-1)Then temp=ia(j)temp=ia(j)ia(j)=ia(j-1)ia(j)=ia(j-1)ia(j-1)=temp ia(j-1)=temp End If End If Next j Next jNext iNext i68ppt课件69数组元素的插入与删除(1)(1)插入 在有序数组a(1 to n)(a(1 to n)(原有n n-1-1个元素)插入一个值KeyKey元素,算法:查找要插入的位置k k(1=1=k k=n n-1-1)腾出位置,把最后一个元素开始到第k k个元素往后移动一个位置第k k个元素的位置腾出,就可将数据KeyKey插入69ppt课件70数组元素的插入与删除Picture1.Cls:Dim a%(1 To 10),i%,k%Picture1.Cls:Dim a%(1 To 10),i%,k%For i=1 To 9For i=1 To 9 a(i)=(i-1)*3+1 a(i)=(i-1)*3+1NextNextFor i=1 To 10For i=1 To 10 Picture1.Print a(i);Picture1.Print a(i);NextNextFor k=1 To 9For k=1 To 9 If 14 a(k)Then Exit For If 14 a(k)Then Exit ForNextNextFor i=9 To k Step-1For i=9 To k Step-1 a(i+1)=a(i)a(i+1)=a(i)NextNexta(k)=14a(k)=14Picture1.PrintPicture1.Print70ppt课件71数组元素的插入与删除2)2)删除 要找到欲删除的元素的位置k k;然后从k k+1+1到n n个位置开始向前移动;最后将数组元素减1 1。71ppt课件72数组元素的插入与删除Picture1.Cls:Dim a%(1 To 10),i%,k%Picture1.Cls:Dim a%(1 To 10),i%,k%For i=1 To 10For i=1 To 10 a(i)=(i-1)*3+1 a(i)=(i-1)*3+1NextNextFor i=1 To 10For i=1 To 10 Picture1.Print a(i);Picture1.Print a(i);NextNextFor k=1 To 10For k=1 To 10 If a(k)=13 Then Exit For If a(k)=13 Then Exit ForNextNextFor i=k To 9For i=k To 9 a(i)=a(i+1)a(i)=a(i+1)NextNextPicture1.PrintPicture1.PrintFor i=1 To 10For i=1 To 10 Picture1.Print a(i);Picture1.Print a(i);NextNext72ppt课件73控件数组 应用程序中对于一些类型相同、功能相似的控件,可将其定义成一个控件数组来实现。和数组变量一样,控件数组中的每一个控件是该控件数组的一个元素,表示为:()同一控件数组名称相同,各控件(数组元素)的索引(下标)不同,该索引由控件的IndexIndex属性决定。控件数组中可用的最大索引值为3276732767。同一控件数组中的不同控件可以有自己的属性设置值。73ppt课件74控件数组 一组相同类型的控件组成。它们共用一个控件名,具有相同的属性,建立时系统给每个元素赋一个唯一的索引号(Index)(Index)。控件数组共享同样的事件过程,通过返回的下标值区分控件数组中的各个元素。74ppt课件75控件数组举例实训5-3 5-3 建立含有4 4个命令按钮的控件数组,当单击某个命令按钮时,改变文本框中字体的大小,如下图所示:75ppt课件程序实现过程建立一个新的工程,在窗体上放置一个文本 框 Text1Text1的 ScrollBarsScrollBars属 性 为 1-1-Horizontal.Horizontal.在窗体上放置一个命令按钮,然后用“复制”,“粘贴”建立控件数组中其他三个按钮。双击任意一个单选按钮,打开代码编辑器,在ClickClick事件中输入如下代码:76ppt课件代码窗口PrivateSubCommand1_Click(IndexAsInteger)SelectCaseIndex根据index值来判断单击了哪个单选按钮Case0Text1.FontSize=12Case1Text1.FontSize=18Case2Text1.FontSize=24Case3Text1.FontSize=30EndSelectEndSub77ppt课件78控件数组的使用同一个控件数组中的所有控件共享相同的事件过程。控件数组的事件过程会返回一个参数IndexIndex,以表示当前是在控件数组的哪一个控件上发生了该事件。SubPrivate Sub Command1_Click(Index As Integer)End Sub根据Index的值决定当前按下了哪一键78ppt课件79控件数组和一般数组的比较 控件数组控件数组 一般数组一般数组元素为一个控件,是一对象元素为一个控件,是一对象 元素可以是各种类型元素可以是各种类型的数据的数据下标可以不连续下标可以不连续 下标必须连续下标必须连续只有一维只有一维 可以有多维可以有多维可在空闲索引号位置上增加元素可在空闲索引号位置上增加元素 只能在最未位置上只能在最未位置上加元素加元素79ppt课件80自定义数据类型形式如下:Type Type 自定义类型名 元素名(下标)As)As 类型名 元素名(下标)As)As 类型名 End Type End Type元素名:元素名:表示自定义类型中的一个成员表示自定义类型中的一个成员下标:下标:表示是数组表示是数组类型名:类型名:为标准类型为标准类型80ppt课件81自定义类型的定义 例如,以下定义了一个有关学生信息的自定义类型:Type StudType Type StudType No As Integer No As Integer 学号 Name As String*20Name As String*20 姓名 Sex As String*1Sex As String*1 性别 Mark(1 To 4)As SingleMark(1 To 4)As Single 4 4门课程成绩 otal As Singleotal As Single 总分 End TypeEnd Type81ppt课件82自定义类型的定义 注意:(1)(1)自定义类型一般在标准模块(.BAS)(.BAS)中定义,默认是PublicPublic;在窗体必须是PrivatePrivate。(2)(2)自定义类型中的元素类型可以是字符串,但应是定长字符串。(3)(3)不要将自定义类型名和该类型的变量名混淆,前者表示了如同IntegerInteger、SingleSingle等的类型名,后者VBVB根据变量的类型分配所需的内存空间,存储数据。(4)(4)自定义类型一般和数组结合使用,简化程序的编写。82ppt课件83自定义类型变量的声明和使用(1)(1)声明形式:Dim Dim 变量名 As As 自定义类型名 例 Dim Student As StudType Dim Student As StudType(2)(2)引用 形式:变量名.元素名 例 表示StudentStudent变量中的姓名,第4 4门课程的成绩,则表示如下:Student.NameStudent.Name,Student.Mark(4)Student.Mark(4)83ppt课件
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!