首页 历史故事深入了解复杂数据类型

深入了解复杂数据类型

【摘要】:通过组合基本数据类型构成复杂数据类型,这对于组织复杂数据十分有用。复杂数据类型如表3-5所示,包括以下几种:表3-5 复杂数据类型说明1)DTL。表3-6 DTL举例DT变量的结构由若干元素构成,各元素可以有不同的数据类型和取值范围。指定值的数据类型必须与相应元素的数据类型相匹配。表3-9 字符串举例3.数组ARRAY数据类型表示由固定数目的同一数据类型的元素组成的域。关于复杂数据类型的使用将在后面的6.4节中详细介绍。

通过组合基本数据类型构成复杂数据类型,这对于组织复杂数据十分有用。用户可以生成适合特定任务的数据类型,将基本的、逻辑上有关联的信息单元组合成一个拥有自己名称的“新”单元,如电动机的数据记录,将其描述为一个属性(性能,状态)记录,包括速度给定值、速度实际值、启停状态等各种信息。另外,通过复杂数据类型可以使复杂数据在块调用中作为一个单元被传递,即在一个参数中传递到被调用块,符合结构化编程的思想。这种方式使众多基本信息单元高效而简洁地在主调用块和被调用块之间传递,同时保证了已编制程序的高度可重复性和稳定性。

复杂数据类型如表3-5所示,包括以下几种:

表3-5 复杂数据类型说明

978-7-111-34922-8-Chapter03-20.jpg

1)DTL。

2)字符串(STRING)。它是最多有254个字符(CHAR)的一维数组

3)数组(ARRAY)。它将一组同一类型的数据组合在一起,形成一个单元。

4)结构(STRUCT)。它将一组不同类型的数据组合在一起,形成一个单元。

1.DTL数据类型

DTL(长格式日期和时间)数据类型是一种12 B的结构,以预定义的结构保存日期和时间信息,如表3-6所示。可以在块的临时存储器中或者在数据块中定义DTL。

表3-6 DTL举例

978-7-111-34922-8-Chapter03-21.jpg

DT变量的结构由若干元素构成,各元素可以有不同的数据类型和取值范围。指定值的数据类型必须与相应元素的数据类型相匹配。表3-7给出了DTL变量的结构元素及其属性。

表3-7 DTL结构

978-7-111-34922-8-Chapter03-22.jpg

2.字符串

STRING数据类型的变量将多个字符保存在一个字符串中,该字符串最多由254个字符组成。每个变量的字符串最大长度可由方括号中的关键字STRING指定(如:STRING[4])。如果省略了最大长度信息,则为相应的变量设置254个字符的标准长度。在内存中,STRING数据类型的变量比指定最大长度多占用两个字节,如表3-8所示。

表3-8 STRING变量的属性

978-7-111-34922-8-Chapter03-23.jpg

可为STRING数据类型的变量分配字符。字符在单引号中指定。如果指定字符串的实际长度小于声明的最大长度,则剩余的字符空间留空。在值处理过程中仅考虑已占用的字符空间。

表3-9所示实例定义了一个最大字符数为10而当前字符数为3的字符串,这表示该STRING当前包含3个单字节字符,但可以扩展到包含最多10个单字节字符。

表3-9 字符串举例

978-7-111-34922-8-Chapter03-24.jpg

3.数组

ARRAY数据类型表示由固定数目的同一数据类型的元素组成的域。所有基本数据类型的元素都可以组合在ARRAY变量中。ARRAY元素的范围信息显示在关键字ARRAY后面的方括号中。范围的下限值必须小于或等于上限值,如表3-10所示。

表3-10 数组的属性

978-7-111-34922-8-Chapter03-25.jpg

表3-11所示例子说明了如何声明一维ARRAY变量。

表3-11 数组举例

978-7-111-34922-8-Chapter03-26.jpg

访问ARRAY中的元素可通过下标访问来进行。第一个ARRAY元素的下标为[1],第二个元素的下标为[2],第三个元素的下标为[3]。在本例中要访问第二个ARRAY元素的值,需要在程序中指定“OP_Temp[2]”。

变量“Op_Temp”也可声明为ARRAY[-1..1]of INT,则第一个ARRAY元素的下标为[-1],第二个元素的下标为[0],第三个元素的下标为[1]。例如,“#My_Bits[3]”表示引用数组“My_Bits”的第3位,“#My_Data[-2]”表示引用数组“My_Data”的第4个SINT元素。注意“#”符号由程序编辑器自动插入。

4.结构

STRUCT数据类型的变量将值保存在一个由固定数目的元素组成的结构中。不同的结构元素可具有不同的数据类型。注意:不能在STRUCT变量中嵌套结构。STRUCT变量始终以具有偶地址的一个字节开始,并占用直到下一个字限制的内存。

关于复杂数据类型的使用将在后面的6.4节中详细介绍。