Автор работы: Пользователь скрыл имя, 16 Сентября 2009 в 13:41, Не определен
Учебник по программированию
…..
begin
……
A(j);
……
end;
Если строго следовать правилу, согласно которому каждый идентификатор перед употреблением должен быть описан, то такую программную конструкцию использовать нельзя.
Для
того, чтобы такого рода вызовы стали
возможны, вводится опережающее
описание:
Procedure В (j : Byte); forward;
Procedure A (i : Byte) ;
Begin
…..
В (i);
…..
end;
Procedure В;
Begin
…..
A(j);
…..
end;
Как видим, опережающее описание заключается в том, что объявляется лишь заголовок процедуры В, а ее тело заменяется стандартной директивой FORWARD.
Теперь
в процедуре А можно использовать
обращение к процедуре В - ведь она
уже описана, точнее, известны ее формальные
параметры, и компилятор может правильным
образом организовать ее вызов. Обратите
внимание: тело процедуры В начинается
заголовком, в котором уже не указываются
описанные ранее формальные параметры.
8.7.
РАСШИРЕННЫЙ СИНТАКСИС
ВЫЗОВА ФУНКЦИЙ
В Турбо Паскале есть возможность вызывать функцию и не использовать то значение, которое она возвращает.
Иными словами, вызов функции может внешне выглядеть как вызов процедуры, например:
{$Х+} {Включаем расширенный синтаксис}
Function MyFunc(var x : Integer) : Integer;
begin
if x<0 then x:=0
else MyFunc := x+10
end; {MyFunc}
var
i : Integer;
begin {main}
i := 1;
i := 2*MyFunc(i)-100; {Стандартный вызов функции}
MyFunc(i) {Расширенный синтаксис вызова}
end. {main}
Расширенный синтаксис делает использование функций таким же свободным, как, например, их использование в языке Си, и придает Турбо Паскалю дополнительную гибкость.
С помощью расширенного синтаксиса нельзя вызывать стандартные функции. Компиляция с учетом расширенного синтаксиса включается активным состоянием опции EXTENDED SYNTAX диалогового окна OPTIONS/COMPILER (см. прил.1) или глобальной директивой компилятора {$Х+}.