8. Модули
51
*
на всички описани в частта за описание процедури и функции трябва да бъде
дадена реализацията. Описанията в interface частта се разглеждат от
компилатора като изпреварващи (forward) описания;
*
всички глобални променливи на модула, описани както в interface, така и в
implementation частите, съществуват през цялото време на работа на
програмата или на модула, използващ този модул;
*
тялото на модула (операторите между BEGIN и END в implementation частта
на модула), се изпълнява преди изпълнението на първия оператор от
използващия го модул и играе роля на инициализираща част;
*
ако бъде използван етикетът EXIT в тялото на модула, то по време на
инициализацията на модула се изпълняват всички оператори преди този
етикет, но не и тези след него. При завършване на работата на модула или
програмата, използващи този модул, управлението се предава на
етикетирания с EXIT оператор. По този начин може да се предприемат
необходимите действия по завършване работата на този модул (затваряне
на файлове и други такива).
implementation unit STACK;
const StackSize = 100;
type StackIndex = 0..StackSize;
var index: StackIndex;
IsFull,
IsEmpty: boolean;
StackArray: array [StackIndex] of integer;
procedure push(x: integer);
begin
if not IsFull then begin
StackArray[index]:= x;
inc(index);
end { if };
IsFull:= StackSize <= index;
IsEmpty:= false;
end { push };
function pull: integer;
begin
if not IsEmpty then begin
dec(index);
pull:= StackArray[index];
end { if };
IsEmpty:= index = 0;
IsFull:= false;
end { pull };
function full: boolean;
begin
return(IsFull);
end { full };
function empty: boolean;
begin
return(IsEmpty);
end { empty };
<<  <  GO  >  >>

Вернуться к началу сайта