<;易语言程序设计>
作者:蔷薇的羽翼
第六章数组
计算机世界中的数据往往会成组的出现,为了有效组织这些相关数据,易语言提供了灵活的数组数据类型。一个数组变量可以管理多个同种的数据元素,每个元素可以通过数组变量的顺序索引号来访问。利用一些排序算法可以对数组中的所有元素重新排列,快速实现有序化,数组中的数据元素个数可以预先设置。也可以在程序中动态的改变。
6.1数组的声明
一.一维数组的声明与使用
1.数组的声明
在使用数组以前必须先要声明,具体方法与声明变量类似。如图
数组中每个元素都是有一个整数的索引值,成为“下标”,下标的取值范围是数组上界于下界的连续整数。易语言与其它语言不同之处是易语言的数组上界以1开始,而其他语言大多以0开始,如Visual Basic。
2.使用数组
2.1给数组赋值
数组声明后,所有的元素已经就在内存中分配好了空间,接下来就是给数组元素赋值,数组元素用数组名[下标]的方式来指定,下标可以是直接的数字,也可以是变量或者表达式。
要说明的是即使所有元素取相同的值,也需要一个个来赋值。不能用比如数组
1=200来完成对数组1全部元素的赋值。
如果要将数组X的所有元素赋予另外的数组Y可以使用复制数组命令或者直接使用Y=X来实现。
2.2访问整个数组
取出整个数组的元素并进行计算是需要循环命令的帮忙。
【例6-1】输入20个学生的成绩,输出平均成绩及高出平均成绩的人数。
详见6-1.e下面就源码详细解释下。
声明整数型成绩组上下界范围20代表20个学生成绩。成绩组与人数变量与总成绩变量之所以声明为程序集变量的原因是,局部变量在每次进入事件过程时会重新分配变量空间,过程结束后这些就不变量就不存在了.所以不能定义在过程内部,设置成程序集变量,在整个窗口的生存期内存在。
6.2动态数组
数组到底有多少个元素才合适呢?有的时候不得而知,简单的饿办法是声明一个近可能大的数组保证不会超出数量。但是这样可能带来的内存资源浪费和内存操作速度的下降,所以在希望能够运行时根据实际情况来改变数组的大小,易语言提供的动态数组正好能解决这一点。
1.声明动态数组
实际上就是声明一个空维数组,方法与普通数组一样,只是改成0而已
注意:这里不能直接使用不然就会报告下标越界。
2.加入成员
加入成员就是将指定的元素加入到数组成员的尾部。并自动更新数组成员数。
【例6-2】动态加入数组成员
详见6-2.e
插入成员命令与其相似,不过不是在尾部追加,而是插入到指定位置,并自动更新数组成员数。
3.删除成员
删除数组变量中的元素,并自动更新数组成员数。
【例6-3】动态删除数组成员
详见6-3.e
6.3数组的排序
对指定数值数组变量内的所有数组成员进行快速排序,不影响数组的维定义信息
排序的方法有从小到大与从大到小排列
【例6-4】对数组元素随机赋值,并列出从小到大与从大到小的排列
详见6-4.e
6.4多维数组
如果说一个一维数组是一个队列,那么多维数组就是一个方队。这里从多维数组的基础二维数组来讲解。注意,在增加数组维数时,数组所占的存储空间也会大幅增加。所以要谨慎使用。
我们用这个方法来声明一个二维数组,大体操作与一维数组相似
【例6-5】创建一个10*5的二维数组并随机赋值。并取出指定的5个数据。
如:10个学生的5门成绩并取出指定学生的5门全部成绩。
详见6-5.e
6.5控件组建
以上我们学习了一维数组和多维数组,利用数组的索引值设计循环操作数组元素,可以缩短和简化程序.同样的原理也可以用于控件对象,也就是说,具有相同控件类型的界面对象也可以采用数组来管理.
6.5.1为什么要用控件数组
我们先来看一个小程序.
【例6-6】编写界面提供不同的颜按钮,选中不同的按钮后动态改变窗口上的背景颜,程序界面如下
易语言字符串转数组
普通情况下我们会在窗口上放置6个命令按钮,分别代表6种颜,根据事件相应原理,然后编写6个被
单击事件过程来分别相应用户的点击,事件过程中设置窗口的底属性就能改变背景颜,这6个事件过程除了颜值之外,其他代码完全重复,如何让代码共享呢,就可以使用组件.因为组件的代码是共享的.
详见6-6.e
6.5.2如何创建控件数组呢
我们可以申请一个程序集变量其中类型设置成要控件类型然后设置成数组
操作与整数数组类似.
然后用前面学到的加入成员命令将控件加入数组中.
6.5.3访问控件数组元素
控件数组元素的访问也与普通数组一样.通过索引值来指定每个元素.例如指定第六个按钮的标题为字符"黑"这样书写
按钮组[6].标题="黑"
6.5.4控件数组的事件过程
现在控件数组的事件过程还是各自为政.我们需要对各成员的事件进行转移,转移后控件数组与普通控件事件的过程略有不同,而编写其中的代码也是使用控件数组的关键所在.首先我们对各成员设置下标记,用以记录触发事件的控件值

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。