0.5 数据类型及其运算
数据是操作的对象,操作的结果会改变数据的状况。作为程序设计人员,必须认真考虑和设计数据结构及操作步骤(即算法)。与其他基于文本模式的编程语言一样,LabVIEW的程序设计中也要涉及常量、变量、函数的概念以及各种数据类型,这些是用LabVIEW进行程序设计的基础,也是构建LabVIEW应用程序的基石。
LabVIEW的数据类型按其功能可以分为两类,即常量和变量。变量又分为控件类变量和指示器类变量;按其特征又可分为两大类,即数字量类型和非数字量类型,并用不同的图标来代表不同的数据类型。原则上数据是在相同数据类型的变量之间进行交换的,但LabVIEW同时拥有自己的数据类型转换机制,这也提供了一种程序的容错机制。
在LabVIEW中,各种不同的数据类型,其变量的图标边框的颜色不同,因而,从图标边框的颜色可以分辨其数据类型。
0.5.1数据类型
1.常用的数据类型
常用的数据类型有以下几类。
(1)数值数据类型:分为整型、浮点型和无符号型等。
(2)布尔数据类型:LabVIEW使用8 位(一个字节)的数值来存储布尔数据。如果数值为0,布尔数据为假(False),其他非0数值代表真(True)。
(3)数组数据类型:LabVIEW中,数组的概念是一组相同数据类型数据的集合。
(4)字符串数据类型:LabVIEW以单字节整数的一维数组来存储字符串数据。
(5)路径数据类型:LabVIEW以句柄或指针(包含路径类型及路径成员的数量和路径成员)来存储数据类型。
(6)簇数据类型:和数组不同的是,LabVIEW中簇可以用来存储不同数据类型的数据。根据簇中成员的顺序,使用相应的数据类型来存储不同的成员。
(7)参考数据类型:LabVIEW使用参考来作为某一对象的唯一标识符,对象可以是文件、设备和网络连接等。由于参考是指向某一对象的临时指针,因此它仅在对象被打开时有效,一旦对象被关闭,LabVIEW就断开了与参考对象的连接。
(8)波形数据类型:用来存储波形数据的一种数据类型。
(9)I/O通道号数据类型:用来表示DAQ设备的I/O通道名称。
(10)多义数据类型:指一个变量可以连接不同的数据类型。例如,对于LabVIEW内置的加法函数,其输入端口可以同时连接整型数据,也可以同时连接浮点型数据。大多数LabVIEW函数都提供多义数据接口。
(11)变体数据类型:这种数据类型可以和以下的LabVIEW数据类型相互转换:所有的数字类型包括有符号和无符号的整数或浮点数、布尔数据类型、字符串数据类型、参考数据类型,以及上述数据类型的数组和簇。
(12)动态数据类型:LabVIEW 8.0以上版本支持一种新的数据类型——动态数据类型,这种类型的数据在应用时不必具体指定其数据类型,在程序运行过程中,根据需要,对象被动态赋予各种数据类型。
2.常量
LabVIEW设置了以下两类常量:
(1)通用常量。例如,圆周率π、自然对数e等,如图0-25所示,这些常数位于函数选板中数学与科学常量子选板中。
图0-25 数学与科学常量子选板
(2)用户定义常量。LabVIEW函数选板中有各种常用数据类型的常量,用户可以在编写程序时为它赋值。例如,数值常量位于数值子选板中,它的默认值是32 位整型数0,用户可以给它定义任意类型的数值,程序运行时就保持这个值。
0.5.2数据运算
1.基本数学运算
LabVIEW中的数学运算主要是由函数选板中数值子选板(如图0-26所示)中的节点完成的。
图0-26 数值子选板
数值子选板由基本数学运算节点、类型转换节点、复数节点和附加常数节点组成。
基本数学运算节点主要实现加、减、乘、除等基本运算。基本数学运算节点支持数值量输入。与一般编程语言提供的运算符相比,LabVIEW中数学运算节点功能更强,使用更灵活,它不仅支持单一的数值量输入,还可支持处理不同类型的复合型数值量,如由数值量构成的数组、簇和簇数组等。
2.比较运算
比较运算也就是通常所说的关系运算,比较运算节点包含在函数选板比较子选板中,如图0-27所示。
图0-27 比较子选板
在LabVIEW中,可以进行以下几种类型的比较:数字值的比较、布尔值的比较、字符串的比较,以及簇的比较。
1)数字值的比较
比较节点在比较两个数字值时,会先将其转换为同一类型的数字。当一个数字值和一个非数字值相比较时,比较节点将返回一个表示两者不相等的值。
2)布尔值的比较
两个布尔值相比较时,真(Ture)值比假(False)值大。
3)字符串的比较
字符串的比较是按照字符在ASCII表中的等价数字值进行比较的。例如,字符a(在ASCII表中的值为97)大于字符A(在ASCII表中的值为65);字符A大于字符O(48)。当两个字符串进行比较时,比较节点会从这两个字符串的第一个字符开始逐个比较,直至有两个字符不相等为止,并按照这两个字符输出比较结果。
例如,比较字符串abcd和字符串abef,比较会在c停止,而字符c小于字符e,所以字符串abcd小于字符串abef。当一个字符串中存在某一个字符,而在另一个字符串中这个字符不存在时,前一个字符串大。例如,字符串abcd大于字符串abc。
4)簇的比较
簇的比较与字符串的比较类似,比较时,从簇的第0 个元素开始,直至有一个元素不相等为止。簇中元素的个数必须相同,元素的数据类型和顺序也必须相同。
3.逻辑运算
传统编程语言使用逻辑运算符将关系表达式或逻辑量连接起来,形成逻辑表达式,逻辑运算符包括与、或、非等。在LabVIEW中这些逻辑运算符是以图标的形式出现的。逻辑运算节点包含在函数选板布尔子选板中,如图0-28所示。逻辑运算节点的图标与集成电路常用逻辑符号一致,可以使用户方便地使用这些节点而无须重新记忆。
图0-28 布尔子选板