VB第七章数组和自定义数组.ppt_第1页
VB第七章数组和自定义数组.ppt_第2页
VB第七章数组和自定义数组.ppt_第3页
VB第七章数组和自定义数组.ppt_第4页
VB第七章数组和自定义数组.ppt_第5页
已阅读5页,还剩25页未读 继续免费阅读

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计基础(VB),主讲人:孟永伟,Email:,第七章 数组和自定义数据类型,教学基本要求,掌握数组、控件数组的概念; 掌握数组应用的一般方法; 了解自定义数据类型的应用。,教学内容,7.1 数组的概念 7.2 静态数组声明及应用 7.3 动态数组声明及应用 7.4 控件数组的概念及应用 7.5 自定义数据类型 7.6 列表框和组合框控件,主要知识点与重点,静态数组声明及应用; 动态数组声明及应用; 控件数组的建立及应用。,7.1 数组的概念,引例 例:若要计算一个班100个学生的平均成绩,然后统计高于平均分的人数。,分析: 该问题可分三部分处理: 一 是输入100个人的成绩; 二是求平均分; 三是把这100个分数逐一和平均成绩进行比较,若高于平均成绩,则输出。,7.1 数组的概念,在实际应用中,常常需要处理同一类型的成批数据。 例如:为了处理100个学生某门课程的考试成绩,可以用mark1,mark2,mark3.,mark100来分别代表每个学生的分数,其中mark1代表第一个学生的分数,mark2代表第二个学生的分数.这里的mark1,mark2,.mark100是带有下标的变量,通常称为下标变量。显然,用一批具有相同名字、不同下标的下标变量来表示同一属性的一组数据,能更清楚地表示它们之间的关系。,在VB中,把一组具有同一名字、不同下标的下标变量称为数组。,例如:mark(8)中,mark称为数组名,8是下标。下标用来指出某个数组元素在数组中的位置,mark(8)代表mark数组中的第九个元素。,在程序中使用数组的最大好处是用一个数组名代表逻辑上相关的一批数据,用下标表示该数组中的各个元素,和循环语句结合使用,使得程序书写更为简洁。,7.1 数组的概念,数组必须先声明后使用,要声明数组名、类型、维数、数组大小。 在VB中,Variant类型数组的各元素可以是不同的数据类型,但建议不要使用。 数组声明时下标的个数分为一维数组和多维数组。 数组声明时根据数组大小确定与否可分为静态(固定大小)数组和动态数组(大小可变)。,注意,7.2.1 一维数组的声明 Dim 数组名(下标)As 类型,说明: As类型:如果默认,是变体类型。 一维数组的大小:上界-下界+1。 下标:必须为常量,不可以为表达式或变量。 下标形式:下界 To上界,下标下界最小可为-32768,最大的上界为32767,通常可以省略下界,其默认值为0。,例如: Dim a(10) As Integer 其中:a是数组名、整型、一维数组、有11个元素、下标范围010。 Dim St(-3 To 5) As String*3 其中:St是数组名、字符串类型、一维数组、有9个元素;下标范围-35,每个元素最多存放3个字符。,7.2 静态数组声明及应用,一维数组的引用,声明数组,仅仅表示在内存中分配了一个连续的区域。在以后的操作中,一般是针对数组中的某个元素进行的。 数组元素引用的形式: 数组名(下标) 说明: 下标不能超出数组声明时的上、下界范围,否则会出现“下标越界”的出错信息。 下标可以是常量、变量、表达式,甚至又是一个数组元素。 例如: a(10)、a(3+4)、a(i),7.2.2 一维数组的应用,7.2 静态数组声明及应用, 一维数组的赋值Array函数,赋值Array函数的形式如下: 变量名=Array(常数列表) 功能: 将常量列表的各项值分别赋值给一个一维数组的各元素。 说明: 变量名必须声明为Variant变体类型,并作为数组使用。 常数列表以逗号分隔,数组的下界和上界通过LBound和UBound函数获得。 Array函数:直接给一维数组赋值 UBound(数组名): 数组的上届值 LBoubd(数组名) :数组的下届值 例如:下列程序段对数组a赋值,并显示出来。 Dim a, i% a=Array(1,2,3,34) For i=LBound(a) To UBound(a) Print a(i) Next i,演示7.2.1,7.2 静态数组声明及应用, 一维数组的输入,一般通过循环语句及InputBox函数、文本框给数组输入数据。,例如 : For i=1 to 10 A(i)=1 Next i,演示7.2.2,7.2 静态数组声明及应用, 一维数组的输出,数组的输出一般用Print方法、标签或文本框实现。,例如: 编写程序,把输入的10个整数按逆序输出。,Private Sub Command1_Click() Dim a(10)As Integer,i% Print “输入的数据为“ For i = 1 To 10 a(i)= InputBox(“请输入一个整型数“) Print a(i); Next i Print Print “逆序输出为“ For i = 10 To 1 step -1 Print a(i); Next i End Sub,演示7.2.5,7.2 静态数组声明及应用,分析: 求元素和很方便,只要通过循环将每个元素进行累加即可。 在若干个数中求最小值,一般先假设一个较大的数为最小值的初值,若无法估计,则取第一数为最小值的初值;然后依次将每一个数与最小值比较,若该数小于最小值,将该数替换为最小值。 最小值数组元素与第一个数组元素交换,这就要求在求最小值元素时还得保留最小元素的下标,最后再交换。, 求一维数组的和、最小值、位置及交换数组元素,例题: 求一维数组中各元素之和,最小数组元素及位置,并将最小数组元素与元素中的第一个元素交换。,演示7.2.4,7.2 静态数组声明及应用,分析: 该问题可分三部分处理: 一 是输入10个人的成绩; 二是求平均分; 三是把这10个分数逐一和平均成绩进行比较,若高于平均成绩,则输出。, 统计问题,例题: 从键盘上输入10人的考试成绩,输出高于平均成绩的分数。,演示7.2.6,7.2 静态数组声明及应用,排序的方法很多,如选择法、冒泡法等。这里介绍最容易理解的“冒泡法”。 设10个数存放在A数组中,分别为:A(1)、A(2)、A(3)、A(4)、A(5)、A(6)、A(7)、A(8)、A(9)、A(10)。 第1轮:先将A(1)与A(2)比较,若A(1)A(2),则将A(1)、A(2)的值互换,否则,不作交换;这样处理后,A(1)一定是A(1)、A(2)中的较小者。 再将A(1)分别与A(3)、A(10)比较,并且依次作出同样的处理。最后,10个数中的最小者放入了A(1)中。, 排序问题,例题: 从键盘上输入10个整数,把这些数按由小到大的顺序排序输出。,7.2 静态数组声明及应用,第2轮:将A(2)分别与A(3)、A(10)比较,并依次作出同第1轮一样的处理。最后,第1轮余下的9个数中的最小者放入A(2)中,亦即A(2)是10个数中的第二小的数。 照此方法,继续进行第3轮 直到第9轮后,余下的A(10)是10个数中的最大者。 至此,10个数已从小到大顺序存放在A(1)A(10)中.,为简单起见,我们以7,5,3三个数为例,再做说明: 第1轮目标:找出最小值3作为第一个数组元素 7 5 3 比较7和5,75,需要交换,交换后的序列为5 7 3; 5 7 3 比较5和3,53,需要交换,交换后的序列为3 7 5; 第2轮:找出剩下的元素中的最小值5作为第二个数组元素 3 7 5 比较7和5,75,需要交换,交换后的序列为3 5 7。 剩下的一个元素7为三个元素中的最大者,排序完成。,演示7.2.7,7.2 静态数组声明及应用, 插入数据,例题: 已知一组数据按递增次序排列,插入一个数,使这组数仍旧有序。,基本思想: 首先要查找待插入数据在数组中的位置k; 然后从最后一个元素开始往前直到下标为k的元素依次往后移动一个位置; 第k个元素的位置空出,将数据插入。,演示7.2.10,7.2 静态数组声明及应用, 删除数据,例题: 从键盘上输入10个整数,把这些数按由小到大的顺序排序输出。,基本思想: 首先要查找欲删除数据在数组中的位置k; 然后从k+1到第n个位置各向前移动一位; 最后将数组元素个数减1。,演示7.2.9,7.2 静态数组声明及应用,假如有30个学生,每个学生有5门考试成绩,如何来表示这些数据呢?VB中可以用有两个下标的数组来表示,如第i个学生第j门课的成绩可以用S(i,j)表示。其中i表示学生号,称为行下标(i1,2,30);j表示课程号,称为列下标(j1,2,3,4,5)。有两个下标的数组称为二维数组。,7.2 静态数组声明及应用,7.2.3 多维数组的声明 Dim 数组名(下标1,下标2,)As 类型,说明: 下标个数:决定了数组的维数。 数组大小:每一维的大小为上界-下界+1;数组的大小为各维大小的乘积。,例如: Dim a(5) As Integer Dim b(-2 To 3,3) As Integer,7.2 静态数组声明及应用,二维数组的声明,Dim 数组名(下标1,下标2)As 类型 例如:Dim T(2,3)As Integer 定义了一个二维数组,名字为T,类型为Integer,该数组有3行(02)4列(03),占据12(34)个整型变量的空间,如下图所示。,7.2 静态数组声明及应用, 二维数组的引用,二维数组的引用和一维数组基本相同。 格式为: 数组名(下标1,下标2) 例如:T(2,3)、Sa(4,5),7.2.4 二维数组的应用,7.2 静态数组声明及应用, 二维数组的输入,一般通过循环语句及InputBox函数、文本框给数组输入数据。,例如 Dim S(3,4) As Single For i=0 to 3 For j=0 to 4 S(i,j)=val(InputBox(“输入”& i & “,” & j &“元素的值”) Next j Next i,演示7.2.8,7.2 静态数组声明及应用, 二维数组的输出,演示7.2.3,数组的输出一般用Print方法、标签或文本框实现。,例如: 形成5*5的方阵,在3个Picture框中分别输出方阵中各元素、上三角和下三角元素。,分析: 从产生的5*5方阵中可以看出规律:第一行的元素为04,以后每行是前一行对应元素增加5;在显示个元素时为了满足各元素的对齐,每个元素占5列,可以利用Tab函数定位。 要显示上三角,规律是每一行的起始列与行号相同,这只要控制内循环的初值就可以实现。 要显示下三角,规律是每一行的列数与行号相同,这只要控制内循环的终止就可以实现。,7.2 静态数组声明及应用, 求最大元素所在行和列, 计算两个矩阵相乘,演示7.2.11,演示7.2.12,7.2 静态数组声明及应用,例: 打印4名同学的英语、数学、法律3门课的考试成绩,并计算出每个同学的平均成绩。 分析:把4名同学的姓名及各科的考试分数分别存入一个一维字符串数组xm(4)和一个二维数值数组a(4,3)中,然后对数组(主要是二维数组)进行处理。,7.2 静态数组声明及应用,Private Sub Command1_Click() Dim a(4,3)As Single,xm(4)As String * 10,i%,j%,aver! Print Tab(25);“成绩表“ Print Print “姓名“;Tab(15);“英语“;Tab(25);“数学“; Print Tab(35);“法律“;Tab(45);“平均分“ Print,程序如下:,7.2 静态数组声明及应用,For i = 1 To 4 aver = 0 xm(i)= val(InputB

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论