31 lines
877 B
Ada
31 lines
877 B
Ada
with Ada.Text_IO;
|
|
|
|
procedure Value_Capture is
|
|
|
|
protected type Fun is -- declaration of the type of a protected object
|
|
entry Init(Index: Natural);
|
|
function Result return Natural;
|
|
private
|
|
N: Natural := 0;
|
|
end Fun;
|
|
|
|
protected body Fun is -- the implementation of a protected object
|
|
entry Init(Index: Natural) when N=0 is
|
|
begin -- after N has been set to a nonzero value, it cannot be changed any more
|
|
N := Index;
|
|
end Init;
|
|
function Result return Natural is (N*N);
|
|
end Fun;
|
|
|
|
A: array (1 .. 10) of Fun; -- an array holding 10 protected objects
|
|
|
|
begin
|
|
for I in A'Range loop -- initialize the protected objects
|
|
A(I).Init(I);
|
|
end loop;
|
|
|
|
for I in A'First .. A'Last-1 loop -- evaluate the functions, except for the last
|
|
Ada.Text_IO.Put(Integer'Image(A(I).Result));
|
|
end loop;
|
|
end Value_Capture;
|