




免费预览已结束,剩余56页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第5章数组,本章重点介绍:1.静态数组2.动态数组3.控件数组,2,第5章数组,一个人N门课的成绩怎样存储和处理?一个班N门课的成绩怎样存储和处理?.,这些数据的特点:具有相同的数据类型。为了方便地使用这些数据,VB语言提供了一种构造数据类型:数组,例如:存储学生成绩用实型数组score(1to5)其中:score是数组名。该数组可以存放5个成绩,分别用下标变量表示:score(1),score(5)。,3,5.1数组的概念及其声明,5.1.1数组与数组元素,1.数组概念数组就是一组相同类型数据的集合,这一组数中的每一个组成元素就叫做数组元素。用一个统一的名字(数组名)代表逻辑上相关的一批数据,每个元素用下标变量来区分;下标变量代表元素在数组中的位置。,例如:dimmark(1to100)AsInteger第一个学生成绩用mark(1)来表示,其值为95第二个学生成绩用mark(2)来表示,其值为80,4,2.数组的命名命名规则和简单变量的命名规则相同。例如:用mark来代表100个学生的成绩,3.数组维数,数组中下标的个数称为数组的维数,一维数组:例如mark(100),二维数组:有两个下标例如:x(2,3)二维数组相当于一个矩阵,三维数组:有三个下标,例如:m(3,4,5),5.1.1数组与数组元素,5,4.数组元素,5.1.1数组与数组元素,如何确定100个学生和这个数据组中的各个成绩对应关系呢?,给数组中的数据编号,也就是顺序号,从而出现了数组中的下标变量,所以数组元素也称为下标变量.数组元素表示为:,(),例如:mark(1)、mark(99),例如:c(2,3)表示数组c中第2行第3列的那个元素,对于数组中下标的使用说明:,(1)下标放在数组名后的括号内,mark1,mark2,mark(1),6,5.1.1数组与数组元素,(2)下标可以是常量、变量或者表达式,mark(1)=60,fori=2to100mark(i)=cint(inputbox(“输入”)nexti,mark(i+1)=0,(3)下标反映的是数据在数组中的位置,应该为整数,如为非整数,要四舍五入取整,例如x(3.6)取整后为x(4),7,5.数组的类型VisualBasic中的数组,按不同的方式可分为以下几类:按数组的大小(元素个数)是否可以改变来分为:定长数组、动态(可变长)数组,也称为静态数组或动态数组。,5.1.1数组与数组元素,按元素的数据类型可分为:数值型数组、字符串数组、日期型数组、变体数组等。,按数组的维数可分为:一维数组、二维数组、多维数组。,对象数组:菜单对象数组、控件数组。,8,5.2静态数组,静态数组是指固定大小的数组,类型、维数和大小将不得改变。,5.2.1静态数组及声明,语法:Dim数组名(下标1,下标2)As类型,下界to上界,维数:几个下标为几维数组,最多60维,例:Dimmark(1to100)AsInteger,Dimc(0to3,0to4)AsInteger,9,每一维大小:上界下界+1,数组大小:每一维大小的乘积,DimlArray(0To3,0To4)AsLong,共有45个元素,下标:下界To上界,下界可以省略,当缺省时,下标的下界由OptionBasen语句控制,给出的上下界必须为常数。,(1)如果在数组声明的时候,没有给出下标下界,则下界由OptionBase语句控制,默认值为0。,例如:Dimb(2,4,3),5.2.1静态数组及声明,OptionBase1Dima(2,0to4,3),10,DimlArray(0To3,0To4)AsLong等价于:DimlArray(3,4)AsLong,5.2.1静态数组及声明,(2)考虑:下面对数组的声明是否正确?n=Inputbox(“输入n”)Dimx(n)AsSingle,错误的声明,下标是变量,11,5.2.1静态数组及声明,(3)例如:考虑两个x(10)的区别?Dimx(10)AsIntegerx(10)=100,声明了x数组有11个元素,对x(10)这个数组元素赋值,在数组声明中的下标说明了数组的整体,即每一维的大小;而在程序其他地方出现的下标表示数组中的一个元素。两者写法形式相同,但意义不同。,声明数组:声明了数组的名、维数、大小、类型,并且对数组进行初始化,12,补充与数组操作有关的几个函数,Array函数(1)Array函数可方便地对数组整体赋值,但它只能给声明Variant的变量或仅由括号括起的动态数组赋值。,=Array(),(2)数组的下界由optionbase控制语句决定,上界由Array函数括号内的参数个数决定,也可通过函数Ubound获得,例如,要将1,2,3,4,5,6,7这些值赋值给数组a,可使用下面的方法赋值。Dima()a=array(1,2,3,4,5,6,7)Dimaa=array(1,2,3,4,5,6,7),13,2.求数组的上界Ubound()函数、下界Lbound()函数,作用:分别用来确定数组某一维的上界和下界值。使用形式如下:UBound(,)LBound(,),补充与数组操作有关的几个函数,Dimscore(3,4)asintegerUBound(score,2),其中:必需的,遵循标准变量命名约定。:可选的;一般是整型常量或变量。指定返回哪一维的上界。1表示第一维,2表示第二维,如此等等。如果省略默认是1。,4,LBound(score,2),0,14,5.2.2数组的引用,使用数组就是对数组元素进行操作,对数组元素的操作类似于对简单变量的操作。,引用数组元素需要注意的问题:,引用数组元素的方法:在数组名后的括号中指明下标,例如a(5),b(3,4),引用数组元素时,数组名、数组类型必须与数组声明时一致,引用数组元素时,下标值应在数组声明时所指定的范围内,在同一过程中,数组与简单变量不能同名,15,1.数组元素的输入(赋初值),(1)赋值语句DimiA(1To10)AsStringiA(1)=“张三”:iA(2)=“李四”,再如:fori=1to10a(i)=int(Rnd*90)+10循环加赋值nexti,(2)在运行时通过inputbox函数输入,fori=1to10a(i)=inputbox(“请输入”)nexti,16,(3)用循环Fori=1To10a(i)=0Nexti,1.数组元素的输入(赋初值),(4)Array函数Dimib()用array函数给动态数组赋值时不能指定数组类型ib=Array(abc,def,67)Fori=0ToUBound(ib)form1.Printib(i);Nexti,17,1.数组元素的输入(赋初值),一维数组在输入时可用一重循环,二维数组要用二重循环,多维数组用多重循环。在VB中,数据按行存储,所以一般将数组第一维的循环变量放在外重循环中,例5.1求数组中的最小元素及下标要求:创建一个包含10个元素的数组,从键盘输入10个数,找出其中最小的数,并且输出最小数的下标。,数据分析:除了声明包含10个元素的数组外,还应该声明几个变量,分别是什么类型?求最大值最小值算法分析:?,18,PrivateSubForm_Click()Dima(1To10)AsIntegerDimminAsInteger,pAsInteger,Fori=1To10a(i)=Val(InputBox(请输入一个数,输入数,0)Nexti,min=a(1):p=1,Fori=2To10Ifa(i)选择法,外重循环变量i:比较的趟数,n个数需要n-1趟比较,n从1变化到n-1内重循环j:每一趟比较的次数,j从i+1变化到n,24,25,2选择法改进,26,例53由计算机产生10个0100之间的随机整数,使用选择法排序,将这些数按递增的顺序排列。(纠正课本错误),Dima(1To10)AsInteger,Fori=1To10a(i)=Int(Rnd*100)+1Printa(i);Nexti,Fori=1Toimin=iForj=To10Ifa(j)冒泡排序,(1)比较第一个数与第二个数,若为逆序a(0)a(1),则交换;然后比较第二个数与第三个数;依次类推,直至第n-1个数和第n个数比较为止第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上,(2)对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置第n-1个元素位置,(3)重复上述过程,共经过n-1趟冒泡排序后,排序结束,28,2冒泡排序,从上述过程可以看到:N个数要比较N-1趟,而在第i趟比较中,要进行N-i次两两比较。,29,冒泡法排序(升序)的VB程序:,2冒泡排序,Fori=1Ton-1Forj=1Ton-iIfa(j)a(j+1)Thentemp=a(j)a(j)=a(j+1)a(j+1)=tempEndifNextjNexti,30,3.二维数组的应用,DimStuScore(1to10,1to5)定义105的二维数组,可以使用For循环嵌套处理多维数组.,二维数组中的元素的存储顺序是按行存储的,因此外循环对应行的变化,内循环对应列的变化比较合适。,31,例5.4设定一个5行5列的矩阵,首先给这个矩阵赋值,其值为对应的行坐标和列坐标之和,然后在窗体上以五行五列的方式输出。,数组定义:,Dima(1To5,1To5)AsInteger,Fori=1To5Forj=1To5a(i,j)=i+jNextjNexti,赋值:,输出:,Fori=1To5Forj=1To5Printa(i,j);NextjPrint作用是什么?Nexti,3.二维数组的应用,演示,32,3.二维数组的应用,请大家考虑:如果声明一个5行5列的矩阵,其中元素由计算机随机生成的小于100的整数。求(1)主对角线上元素之和(2)主对角线上元素之积(3)方阵中最大元素和最小元素及其对应的下标,33,5.3动态数组,请大家考虑:如果首先要通过用户界面输入数组长度,然后再用数组保存数据,应该如何定义数组呢?,例如:(动态数组示例),动态数组:指在声明数组时未给出数组的大小(省略括号中的下标);当要使用它时,随时用ReDim语句重新指出数组大小;但不能改变数组的类型。,34,创建动态数组的过程,创建动态数组的步骤如下:Public、Dim或Static语句声明一个空维数组。格式:Dim数组名()As数据类型,在过程中用ReDim语句分配实际的元素个数(维数和每维下标范围)。,形式:ReDim数组名(下标1,下标2)As类型,SubForm_Load()DimsArray()AsSingleReDimsArray(4,8)EndSub,35,说明:(1)Dim、Private、Public变量声明语句是说明性语句,可出现在过程内或通用声明段;ReDim语句是执行语句,只能出现在过程内。,(2)ReDim语句可以改变数组的维数、上界和下界,但是,不能改变数组的类型。同时数组的维数只能改变一次,由第一次出现的Redim语句定义的维数来决定。,(3)在过程中可多次使用ReDim来改变数组的大小,每次使用ReDim语句都会使原来数组中的值丢失,可以在ReDim语句后加Preserve参数用来保留数组中的数据,但使用Preserve只能改变最后一维的大小,前面几维大小不能改变。,36,例如:Dimaa()AsIntegerRedimaa(2,3,4)RedimPreserveaa(2,3,7),DimMyArray()AsIntergerRedimMyArray(10)RedimPreserveMyArray(15),(4)ReDim中的下标可以是常量,也可以是有了确定值的变量。,37,PrivateSubCommand1_Click()Dima()AsIntegerDimsumAsIntegerDimnAsIntegerDimpAsStringn=Val(Text1.Text)ReDima(1Ton)Fori=1Tona(i)=iNextip=,Fori=1Ton-1p=p例如:Chr(64)=“A”,53,PrivateSubCommand1_Click()水仙花数,用两重循选环实现算法DimaAsInteger,bAsInteger,cAsIntegerDimnAsIntegerText1.FontSize=36Text1.Text=此句可省略Forn=100To999a=n100百位b=(n10)Mod10十位c=n-100*a-10*b个位Ifa3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 田螺姑娘考试试题及答案
- Unit 4 The Earth 单元核心素养培优卷(含答案解析)七年级上册英语沪教版
- 2025年公需科目大数据时代的互联网信息安全考试试题及答案
- 2025年高级汽车驾驶员资格证考试题库(含答案)
- 2025年高级会计师资格考试《高级会计实务》试题及答案
- 中考试题压轴题及答案
- 中控初级试题及答案
- 食品营养题库及答案
- 《薪资福利管理办法》
- 两江新区疫情管理办法
- 全科医师基层实践结业考试试题及答案
- 2025至2030年中国珠光颜料行业投资前景及策略咨询研究报告
- 保价保量保供协议书
- 项目走账协议书
- 《美发师的职业道德》课件
- 2023年江苏省宝应县事业单位公开招聘辅警33名笔试题带答案
- 2025德州市禹城市梁家镇社区工作者考试真题
- 中国老年糖尿病诊疗指南(2024版)解读课件
- 2025-2030中国手机无线充电行业市场现状供需分析及投资评估规划分析研究报告
- 《老子与道德经智慧》课件
- 绞磨工考试试题及答案
评论
0/150
提交评论