实例源码截图
第一章:基础语法 易语言与任何程序设计语言一样,都规定了可编程的数据类型、基本语句、函数等。 包括数据类型、常量和变量、常用内部函数等。 1.1 数据类型 数据是描述客观事件的数、字符以及所有能输入到计算机中并被计算机程序加工处理的符号的集合。 数据是程序的必要组成部分,也是程序处理的对象。 在高级语言中,广泛使用“数据类型”这一概念,数据类型体现了数据结构的特点。 易语言的数据类型从数据结构来区分,可分为基本数据类型、特殊数据类型。 基本数据类型是系统预定义的数据类型。(如图:数据类型) file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps1FB3.tmp.jpg 基本数据类型有6种(最常用到的)。 包括数值型、文本型、日期时间型、逻辑型、字节集型、子程序指针型。 1.1.1 数值型数据类型 数值型数据又包括字节型、短整数型、整数型、长整型、小数型、双精度小数型。 它们之间可以任意转换。不过需要注意转换可能带来的精度丢失问题。 例如小数型数据转换为整数型数据后将会丢失小数位。 短整数型、整数型、长整数型 统称为整数型,用来保存整数,不带有小数位。 整数运算速度快,占用内存空间少。如12345即为一个整数型数据。 字节型 字节型数据为无符号的整数,以1个字节的无符号二进制数存储,取值范围为0~255。 小数型、双精度小数型 统称为“小数型”,也可称为“浮点型”。其中小数型也叫“单精度小数型”。 该类数据用来保存带有小数位的数。如12345.1001即为一个小数型数据。 1.1.2 文本型 也称为“字符串”,在易语言中,字符串是放在双引号“”内的若干个字符, 一个英文字母或一个汉字都被认为是一个字符,都占用两个字节。 如“China”、“易语言”、“12345”都代表是一个字符串, 字符串是用双引号括起来的。 1.1.3 日期时间型 简称为“日期型”。可以表示从公元100年1月1日至公元9999年12月31日的日期和从0时0分0秒 到23时59分59秒的时间。在易语言中,日期型数据要用方括号“[]”把表示日期和时间的值给括起来, 就像字符串要用双引号括起来一样。如[2009年4月1日12时10分59秒]代表为一个日期时间型数据。 1.1.4 逻辑型 也称为“布尔型”,主要是做逻辑判断用的,它只有两个值:真(True)和假(False)。 1.1.5 字节集 用作记录一段字节型数据,可把字节集看作可变长的字节数组。在易语言中,常将图片或音乐等文件保存 为字节集型数据。 1.1.6 子程序指针 是一个子程序在内存中的地址,用作指向一个子程序。 1.2 定义变量的数据类型 在声明一个变量时要定义其具体的数据类型,只需要在新建的变量的类型栏上按下空格键,选择下拉列表中欲定义的数据类型即可。 源码举例:对变量名为“日期时间”的变量定义其数据类型。 1.3 数据类型的转换 在实际程序代码编写中很多时候需要进行数据类型的比较和转换。同时数据类型之间的数据可以直接比较,但不同数据类型需要先转换为相同的数据类型然后才能进行比较。 在易语言中比较常用的数据类型间转换的命令有: 到字节()命令:用来将一个通用型数据转换到字节型。 到短整数()命令:用来将一个通用型数据转换到短整数型。 到整数()命令:用来将一个通用型数据转换到整数型。 到长整数()命令:用来将一个通用型数据转换到长整数型。 到数值()命令:用来将一个通用型数据转换到双精度小数型。 到小数()命令:用来将一个通用型数据转换到小数型。 到文本()命令:用来将一个通用型数据转换到文本型。 到字节集()命令:用来将一个通用型数据转换到字节集型。 到时间()命令:用来将一个文本型数据转换到日期时间型。 源码举例:比较编辑框中的内容是否大于3.14。 源码举例:比较编辑框中的内容与所选日期的大小。 1.4 动态添加组件 利用内部组件可以作为数据类型的特点,易语言中可以动态添加组件。要用到一个“复制窗口组件()”命令。 命令原型为: 〈逻辑型〉 复制窗口组件 (通用型 欲被复制的窗口组件,通用型变量 存放新创建组件的变量) 注:被复制的组件必须是窗口中已经存在的组件。 源码举例:动态添加组件 功能实现:在窗体上添加一个按钮,然后动态添加其他按钮,实现每单击按钮一次,就生成一个新的按钮。 1.5 变量 变量可以任意定义名称,不过在具体程序开发中会根据需要给变量起一个有实际意义的名,这样的目的是为了方便程序的开发、维护及互相交流。 注:虽然变量可以任意定义名称,但定义变量名时也要注意:首字符不可以是数字,并且变量名除“_”以外,不可以试用其他的符号和标点。主要原因是为了避免与程序中的数值和符号重复,造成程序混乱。 1.5.1 变量的分类 变量有几种类型,每个类型的变量都有自己的适用范围,并不是所有的变量都能在程序的任何地方对其进行访问,只有在其作用范围内才是有效的、可访问的。 从变量的作用范围来区分,可以将变量分为“局部变量”、“程序集变量”和“全局变量”。 1.5.1.1 局部变量: 只能在其所在的子程序中才能被调用,其他子程序都无法调用。因为只有子程序被调用的时候,其变量才占用系统的内存,当子程序执行结束后,其变量所占内存空间将被系统收回,因此局部变量也是非常节省系统内存的。 1.5.1.2 程序集变量: 一般情况下仅在本程序集中被调用。若在其他窗口程序集中调用,则需要在变量名前加程序集所对应的“窗口名称”前缀。如: 信息框(_启动窗口,变量_程序集变量,0,) 程序集变量所在的程序集中的所有子程序,都可以自由访问程序集变量,因此多个子程序都需要访问的数据,可以试用程序集变量来存储。 1.5.1.3 全局变量: 在程序运行后,所有程序集内子程序都可以调用的变量。全局变量也是覆盖范围最大的变量。这种变量在程序运行后即占用内存空间,只有在程序运行结束后才从内存中清除,所以会长时间占用系统内存资源,因此全局变量建议根据程序的实际情况使用。 变量还可以从变量的属性来区分,分为“静态变量”和“数组变量”。 1.5.1.3.0 静态变量: 静止存在的局部变量。当所处子程序退出时,静态局部变量能够保留住现行内容以供下次继续使用;但非静态变量就不能,下次进入子程序时它将被重新初始化。局部变量如果不设置“静态”属性,子程序执行完毕后,将清空该子程序中所有非静态局部变量;局部变量如果设置了“静态”属性,在子程序执行完毕后也不会被清空,当子程序再次被调用时,静态变量的值扔保持上次被调用时的状态。静态变量在子程序第一次被调用时分配内存,在程序结束时销毁。 1.5.1.3.1 数组变量: 即可以存放一组数据的变量。数组变量中每个成员都拥有独立的存储单元,可以单独调用和赋值。数组变量可以看做事多个非数组变量组成的。数组变量又分为“单维数组变量”和“多维数组变量”。 单维数组变量,单维数组的表示形式为: 数组变量名[数组成员下标] 如: 变量[3],表示该数组中的第3个成员。 注:在易语言中,数组下标是从1开始的,所以不存在“变量[0]”这个数组成员。 多维数字变量可以理解成一个特殊的单维数组,它的成员也可以看成是多个单维数组。多维数组的表示形式为: 多维数组变量名[数组成员下标][数组成员下标] 如: 变量[1][2],表示第一个二维数组变量中的第二个成员。 1.5.2 定义变量(如何定义一个变量) 1.5.2.1 定义局部变量: 可以在需要定义变量的子程序处,使用Ctrl+L新建“局部变量”,或者在易语言的“插入”菜单中选择“局部变量”来插入一个局部变量。 在变量名处输入变量的名称。并选择相应的数据类型即可。 1.5.2.2 定义程序集变量: 将光标停留在代码编辑区“程序集”中任意位置,按回车键,生成一个新行。 在变量名处输入变量的名称,并选择相应的数据类型即可。 1.5.2.3 定义全局变量: 定义全局变量可以用Ctrl+G,新建一个“全局变量”。还可以在易语言的“插入”菜单中选择“全局变量”来插入全局变量。 在“全局变量名”处输入变量名称,并选择相应的数据类型即可。 1.5.2.4 定义静态变量: 静态变量的定义方法与定义局部变量的方法相似,定义一个局部变量,然后将光标停留在“静态”处,单击鼠标左键,可以定义或取消静态属性。当静态属性上出现“√”后,表示这个定义的变量是静态变量,当再次点击将“√”去掉,表示取消对本变量的静态属性。(在静态属性上按空格键,也可以定义和取消变量的静态属性。) 为了更好的了解静态变量的特点,下面通过编写一个简单的程序,来了解一下静态变量与局部变量的区别。 源码举例:静态变量与非静态变量的区别 功能实现:通过点击按钮,使静态变量和局部变量分别加1,并在编辑框中显示每次加1之后的结果。 1.5.2.5 定义数组变量: 数组变量的定义方法和前面定义静态变量的方法相似。 先定义一个变量,将该变量命名为“数组”,然后将光标停留在“数组”属性处,输入要定义的成员数即可。 数组[4] 这样“数组”就有数组[1]、数组[2]、数组[3]、数组[4] 4个数组成员。 如果在数组属性中输入类似“3,3”,即将本变量“数组”定义为二维。 数组[3][3] 该数组为二维数组,可以看成是3个拥有3个成员的单维数组组成,这个数组中的成员按如下顺序排列: 数组[1][1]、数组[1][2]、数组[1][3]; 数组[2][1]、数组[2][2]、数组[2][3]; 数组[3][1]、数组[3][2]、数组[3][3]; 多维数组成员可以以单维数组的表示方法来访问,如以上的二维数组中9个成员,按成员顺序排列也可以表示为: 数组[1]、数组[2]、数组[3]; 数组[4]、数组[5]、数组[6]; 数组[7]、数组[8]、数组[9]。 按照定义单维数组变量与二维数组变量的方式来定义一个三维数组。 数组[3][3][3] 表示该数组为三维数组,可以理解为27个单维数组。 二维数组可以用来存储一个矩阵,多维数组可以用来存储更复杂的矩阵,满足编程中遇到的更复杂的要求。 注: 在程序开发中很多情况是事先不清楚数组的成员数的,因此在定义数组时可以定义数组的成员下标数为0,然后在程序内部动态改变数组的成员数,具体可以使用“重定义数组”命令。 命令原型为: 重定义数组 (通用型变量数组 欲重定义的数组变量,逻辑型 是否保留以前的内容,整数型 数组对应维的上限值) 源码举例:定义数组变量 功能实现:定义一维数组变量、二维数组变量、三维数组变量。 1.5.3 变量的初始值 变量在没有赋值前,系统会为其赋予一个初始值。每一种数据类型的变量初始值都有所不同。(如图:变量的初始值) file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps1FB4.tmp.jpg 源码举例:变量的初始值 功能实现:定义变量并将变量的初始值显示到编辑框中。 注: 其中文本型和字节集型变量初始值是空值,“到文本()”后不显示。 1.6 变量的赋值 给变量赋值可以使用“赋值”命令或“连续赋值()”命令。 “赋值”命令(=) 变量1 = “我爱易语言” 在给变量赋值的时候要注意赋给变量相应数据类型的数据,否则会出现错误。 如给整数型变量赋值为文本型的“我爱易语言”,则会提示错误。 错误: 不能将“文本型”数据转换到“整数型”数据。 “连续赋值”命令 被赋值变量可以是一个或多个。 命令原型为: 连续赋值 (通用型数组/非数组 用作赋于的值或资源,通用型变量/变量数组 被赋值的变量或变量数组,... ) 连续赋值 (“我爱易语言”, 变量2, 变量3, 变量4) 执行后,变量2、变量3、变量4的值均被改变为文本型数据“我爱易语言”。 给变量赋值的时候要注意变量的数据类型,只要符合其数据类型的赋值规则即可。 注:任意数值类型的数据可以被写入到其他任意数值类型的变量中,系统将自动进行转换。如将一个整数写入到短整数型变量中要注意不要超出变量的取值范围;将小数型变量写入到整数型变量时,会丢失小数点后的内容等,因此使用时需要注意,最好转换类型是一一对应的。 在给一组相同类型的组件的属性赋予相同的值时,使用连续赋值命令非常方便。常用来给一组组件赋初始化的值。 源码举例:给变量进行赋值(一)。 功能实现:给变量进行赋值,并显示变量的值。 源码举例:给变量进行赋值(二)。 功能实现:给变量进行赋值,并显示变量的值。 1.7 数组变量的赋值 给数组变量赋值,可以有多种方法,根据需要选择合适的赋值方法。 1.7.1 使用“=”给数组变量赋值 例: 给一维数组2个成员赋值,每个成员都是10。 一维数组[1]=10 一维数组[2]=10 给二维数组赋值,每个维有2个成员,每个成员都是10。 二维数组[1][1]=10 二维数组[1][2]=10 二维数组[2][1]=10 二维数组[2][2]=10 使用“=”赋值也可以一次性给多个数组变量赋值,方法是使用一对大括号{}将要赋予的值括起来,每个值都用“,”号隔开,被隔开的值赋予数组中的对应位置的成员。 例: 给一维数组2个成员赋值,每个成员都为10。 一维数组={10,10} 使用这种方法给成员很多的数组赋值尤其方便。 例: 给一个有10个成员的一维数组赋值。 一维数组={1,2,3.4,5,6,7,8,9,10} 1.7.2 使用“连续赋值()”命令 例: 给一维数组的三个成员赋值,可以使用如下方法: 连续赋值(10,一维数组[1],一维数组[2],一维数组[3]) 执行后,一维数组[1]、一维数组[2]、一维数组[3]的值均被改变为10。 源码举例:使用“赋值()”命令与“连续赋值()”命令给数组变量进行赋值。 功能实现:使用“赋值()”命令与“连续赋值()”命令给数组变量进行赋值。 1.7.3 用命令的返回值给数组赋值 直接用命令的返回值给数组赋值:有些命令的返回值就是一个数组,所以可以直接使用该返回值给数组赋值。赋值的时候首先要注意,根据命令返回数组的数据类型来给数组定义数据类型;也要注意数组的成员数是可变的,并且命令返回的数组成员数也不固定,所以可以定义接收返回值的数组成员数为0,当该数组接收了命令的返回值后,会自动定义数组成员数。 例: “分割文本()”命令的返回值,就是一个文本型的数组,在程序中可以表示为: 文本数组=分割文本(“2015-03-20”,“-”,) 执行后,文本数组就有了3个成员,每个成员的值就是返回来的子文本。即文本数组[1]的值为“2015”,文本数组[2]的值为“03”,文本数组[3]的值为“20”。 数组是一个特殊的变量,它能一次声明很多相同类型的变量。当用户在程序设计过程中需要很多同种数据类型的变量时,定义一个数组就可以轻松解决这个难题,并且在使用时便于变量的管理。 源码举例:用命令的返回值给数组变量赋值。 功能实现:用命令的返回值给数组变量赋值。 1.8 特殊数据类型 1.8.1 自定义数据类型 用户可以随时在程序中自行定义新的数据类型。 自定义数据类型需要设置数据类型的名称及其成员,其中数据类型成员各属性的设置方法等同于变量设置方法. 自定义数据类型是比较常用的数据类型。 下面通过一个实例来讲解如何定义一个自定义数据类型。 源码举例:定义一个数据类型“学员信息”。 功能实现:定义一个数据类型“学员信息”,并将某学员的信息做个记录。 1.8.2 内部组件数据类型 在易语言中,每一种内部组件也可以作为一种数据类型来使用。 这些数据类型具有组件的特征,如属性、命令等。 下面通过一个实例来具体讲解。 源码举例:定义一个标签组件数据类型。 功能实现:定义一个标签组件数据类型。
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps1FB5.tmp.jpg
|