Оператор ASSUME используется для вычисления арифметических значений величин, определенных на областях.
Случай вызова раздела в теле оператора ASSUME описан в п. 5.2.4.
Термами арифметического выражения в правой части соотношения могут быть величины, определенные на области, скаляры, арифметические константы, параметры области, обращения к функциям, индексы.
Неформально семантика оператора ASSUME определяется следующим образом. Рассмотрим соотношение, записанное в виде
область оператора ASSUME, | |
![]() |
индексы области D, |
![]() |
имена величин, определенных на области, |
![]() |
индексные выражения левой части, |
![]() |
индексные выражения правой части, |
F | функция, вычисляемая в правой части, |
Other | другие термы правой части. |
Каждое соотношение задает правило F вычисления значений величины из левой части по значениям величин
и термов Other из правой части:
Имя ASSUME, которое дано оператору, подчеркивает то обстоятельство, что он однозначно определяет правило для вычисления значений величины, но не требует немедленного выполнения вычисления в данном месте программы и не задает порядка или способа (параллельно, последовательно и т.п.) вычисления.
После ключевого слова FOR в операторе ASSUME могут быть указаны несколько областей, что позволяет сократить запись в случае вычисления одних и тех же формул на различных областях, например:
FOR Domain1; Domain2 ASSUME Z =1.Этот оператор эквивалентен последовательности операторов
FOR Domain1 ASSUME Z =1. FOR Domain2 ASSUME Z =1.Язык Норма является языком с одним присваиванием: переприсваивание значений величинам запрещено. Поэтому следующие операторы по определению являются некорректными:
FOR Matrix ASSUME X = Y; X = Z.Ограничение на вид индексов левой части соотношения (это индексы без смещений) не является принципиальным, так как область D из заголовка оператора позволяет описывать достаточно сложные соотношения. Пусть необходимо описать вычисление вида
Это можно сделать следующим образом:
Ox : ( ( I=1..N ) ; ( J=1..N ) ). OxII : Ox/ J=I+1.Как указано выше, в скалярное арифметическое выражение и в арифметическое выражение могут входить функции.