50
7.3. Формальные параметры
зарезервированного слова VAR. В качестве примера рассмотрим программу,
печатающую заданную ей строку. При том строка печатается заключенной в кавычках
и вместо каждой содержащейся в ней кавычки печатаются две кавычки (как строка
задается в тексте программы на Pascal-е):
procedure write_quote(const s: string);
var i: integer;
begin
write("'");
for i:= 1 to length(s) do begin
write(s[i]); if s[i] = "'" then write("'");
end { for };
write("'");
end { write_quote };
Эту процедуру можно вызвать с фактическим параметром, представляющим
собою переменную типа STRING или симольную константу. Если вместо CONST
напишем VAR, фактическим параметром может быть только переменная типа STRING.
Если удалим слово CONST, ее фактическим параметром может быть и константа, но за
счет времени и памяти.
7.3.4. Формальные нетипизированные параметры
Нетипизированные параметры (переменные и константы) в UniPascal-е являются
расширением ISO Pascal-я. Они передаются всегда по адресу. Когда тип формальных
параметров не указан в их декларации, соответствующим фактическим параметром
может быть любое имя переменной, независимо от ее типа.
Например, если дано описание:
function Equal(var Source, Dest; Size: Cardinal): boolean;
const MaxInt = Max(Integer);
type Bytes = packed array [0..MaxInt] of byte;
var N: Cardinal;
begin N:= 0;
while (N < Size) and
( Bytes(Dest)[N] = Bytes(Source)[N]) do
inc(N);
Equal:= N = Size;
end; { Equal }
эту функцию можно применять для сравнения любых переменных любой длины.
Если даны описания:
type Vector = array [1..10] of integer;
 Point = record
 x, y: integer;
 end;
var v1, v2: Vector;
p:
point;
i:
integer;
то можно записать:
<<  <  GO  >  >>

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