ГОСТ Р И С 0 10303-11 — 2009
12.6.1 Индексирование агрегированных структур
Оператор индексирования агрегированных структур принимаетдва операнда - индексируемую агре
гированную структуру и спецификацию индексов, а резупьтатом является единственный элемент изагреги
рованной структуры. Типом данных выбранного элемента является базисный тип данных индексируемой
агрегированной структуры.
Синтаксис:
239 index_qualifier = ’[’index_1 ( ’
’ index_2 J *]’-
237 index 1 = index .
236 index = numeric_expression.
238 index_2 = index .
Правила и ограничения:
a) Параметр index_2 не должен присутствовать за исключением случая, когда должен быть проин
дексирован единственный элемент изагрегированной структуры.
b
) Параметр index_1 должен быть представлен целым числом
c) Должно выполняться условие LOINOEX (агрегированное значение) £index_l£HIINDEX (агре
гированное значение), в противном случае будет возвращено неопределенное (?) значение.
d) Если типом агрегированной структуры является ARRAY или LIST, то результатом будет элемент
агрегированной структуры, расположенный на позиции, указанной параметром index_1.
e) Если типом агрегированной структуры является BAG или SET. то для каждого значения
параметра index_1,находящегося в диапазоне от LOINDEX (агрегированное значение) до
HIINDEX (агрегированное значение), результатом должны быть разные элементы агрегированной
структуры.
0 При повторном применении данного оператора ктой же агрегированной структуре с тем же значе
нием index_1 результатом должен стать тот же элемент, если только агрегированная структура не была
модифицирована. Если агрегированная структура была модифицирована, то для агрегированных типов
данных BAG или SET результат повторного применения данного оператора к модифицированной
агрегиро ванной структуре непредсказуем.
д)Если indox_1 или index_2 имеет неопределенное (?) значение, то результатом также будет
неопределенное (?) значение.
h) Если индексируемое выражение имеет неопределенное (?) значение, то результатом также
будет неопределенное (?) значение.
Пример — Применение оператора индексирования к пакетам и наборам может быть использо
вано для итерационного обращения ко всем значениям в данной агрегированной структуре.
FUNCTION set„product(a_set : SET OF INTEGER): INTEGER:
LOCAL
result: INTEGER :=1;
ENDLOCAL;
REPEAT index := LOINDEX(a set) TO HIINDEX(a_set):
result := result * a_set(index];
ENDREPEAT;
RETURN (result):
END_FUNCTION:
После выхода из оператора REPEAT переменная result будет содержать произведение всех целых
чисел из агрегированной структуры a_set.
12.6.2 Оператор пересечения
Оператор пересечения (*) принимает два операнда агрегированного типаданных и выдает результат
также агрегированного типа данных. Допустимые типы данных операндов и соответствующие им типы
данных результата приведены в таблице 16. Результирующая агрегированная структура является неявно
объявленной агрегированной структурой с типом данных, соответствующим таблице 16. и с границами
[0.. ?]. Базисные типы данных операндовдолжны быть совместимыми (см. 12.11). Если пересечение двух
операндов не содержит элементов, то размер значения результирующей агрегированной структуры дол
жен быть нулевым.
Если одним из операндов является набор, то результатдолжен быть набором, содержащим все эле
менты. присутствующие вобоих операндах.
81