Ада-95. Компилятор GNAT

       

Инструкция присваивания


Инструкция присваивания используется в Аде для установки и изменения значений переменных. Она использует операцию присваивания, и в общем случае имеет следующий вид:

result := expression;

Операция присваивания ":=" разделяет инструкцию присваивания на левую и правую части (между символами двоеточия и знак равенства, пробелы - не допустимы!).

В левой части записывается имя переменной (result) содержимому которой будет производится присваивание нового значения. Следует заметить, что в левой части может распологаться имя только одной переменной.

В правой части записывается выражение (expression) результат вычисления которого становится новым значением переменной result.

Выражение expression, расположенное в правой части, может быть одиночной переменной или константой, может содержать переменные, константы, знаки операций и вызовы функций. Тип переменной определяемой как result должен быть совместим по присваиванию с типом результата вычисления выражения expression.

Выполнение присваивания разделяется на несколько действий.

Сначала производится вычисление имени переменной result

и результата выражения expression

(порядок следования этих действий не регламентирован стандартом языка).

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

подтипу переменной.

Если проверка успешна, то значение результата вычисления выражения expression становится новым значением содержимого переменной result. При этом старое значение содержимого result - теряется.

Иначе, в случае какой-либо неудачи, возбуждается исключение ошибки ограничения или, проще говоря, - ошибка, а значение переменной result остается без изменений.

Приведем несколько примеров инструкций присваивания:

A := B + C X := Y

Следует заметить, что в Аде, в результате выполнения присваивания производится изменение только содержимого result

(значение содержимого переменной указанной в левой части).

Необходимо также подчеркнуть, что операция присваивания в Аде, в отличие от языков C/C++, не возвращает значение и не обладает побочными эффектами. Кроме того, напомним, что операция присваивания, в Аде, не допускает совмещение, переименование и использование псевдонимов, а также она запрещена для лимитированных типов.



Содержание раздела