易语言编程基础数据类型变量及子程序

一、 易语言的数据类型

易语言的数据类型可以分为基本数据类型和特殊数据类型

基本数据类型分为:

①   数值型

②   逻辑型

③   日期时间型

④   文本型

⑤   字节集型

⑥   子程序指针型

基本数据类型中的数值类型有包含了:

①   字节型

②   短整数型

③   整数型

④   长整数型

⑤   小数型

⑥   双精度小数型

数据类型可以用来描述不同变量的类型或者组件属性的类型

程序:数据类型转换

.版本 2 
.程序集 窗口程序集_启动窗口 
.子程序 __启动窗口_创建完毕 
信息框 (“信息框内容”, 0, “信息框标题”, )
' 这是屏蔽按钮
' 信息框 (“信息框内容”, 1, “信息框标题”, )
信息框 (“信息框内容”, 2, “信息框标题”, )
信息框 (“信息框内容”, 3, “信息框标题”, )
信息框 (“信息框内容”, 4, “信息框标题”, )
信息框 (“信息框内容”, 5, “信息框标题”, )
信息框 (“信息框内容”, 6, “信息框标题”, )
' 这里是注释

特殊数据类型

是指除易语言基本数据类型之外的其他数据类型。其中包括了:

①   通用数据类型

②   库定义数据类型

③   自定义数据类型

④   内部组件数据类型

 通用型数据类型:

通用型数据类型仅在系统内部使用,它能够匹配所有的系统基本数据类型、库定义数据类型、自定义数据类型

 库定义数据类型:

库定义数据类型由易语言支持库提供,用户在程序中可以直接使用,就如同是系统基本数据类型一样

 自定义数据类型:

用户可以随时在程序中自行定义新的数据类型。但是自定义数据类型时需要设置数据类型的名称以及成员,其中数据类型成员各个属性的设置方法等同于变量设置方法

 内部组件数据类型:

在一语言中,每一种内部组件都可以作为一种数据类型来使用

 第四个程序:自定义数据类型

.版本 2
.程序集 窗口程序集_启动窗口
.子程序 _按钮1_被单击
.局部变量 人物1, 英灵信息 
人物1.姓名 = “001”
人物1.性别 = 真
人物1.职阶 = “saber”
人物1.斗级 = 100

程序:内部组件数据类型

.版本 2 
.程序集 窗口程序集_启动窗口 
.子程序 _按钮1_被单击
.局部变量 变量1, 标签 
变量1 = 标签1
变量1.左边 = 10
变量1.顶边 = 10
变量1.标题 = “我是一个标签”

程序:动态添加组件

.版本 2 
.程序集 窗口程序集_启动窗口
.子程序 _按钮1_被单击
.局部变量 变量1, 按钮
.局部变量 个数, 整数型, 静态
.局部变量 n, 整数型
' 复制窗口组件 (按钮1, 变量1)
' 变量1.左边 = 50 + 个数 × 按钮1.宽度
' 变量1.顶边 = 10
' 变量1.可视 = 真
' 个数 = 个数 + 1
' 结果是从左到右增加按钮,但是当窗体大小容不下的时候还是依次往后添加,思考怎么换行?
.' 如果 (个数 < 5)
    ' 复制窗口组件 (按钮1, 变量1)
    ' 变量1.左边 = 50 + 个数 × 按钮1.宽度
    ' 变量1.顶边 = 10
    ' 变量1.可视 = 真
    ' 个数 = 个数 + 1
.否则
    ' 复制窗口组件 (按钮1, 变量1)
    ' 变量1.左边 = 50 + (个数 - 5) × 按钮1.宽度
    ' 变量1.顶边 = 10 + 按钮1.高度
    ' 变量1.可视 = 真
    ' 个数 = 个数 + 1
.如果结束
' 这样可以两行了但是不是自动换行太死了,继续想想怎么改进?
.' 如果 ((个数 + 1) % 5 ≠ 0)
    ' 复制窗口组件 (按钮1, 变量1)
    ' 变量1.左边 = 50 + 个数 × 按钮1.宽度
    ' 变量1.顶边 = 10 + 到整数 (个数 ÷ 5) × 按钮1.高度
    ' 变量1.可视 = 真
    ' 个数 = 个数 + 1
.否则
    ' 复制窗口组件 (按钮1, 变量1)
    ' 变量1.左边 = 50 + 到整数 (个数 ÷ 5) × 按钮1.宽度
    ' 变量1.顶边 = 10 + 按钮1.高度
    ' 变量1.可视 = 真
    ' 个数 = 个数 + 1
.如果结束
复制窗口组件 (按钮1, 变量1)
n = 到整数 (个数 ÷ 5)
变量1.左边 = 50 + (个数 - 5 × n) × 按钮1.宽度
变量1.顶边 = 10 + 到整数 (个数 ÷ 5) × 按钮1.高度
变量1.可视 = 真
个数 = 个数 + 1
' 成功实现自己想要达到的自动换行的效果

二、 易语言中的变量

1.     虽然在理论上变量是可以任意定义名称的,但是为了提高编程的效率,和便于识别方面的考虑,在定义变量的时候需要给变量起一个有实际意义的名字。

2.     定义变量名时候需要注意的要点:

①   首字符不可以是数字

②   变量名中除了“_”以外不可以使用其他的符号和标点

3.     变量的分类,变量存在几种类型,每个类型的变量都有自己的适用范围,并不是所有的变量都能在程序的任何地方对其进行访问,只有在其作用域范围内才是有效、可访问的。

4.     按照变量的作用范围可以将变量分为局部变量、程序集变量和全局变量。

①   局部变量:只能在所在的子程序中才能被调用的变量

②   程序集变量:仅在本程序集中才能被调用的变量

③   全局变量:所有程序集子程序都可以使用的变量

5.     变量还可以按照变量的属性分为静态变量和数组变量

①   静态变量:静态变量在程序退出后不会被清空

②   数组变量:存放一组数据的变量,数组变量又可以分为单维数组变量和多维数组变量

程序:静态变量与非静态变量的区别

.版本 2
.程序集 窗口程序集_启动窗口
.子程序 _按钮1_被单击
.局部变量 静态变量, 整数型, 静态
.局部变量 非静态变量, 整数型
编辑框1.内容 = 编辑框1.内容 + “当前静态变量的值为:” + 到文本 (静态变量) + #换行符
编辑框1.内容 = 编辑框1.内容 + “当前非 静态变量的值为:” + 到文本 (非静态变量) + #换行符
静态变量 = 静态变量 + 1
非静态变量 = 非静态变量 + 1
.子程序 __启动窗口_创建完毕
 

程序:变量初始值赋予

.版本 2
 .程序集 窗口程序集_启动窗口
 .子程序 _按钮1_被单击
.局部变量 字节型变量, 字节型
.局部变量 短整数型变量, 短整数型
.局部变量 整数型变量, 整数型
.局部变量 长整数型变量, 长整数型
.局部变量 小数型变量, 小数型
.局部变量 双精度小数型变量, 双精度小数型
.局部变量 逻辑型变量, 逻辑型
.局部变量 日期时间型变量, 日期时间型
.局部变量 文本型变量, 文本型
.局部变量 字节集变量, 字节集 
' 给变量赋值
字节型变量 = 255
短整数型变量 = 32767
整数型变量 = 65535
长整数型变量 = 58736232332
小数型变量 = 3.14
双精度小数型变量 = 3.141592654
逻辑型变量 = 真
日期时间型变量 = [2018年7月10日]
文本型变量 = “易语言学习”
字节集变量 = { 255, 255, 255, 0 }
编辑框1.内容 = 编辑框1.内容 + “字节型变量初始值:” + 到文本 (字节型变量) + #换行符
编辑框1.内容 = 编辑框1.内容 + “短整数型变量初始值:” + 到文本 (短整数型变量) + #换行符
编辑框1.内容 = 编辑框1.内容 + “长整数型变量初始值:” + 到文本 (长整数型变量) + #换行符
编辑框1.内容 = 编辑框1.内容 + “整数型变量初始值:” + 到文本 (整数型变量) + #换行符
编辑框1.内容 = 编辑框1.内容 + “小数型变量初始值:” + 到文本 (小数型变量) + #换行符
编辑框1.内容 = 编辑框1.内容 + “双精度小数型变量初始值:” + 到文本 (双精度小数型变量) + #换行符
编辑框1.内容 = 编辑框1.内容 + “逻辑型变量初始值:” + 到文本 (逻辑型变量) + #换行符
编辑框1.内容 = 编辑框1.内容 + “日期时间型变量初始值:” + 到文本 (日期时间型变量) + #换行符
编辑框1.内容 = 编辑框1.内容 + “文本型变量初始值:” + 文本型变量 + #换行符
编辑框1.内容 = 编辑框1.内容 + “字节集变量初始值:” + 到文本 (字节集变量) + #换行符

三、 易语言的资源表

1.     便捷的导入图片资源和音频资源,其中音频资源只支持.mid和.wav格式

程序:资源表的导入导出

.版本 2
.程序集 窗口程序集_启动窗口
 .子程序 __启动窗口_创建完毕
' _启动窗口.底图 = #图片1
' _启动窗口.底图方式 = 3
' 成员属性“底图方式”所在数据类型为“窗口”,英文名称为“BackPicMode”,类型为“整数型(int)”。
' 如果设定了底图,本属性指定窗口背景上底图的显示方式。
' 可供选择的属性值:
' 0. 图片居左上
' 1. 图片平铺
' 2. 图片居中
' 3. 缩放图片
写到文件 (“F:\易语言练习\契约.JPG”, #图片1)

注意导入文件的格式必须和导入的一样,比如导入的是JPG导出的也必须是JPG

四、 易语言中的运算符

1.     在易语言中根据预算符的性质可以分为算术运算符、比较(关系)运算符、逻辑运算符和赋值运算符。

2.     易语言运算符优先级:

五、 易语言中的子程序

1.     事件子程序

对应组件所发生事件的子程序,称为事件子程序

程序:子程序

.版本 2
.程序集 窗口程序集_启动窗口
.子程序 _按钮1_被双击, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
信息框(“当按钮被双击时候我就出来了”,0,+#信息图标,“”)

2.     用户自定义子程序

①   子程序参数的“参考”属性:

表示子程序的该参数在传递数据的时候是否为传递指向数据的地址

程序:子程序的参数的“参考”属性

.版本 2
.程序集 窗口程序集_启动窗口
.子程序 _按钮1_被单击

.局部变量 变量1, 整数型
.局部变量 变量2, 整数型
参数赋值 (变量1, 变量2)
编辑框1.加入文本 (“参考参数中的变量:” + 到文本 (变量1) + #换行符, “非参考参数属性中的变量:” + 到文本 (变量2) + #换行符)
.子程序 参数赋值
.参数 参考参数, 整数型, 参考
.参数 非参考参数, 整数型
参考参数 = 100
非参考参数 = 100
'不知道为什么这里的换行符不起作用?

②   子程序参数的“可空”属性

程序:子程序参数的“可空”属性

.版本 2
.程序集 窗口程序集_启动窗口 
.子程序 __启动窗口_创建完毕
  
.子程序 子程序取得随机密码, 文本型
.参数 参数_位数, 整数型
.参数 参数_模式, 整数型, 可空
.局部变量 局部_变量, 整数型
.局部变量 局部_文本, 文本型
 
置随机数种子 ()
.判断开始 (参数_模式 = 1)
    .计次循环首 (参数_位数, 局部_变量)
        局部_文本 = 局部_文本 + 字符 (取随机数 (48, 57))
    .计次循环尾 ()
.判断 (参数_模式 = 2)
    .计次循环首 (参数_位数, 局部_变量)
        局部_文本 = 局部_文本 + 多项选择 (取随机数 (1, 2), 字符 (取随机数 (65, 65 + 25)), 字符 (取随机数 (97, 97 + 25)))
    .计次循环尾 ()
.判断 (参数_模式 = 3)
    .计次循环首 (参数_位数, 局部_变量)
        局部_文本 = 局部_文本 + 多项选择 (取随机数 (1, 3), 字符 (取随机数 (65, 65 + 25)), 字符 (取随机数 (97, 97 + 25)), 字符 (取随机数 (48, 57)))
    .计次循环尾 ()
.判断 (是否为空 (参数_模式) = 真)
    局部_文本 = “666”
.默认
 
.判断结束
返回 (局部_文本) 
.子程序 _按钮默认_被单击 
编辑框1.内容 = 子程序取得随机密码 (到整数 (编辑框2.内容), )
 
.子程序 _按钮数字_被单击 
编辑框1.内容 = 子程序取得随机密码 (到整数 (编辑框2.内容), 1)
.子程序 _按钮字母_被单击
编辑框1.内容 = 子程序取得随机密码 (到整数 (编辑框2.内容), 2)
.子程序 _按钮混合_被单击
编辑框1.内容 = 子程序取得随机密码 (到整数 (编辑框2.内容), 3)

③   子程序参数的“数组”属性

程序:子程序参数的“数组”属性

.版本 2 
.程序集 窗口程序集_启动窗口 
.子程序 __启动窗口_创建完毕 
 
.子程序 子程序_数组排序
.参数 参数_数组, 整数型, 数组
.局部变量 局部_计次1, 整数型
.局部变量 局部_计次2, 整数型
.局部变量 局部_临时存放, 整数型
 
.计次循环首 (取数组成员数 (参数_数组), 局部_计次1)
    .计次循环首 (取数组成员数 (参数_数组), 局部_计次2)
        .如果真 (参数_数组 [局部_计次1] < 参数_数组 [局部_计次2])
            局部_临时存放 = 参数_数组 [局部_计次2]
            参数_数组 [局部_计次2] = 参数_数组 [局部_计次1]
            参数_数组 [局部_计次1] = 局部_临时存放
        .如果真结束
 
.计次循环尾 ()
.计次循环尾 ()
 .子程序 _按钮_数组排序_被单击
.局部变量 数组, 整数型, , "0"
.局部变量 局部_计次, 整数型
 
数组 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }
子程序_数组排序 (数组)
编辑框1.内容 = “”
.计次循环首 (取数组成员数 (数组), 局部_计次)
    编辑框1.内容 = 编辑框1.内容 + 到文本 (数组 [局部_计次]) + “,”
.计次循环尾 ()

3.     子程序的递归调用

一般情况下子程序都是调用其他程序的,但是也存在子程序自己调用自己的情况,而这种特殊的调用就被称为递归。

一般来说递归分两种方式:

①   一种是在调用一个子程序的过程中,又调用了该子程序自身,这种方式称为直接递归 ;

②   另一种是在调用一个子程序(程序1)的过程中,该子程序调用了另外一个子程序(程序2),而在子程序2中又调用了子程序1,这种方式称为间接递归。

4.     使用递归方法的注意点

①   编程中使用递归方法解决 问题对内存的开销比较大

②   使用递归调用必须有一个明确的递归结束条件,无条件的递归调用将会造成死循环

程序:递归调用求阶乘

.版本 2
.程序集 窗口程序集_启动窗口 
.子程序 __启动窗口_创建完毕 
 
.子程序 求阶乘, 长整数型
.参数 n, 整数型 
.如果 (n = 0)
    返回 (1)
.否则
    返回 (n × 求阶乘 (n - 1))
.如果结束
  
.子程序 _按钮1_被单击 
标签2.标题 = 编辑框1.内容 + “的阶乘等于:” + 到文本 (求阶乘 (到整数 (编辑框1.内容)))

程序:播放器二

.版本 2
.程序集 窗口程序集_启动窗口 
.子程序 _按钮1_被单击
  
' 播放的音乐需要和程序文件在同一个文件夹下
' 播放MP3 (1, “?井エイル - 流星.mp3”)
' 尝试不在同一文件夹下要如何处理 ?
' 增加完全路径试试
播放MP3 (1, “F:\CloudMusic\Ace组合 - 楚地无歌.mp3”)
' 尝试成功!通过增加全路径也能够实现跨文件夹的mp3播放
' 尝试不通过修改源代码就能够播放其它的音乐?
' 暂时没尝试出来。。。。
' 上面是之前写的我的播放器一的代码,现在对我的播放器一进行升级
_启动窗口.背景音乐 = {  }
_启动窗口.底图 = #图片2 
.子程序 __启动窗口_创建完毕
_启动窗口.底图 = #图片1
' 通过以上代码就能够实现播放的时候切换背景图片了,同样的道理也能够做到切换背景音乐
' 可以通过点击不同的按钮切换背景图片和背景音乐达到类似音乐播放器的点歌效果
' 可以进一步考虑歌词的显示功能?

作者:魔弹的舞踏原文地址:https://blog.csdn.net/Prisoner_of_time/article/details/80995781

%s 个评论

要回复文章请先登录注册