吾爱分享资源网

 找回密码
 立即注册
查看: 318|回复: 22

[易语言] 十章教程学会易语言第六章变量的深入学习

  [复制链接]

1198

主题

1305

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
11509
发表于 2017-9-28 15:45:46 | 显示全部楼层 |阅读模式
6深入学习变量

在实际编程过程中,经常用变量交换临时的数据或资源,前面已经了解了变量的概念,这一章来学习静态变量、变量数组及动态管理变量。
本章学习内容
6.1  认识静态变量                6.5  动态管理数组变量
6.2  静态变量的应用              6.6  定时提醒小程序练习
6.3  变量的命令操作              6.7  课后练习
6.4  变量数组的定义
合理的运用变量在编程过程中,能简化或优化程序代码运行的效率。全局变量、程序集变量或局部变量,建立时默认为非静态变量,只有在子程序里局部变量才有“静态”属性设置。
6.1  认识静态变量
在子程序里面建立两个变量。分别命名为“静态变量”和“非静态变量”,用鼠标在静态变量的“静态”属性栏里点击,出现“√”符号,这样,静态变量就具有了静态属性。
“静态”属性栏里没有“√”符号,说明该变量为非静态变量。
QQ截图20170928151636.png
1.静态变量与动态变量的区别:

非静态变量在其所在子程序开始被执行前自动分配存储空间并初始化,在所在子程序执行完毕后自动释放所分配的存储空间,也就是说,变量的存储空间仅在其所在子程序执行过程中存在;而静态变量则保留现行内容以供下次继续使用。
2.全局变量和程序集变量具有“静态”属性吗?

虽然在全局变量和程序集变量里没有设置“静态”选项,但是全局变量一旦赋值,变量数据就占据了指定的存储空间,并在程序运行期间永久存在仅在应用程序启动运行前被初始化一次,只有程序结束,存储空间才被释放。程序集也是一样,在程序集里面,程序集变量一旦赋值,只有程序集退出时,存储空间才被释放。
6.2  静态变量应用
下面跟着实例来演示静态变量的应用。

①新建一个易语言程序,加入一个画板和一个按钮组件,更改画板的“边框”属性为“凹入式”,“画板背景色”属性为白色。
QQ截图20170928151932.png
②双击按钮进入程序设计界面,在“_按钮1_被单击”子程序里面建立两个整数型变量,分别命名为“静态变量”和“非静态变量”,在静态变量的“静态”属性栏里用鼠标点击,出现“√”符号,使其具有“静态”属性。
QQ截图20170928151944.png
③顺序输入以下程序代码。
画板1.滚动写行(“静态变量: ” + 到文本 (静态变量))
画板1.滚动写行(“非静态变量:” + 到文本 (非静态变量))
静态变量 = 静态变量 + 1

非静态变量 = 非静态变量 + 1
QQ截图20170928152039.png
④按“F5键”运行程序,连续单击3次按钮。两个变量的值在画板中输出如下结果。
0
0
1
0
2

0
QQ截图20170928152122.png

从结果可以看出,整数型静态变量和非静态变量的初始化值都是0,子程序结束后非静态变量的数据清空,而静态变量的数据依旧保留。
6.3变量的命令操作
变量建立好并指定了数据类型后,如果不进行赋值操作,变量会默认初始化数值。

在系统核心支持库里面有变量两个操作命令。
QQ截图20170928152220.png
输入“赋值”命令按下光标键,代码行会变为“  =  ”,在易语言里面赋值操作的符号是“=”,后者数据赋予前者。
QQ截图20170928152352.png
可以直接输入变量名加“=”加变量值。如:
变量1=100

变量2=“易语言”
QQ截图20170928152456.png
加入文本型变量3,输入“连续赋值()”命令,
第一个参数是用作赋于的值或资源,第二个参数是被赋值的变量或变量数组,可以被重复添加。

连续赋值 (“全中文全可视易语言”, 变量2, 变量3)
QQ截图20170928152606.png
运行程序后,变量2和变量3的值都等于“全中文全可视易语言”。

这里不可以用连续赋值命令给“变量1”和“变量2”赋值,因为它们是不同类型的变量。
6.4  变量数组的定义
请打开上一章所完成的程序,将“_按钮1_被单击”子程序中的内容全部删除,然后进行以下输入操作:

①加入一个名为“单维变量”的整数型变量,在其数组属性中输入“3”,表明此变量为一个单维数组,共有 3 个成员。
②加入一个名为“多维变量”的整数型变量,在其数组属性中输入“2,2”,表明此变量为一个二维数组,共有 4 (2 × 2 的结果)个成员。
QQ截图20170928152723.png
③顺序输入下列语句行:
单维变量 [1] = 100
多维变量 [2] [1] =到文本 (200)

画板1.滚动写行 (“单维变量 [1]:” + 到文本(单维变量 [1]), “多维变量 [2] [1]:”+ 多维变量 [2] [1])
④按“F5键”运行程序,连续单击按钮。在画板得出如下结果。
100
200
200

300
QQ截图20170928152803.png
通过上面的程序可以知道:
数组变量可以有多个成员变量,每个成员变量等同于一个单独变量。各成员变量的引用方法为:
数组变量名 + [ + 1 开始的成员位置 + ] + ......

譬如上面的单维变量,它有“单维变量 [1]”、“单维变量 [2] ”、“单维变量 [3] ”3个成员。
QQ截图20170928152907.png
多维变量的成员也可以使用单维的方式来引用。例如上面的“多维变量 [3]”等同于“多维变量 [2] [1] ”,“多维变量[4] ”等同于“多维变量 [2] [2] ”。此方法可用来遍历数组的所有成员。
请继续输入进行以下操作:
(1)加入一个名称为变量1的整数型变量。
(2)添加以下程序代码。
.计次循环首 (取数组成员数 (多维变量), 变量1)

    画板1.滚动写行 (多维变量[变量1])
QQ截图20170928153202.png
QQ截图20170928153218.png
从运行结果可以看出,此段程序可以顺序显示出多维变量中所有成员的内容。其中前4行是第一次的运行结果,后4行是刚才输入新程序后的运行结果,
QQ截图20170928153258.png
QQ截图20170928153320.png
前面已说过了数组变量的每个成员可以当成单个变量应用,但是每个成员的数据类型必须相同。如果数组变量是整数型,里面对应的每个成员也必须是整数型,否则变量赋值时会提示错误。
6.5动态管理数组变量
QQ截图20170928153413.png

②分别建立文本变量1和整数型变量2,在变量1的数组属性里输入0,请继续输入进行代码:
重定义数组 (变量1, 假, 7) ' 把变量1的成员数重定义为7
变量1 = { “中”, “文”, “编”, “程”, “易”, “语”, “言” }
' 赋值给变量1每个成员对应的文本
按钮1.标题 =“” ' 清除按钮1的标题文字

.计次循环首 (取数组成员数 (变量1), 变量2)
QQ截图20170928153452.png
QQ截图20170928153519.png
下面删除代码段:
重定义数组 (变量1, 假, 7)
再运行程序,发现结果一样,所以得出结论:
变量1 = { “中”, “文”, “编”, “程”, “易”, “语”, “言” }

这种赋值给变量1的操作,可以重新改变变量成员数目,并清除原先所有数据。原来成员数为0个成员,执行后改为7个成员。
QQ截图20170928153550.png
QQ截图20170928153612.png
6.6  定时提醒小程序练习
变量数组是编程中临时存储多个数据的“小仓库”,其类型可以是整数、文本、字节集等等,在实际编程中会常常读成员内容时,遇到超出下标的错误,好多出现在循环代码中,需注意!
下面就来练习本节的定时提醒小程序。

①在新建的易程序窗口上添加如图所示的组件,调整位置大小并更改标题内容。
②选中时钟组件,在属性面板上更改“时钟周期”为1000,单位是毫秒,1秒=1000毫秒,目的是每1秒都执行对应的周期事件。
QQ截图20170928153729.png
③双击标题为“加入提示”的按钮,进入代码编写窗口。新建“提示内容”、“提示时间”两个文本型和“变量1”整数型程序集变量,并设置“提示时间”变量的数组属性为0个成员。
QQ截图20170928153756.png
QQ截图20170928153843.png

⑤切换到时钟1属性面板,点击独有的周期事件,进入“_时钟1_周期事件”子程序代码编写窗口,也可以直接用双击时钟1组件进入“_时钟1_周期事件”子程序代码编写窗口。输入以下代码:
QQ截图20170928153910.png
上面的命令代码是取现在时间的小时部分和分钟部分与指定提示的时间判断,相同则执行信息框提示。变量1的目的是控制一分钟只提示一次,当然你也可以让程序提示两次或多次。只需更改“如果真 (变量1 % 10 = 0)”代码,等于每间隔10秒 提示一次。

⑥按“F5键”运行程序,立刻会弹出错误信息,问题在哪里呢?原来“提示时间”数组变量的成员默认是0,判断提示时间[1]当然出错了。
先把时钟1的时钟周期设为0,再“_按钮1.被单击”子程序中添加代码,判断分割后的提示时间数组的成员数,如果等于2,就分配时钟1的时钟周期为1000,不等于2还设为0。
如果 (取数组成员数 (提示时间) = 2)
时钟1.时钟周期 = 1000

时钟1.时钟周期 = 0
QQ截图20170928153952.png
QQ截图20170928154011.png
动态赋予时钟1的时钟周期可以很好的节约系统资源。

时钟周期事件是经常用到的即时判断条件的事件,但一直会占用系统资源,不需要时时钟周期最好设为0。
⑦按“F5键”运行程序,在提示文本后面的编辑框中输入一段文字,“我爱易语言!”,输入提示时间,格式为“小时:分钟”,因为程序是分割“:”到提示时间数组,点击“加入提示”按纽,程序到指定时间会谈出提示的内容。
QQ截图20170928154046.png
上面提示程序的原理就是输入时间数字,以“:”分割出小时和分钟与实际时间判断,相符则执行提示信息。如果输入带“:”符号的数字是分解不成功的。可以在_按钮1_被单击子程序里加入如下代码:
如果真 (取数组成员数 (提示时间) ≠ 2)
  提示时间 = 分割文本(编辑框2.内容, “:”, )

QQ截图20170928154137.png
6.9 课后练习
(1)说一说静态变量与动态变量的区别,并利用时钟组件制作一个秒表记次程序。
QQ截图20170928154232.png
QQ截图20170928154239.png
QQ截图20170928154248.png
(2)练习把单维数组变量的内容改为多维数组变量,并保留变量内以前的数据。
(3)根据定时提醒小程序的原理,练习制作一个定时关机程序。
QQ截图20170928154352.png
QQ截图20170928154440.png
QQ截图20170928154448.png

到此本章结束 记得做完完课后习题加深理解哦
下章预告:组件的使用





上一篇:十章教程学会易语言第五章菜单如何制作
下一篇:十章教程学会易语言第七章组件如何使用

0

主题

181

帖子

370

积分

中级会员

Rank: 3Rank: 3

积分
370
发表于 2018-4-13 20:51:03 | 显示全部楼层
感谢分享,好厉害的样子

0

主题

207

帖子

448

积分

中级会员

Rank: 3Rank: 3

积分
448
发表于 2018-4-15 20:42:20 | 显示全部楼层
不错不错 支持下

0

主题

162

帖子

358

积分

中级会员

Rank: 3Rank: 3

积分
358
发表于 2018-4-27 21:30:54 | 显示全部楼层
谢谢楼主分享

0

主题

200

帖子

404

积分

中级会员

Rank: 3Rank: 3

积分
404
发表于 2018-4-28 20:00:14 | 显示全部楼层
我表示压力很大

0

主题

192

帖子

414

积分

中级会员

Rank: 3Rank: 3

积分
414
发表于 2018-5-2 14:43:00 | 显示全部楼层
感觉不错

0

主题

209

帖子

442

积分

中级会员

Rank: 3Rank: 3

积分
442
发表于 2018-5-4 21:08:37 | 显示全部楼层
感谢楼主的分享

0

主题

188

帖子

410

积分

中级会员

Rank: 3Rank: 3

积分
410
发表于 2018-5-5 13:43:25 | 显示全部楼层
感谢分享。。。

0

主题

195

帖子

398

积分

中级会员

Rank: 3Rank: 3

积分
398
发表于 2018-5-5 14:27:49 | 显示全部楼层
学习了!!!!

0

主题

193

帖子

388

积分

中级会员

Rank: 3Rank: 3

积分
388
发表于 2018-5-8 19:59:13 | 显示全部楼层
好像找到了不得了的东西
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2018-12-14 20:53 , Processed in 0.170940 second(s), 38 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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