ВУЗ:
Составители:
Рубрика:
8
Такой цикл мог бы быть выполнен для всего набора, например чтобы
напечатать все элементы набора. Или мог бы искать некоторый элемент,
который удовлетворяет определенному условию, и в этом случае такой
цикл может закончиться, как только будет найден требуемый элемент.
Мы будем рассматривать итераторы как специальные процедуры
группы, позволяющие выполнять некоторые
действия для всех объектов,
включенных в группу. Примером итератора является метод GroupShow.
Нам бы хотелось иметь такой итератор, который позволял бы выпол-
нять над всеми элементами группы действия заданные произвольной про-
цедурой или функцией пользователя. Такой итератор можно реализовать,
если эту процедуру (функцию) передавать ему через параметр процедур-
ного типа.
Type TProc=procedure(p:PObject);
Процедура-итератор может объявляться таким образом:
Procedure GroupIter(group:TGroup;proc:TProc);
Передаваемая итератору процедура (функция) должна быть отком-
пилирована с атрибутом far.
Procedure MyProc(p:PObject);far;
Итератор можно сделать более удобным, если передавать ему указа-
тель на процедуру:
Procedure GroupIter(group:TGroup;proc : pointer);
•Процедурные типы. В стандартном Паскале процедуры и функции
рассматриваются только как части программы, которые можно выполнять
с помощью
вызова процедуры или функции. В Borland Pascal процедуры и
функции трактуются гораздо шире: здесь допускается интерпретация про-
цедур и функций, как объектов, которые можно присваивать переменным
и передавать в качестве параметров. Такие действия можно выполнять с
помощью процедурных типов.
В описании процедурного типа задаются параметры, а для функции –
еще и результат функции.
Формат
описания процедурного типа:
procedure <список формальных параметров>
или
function <список формальных параметров>:тип результата
Характерно, что синтаксис записи процедурного типа в точности
совпадает с записью заголовка процедуры или функции, только опускается
идентификатор после ключевого слова procedure или function. Приведем
некоторые примеры описаний процедурного типа:
8 Такой цикл мог бы быть выполнен для всего набора, например чтобы напечатать все элементы набора. Или мог бы искать некоторый элемент, который удовлетворяет определенному условию, и в этом случае такой цикл может закончиться, как только будет найден требуемый элемент. Мы будем рассматривать итераторы как специальные процедуры группы, позволяющие выполнять некоторые действия для всех объектов, включенных в группу. Примером итератора является метод GroupShow. Нам бы хотелось иметь такой итератор, который позволял бы выпол- нять над всеми элементами группы действия заданные произвольной про- цедурой или функцией пользователя. Такой итератор можно реализовать, если эту процедуру (функцию) передавать ему через параметр процедур- ного типа. Type TProc=procedure(p:PObject); Процедура-итератор может объявляться таким образом: Procedure GroupIter(group:TGroup;proc:TProc); Передаваемая итератору процедура (функция) должна быть отком- пилирована с атрибутом far. Procedure MyProc(p:PObject);far; Итератор можно сделать более удобным, если передавать ему указа- тель на процедуру: Procedure GroupIter(group:TGroup;proc : pointer); •Процедурные типы. В стандартном Паскале процедуры и функции рассматриваются только как части программы, которые можно выполнять с помощью вызова процедуры или функции. В Borland Pascal процедуры и функции трактуются гораздо шире: здесь допускается интерпретация про- цедур и функций, как объектов, которые можно присваивать переменным и передавать в качестве параметров. Такие действия можно выполнять с помощью процедурных типов. В описании процедурного типа задаются параметры, а для функции – еще и результат функции. Формат описания процедурного типа: procedure <список формальных параметров> или function <список формальных параметров>:тип результата Характерно, что синтаксис записи процедурного типа в точности совпадает с записью заголовка процедуры или функции, только опускается идентификатор после ключевого слова procedure или function. Приведем некоторые примеры описаний процедурного типа:
Страницы
- « первая
- ‹ предыдущая
- …
- 5
- 6
- 7
- 8
- 9
- …
- следующая ›
- последняя »