吾爱分享资源网

 找回密码
 立即注册
查看: 251|回复: 11

[易语言] 易语言如何编程第六章数组的详细说明与使用

  [复制链接]

1197

主题

1291

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10861
发表于 2017-10-8 20:24:39 | 显示全部楼层 |阅读模式
                                        第六章数组的详细说明与使用
计算机世界中的数据往往会成组的出现,为了有效组织这些相关数据,易语言提供了灵活的数组数据类型。一个数组变量可以管理多个同种的数据元素,每个元素可以通过数组变量的顺序索引号来访问。利用一些排序算法可以对数组中的所有元素重新排列,快速实现有序化,数组中的数据元素个数可以预先设置。也可以在程序中动态的改变。
6.1数组的声明
一维数组的声明与使用
1.数组的声明
在使用数组以前必须先要声明,具体方法与声明变量类似。如图

QQ截图20171008200558.png
数组中每个元素都是有一个整数的索引值,成为 “下标”,下标的取值范围是数组上界于下界的连续整数。易语言与其它语言不同之处是 易语言的数组上界以 1 开始,而其他语言大多以 0 开始,如 Visual Basic。
2.使用数组
2.1 给数组赋值
数组声明后,所有的元素已经就在内存中分配好了空间,接下来就是给数组元素赋值 ,数组元素用数组名[下标]的方式来指定,下标可以是直接的数字,也可以是变量或者表达式。
要说明的是 即使所有元素取相同的值,也需要一个个来赋值。不能用 比如 数组1=200 来完成对 数组 1 全部元素的赋值。
如果要将数组 X 的所有元素 赋予另外的数组 Y 可以使用 复制数组 命令 或者 直接使用 Y=X 来实现。
2.2 访问整个数组
取出整个数组的元素并进行计算是需要循环命令的帮忙。
【例 6-1】输入 20 个学生的成绩,输出平均成绩及高出平均成绩的人数。
QQ截图20171008200727.png
详见 6-1.e 下面就源码详细解释下。

QQ截图20171008200813.png
声明整数型 成绩组 上下界范围 20 代表 20 个学生成绩。成绩组与人数变量与总成绩变量之所以声明为程序集变量的原因是,局部变量在每次进入事件过程时会重新分配变量空间,过程结束后这些就不变量就不存在了.
以不能定义在过程内部,设置成程序集变量,在整个窗口的生存期内存在。

QQ截图20171008200911.png
6.2动态数组
数组到底有多少个元素才合适呢?有的时候不得而知,简单的饿办法是声明一个近可能大的数组保证不会超出数量。但是这样可能带来的内存资源浪费和内存操作速度的下降,所以在希望能够运行时根据实际情况来改变数组的大小,易语言提供的动态数组正好能解决这一点。
1.声明动态数组
实际上就是声明一个空维数组,方法与普通数组一样,只是改成 0 而已

QQ截图20171008201004.png
注意:这里不能直接使用 不然就会报告下标越界。
2.加入成员

加入成员就是将指定的元素加入到数组成员的尾部。并自动更新数组成员数。
【例 6-2】 动态加入数组成员
详见 6-2.e
插入成员 命令与其相似,不过不是在尾部追加,而是插入到指定位置,并自动更新数组成员数。
3.删除成员
删除数组变量中的元素,并自动更新数组成员数。
【例 6-3】 动态删除数组成员
详见 6-3.e
6.3数组的排序
对指定数值数组变量内的所有数组成员进行快速排序,不影响数组的维定义信息排序的方法有从小到大 与 从大到小 排列
【例 6-4】对数组元素随机赋值,并列出 从小到大 与 从大到小 的排列

QQ截图20171008201703.png
详见 6-4.e
6.4多维数组
如果说一个一维数组是一个队列,那么多维数组就是一个方队。这里从多维数组的基础 二维数组来讲解。注意,在增加数组维数时,数组所占的存储空间也会大幅增加。所以要谨慎使用。

QQ截图20171008201748.png
我们用这个方法来声明一个二维数组,大体操作与一维数组相似
【例 6-5】创建一个 10*5的二维数组 并随机赋值。并取出指定的5个数据。
如:10个学生的5门成绩 并取出指定学生的5门全部成绩。

QQ截图20171008201929.png
6.5控件组建
以上我们学习了一维数组和多维数组,利用数组的索引值设计循环操作数组元素,可以缩短和简化程序.同样的原理也可以用于控件对象,也就是说,具有相同控件类型的界面对象也可以采用数组来管理.
6.5.1为什么要用控件数组
我们先来看一个小程序.
【例 6-6】编写界面提供不同的颜色按钮,选中不同的按钮后动态改变窗口上的背景颜色,程序界面如下

QQ截图20171008202041.png
普通情况下我们会在窗口上放置 6 个命令按钮,分别代表 6 种颜色,根据事件相应原理,然后编写 6 个 被单击 事件过程来分别相应用户的点击,事件过程中设置窗口的底色属性就能改变背景颜色,这6个事件过程除了颜色值之外,其他代码完全重复,如何让代码共享呢,就可以使用组件.因为组件的代码是共享的.
详见 6-6.e
6.5.2如何创建控件数组呢
我们可以申请一个程序集变量 其中类型设置成要控件类型 然后设置成数组操作与整数数组类似.

QQ截图20171008202133.png
然后用前面学到的 加入成员命令将控件加入数组中.
6.5.3访问控件数组元素
控件数组元素的访问也与普通数组一样.通过索引值来指定每个元素.例如指定第六个按钮的标题为字符"黑"这样书写按钮组[6].标题="黑"
6.5.4控件数组的事件过程
现在控件数组的事件过程还是各自为政.我们需要对各成员的事件进行转移,转移后控件数组与普通控件事件的过程略有不同,而编写其中的代码也是使用控件数组的关键所在.首先我们对各成员设置下标记,用以记录触发事件
的控件值

QQ截图20171008202240.png
这里注意下,我们在事件转移的时候不要让要转移的事件原始组件和目标组件相同.这样会造成程序的无响应的问题. 当所有控件事件全部转移到按钮 1 身上的时候.我们在点击其他按钮 比如按钮 2 时不会激发_按钮 2_被单击 事件的,而触发按钮 1 被单击事件.但这样怎么能分清楚是哪个触发的点击事件呢,我们就需要取事件组件命令来还原组件然后根据组件的标记来判断到底是那个按钮触发的单击事件.

QQ截图20171008202326.png
本章小结
数组是用一个名称来指示多个变量的集合
数组在声明时指出名称。可存放元素个数
数组可以是固定大小也可以是动态变化的
二维数组可用来存放 M 行*N 列的二维表格的数据
每个控件是一个独立的对象,多个同类型的控件可以组成一个控件组件,他们共享一个名称和事件过程.用索引值来区分每个元素.


本章结束
下章预告:子程序和模块



上一篇:易语言如何编程第五章易语言语法与程序流程的控制
下一篇:易语言如何编程第七章模块和子程序的应用

0

主题

21

帖子

57

积分

注册会员

Rank: 2

积分
57
发表于 2017-12-28 05:16:04 | 显示全部楼层
感谢分享!

0

主题

186

帖子

376

积分

中级会员

Rank: 3Rank: 3

积分
376
发表于 2018-4-14 12:04:16 | 显示全部楼层
感谢楼主分享

0

主题

188

帖子

382

积分

中级会员

Rank: 3Rank: 3

积分
382
发表于 2018-4-16 09:44:15 | 显示全部楼层
赞一个!

0

主题

190

帖子

402

积分

中级会员

Rank: 3Rank: 3

积分
402
发表于 2018-5-5 23:04:13 | 显示全部楼层
支持!!!!前排!!!!

0

主题

202

帖子

424

积分

中级会员

Rank: 3Rank: 3

积分
424
发表于 2018-5-18 23:38:20 | 显示全部楼层
找到好贴不容易,我顶你了,谢了

0

主题

193

帖子

422

积分

中级会员

Rank: 3Rank: 3

积分
422
发表于 2018-5-27 09:06:36 | 显示全部楼层
支持,赞

0

主题

201

帖子

414

积分

中级会员

Rank: 3Rank: 3

积分
414
发表于 2018-6-5 21:33:21 | 显示全部楼层
嘻嘻不错支持一个

0

主题

183

帖子

394

积分

中级会员

Rank: 3Rank: 3

积分
394
发表于 2018-6-9 22:48:09 | 显示全部楼层
过来看看的

0

主题

171

帖子

344

积分

中级会员

Rank: 3Rank: 3

积分
344
发表于 2018-6-18 23:04:21 | 显示全部楼层
非常感谢你的无私奉献与辛苦付出
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|吾爱分享资源网 ( 苏ICP备17042175号 | 苏公网安备 32108102010177号 )

GMT+8, 2018-11-22 01:50 , Processed in 0.173649 second(s), 40 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表