Определен не верно , так как это параметр –значения

Обычно не типизированные параметры используются при работе с областями памяти.

Примеры использования: процедуры сравнения областей памяти разного размера.

Type

Vector = array [1..5]of integer;

Point= record

X,y:integer;

End;

Const

Vec1:vector = (1,2,3,4,5);

Vec2:vector = (1,2,3,1,2);

P:point = (x:1;y:1);

Var

N:integer;

{$R-}

Function egual (var s,d,size:word):Boolean;

Type

Integers = array [0..1] of integer;

Var

N:integer;

Begin

N:=0;

While (n<> size) and (integers(d)[n]=integers (s)[d]) do

Inc (n);

Egual=n=size;

End;

Begin

N:=10;

Writeln(egual (vec1,vec2,size of (vector)));

Writeln (egual (vec1,vec2,3));

Writeln(egual (vec1,vec2, size of (integer)*n));

Writeln(egual (vec1,vec2[4],2));

Writeln(egual (vec1,p,2));

End.

Пример: Инициализации переменных, при этом вместе со значением в качестве параметра передается функция

Type

Type = (tbyte,tword,tchar);

Procedure init (var x,t:type; v:word);

Begin

Case t of

Tbyte:byte (x):=v;

Tword:word(x):=v;

Tchar:char (x):=v;

End;

Часто не типизированный параметр используется при работ со стандартными процедурами, например:

Move

BlockWrite

BlockRead

FillChar

FillChar (var V,nbyte:word;z:byte [char]);

Данная процедура заполняет участок памяти, на первый элемент который указывает параметр V, размер передается второму параметру. Третий параметр указывает значение, которое будет помещено в память.

Пример.

Var

S:string[7];

….

Fillchar(s, size of (s), ‘a’);

S[]|___________________________________

Множества и перечислимые типы не рекомендованы, передача через не типизированные параметры, так как они имеют особое машинное представление.

Опережающее описание подпрограмм.

Так как текст программ транслируется в выполнимый код последовательно с верху в низ (в визуальном восприятии пользователя), то типизированные – переменные, константы, подпрограммы должны описываться до того, как будут использоваться. В противном случае компилятор считается не определенным имя неизвестным и приходится перемещаться вверх по тексту, объявляя неизвестные компилятору данные. Однако в случае с подпрограммами этого можно избежать, используя опережающее описание подпрограмм применяя директиву Forward.

Синтаксис описания

Procedure P1; Forward;

Function f1 (x:byte):char; Forward;

……

Procedure p1;

Begin

……

End;

Function f1;

Begin

……..

End;

Указание директивы Forward говорит о том, что описание процедур или функций откладывается на потом, при чем при описании реализации функций или процедур, определяется ранее с директивой Forward; списанные параметры можно не указывать. Очень часто директива Forward; используется в случае взаимных обращений подпрограмм друг к другу

Пример

Procedure P1 (y:type x y);forward;

Procedure P2 (x: type x y);

Begin

P1 (p);

….

End;

Procedure P1;

Begin

P2(q);

….

End;

В данном случае не обходимо осуществлять конкретный выход из выполнения подпрограмм, чтобы не было зацикливание вызовов переполнение стека локальными переменными и параметрами.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: