第二章 数据类型、运算符与表达式 各种数据存在磁盘或内存中都有其不同点存放格式,因此就存在不同的数据类型。 了解各种数据类型的特性,对编程开发来说是十分重要的。 程序中经常会进行一些运算。易语言中运算都要使用运算符进行识别处理,并通过运算表达式来完成运算操作。程序中对各种数据之间的关系的描述也要通过运算符。 本章将对数据烈性运算符和表达式这些程序中基本的内容进行介绍。 2.1易语言的数据类型 2.2.1了解基本数据类型 易语言中基本数据类型有6中,包括数值型、逻辑型、日期时间型、文本型、字节集型、子程序指针型。 数值型有包括了字节型、短整数型、整数型、长整数型、小数型、双精度小数型。这些类型代表的数值范围,及机内表示的长度,可以查看“数据类型的长度与溢出”小节中的“表2-1数据类型的长度和占用字节”。 字节型:可容纳0到255之间的数值。 数值型中整数型数据,如13556。 逻辑型数据,职能有2种,即“真”或“假”。 日期时间型数据,用来记录日期及时间,如:[2002-2-2]。 文本型数据,可用来记录一段文本,如“中文编程易语言”。在程序中表示一段文本数据,都要用双引号将文本引起来。 字节集型数据,用作记录一段字节型数据,表示为{2,3,4,5}。图片或mp3格式的文件是典型的字节机型数据,在程序中,存在此类数据的变量一定要定义为字节集型。 子程序指针型数据,是一个子程序在内存中的地址。 2.2.2 给变量和返回值定义数据类型 1.给变量定义数据类型 给变量定义数据类型,只需要在新建的变量类型上按下空格键,就会弹出数据类型下拉列表,在列表中选择欲定义的数据类型即可(如图2-1所示),也可用拼音或英文在其上直接输入,例如:整数型即输入zsx或用英文输入int。 2. 给子程序返回值定义数据类型 和给变量定义数据相同,只需要在子程序的返回值类型上用定义变量的方法定义即可。给子程序定义了返回值类型,就表示该子程序具有了返回值,所以在子程序中编写代码时要记得给子程序返回一个值。 如果易语言新版本增加了新的数据类型,也可在数据类型的下来列表中查询增加了那种数据类型。 2.2.3 给数据正确赋值 1.给组件属性赋值 每个组件都有属性,每个属性都有自己固定的数据类型,给属性赋值的时候就要考虑到属性的数据类型,比如:标题、名称、内容属性都是文本型的;高度、宽度属性都是整数型的;可是、禁止属性都是逻辑性的。 如果在组件的属性窗口给属性赋值,很多属性都是弹出一个下拉菜单,然后在菜单中选择该属性体提供的选项,所以一般不会出错:但使用代码给属性赋值的时候,就要注意所赋值一定要和被赋值属性的数量类型相符。比如,使用代码给文本型属性赋值是,就要用双引号将欲赋的值引起来: 编辑框1.内容=“中文编程易语言” 如果给逻辑型属性赋值的时候,只能有2种,“真”或 “假”: 按钮1.禁止=真 给整数型属性赋值的时候,直接赋予要改变的值即可: 编辑框1.高度=100 还有一些需要注意的属性,例如: (1)和颜色有关的属性,像“背景颜色”、“文本颜色”等,嗾使整数型,程序中给此类属性赋值,都是赋予一个颜色值。常用颜色值在易语言中都作为常量提供。可以直接用“#”+要赋值的颜色名即可。颜色值也可以使用“取颜色值()”命令来获得,例如: 标签1.背景颜色=#蓝色 标签1.背景颜色=取颜色值(122,90,23) (2)和图片有关的属性,像“底图”、“图片”等,这类属性一般都是字节集型的,在程序中,直接给这类属性一个图片即可。例如: 图片框1.图片=#图片1 如果要将图片框中的图片清除,可以直接给图片属性一个空字节集,空字节集用一对大括号表示,例如: 图片1.图片={} (3)给日期时间型的属性赋值,月历组件和日期框组件中有很多日期时间型的组件,给属性赋值,要输入“[-年-月-日]”,方括号中间是要赋值的时间,例如: 月历1.今天=[2004年1月15日] 或输入: 月历1.今天=[2004-1-15] (4)整数类型的属性,在属性面板中,该类属性都有多个选项,并且每个选项都有一个整数,像编辑框的输入方式属性。如图2-2所示。 如果在程序中给这类属性赋值,只要输入该属性各选项前的数即可,例如给编辑框的“输入方式”属性改为“密码输入”,需要输入代码: 编辑框1.输入方式=2 2.给变量正确赋值 和给组件属性赋值的方法相同,定义了变量的数据类型后,要给变量赋值就要注意赋值的类型要和变量类型相同。例如: 这里要注意,给“子程序指针”类型的变量赋值,表示为“&”+要指向的子程序名。例如:变量1=&子程序1 3.计算后赋值 还可以将一段算式的计算结果赋值给变量或属性。例如 变量1=2*3+5 编辑框1.内容=编辑框2.内容+编辑框3.内容 2.2.4 数据的比较 在编程中,经常会在各种数据间进行比较。同种数据类型之间进行比较,可以直接进行;而不同数据之间进行比较,就要先进行数据类型的转换,将不同种的数据类型转换为同一种数据类型后才能进行比较,否则程序会报错。 例如:编辑框中输入了一个整数,要比较编辑框中的内容是否大于50,由于编辑框中的内容是一个文本,首先要将编辑框中的内容转换成整数型数据后,在进行比较,输入以下代码: 到数值(编辑框1.内容)>50 比较后,会返回一个逻辑值,如果大于50就会返回真,小于或等于50将返回假。 易语言中常用的数据类型间转换的命令有: “到数值()”命令,用来将一个通用型数据转换到整数型。 “到文本()”命令,用来将一个通用型数据转换到文本型。 “到字节集()”命令,用来将一个通用型数据转换到字节集型。 “从字节集转换()”命令,用来将一个字节集型的数据转换成通用型数据,命令的第2个参数控制欲转化成的数据类型。 “到时间()”命令,用来讲一个文本型的数据转化成日期时间型。 使用这些数据类型间相互转换的命令,就可以进行不同数据类型间的比较了。 例如:比较2个编辑框中数的大小,用信息框显示出比较的结果,并用第3个编辑框显示出较大数减较小数的结果。在窗口中添加3个编辑框组件和一个按钮组件,双击按钮组件,然后输入代码: 变量之间的比较也是一样,一定要注意变量的数据类型,不同数据类型的变量一定要转换成相同类型后再进行比较。 2.2.5 数据类型的存储字节与溢出 1.数据类型的存储字节 各种数据型的数据都在内存中占用一定的存储空间。字节(byte)是系统中的基本存储单位。数据类型所占字节数越多,所能够容纳数值的范围就越大。参见表2-1。 从上表可以看出,数字型的数据容纳的数值范围越大,占用的字节就越多。比如,短整数型的数值3000和整数型的数值3000,都代表了数值3000,但在系统中占用的空间却不同,即短整数型占2个字节,整数型占4个字节。所以,在实际应用时就要根据自己的需要来选择使用的数据类型,避免存储空间的浪费。例如,存储的数据在-32768至32767以内,就要采用短整数型;如果使用小数而对精度不高,就可以使用小数型而不采用双精度小数型等等。 2.数据的溢出 某数据类型存储的值超出了其所能容纳的范围,就会发生数据溢出错误。比如,让短整数型数据存放大于32767的数值,将会得到错误的结果。所以在选择数据类型时,除了要避免空间的浪费,又要防止数据的溢出。 可以做一个简单例程来测试一下数据的溢出,新建一个易程序,然后再窗口中添加2个编辑框组件和1个按钮组件,然后用鼠标双击按钮组件,在“_按钮1_被单击”的子程序中首先按下Ctrl+L键,新建一个变量,并定义变量名为“变量1”,变量类型为整数型,然后输入代码: 最后运行程序,在编辑框中输入一个很大的数(比如超过十位),然后点击按钮,如果超出整数型变量容纳范围而产生溢出,编辑框会显示出错误的结果。 2.3 特殊数据类型 2.3.1 了解特殊数据类型 易语言中提供的每一种内部组件都可以作为一种数据类型,比如:图片框iang、编辑框、按钮等等。这些数据类型具有组件的特征,如属性、方法等等都和组件完全相同,在程序中也可以当成一个组件来使用。例如:窗口中有一个画板组件“画板1”,程序中可以直接将该画板组件赋值给一个数据类型为“画板”的变量1,使用代码: 变量1=画板1 这样变量1就具有了画板的属性、方法。在程序中表示该变量的属性方法如下: 变量1.高度=100 变量1.宽度=200 2.3.3 动态添加组件 利用这些特殊的数据类型可以实现动态的向窗口中添加组件,使用“复制窗口组件()”命令。被复制的组件必须是窗口中已经存在的组件。例如:程序中添加了1个画板组件和一个按钮组件,当按钮被按下后就在窗口中添加一个画板组件,然后改变动态添加的画板组件的属性,该程序所用到的代码如下: 2.4 自定义数据类型 除了使用易语言提供的数据类型以外,还可以根据需要自定义新的数据类型。例如要定义一个数据类型“矩形”,定义方法如下: 第一步,新建一个易程序,在程序面板双击“自定义数据类型”。如图2-3所示。程序会自动切换到“自定义数据类型”界面。 第二步,在自定义数据类型界面按下Ctrl+N键,新建一个数据类型。然后将数据类型定义为“矩形”,由于决定一个矩形的位置取决于矩形左上点的横纵坐标和矩形右下点的横纵坐标。所以,在“成员名”上按4此回车,加入4个成员。将4个成员名分别定义为“左上横坐标”、“左上纵坐标”、“右下横坐标”、“右下纵坐标”。如图2-4所示。 最后,就要来使用这个自定义的数据类型了。画板有一个方法是“画矩形()”,下面就用自定义的数据类型“矩形”来为画矩形方法填写参数。在窗口中添加一个画板组件和一个按钮组件,双击按钮组件,在“_按钮1_被单击”子程序中新建一个变量,变量名为“矩形”,然后定义变量的数据类型为“矩形”然后输入代码: 代码输入后试运行程序,点击按钮,画板会以画板的边框大小画一个矩形。完整的程序参见随书光盘中的例程“画矩形.e”。 2.5 易语言运算符 编写代码时,除了大量的使用命令或对组件的属性或方法进行操作,运算符的使用也非常重要。程序中所有涉及的算术运算或关系比较运算等操作,都需要使用运算符。 易语言中提供了大量的运算符。例如赋值时使用的“=”号,就是赋值运算符,比较大小时使用的“>”、和“<”号,是关系运算符等等。如表2-2所示。 程序中的运算符都有其优先级别,在程序运行的时候会按照符号的优先级别,从高到低依次运行。运算符的优先级别参见表2-3易语言常用运算符的优先级。 本章将只介绍运算符和赋值运算符,其他的运算符将在以后各章中结合有关内容陆续介绍。 2.6 运算符与表达式 2.6.1 算术运算符和算术表达式 1.算术运算符 算术运算符上节表中已经介绍了。在程序中表示为: + 加法运算。如:3+2 - 减法运算或负值运算。如:10-2、-10 ×乘法运算。如:2×3 / 除法运算。如:20/3 \ 整除运算。如:12\5,运算后会将保留一个整数,小数部分将被舍去 % 余数运算。还可以输入“求余数”,第一个参数填被除数,第二个参数填除数,第二个参数可以重复添加。如:1220%100、1220%100%120 2.易语言算术表达式 用算术表达式和括号将运算对象连接起来的,符合易语言语法规则的式子,称易语言表达式。例如:下面是一个合法的易语言算术表达式: 变量1=((6×12+16÷8)-23)\10 表达式中运算的先后,是按照运算符的优先级别来进行判定的。 算式计算的结果可以被程序调用,例如:将上面算式的结果用信息框显示出来: 信息框(((6×12+16÷8)-23)\10,0,) 2.6.2 赋值运算符合赋值表达式 1.“=”是赋值运算符,在程序中给变量赋值或用代码改变组件属性大部分都是使用“=”进行赋值的,将等号后面的值赋值给等号前面的赋值对象。例如: 变量1=100 编辑框.高度=200 2.赋值表达式。一个正确的赋值表达式,一定要保证欲赋的值和被赋值的对象之间的数据类型相同,不同的数据类型要转换成相同的数据类型后再赋值。 3.赋值运算符“=”和关系运算符“=”的区别。虽然2个运算符使用的是相同的符号,单含义却不同,赋值运算符“=”是用于赋值,将“=”右边的值(或变量)赋值给“=”左边的变量(或组件属性、数组成员、自定义数据类型成员);关系运算符“=”,是比较符号两边的值是否相等,如果相等返回真,不相等返回假。例如: 上述代码中,条件语句“如果”中的“变量1=变量2”,是用关系运算符“=”进行比较,如果相等会返回“真”。不相等会返回“假”,如果返回“真”将会执行:标签1.标题=“相等”;如果返回“假”将会执行:标签1.标题=“不相等”,这2行给标签标题属性赋值的代码中,使用的就是赋值运算符“=”。 注:赋值表达式的形式固定为单一类似“xxx=xxx”的语句,其他任何形式下的“=”运算都为比较运算符。 2.7 本章小结 虽然大家有可能对数据类型不能一下子了解透彻,单需要将常用的数据类型记住,等后面的章节会讲得更多,大家就可以作进一步的了解了。 本章中的某些例程较为简单。人对数据类型的溢出测试只测试了一项,大家可以自由该程序中的数据类型,将内容赋值超过数据的范围,从而得到益处后的测试结果。大家也可以新建变量而设置完数据类型后不赋值,并用信息框显示出来,这样可以查看不不同数据类型的初始值。 大家还可以进行以下练习: 1.新建易程序,试着在窗曰中添加一些组件,然后分别在属性面板中和程序代码中改变组件的属性,查看属性修改后的效果。 2.学会新建变量和指定变量的数据类型。 3.试着给不同类型的变量赋值。 4.了解和使用易语言的运算符。使用易语言写几行表达式代码来解决常见的数学问题,作四则运算法的计算,注意使用括号将先要计算的内容括起来。 5.试动态在一个新建易程序中的窗口内添加组件,并显示出来。 |