Построение стандарта STEP. Идеология EXPRESS. Функции (Function) и процедуры (Procedure). Элементы языка EXPRESS, страница 4

Выбор (Select)

Простые типы данных

INTEGER - целое число

REAL - вещественное число

При определении переменных этого типа допускается указывать максимальное число десятичных знаков в мантиссе числа допустимых для этой переменной.

Пример:

a : REAL(3) := 1.23E0;

b : REAL(5) := 1.2300E0;

LOGICAL - логический тип данных

Переменная этого типа может принимать одно из трех возможных значений - [FALSE < UNKNOWN < TRUE] ( ложь < неизвестно <

истина). Для данных этого типа определены следующие операции:

NOT, AND, OR

A

B

NOT A

A AND B

A OR B

TRUE

TRUE

FALSE

TRUE

TRUE

TRUE

UNKNOWN

UNKNOWN

TRUE

TRUE

FALSE

FALSE

TRUE

UNKNOWN

TRUE

UNKNOWN

UNKNOWN

TRUE

UNKNOWN

UNKNOWN

UNKNOWN

UNKNOWN

UNKNOWN

FALSE

FALSE

UNKNOWN

FALSE

TRUE

FALSE

FALSE

TRUE

FALSE

UNKNOWN

FALSE

UNKNOWN

FALSE

FALSE

FALSE

FALSE

BOOLEAN - Булев тип данных

Переменная этого типа может принимать одно из двух возможных значений - [FALSE < TRUE] (< истина). Для данных этого типа определены те - же операции, что и для LOGICAL.

BINARY - двоичные данные

Переменная этого типа содержит последовательность бит. Количество бит может быть ограничено сверху и быть фиксированным.

Формат:

binary_type = BINARY [ (width) [ FIXED ] ]

где

width - максимальное число бит в переменной (необязат.)

FIXED - флаг фиксированной длинны равной width.

STRING - строка

Переменная этого типа содержит последовательность символов. Количество символов может быть ограничено сверху и быть фиксированным.

Формат:

string_type = STRING [ (width) [ FIXED ] ]

где

width - максимальное число символов в переменной (необязат.)

FIXED - флаг фиксированной длинны равной width.

Агрегатные (Aggregation) типы данных

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

Ограничение на количество хранящихся элементов

Запрет на наличие повторяющихся элементов

Запрет на наличие необязательных элементов

В зависимости от комбинаций этих ограничений выделяется четыре агрегатных типа данных: ARRAY, BAG, LIST и SET.

ARRAY - массив элементов

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

Формат:

array_var = ARRAY ‘[‘ low : high ‘]’ OF [OPTIONAL] [UNIQUE] type

где

low - нижняя границ индекса массива

high - верхняя граница индекса массива

type - тип элементов массива

OPTIONAL - допускаются пустые (необязательные) значения

UNIQUE - не допускаются повторяющиеся элементы

Примеры:

sectors : ARRAY [0:5] OF REAL;

a : ARRAY [0:3] OF ARRAY [1:17] OF OPTIONAL INTEGER

BAG - набор элементов

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

Формат:

bag_var = BAG ‘[‘ low : high ‘]’ OF base_type где

low - нижняя границ индекса массива

high - верхняя граница индекса массива (если знак ‘ ? ’ то может быть любое число элементов

base_type - тип элементов массива

Примеры:

a : BAG [0:?] OF REAL;

b : ARRAY [0:3] OF BAG [1:17] OF INTEGER

LIST - список элементов

Может содержать как строго фиксированное, так и произвольное число элементов. Имеется возможность запретить наличие повторяющихся элементов.

Формат:

list_var = LIST ‘[‘ low : high ‘]’ OF [UNIQUE] base_type где

low - нижняя границ индекса массива

high - верхняя граница индекса массива (если знак ‘ ? ’ то может быть любое число элементов

base_type - тип элементов массива

UNIQUE - не допускаются повторяющиеся элементы

Примеры:

a : LIST [0:?] OF REAL;

b : LIST [0:3] OF UNIQUE BAG [1:17] OF INTEGER

SET - множество элементов

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

Формат:

set_var = SET ‘[‘ low : high ‘]’ OF base_type где