欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    PLC编程培训-Visual Basic数组.doc

    • 资源ID:9842959       资源大小:158.50KB        全文页数:26页
    • 资源格式: DOC        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    PLC编程培训-Visual Basic数组.doc

    5.1 数组的特点一、数组的概念在实际应用中,常常需要处理相同类型的一批数据。例如,为了处理100个员工的工资,可以用S(1),S(2),S(100)来分别代表每个员工的工资,其中S(1)代表第一个员工的工资,S(2)代表第二个员工的工资。数组并不是一种数据类型,而是一组相同类型数据的集合。用一个统一的名字(数组名)代表逻辑上相关的一批数据。每个元素用下标变量来区分;下标变量代表元素在数组中的位置。数组中的每一个数据称为数组元素,用数组名和该数据在数组中的序号来标识。序号又称为下标,数组元素又称为下标变量。例如,S(2)是一个数组元素,其中的S称为数组名,2是下标。在使用数组元素时,必须把下标放在一对紧跟在数组名之后的括号中。S(3)是一个数组元素,而S3是一个简单变量。如果只用一个下标就能确定某个数组元素在数组中的位置,这样的数组称为一维数组。如果用两个或多个下标才能确定某个数组元素在数组中的位置,则数组分别称为二维数组或多维数组。其表示形式: 一维数组:S(2),S(3),S(10) 二维数组:X(1,1), X1(1,10), X(2,10) 多维数组:Y(0,0,0),Y(1,2,5),Y(2,3,4)二、Visual Basic中的数组,按不同的方式可分为以下几类1、按数组的大小(元素个数)是否可以改变来分为:定长数组、动态(可变长)数组。2、按元素的数据类型可分为:数值型数组、字符串数组、日期型数组、变体数组等。3、按数组的维数可分为:一维数组、二维数组、多维数组。4、对象数组:菜单对象数组、控件数组。5.2.1 一维数组的声明数组应当先定义后使用,数组的定义又称为数组的声明或说明。形式: Dim 数组名(<下界>to<上界>)As <数据类型>或: Dim 数组名<数据类型符>(<下界>to<上界>)例如:与上面声明等价形式:Dim A%(1 to 10)定义了一个一维数组,该数组的名字为A,类型为Integer,占据10个整型变量的空间。说明: “说明符”为保留字,可以为Dim,Public,Private,Static中的任意一个。在使用过程中可以根据实际情况进行选用。这里主要讲述用Dim声明数组。定义数组后,数值数组中的全部元素都初始化为0,字符串数组中的全部元素都初始化为空字符串。 “数组名”的命名规则与变量的命名相同。 “下标”的一般形式为“下界 to 上界”。 下标的上界、下界为整数,不得超过Long数据类型的范围,并且下界应该小于上界。如果不指定下界,下界默认为0。 要注意区分“可以使用的最大下标值”和“元素个数”。 <下界>和<上界>不能使用变量,必须是常量,常量可以是直接常量、符号常量,一般是整型常量。 “As类型”用来说明“数组元素”的类型,可以是Integer,Long,Single,Double,Currency,String(定长或变长)等基本类型或用户定义的类型,也可以是Variant类型。如果省略“As类型”,则数组为Variant类型。 在同一个过程中,数组名不能与变量名同名,否则会出错。 可以通过类型说明符来指定数组的类型。例如:Dim A%(5),B!(3 To 5),C#(12)其中:% 表示为Integer 数组类型!表示为Single 数组类型# 表示为Double 数组类型 数组中各元素在内存占一片连续的存储空间,一维数组在内存中存放的顺序是下标大小的顺序,如图5-1所示:A(0)A(1)A(2)图5-1 数组中各元素的存储顺序5.2.2 一维数组元素的引用数组的引用通常是对数组元素的引用。一维数组元素的表示形式为: 数组名(下标)其中:下标可以是整型变量、常量或表达式。一般通过循环语句及InputBox函数、文本框给数组输入数据。数组的输出一般用Print方法、标签或文本框实现。【例】设有下面的数组B(10) As Integer则下面的语句都是正确的。A(1)=A(2)+B(1)+5取数组元素运算A(i)=B(i)下标使用变量B(i+1)=A(i+2) 下标使用表达式【例】编写程序,把输入的10个整数按逆序输出。Private Sub Command1_Click()Dim a(10)As Integer,i%Print "输入的数据为"For i=1 To 10a(i)=InputBox("请输入一个整型数")Print a(i),Next iPrintPrint "逆序输出为"For i=10 To 1 step-1Print a(i),Next iEnd Sub5.2.3 一维数组的基本操作一、可通过循环给数组元素的初值For i=1 To 10 A(i)=1 A数组的每个元素值为1Next i 二、数组的输入 输入100个数,并存入到数组A中。For i=1 To 100A(i)=Val(InputBox(“输入A(” & i & “) 的值”)Next i三、求数组中最大元素及所在下标Dim Max As Integer,iMax As Integer Max=A(1):iMax=1For i=2 To 105.2.4 一维数组的应用一、分类统计【例】从键盘上输入40人的考试成绩,输出高于平均成绩的分数。分析:该问题可分三部分处理:一是输入40个人的成绩;二是求平均分;三是把这40个分数逐一和平均成绩进行比较,若高于平均成绩,则输出。Private Sub Command1_Click()Dim score(40)As Single,aver!,i% aver=0For i=1 To 40score(i)=InputBox("请输入成绩")aver=aver+score(i)Next iaver=aver/40For i=1 To 40If score(i)>aver Then Print score(i)Next iEnd Sub二、排序问题【例】从键盘上输入10个整数,把这些数按由小到大的顺序排序输出。分析:排序的方法很多,如选择法、冒泡法等。这里介绍最容易理解的“冒泡法”。设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)中。第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为三个元素中的最大者,排序完成。参见动画演示Private Sub Command1_Click()Dim t%,i%,j%,a(10)As Integer For i=1 To 10a(i)=InputBox("输入一个整数")Next iPrint "输入的10个整数为"For i=1 To 10Print a(i),Next iPrintFor i=1 To 9For j=i+1 To 10If a(i)>a(j)Then t=a(i):a(i)=a(j):a(j)=tNext jNext iPrint "排序后的结果为"For i=1 To 10Print a(i),Next IEnd Sub【例】随机产生10个两位整数,找出其中最大值、最小值。分析:该问题可以分为两部分处理:一是产生10个随机整数,并保存到一维数组中;二是对这10个整数求最大、最小值。Private Sub Command1_Click()Dim min%,max%,i%,a(10)As IntegerRandomizeFor i=1 To 10a(i)=Int(Rnd*90)+10Next iPrint "产生的随机数为"For i=1 To 10Print a(i),Next iPrintmin=a(1):max=a(1)For i=2 To 10If a(i)>max Then max=a(i)If a(i)<min Then min=a(i)Next iPrint "最大值为"Print maxPrint "最小值为"Print minEnd Sub5.3.1 二维数组的声明一、二维数组及多维数组 假如有30个学生,每个学生有5门考试成绩,如何来表示这些数据呢?VB中可以用有两个下标的数组来表示,如第i个学生第j门课的成绩可以用S(i,j)表示。其中i表示学生号,称为行下标(i1,2,30);j表示课程号,称为列下标(j1,2,3,4,5)。有两个下标的数组称为二维数组。二、二维数组的声明对于固定大小的二维数组,可以用如下格式进行定义:说明符 数组名(下界to上界,下界to上界)As 类型【例】Dim T(2,3)As Integer定义了一个二维数组,名字为T,类型为Integer,该数组有3行(02)4列(03),占据12(34)个整型变量的空间,如表5-1所示 表5-1 二维数组 第0列第1列第2列第3列第0行T(0,0)T(0,1)T(0,2)T(0,3)第1行T(1,0)T(1,1)T(1,2)T(1,3)第2行T(2,0)T(2,1)T(2,2)T(2,3)说明: 可以将二维数组的定义方法推广至多维数组的定义。例如:Dim D(3,1 To 10,1 To 15)定义了一个3维数组,大小为 41015。注意在增加数组的维数时,数组所占的存储空间会大幅度增加,所以要慎用多维数组,尤其是Variant 数组,因为他们需要更大的存储空间。 在实际使用时,可能需要数组的上界值和下界值,这可以通过LBound函数和UBound函数来求得。其格式为:LBound(数组名,维)UBound(数组名,维)这两个函数分别返回一个数组中指定维数的下界和上界。5.3.2 二维数组的引用二维数组的引用和一维数组基本相同。引用形式:数组名(下标1,下标2)【例】zda(1,2)=10 a(i+2,j)=a(2,3)*2对二维数组元素进行赋值或输出时,一般采用二重循环来实现。【例】打印4名同学的英语、数学、法律3门课的考试成绩,并计算出每个同学的平均成绩。分析:把4名同学的姓名及各科的考试分数分别存入一个一维字符串数组xm(4)和一个二维数值数组a(4,3)中,然后对数组(主要是二维数组)进行处理。程序如下:Private Sub Command1_Click()Dim a(4,3)As Single,xm(4)As String*10,i%,j%,aver!Print Tab(25);"成绩表"PrintPrint "姓名";Tab(15);"英语";Tab(25);"数学";Print Tab(35);"法律";Tab(45);"平均分"PrintFor i=1 To 4aver=0xm(i)=InputBox("输入姓名")Print xm(i);For j=1 To 3a(i,j)=InputBox("输入" & xm(i)& "的一个成绩 ")Next javer=aver / 3Print Tab(15);a(i,1);Tab(25);a(i,2);Print Tab(35);a(i,3);Tab(45);averPrintNext iEnd Sub5.3.3 二维数组的基本操作 一、二维数组数据的输入Const N=4, M=5, L=6Dim a(1 to N,1 to M) As Integer, i As Integer, j As Integer,k%二维数组a输入数据的程序段如下:For i=1 to 4For j=1 to 5 A(i,j)=Val(InputBox("a("& I &"," & j & ")=?")Next jNext i二、求最大元素及其所在的行和列用变量max存放最大值,row,column存放最大值所在行列号Max=a(1,1): row=1: Column=1 For i=1 To NFor j=1 To MIf a(i,j)>a(row,Column) ThenMax=a(i,j)row=iColumn=jEnd IfNext jNext iPrint "最大元素是" MaxPrint "在第" & row & "行," "第" & Column & "列"三、计算两矩阵相乘设有矩阵A有ML个元素,矩阵B有LN个元素,则矩阵C=AB有MN个元素。矩阵C中任一元素:(i=1,2,m;j=1,2,n)下面是两矩阵相乘的程序段: For i=1 TO MFor j=1 TO NC(i,j)=0For k=1 TO LC(i,j)=C(i,j)a(i,k)* b(k,j)Next kNext jNext i四、矩阵的转置 设A是M*N的矩阵,要重新定义一个N*M的二级数组B,将A转置得到B的程序代码如下:For i=To For j=To Nb(j,i)=a(i,j) Next jNext I设如果是方阵,即A是MM的二维数组,则可以不必定义另一数组,否则就需要再定义新数组。方阵的转置的程序代码如下:For i= To For j= To NTemp=a(i,j) a(i, j)=a(j, i)a(j, i)=TempNext j Next I5.3.3 二维数组的基本操作 一、二维数组数据的输入Const N=4, M=5, L=6Dim a(1 to N,1 to M) As Integer, i As Integer, j As Integer,k%二维数组a输入数据的程序段如下:For i=1 to 4For j=1 to 5 A(i,j)=Val(InputBox("a("& I &"," & j & ")=?")Next jNext i二、求最大元素及其所在的行和列用变量max存放最大值,row,column存放最大值所在行列号Max=a(1,1): row=1: Column=1 For i=1 To NFor j=1 To MIf a(i,j)>a(row,Column) ThenMax=a(i,j)row=iColumn=jEnd IfNext jNext iPrint "最大元素是" MaxPrint "在第" & row & "行," "第" & Column & "列"三、计算两矩阵相乘设有矩阵A有ML个元素,矩阵B有LN个元素,则矩阵C=AB有MN个元素。矩阵C中任一元素:(i=1,2,m;j=1,2,n)下面是两矩阵相乘的程序段: For i=1 TO MFor j=1 TO NC(i,j)=0For k=1 TO LC(i,j)=C(i,j)a(i,k)* b(k,j)Next kNext jNext i四、矩阵的转置 设A是M*N的矩阵,要重新定义一个N*M的二级数组B,将A转置得到B的程序代码如下:For i=To For j=To Nb(j,i)=a(i,j) Next jNext I设如果是方阵,即A是MM的二维数组,则可以不必定义另一数组,否则就需要再定义新数组。方阵的转置的程序代码如下:For i= To For j= To NTemp=a(i,j) a(i, j)=a(j, i)a(j, i)=TempNext j Next I5.4.1 动态数组的建立及使用一、 动态数组 动态数组:在声明时未给出数组的大小。定长数组是在程序编译时分配存储空间,而动态数组是在程序执行时分配存储空间。二、动态数组的建立及使用 建立动态数组包括声明和大小说明两步:(一)在使用Dim、Private或Public语句声明括号内为空的数组。格式:Dim | Private|Public 数组名()As 数据类型例:Dim a() As Integer(二)在过程中用ReDim语句指明该数组的大小。格式:例:Redim A(10) Redim Preserve A(20) 说明: ReDim语句是一个可执行语句,只能出现在过程中,并且可以多次使用,改变数组的维数和大小。 定长数组声时中的下标只能是常量,而动态数组ReDim 语句中的下标是常量,也可以是有了确定值的变量。例如:Private Sub Form_Click()Dim N As IntegerN=Val(InputBox(“输入N=?”)Dim a(N) As Integer.End sub5.4.2 与数组操作有关的几个函数与数组操作有关的几个函数:一、Array函数Array函数可方便地对数组整体赋值,但它只能给声明Variant的变量或仅由括号括起的动态数组赋值。赋值后的数组大小由赋值的个数决定。 【例】要将1,2,3,4,5,6,7 这些值赋值给数组a,可使用下面的方法赋值。Dim a()A=array(1,2,3,4,5,6,7)Dim a A=array(1,2,3,4,5,6,7)二、求数组的上界Ubound( )函数、下界Lbound( )函数 Ubound( )函数和Lbound( )函数分别用来确定数组某一维的上界和下界值。使用形式如下:UBound(<数组名>,<N>)LBound(<数组名>,<N>)其中: <数组名>:必需的。数组变量的名称,遵循标准变量命名约定。 <N>:可选的;一般是整型常量或变量。指定返回哪一维的上界。1表示第一维,2表示第二维,如此等等。如果省略默认是1。三、Split函数使用格式:Split(<字符串表达式> ,<分隔符>)说明: 使用Split函数可从一个字符串中,以某个指定符号为分隔符,分离若干个子字符串,建立一个下标从零开始的一维数组。5.5 控件数组一、控件数组的概念(一)控件数组是一组相同类型的控件组成这些控件共用一个控件名字,具有相似的属性设置,共享同样的事件过程。控件数组中各个控件相当于普通数组中的各个元素,同一控件数组中各个控件的Index属性相当于普通数组中的下标。例如:设有一个包含3个按钮的控件数组Command1,它的3个元素就是Command1(0),Command1(1),Command1(2)。但Command1,Command2,Command3不是控件数组。(二)控件数组具有以下特点: 相同的控件名称(即Name属性) 控件数组中的控件具有相同的一般属性 所有控件共用相同的事件过程二、控件数组的建立控件数组中每一个元素都是控件,它的定义方式与普通数组不同。建立控件数组有三种方法: 给控件起相同的名称,Name属性设置为同一值。 复制已有的控件并将其粘贴到窗体上。 将控件的Index属性设置为非Null数值,以下标索引值(Index)来标识各个控件,第一个下标索引号为0。三、控件数组的应用建立了控件数组之后,控件数组中所有控件共享同一事件过程。例如,假定某个控件数组含有10个命令按钮,则不管单击哪个命令按钮,系统都会调用同一个Click过程。由于每个命令按钮在程序中的作用不同,系统会将被单击的命令按钮的Index属性值传递给过程,由事件过程根据不同的Index值执行不同的操作。【例】设计一个简易计算器,能进行整数的加、减、乘、除运算。其运行界面如图5-3所示。1、界面设计:一个标签用于计算器输出;数字按钮控件数组CM;操作符控件数组CMfh ;一个“=”按钮用于计算结果;一个“CLS”按钮用于清屏。图5-3 运行界面表5-2 计算器界面设计表操作步骤属性设置添加一个标签NameLabel1Caption空添加一个命令按钮NameCM Caption0操作:复制该命令按钮。然后在窗体上粘贴9次,把每个按钮的Caption分别设置为1,2,3,4,5,6,7,8,9添加一个命令按钮NameCMfhCaption+操作:复制该命令按钮。然后在窗体上粘贴3次,把每个按钮的Caption分别设置为,添加一个命令按钮NameCMCCaptionCLS添加一个命令按钮NameCm等号Caption=2、窗体级变量声明Dim number(1 To 6) As Single存储一个数字字符,运算符Dim simple(1 To 10), yunsuan(1 To 6) As StringDim i, j, p, q, n As IntegerDim ls, char, fh As StringDim jieguo As Single 存储运算结果 按下数字键09的事件过程Private Sub CM_Click(index As Integer) 录入一个数字char=Trim(Str(index)getanumber (char)End SubPrivate Sub getanumber(chr As String) 接收一个数字If i=0 Then i=1simple(i)=chrls=ls+simple(i)Label1.Caption=lsi=i+1End Sub按下操作键、/ 的事件过程Private Sub CMfh_Click(index As Integer) 录入一个符号Select Case indexCase 0fh="+"Case 1fh="-"Case 2fh="*"Case 3fh="/"End Selectinputasymbol (fh)End SubPrivate Sub inputasymbol(chr As String) 接收一个运算符number(j)=Val(ls)yunsuan(j)=chrj=j + 1i=1For p=1 To 10simple(p)=""Nextls=""Label1.Caption=lsEnd Sub第五章 数组 本章主要教学内容总结本章主要教学的内容有数组的维数和下标的上界、下界的概念。数组数据的定义,访问形式;通过应用举例,介绍了数据的基本组织方式和简单常用的算法。数组是由固定数目的同类元素按一定顺序排列而成的结构类型数据。数组元素通过下标访问。数组常用循环结构处理。数组是一种程序设计中常用的数据结构。简单排序、矩阵运算是典型的应用举例。数组元素为控件时,称为控件数组。用于界面设计时组织相关操作的对象。

    注意事项

    本文(PLC编程培训-Visual Basic数组.doc)为本站会员(小魏子好文库)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开