Описание переменной массива чисел, передаваемой
Описание переменной массива чисел, передаваемой как параметр To для процедуры For_Each, и описание функции, ссылка на которую могла бы быть использовна как параметр F процедуры For_Each, могут иметь следующий вид:
Data_Vector : Vector (1..3) := (1.0, 2.0, 3.0);
function Square(Val: in Float) return Float is
begin
return Val * Val; end Square;
|
Таким образом, вызов процедуры For_Each (с учетом приведенных ранее описаний) будет иметь вид:
For_Each( F => Square'Access, To => Data_Vector );
|
Примечательно, что для получения ссылочного значения которое указывает на функцию Square используется атрибут
'Access.
Ссылочные типы для подпрограмм могут быть использованы для построения таблиц вызова подпрограмм. Рассмотрим следующий схематический пример:
type Action_Operation is access procedure;
procedure Add; procedure List; procedure Delete;
Action : constant array (1..3) of Action_Operation := ( Add'Access, List'Access, Delete'Access
);
type Math_Function is access function (I : in Float) return Float;
function Sin (F : in Float) return Float; function Cos (F : in Float) return Float; function Tan (F : in Float) return Float;
Math_Operation : constant array (1..3) of Math_Function := ( Sin'Access, Cos'Access, Tan'Access
);
|
Здесь формируются две таблицы вызовов подпрограмм: первая таблица вызовов представлена массивом Action, который содержит значения ссылочного типа Action_Operation, а вторая таблица вызовов представлена массивом Math_Operation, который содержит значения ссылочного типа Math_Function
(заметим, что таблицами вызовов, как правило, являются массивы).
Примером вызова I-той подпрограммы в таблице (где I - это индекс в таблице) может служить следующее:
F: Float; . . .
Action(I).all; -- вызов I-той процедуры из таблицы -- Action F := Math_Operation(I)(F); -- вызов I-той функции из таблицы -- Math_Operation с параметром F
|
Напомним, что для ссылочных значений, которые указывают на подпрограммы без параметров, при вызове подпрограммы требуется использование .
all.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий