《一维数组应用实例》PPT课件.ppt

上传人:tia****nde 文档编号:12708718 上传时间:2020-05-14 格式:PPT 页数:53 大小:5.01MB
返回 下载 相关 举报
《一维数组应用实例》PPT课件.ppt_第1页
第1页 / 共53页
《一维数组应用实例》PPT课件.ppt_第2页
第2页 / 共53页
《一维数组应用实例》PPT课件.ppt_第3页
第3页 / 共53页
点击查看更多>>
资源描述
,数组及应用,VisualBasic程序设计,VisualBasic程序设计,01,掌握数组的定义,02,重点掌握一维数组的定义、引用和应用,03,掌握控件数组的定义和应用,学习目标,VisualBasic程序设计,实例概述,在实际应用中,常常需要处理类型相同的一批数据。例如,为了处理100个员工的工资,可以用S(1),S(2),S(3),S(100)来分别代表每个员工的工资,其中S(1)代表第一个员工的工资,S(2)代表第二个员工的工资,以此类推,VisualBasic程序设计,由生活中的实例,我们不难得出,像员工和员工工资一样的类似的很多数据,都具有相互密切关系。在VB中,把一组相互关系密切的数据放在一起并用一个同意的名字作为标志,这就是数组。,实例概述,VisualBasic程序设计,在VB中,把一组具有同一名字、不同下标的下标变量称为数组。一个数组可遗憾又若干个下标变量。下标用来指出某个数组元素在数组中的位置。如S(1to100)中S是数组名,可以表示逻辑上相关的一组数,其中,“1to100”称为下标,可以表示该数组中的各个元素。数组并不是一种数据类型,而是一组有序的同类型数据的集合。利用数组,可以方便的组织和使用数据。,VisualBasic程序设计,数组概念,数组元素,下标,数组维数,数组类型,数组中的每一个数据称为数组元素。用数组名和该数据在数组中的序号来标识。,下标表示顺序号(即序号),每个数组有唯一的顺序号,下标不能超过数组声明的上、下界范围。,由数组元素中下标的个数决定,一个下标表示一维数组(下面将会重点学习),两个下标表示二维数组。VB中有一维数组,二维组最多60维数组。,按数组占用存储空间的方式不同,分为两种数组:静态数组和动态数组。两种数组的定义方法不同,使用方法也略有不同。,有关基本概念,VisualBasic程序设计,注意,下标可以是整形的常数、变量、表达式。如:G(8)B(I)C(3+K)下标还可以是下标变量如:A(A(5)令A(5)=4则A(A(5)=A(4)下标的取值范围是:下界To上界,缺省下界时,系统默认取0。,VisualBasic程序设计,只用一个下标就能确定某个数组元素在数组中的位置,这样的数组称为一维数组。,一维数组,用两个(多个)下标才能确定某个数组元素在数组中的位置,则数组称为二维(多维)数组。,二维数组,数组分类,VisualBasic程序设计,数组声明,数组必须先声明后使用。声明数组的目的是通知计算机为其留出所需要的空间,用来存储数组元素。在计算机中,数组占据一块连续的内存区域,数组名是这个区域的名称,区域的每个单元都有自己的地址,该地址用下标表示。可声明的内容包括数组名、类型、维数、数组大小。,VisualBasic程序设计,1)、数组是一组相同类型的元素的集合;,数组特点,2)、数组中各元素有先后顺序,它们在内存中按排列顺序连续存储在一起;,3)、所有的数组元素是用一个变量名命名的一个集合体,而且每一个数组元素在内存中独占一个内存单元,可视为同一个内存变量。为了区分不同的数组元素,每一个数组元素都是通过数组名和下标来访问的,如A(1,2),B(5)。,4)、使用数组时必须对数组进行“声明”,即先声明后使用。所谓声明,就是对数组名、数组元素的数据类型、数据元素的个数进行定义。,VisualBasic程序设计,1.格式Public|Private|Dim数组名(维数定义)As类型,2.功能声明数组名称、维数、维大小、类型。为数组分配存储空间。例:定义数组G保存全班40名同学的英语成绩DimG(1To40)AsInteger,一维数组的定义,VisualBasic程序设计,3.说明1)Public|Private|Dim:在标准模块的通用声明段使用Public语句建立一个全局级数组;在模块的通用声明段使用Private语句或Dim语句建立一个模块级数组;在过程中用Dim语句建立一个过程级数组。2)数组名:需遵循变量命名约定。3)“维数定义”:下界1To上界1,下界2To上界2,VisualBasic程序设计,如果下界省略,则使用默认下界定义默认下界:OptionBase0|1不加任何定义时,默认下界为0数组元素个数:(上界1-下界1+1)*(上界2-下界2+1)*4):IntegerLongSingleDoubleBooleanStringString*nCurencyByteDateVariantObject用户定义类型,VisualBasic程序设计,5)数组在定义后自动被初始化例如:将数值型数组元素值置为0;将字符串类型数组元素值置为零长度字符串6)静态数组被定义后,VB为其分配固定大小的存储空间,在运行期大小不能改变。,VisualBasic程序设计,数组概念释义,dimmark(1to100)asinteger声明了一个一维定长数组,数组的名字为mark,类型为整型;共有100个元素,下标的取值范围:1100。mark的数组元素依次为mark(1)、mark(2)、mark(100);mark数组内存分配示意图:,VisualBasic程序设计,mark(1),mark(2),mark(i),mark(99),mark(100),每组数组元素有一个唯一的顺序号,下标不能超出数组声明时的上、下界范围。一个下标表示一维数组;多个下标,表示多维数组。下标可以是整型的常数、变量、表达式;一般情况下,数组中的各元素类型必须相同;但若数组类型为Variant时,可包含不同类型的数据。,VisualBasic程序设计,数组的定义方式:Dim:用在窗体模块或标准模块及过程中,定义窗体或标准模块级数组;ReDim:用来重新定义动态数组;Static:用来说明该数组为静态数组;Global(Public):用在全局模块中(标准模块)中,说明数组为全局的;,VisualBasic程序设计,1、一维数组:一个数组若只有一个下标就能确定一个数组元素的数组中的位置定义形式:Dim数组名(下标下界To下标上界)As类型名称如:Dima(1to10)asintegerDimb(10)asinteger,VisualBasic程序设计,例:DimC(9)AsInteger一维整型数组;下界0,上界为9元素:C(0)C(1)C(2)C(9)例:DimA(-4TO10)AsInteger一维整型数组;下界-4,上界10元素A(-4)A(-3).A(0)A(1).A(10)例:DIMM(-3TO10)一维可变类型数组例:CONSTY1=10CONSTY2=50DIMABC(Y1TOY2)ASINTEGER,VisualBasic程序设计,一维数组应用实例,VisualBasic程序设计,例【7-1】利用一维数组统计一个班学生的成绩在09、1019、2029、9099以及100各分数段的人数分布解题思路:定义一个有11个元素的一维数组a(0to10),a(0):09分的学生人数;a(1):1019分的学生人数;a(2):2029分的学生人数;a(9):9099分的学生人数;a(10):100分的学生人数;根据学生成绩score,计算int(score/10),将其分类到相应的数组元素中。,VisualBasic程序设计,实例一分类统计,例【7-2】输入若干个学生的成绩,统计不及格人数和优秀人数。设计界面:,VisualBasic程序设计,Text1,Command1,Picture1,VisualBasic程序设计,设运行时学生成绩直接输入到文本框Text1中,各成绩之间用逗号分隔。代码首先使用Split函数将文本框Text1中输入的成绩分离开,保存到数组A中。引入计数变量设两个计数变量num1和num2,分别用来保存不及格学生人数和优秀学生人数。将计数变量初始化为0,统计过程逐一取数组元素进行判断,如果数组元素的值小于60,则让num1累加1,如果数组元素的值大于或等于90,则让num2累加1。,分析:,PrivateSubCommand1_Click()DimA,NAsIntegerDimnum1AsInteger,num2AsIntegerA=Split(Text1.Text,)N=UBound(A)num1=0:num2=0Fori=0ToNSelectCaseVal(A(i)CaseIs=90num2=num2+1EndSelectNexti,VisualBasic程序设计,代码设计,显示统计结果Picture1.Cls定义打印位置Picture1.CurrentX=100运行界面:Picture1.CurrentY=100Picture1.Print不及格人数:;num1;_Tab(18);优秀人数:;num2EndSub,VisualBasic程序设计,例【7-3】输入若干名学生的成绩,求平均分、最高分、最低分。设计界面:,VisualBasic程序设计,Text1,Text2,Text3,Text4,实例二求平均分,最高分,最低分,分析:,假设运行时输入到文本框Text1中的各成绩之间用逗号分隔。代码首先使用Split函数将文本框Text1中输入的成绩分离开,保存到数组A中,然后进行求值。求平均分时只需先求数组所有元素之和,再除以数组元素的个数即可。求最高分、最低分的问题实际上就是求一组数据的最大值、最小值问题。,VisualBasic程序设计,VisualBasic程序设计,求最大值的方法:1)设一个存放最大值的变量MaxNum,其初值为数组的第一个元素,即MaxNum=A(0);2)依次将MaxNum与A(1)到A(N)的所有数据进行比较,如果数组中的某个数A(I)大于MaxNum,则用该数替换MaxNum,即MaxNumx=A(I),所有数据比较完后,MaxNum中存放的数即为整个数组的最大数。求最小值的方法与求最大值的方法类似。,PrivateSubCommand1_Click()DimA,NAsIntegerDimMaxNumAsInteger,MinNumAs_Integer,AverageAsSingleA=Split(Text1.Text,“,”)N=UBound(A)Total=0MaxNum=Val(A(0)MinNum=Val(A(0),VisualBasic程序设计,“求值”按钮Command1的Click事件过程:,通过循环依次比较,求最大值、最小值、总和Fori=0ToNIfVal(A(i)MaxNumThen_MaxNum=Val(A(i)IfVal(A(i)MinNumThen_MinNum=Val(A(i)Total=Total+Val(A(i)Nexti,Average=Total/(N+1)求平均值Text2.Text=Format(Average,0.00)Text3.Text=MaxNumText4.Text=MinNumEndSub,VisualBasic程序设计,运行界面:,VisualBasic程序设计,实例三数组排序排序就是将一组数按递增或递减的次序重新排列。排序的方法:选择法、冒泡法、插入法和合并排序。7.3.1、选择法排序算法描述:设有n个数的数组a(1),a(2),a(n),要求按递增的次序排列:首先设变量k用于存放当前最小数的下标,然后按下列步骤进行:,VisualBasic程序设计,C,B,A,从n个数中选出最小元素的下标,然后将最小数与第一个数交换位置,即a(k)与a(1)互换;先将a(1)与a(2)进行比较,k的初值为1;若a(2)a(k),则将变量k指向2(k总是为较小元素的下标值);再将a(k)与a(3)、a(n-1)、a(n)比较,并依次作出同样的处理,最终k为n个数中最小元素的下标,a(k)为最小的元素;此时将a(k)与a(1)互换;,从除第一个数外,其余n1个数按步骤的方法选出次小的数,使a(k)与a(2)交换位置;先将k置为2,将a(k)与a(3)、a(4)、a(n-1)、a(n)比较,每当a(i)a(k)时,置k为i,最后,k为第一轮余下的n1个数中的最小数将a(k)与a(2)互换;,继续进行第三轮、第四轮、.、直到第n1轮,余下的a(n)就是n个数中的最大值;至此,n个数已从小到大顺序存放到数组a中。,直接选择排序,VisualBasic程序设计,直接选择法排序,8,1,9,7,6,1,A(1)A(2)A(3)A(4)A(5)A(6),原始值,8,1,9,7,6,1,8,第一轮(1),k=1,a(1)和a(2)相比较,8,1,9,7,6,1,1,第一轮(2),a(2)a(1),k=2,用a(2)和其他元素相比,VisualBasic程序设计,直接选择法排序,A(1)A(2)A(3)A(4)A(5)A(6),8,1,9,7,6,1,1,第一轮(3),k=2,a(2)与a(1)交换,8,1,9,7,6,1,第一轮排序结果,VisualBasic程序设计,A(1)A(2)A(3)A(4)A(5)A(6),VisualBasic程序设计,直接选择法排序,8,1,9,7,6,1,第二轮(1),8,k=2,a(2)和a(3)相比较,8,1,9,7,6,1,8,第二轮(2),a(4)a(2),k=4,用a(4)和a(5)比较,8,1,9,7,6,1,7,第二轮(3),A(5)a(4),k=5,a(5)和a(6)比较,直接选择法排序,A(1)A(2)A(3)A(4)A(5)A(6),VisualBasic程序设计,8,1,9,7,6,1,6,第二轮(4),a(6)a(5),k=6,a(6)和a(2)交换,8,1,9,7,6,1,第二轮排序结果,直接选择法排序,A(1)A(2)A(3)A(4)A(5)A(6),VisualBasic程序设计,8,1,9,7,6,1,9,8,1,9,7,6,1,8,1,9,7,6,1,7,k=3,a(3)和a(4)比较,a(4)a(3),k=4,用a(4)和a(5)比较,第三轮(1),a(5)a(j)Thenk=j找出最小值的下标Next,交换数组元素,使最小的元素排在第一位t=a(k):a(k)=a(i):a(i)=t将排序结果显示在Label上Label4.Caption=Label4.Caption+Str(a(i)NextLabel4.Caption=Label4.Caption+Str(a(i),实例四数组中元素的插入和删除操作,数组元素的插入、删除操作一般是在已排序好的数组中插入或删除一个元素,使得插入或删除以后的数组还是有序的;这涉及到查找问题,在数组中先找到插入的位置或删除的元素,然后进行相应的操作。,VisualBasic程序设计,例【7-5】设有一按升序排列的有n个元素的数组a(数组元素为整型),现将一个数“11”插入后,仍保持其有序。解题思路:查找插入位置k(1kn-1);从n1到k逐一往后移动一个位置,将第k个元素的位置腾出;将数据插入;,2,4,6,8,10,12,14,16,18,实例四数组中元素的插入和删除操作,1、插入例【7-6】将数Num插在数组A中指定的Pos位置。如果Pos0,则将Num插在第1个位置如果PosN,则将Num插在最后一个位置,设计界面:,Command1,Text2,Text3,VisualBasic程序设计,分析:,Num,1)对数组中原Pos位置的元素到最后一个元素全部向后移动一个位置:,A(N+1)=A(N)A(N)=A(N-1)A(Pos+1)=A(Pos),ForI=N+1ToPos+1Step-1A(I)=A(I-1)NextI,2)插入:A(Pos)=Num,VisualBasic程序设计,1)在“通用”位置声明:OptionBase1DimNAsInteger,A()AsInteger2)在窗体的Load事件过程中生成20个0,100之间的随机整数,显示于文本框Text1中:PrivateSubForm_Load()Text1.Text=N=20:ReDimA(N)ForI=1ToNA(I)=Int(Rnd*101)Text1.Text=Text1.TextReDima(1To9)给数组元素赋值a=Array(2,4,6,8,10,11,12,14,16)Fori=1To9Printa(i);Next查找插入的位置Fork=1To9If11=a(k)ThenExitForNext,从k+1元素开始往前移动Fori=k+1To9a(i-1)=a(i)Next,利用数组重新声明减少一个元素,但保持数组原来的值ReDimPreservea(1To8)显示插入后的数组元素Print:PrintPrint插入后:;Fori=1To8Printa(i);Next,实例五交换数组中各元素,例【7-7】将数组的第一个元素与最后一个元素交换,第二个元素与倒数第二个元素交换,依次类推。(逆序输出),VisualBasic程序设计,OptionBase1Dima()DimiAsInteger,tAsStringa=Array(a,b,c,d,e,f,g,h,i,j)Print交换前:;Fori=1To10Printa(i);NextFori=1To102t=a(i)a(i)=a(10-i+1)a(10-i+1)=tNext,Print:PrintPrint交换后:;Fori=1To10Printa(i);Next,小结,1.数组的基本概念数组名、数组元素、下标、数组的维数2.一维数组的定义3.一维数组的实例应用:(1)分类统计(2)求平均分,最高分,最低分(3)选择法排序(4)数组中元素的插入和删除(5)交换数组中各元素,VisualBasic程序设计,观,谢,看,谢,VisualBasic程序设计,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


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

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


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