Структуры Техно ST

В отличие от массива, структура – это совокупность объектов, имеющих различный тип.

Для создания структур нужно вначале с помощью табличных редакторов определить структурные типы, а также переменные, аргументы и функции, которые являются членами этих структурных типов.

Для справки: во внутреннем представлении языка Техно ST определение структурного типа задается следующей конструкцией:

type

{имя_структурного_типа} : STRUCT

//определения переменных

//членов структуры

//(см. "Операторы определения

//переменных")

//определения функций

//членов структуры

//(см. "Пользовательские функции

//Техно ST")

end_struct;

end_type

Параметр {имя_структурного_типа}, а также переменные и функции – члены структурного типа – задаются с помощью табличных редакторов.

Определив структурный тип, можно определять конкретные структуры данного типа (объекты). Такими объектами могут быть переменные или функции.

Объекты создаются с помощью табличных редакторов. Для этого в основной программе или ее компоненте создается переменная (функция) типа {имя_структурного_типа}.

Для обращения к элементам объекта используется так называемое уточненное имя:

{имя объекта}.{имя элемента}

В уточненном имени не поддерживается адресация к элементу массива объекта.

Пример

Пусть в программе создан структурный тип с именем myType, членами которого являются следующие переменные и функция:

mvar1: REAL:=3.14;

mvar2: STRING := "OK";

FUNCTION SecondDegree: LREAL

VAR_ARG xx: REAL; END_VAR

RETURN xx**2;

END_FUNCTION

Создание и использование объекта типа myType иллюстрирует следующий код:

PROGRAM

VAR

d: LREAL;

myS : myType; //объект myS типа myType

END_VAR

d=myS.SecondDegree(25);//возвращает 625

d=myS.mvar1;    //возвращает 3.14

//изменение значения mvar1 объекта myS

myS.mvar1 = 10;

END_PROGRAM

Таким образом, структурный тип является только шаблоном структур. С именем типа не связан никакой конкретный объект, поэтому это имя нельзя использовать, например, для формирования уточненного имени элемента:

//ошибочная конструкция

myType.mvar1