JS逆向学习

JS

第一课

易语言基础

易语言知识参考 易语言知识库 - 最新易语言在线帮助手册(易语言知识库)

易语言的语言要素

所有的易应用程序,都由下列语言要素或其中的一部分组成:

  一、 数据类型

  数据类型分为系统基本数据类型库定义数据类型用户自定义数据类型三类。

· 系统基本数据类型列表及其说明如下:

\1. 字节型。可容纳 0 到 255 之间的数值。

\2. 短整数型。可容纳 -32,768 到 32,767 之间的数值,尺寸为 2 个字节。

\3. 整数型。可容纳 -2,147,483,648 到 2,147,483,647 之间的数值,尺寸为 4 个字节。

\4. 长整数型。可容纳 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 之间的数值,尺寸为 8 个字节。

\5. 小数型。可容纳 3.4E +/- 38 (7位小数) 之间的数值,尺寸为 4 个字节。

\6. 双精度小数型。可容纳 1.7E +/- 308 (15位小数) 之间的数值,尺寸为 8 个字节。

\7. 逻辑型。值只可能为“真”或“假”,尺寸为 4 个字节。“真”和“假”为系统预定义常量,其对应的英文常量名称为“true”和“false”。

\8. 日期时间型。用作记录日期及时间,尺寸为 8 个字节。

\9. 文本型。用作记录一段文本,文本由以字节 0 结束的一系列字符组成。

\10. 字节集。用作记录一段字节型数据。字节集与字节数组之间可以互相转换,在程序中允许使用字节数组的地方也可以使用字节集,或者相反。字节数组的使用方法,譬如用中括号对(“[]”)加索引数值引用字节成员,使用数组型数值数据进行赋值等等,都可以被字节集所使用。两者之间唯一的不同是字节集可以变长,因此可把字节集看作可变长的字节数组。

\11. 子程序指针。用作指向一个子程序,尺寸为 4 个字节。

易语言编辑示例

JS逆向学习_第1张图片

新建一个窗口,在左边可见一些启用的程序,支持库、程序和属性

JS逆向学习_第2张图片

程序集变量、局部变量、全局变量

程序集变量是给当前的窗口程序集使用的,局部变量是给自己使用的,全局变量是给所有程序使用的。

在其他窗口的程序集变量是无法使用的。

JS逆向学习_第3张图片

局部变量的输出只有在创建局部变量的窗口下才能使用

JS逆向学习_第4张图片

image-20211211205415666

全局变量所有的窗口程序集都能够使用

JS逆向学习_第5张图片

自定义变量:创建了一个数据类型叫做 “我的数据类型”,自定义的数据类型需要在不同的窗口进行定义变量名等。

JS逆向学习_第6张图片

启动窗口的定义

JS逆向学习_第7张图片

我的变量.变量a = “这是我的文本型变量”
我的变量.变量b = 100000

非运行语句:备注信息,屏蔽的代码段

方法型语句:右键查看数据定义类型,带e的都是一些方法

定义变量,变量赋值和输出

易语言模块:支持库,程序,属性

右键窗口可以查看数据定义类型

一般来说我们创建一个数据的时候是先定义变量名然后再给变量赋值,最后再将变量输出。

总结:_XXX 下划线开头的语句都是关键字是不能更改的、学会插入局部变量和全局变量。定义变量名,变量数据类型、方法的调用,用窗口进行变量的定义,变量的命名,变量的赋值和输出。使用载入语句实现窗口的载入。

第二课

编写一个具有登录功能计算器

JS逆向学习_第8张图片

实现一个具有登录功能的计算器

需要实现的功能有:

1.登录模块

:) 输入账号和密码进行验证后可以登录,登录成功后进入计算机菜单。

:) 输入处需要实现点击输入框显示光标不显示提示语句,离开输入窗口显示提示语句。

:) 密码输入处需要实现密码隐功能勾选小框后显示密码不勾选时候不显示密码。

:) 密码处需要实现如果输入的数为空格就需要清空空格,离开输入框后依然显示输入提示。

:) 实现隐藏第二个菜单,菜单界面由右键打开,菜单界面实现额外的退出程序的选项。

2.运算模块

:) 计算机需要实现第一次输入数字显示在文本框,后点击运算符号第一次输入的数字消失。

:) 然后第二次输入的数字显示到文本框。

:) 最后点击等于按钮完成运算并且显示运算后的结果到文本框。

:) 需要额外实现的按钮有清空按钮,清空文本框,删除按钮,点击后删除一个数字。

JS逆向学习_第9张图片

计算机实现代码

启动窗口

JS逆向学习_第10张图片

.版本 2
​
.程序集 窗口程序集_启动窗口
​
.子程序 _按钮1_登录_被单击
​
.如果 (编辑框_账号.内容 = “admin”)
    .如果 (编辑框_密码.内容 = “123456”)
        信息框 (“登录成功”, 0 + 64, “提示”, _启动窗口)
        载入 (窗口_登录成功, _启动窗口, 假)
        _启动窗口.可视 = 假
​
​
​
​
    .否则
        信息框 (“账号或密码错误”, 0 + 64, “提示”, _启动窗口)
    .如果结束
​
​
.否则
    信息框 (“账号或密码错误”, 0 + 64, “提示”, _启动窗口)
​
​
.如果结束
​
​
​
.子程序 _设置_被选择
​
​
​
.子程序 _退出_被选择
​
结束 ()
​
​
.子程序 _显隐密码_被单击
​
.如果 (显隐密码.选中 = 真)
    编辑框_密码.输入方式 = 0
.否则
    .如果真 (编辑框_密码.内容 = “请输入密码”)
        返回 ()
    .如果真结束
    编辑框_密码.输入方式 = 2
​
.如果结束
​
​
.子程序 _编辑框_账号_获得焦点
​
.如果真 (编辑框_账号.内容 = “请输入账号”)
    编辑框_账号.内容 = “”
.如果真结束
​
​
.子程序 _编辑框_账号_失去焦点
​
.如果真 (删全部空 (编辑框_账号.内容) = “”)
    编辑框_账号.内容 = “请输入账号”
.如果真结束
​
​
​
.子程序 _编辑框_密码_获得焦点
​
.如果真 (编辑框_密码.内容 = “请输入密码”)
    编辑框_密码.内容 = “”
    编辑框_密码.输入方式 = 2
.如果真结束
​
​
.子程序 _编辑框_密码_失去焦点
​
.如果真 (删全部空 (编辑框_密码.内容) = “”)
    编辑框_密码.内容 = “请输入密码”
    编辑框_密码.输入方式 = 0
.如果真结束
​
​
​
.子程序 __启动窗口_鼠标右键被放开, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
​
弹出菜单 (我的菜单, , )
​
.子程序 _编辑框_账号_内容被改变
​
​
​
.子程序 _编辑框_密码_内容被改变
​
​
​
.子程序 __启动窗口_创建完毕
​
​
​

登录成功后窗口

JS逆向学习_第11张图片

.版本 2
​
.程序集 窗口程序集_窗口_登录成功
.程序集变量 启动时间, 整数型
.程序集变量 运算过程, 双精度小数型
.程序集变量 运算符, 文本型
​
.子程序 _窗口_登录成功_创建完毕
​
时钟1.时钟周期 = 1000
启动时间 = 取启动时间 ()
​
​
.子程序 _窗口_登录成功_将被销毁
​
_启动窗口.可视 = 真
​
​
.子程序 _时钟1_周期事件
​
时间.标题 = “软件已启动:” + 到文本 ((取启动时间 () - 启动时间) ÷ 1000) + “秒”
​
.子程序 _数字0_被单击
​
编辑框_结果.加入文本 (“0”)
​
.子程序 _小数点_被单击
​
编辑框_结果.加入文本 (“.”)
​
.子程序 _数字1_被单击
​
编辑框_结果.加入文本 (“1”)
​
.子程序 _数字2_被单击
​
编辑框_结果.加入文本 (“2”)
​
.子程序 _数字3_被单击
​
编辑框_结果.加入文本 (“3”)
​
.子程序 _数字4_被单击
​
编辑框_结果.加入文本 (“4”)
​
.子程序 _数字5_被单击
​
编辑框_结果.加入文本 (“5”)
​
.子程序 _数字6_被单击
​
编辑框_结果.加入文本 (“6”)
​
.子程序 _数字7_被单击
​
编辑框_结果.加入文本 (“7”)
​
.子程序 _数字8_被单击
​
编辑框_结果.加入文本 (“8”)
​
.子程序 _数字9_被单击
​
编辑框_结果.加入文本 (“9”)
​
.子程序 _按钮加_被单击
​
运算过程 = 到数值 (编辑框_结果.内容)
运算符 = “+”
编辑框_结果.内容 = “”
​
.子程序 _按钮减_被单击
​
运算过程 = 到数值 (编辑框_结果.内容)
运算符 = “-”
编辑框_结果.内容 = “”
​
​
.子程序 _按钮乘_被单击
​
运算过程 = 到数值 (编辑框_结果.内容)
运算符 = “X”
编辑框_结果.内容 = “”
​
​
.子程序 _按钮除_被单击
​
运算过程 = 到数值 (编辑框_结果.内容)
运算符 = “÷”
编辑框_结果.内容 = “”
​
.子程序 _按钮删除_被单击
​
​
编辑框_结果.内容 = 取文本左边 (编辑框_结果.内容, 取文本长度 (编辑框_结果.内容) - 1)
​
​
.子程序 _按钮清空_被单击
​
编辑框_结果.内容 = “”
​
​
.子程序 _按钮等于_被单击
.局部变量 临时计算, 双精度小数型
​
​
临时计算 = 到数值 (编辑框_结果.内容)
.如果真 (运算符 = “+”)
​
    编辑框_结果.内容 = 到文本 (临时计算 + 运算过程)
.如果真结束
.如果真 (运算符 = “-”)
​
    编辑框_结果.内容 = 到文本 (运算过程 - 临时计算)
.如果真结束
.如果真 (运算符 = “X”)
​
    编辑框_结果.内容 = 到文本 (临时计算 × 运算过程)
.如果真结束
.如果真 (运算符 = “÷”)
​
    编辑框_结果.内容 = 到文本 (运算过程 ÷ 临时计算)
.如果真结束
.如果真 (运算符 = “=”)
    编辑框_结果.内容 = 到文本 (临时计算)
.如果真结束
​

运行结果展示:

JS逆向学习_第12张图片

JS逆向学习_第13张图片

课后作业:用课上的命令写一个猜数字程序用到的命令:置随机数种子()、取随机数()

调用格式: 〈无返回值〉 置随机数种子 ([整数型 欲置入的种子数值]) - 系统核心支持库->算术运算
    英文名称:randomize
    为随机数生成器初始化一个种子值,不同的种子值将导致“取随机数”命令返回不同的随机数系列。本命令为初级命令。
    参数<1>的名称为“欲置入的种子数值”,类型为“整数型(int)”,可以被省略。如果省略本参数,将默认使用当前计算机系统的时钟值。

调用格式: 〈整数型〉 取随机数 ([整数型 欲取随机数的最小值],[整数型 欲取随机数的最大值]) - 系统核心支持库->算术运算
英文名称:rnd
返回一个指定范围内的随机数值。在使用本命令取一系列的随机数之前,应该先使用“置随机数种子”命令为随机数生成器初始化一个种子值。本命令为初级命令。
参数<1>的名称为“欲取随机数的最小值”,类型为“整数型(int)”,可以被省略。参数必须大于或等于零。本参数如果被省略,默认为 0 。
参数<2>的名称为“欲取随机数的最大值”,类型为“整数型(int)”,可以被省略。参数必须大于或等于零。本参数如果被省略,默认为无限。

程序内容:

JS逆向学习_第14张图片

运行结果:

JS逆向学习_第15张图片

JS逆向学习_第16张图片

第三课

实现九九乘法表

JS逆向学习_第17张图片

循环中的变量不要乱使用,否者会引起程序的崩溃。比如数组超标等。

计次循环首()

参数<1>的名称为“循环次数”,类型为“整数型(int)”。本数值指定执行计次循环体内所有命令的次数,必须大于等于零。 ​ 参数<2>的名称为“已循环次数记录变量”,类型为“整数型(int)”,可以被省略,提供参数数据时只能提供变量。本数值型变量用作记录当前循环首已经被进入过的次数(从 1 开始),程序可以直接取用此变量中的值。

JS逆向学习_第18张图片

最后循环结束时输出调试文本显示循环变量为10

变量循环首()

JS逆向学习_第19张图片

最后输出的循环变量次数大于变量目标值 最后循环变量次数的值为10

判断循环首()先判断再循环

本命令根据提供的逻辑参数的值,来决定是否进入循环。如果提供的逻辑参数值为真,程序顺序执行下一条命令进入循环,否则跳转到本命令所对应的“判断循环尾”命令的下一条命令处以跳出循环。

循环判断尾()先循环再判断

本命令根据提供的逻辑参数的值,来决定是否返回到循环首部继续进行循环。如果提供的逻辑参数值为真,程序返回到对应的“循环判断首”命令处继续进行循环,否则顺序执行下一条命令退出本程序循环。

跳出循环:跳出循环不再执行循环里面的内容。

到循环尾:到循环的尾部但是依然在执行循环中。

使用计次循环和变量循环实现9x9乘法表

JS逆向学习_第20张图片

.版本 2
​
.程序集 窗口程序集_启动窗口
.程序集变量 循环次数变量, 整数型
​
.子程序 __启动窗口_创建完毕
​
​
​
.子程序 _按钮1_被单击
.局部变量 内部循环, 整数型
​
.计次循环首 (9, 循环次数变量)
​
    .计次循环首 (循环次数变量, 内部循环)
​
        编辑框_乘法表.加入文本 (到文本 (内部循环) + “x” + 到文本 (循环次数变量) + “=” + 到文本 (选择 (内部循环 × 循环次数变量 < 10, “0” + 到文本 (内部循环 × 循环次数变量), 到文本 (内部循环 × 循环次数变量))) + “ ”)
        选择 (内部循环 × 循环次数变量 < 10, “0”, 到文本 (内部循环 × 循环次数变量))
​
    .计次循环尾 ()
    编辑框_乘法表.加入文本 (#换行符)
.计次循环尾 ()
编辑框_乘法表.加入文本 (#换行符)
​
.变量循环首 (9, 1, -1, 循环次数变量)
​
    .变量循环首 (1, 循环次数变量, 1, 内部循环)
​
        编辑框_乘法表.加入文本 (到文本 (内部循环) + “x” + 到文本 (循环次数变量) + “=” + 到文本 (选择 (内部循环 × 循环次数变量 < 10, “0” + 到文本 (内部循环 × 循环次数变量), 到文本 (内部循环 × 循环次数变量))) + “ ”)
​
​
    .变量循环尾 ()
    编辑框_乘法表.加入文本 (#换行符)
.变量循环尾 ()
​
​
​
​

JS逆向学习_第21张图片

课后作业:

用计次循环首实现倒序

用 判断循环首()、循环判断首()实现正序和倒序

JS逆向学习_第22张图片

 使用计次循环首进行倒序输出乘法表

JS逆向学习_第23张图片

 使用判断循环首实现倒序输出乘法表

JS逆向学习_第24张图片

 使用循环判断首实现正序输出乘法表

JS逆向学习_第25张图片

第四课

实现人员管理系统

认识数组: 1、什么是数组:数组就是变量的集合。我们为了节省,少用类型重复的变量,可把它设为数组。(是用来存储一组同类型的数据) 2、数组的使用方法: 创建数组: 使用数组:加入成员、删除成员、取数组成员数、清除数组 3、注意事项:数组下标超出定义范围(数组下标是从1开始的) 4、子程序:实现不同功能的代码段集合,它可以简化程序设计任务,达到简化程序,方便代码重复使用提高维护效率。子程序中的参数也可以单独进行设置,可以让其他的事件调用这个子程序。 5、JSON (JavaScript Object Notation)是一种基于 JavaScript语法子集的开放标准数据交换格式。JSON是基于文本的,轻量级的,通常被认为易于读/写。 {"a":1,"b":true, "c":["111",222,false,true]} 引入精易模块、

精易论坛 精易论坛——程序设计学习交流社区

人员管理系统工功能说明:

通过使用数组,添加人员姓名 、年龄、岗位、薪资。

系统具有查询,删除,修改,查找功能。

添加功能:输入人员的姓名、年龄、职位以及薪资,点击添加将数据添加到程序中。

删除功能:输入人员的姓名,点击删除,删除人员的所有信息。

修改功能:输入人员的姓名,输入修改的年龄、职位、薪资等点击修改更改这些想要更新的数据。

查找功能:输入人员的姓名,点击查找后会在下方的显示框中显示查找人员的所有信息。

运用到支持库的调试输出

实验内容:

1.先在支持库中添加特殊功能支持库3.1版。

JS逆向学习_第26张图片

 

2.依然是照葫芦画瓢画出程序外观,输出窗口选择纵向输入条

JS逆向学习_第27张图片

 

开始编写程序内容

JS逆向学习_第28张图片

 

 

.版本 2
.支持库 spec
​
.程序集 窗口程序集_启动窗口
.程序集变量 姓名, 文本型, , "0"
.程序集变量 年龄, 整数型, , "0"
.程序集变量 职位, 文本型, , "0"
.程序集变量 薪资, 文本型, , "0"
​
.子程序 __启动窗口_创建完毕
​
​
​
.子程序 _按钮_添加_被单击
​
​
添加成员 ()
​
​
.子程序 添加成员
​
加入成员 (姓名, 编辑框_姓名.内容)
加入成员 (年龄, 到整数 (编辑框_年龄.内容))
加入成员 (职位, 编辑框_职位.内容)
加入成员 (薪资, 编辑框_薪资.内容)
编辑框_输出.加入文本 (“人员” + 编辑框_姓名.内容 + “添加成功”, #换行符)
​
​
​
.子程序 _按钮_删除_被单击
​
删除公司成员 (编辑框_输出.内容)
​
​
.子程序 删除公司成员
.参数 名字, 文本型
.局部变量 i, 整数型
.局部变量 人数, 整数型
​
人数 = 取数组成员数 (姓名)
.计次循环首 (人数, i)
    .如果真 (姓名 [i] = 名字)
        删除成员 (姓名, i, 1)
        删除成员 (年龄, i, 1)
        删除成员 (职位, i, 1)
        删除成员 (薪资, i, 1)
    .如果真结束
    跳出循环 ()
.计次循环尾 ()
编辑框_输出.加入文本 (“人员” + 编辑框_姓名.内容 + “删除成功”, #换行符)
​
​
.子程序 _按钮_修改_被单击
​
修改公司成员 (编辑框_姓名.内容, 到整数 (编辑框_年龄.内容), 编辑框_职位.内容, 编辑框_薪资.内容)
​
.子程序 修改公司成员
.参数 名字_, 文本型
.参数 年龄_, 整数型
.参数 职位_, 文本型
.参数 薪资_, 文本型
.局部变量 i, 整数型
.局部变量 人数, 整数型
​
人数 = 取数组成员数 (姓名)
.计次循环首 (人数, i)
    .如果真 (姓名 [i] = 名字_)
        ' 姓名 [i] = 编辑框_姓名.内容
        ' 年龄 [i] = 到整数 (编辑框_年龄.内容)
        ' 职位 [i] = 编辑框_职位.内容
        ' 薪资 [i] = 编辑框_薪资.内容
        姓名 [i] = 名字_
        年龄 [i] = 年龄_
        职位 [i] = 职位_
        薪资 [i] = 薪资_
        跳出循环 ()
    .如果真结束
​
.计次循环尾 ()
编辑框_输出.加入文本 (“人员” + 编辑框_姓名.内容 + “修改成功”, #换行符)
​
.子程序 _按钮_查询_被单击
​
查询公司成员 (编辑框_姓名.内容)
​
​
.子程序 查询公司成员
.参数 名字, 文本型
.局部变量 i, 整数型
.局部变量 人数, 整数型
.局部变量 text, 文本型
​
人数 = 取数组成员数 (姓名)
.计次循环首 (人数, i)
    .如果真 (姓名 [i] = 编辑框_姓名.内容)
​
        编辑框_输出.加入文本 (“姓名:” + 姓名 [i] + “ ”)
​
        编辑框_输出.加入文本 (“年龄:” + 到文本 (年龄 [i]) + “ ”)
​
        编辑框_输出.加入文本 (“职位:” + 职位 [i] + “ ”)
​
        编辑框_输出.加入文本 (“薪资:” + 薪资 [i] + “ ”)
​
        ' text = “姓名:” + 姓名 [i] + “年龄:” + 年龄 [i] + “职位:” + 职位 [i] + “薪资:” + 薪资 [i]
        跳出循环 ()
    .如果真结束
​
.计次循环尾 ()
' 编辑框_输出.加入文本 (text, #换行符)
编辑框_输出.加入文本 (#换行符)
​
​
.子程序 _按钮1_被单击
.局部变量 json, 类_json
​
json.解析 (#json)
调试输出 (json.取属性对象 (“c[3]”))
​

运行效果

JS逆向学习_第29张图片

 

JS逆向学习_第30张图片

Json相关说明,下载精易模块,精易编程助手

JS逆向学习_第31张图片

 

添加模块引用

JS逆向学习_第32张图片

 

结合精易编程助手解析json,复制数据到输入框,点击美化显示可以显示得更美观,然后再生成代码出点击取通用属性方式。

JS逆向学习_第33张图片

JS逆向学习_第34张图片

 

多理解json的用法。

你可能感兴趣的:(javascript,p2p,开发语言)