Персональная страничка
Диканева Тараса
Викторовича

Главная \ Преподавательское \ Программирование для начинающих

11. Процедуры и функции

Предыдущий раздел:

Следующий раздел:

11.10. Процедурные типы

Значением переменной процедурного типа является целая процедура или функция. Например, в ситуации, когда нужно многократно повторять действия, совпадающие с точностью до замены какого-то выражения или небольшого набора операторов, это выражение или набор операторов можно передать в процедуру в качестве параметра процедурного типа.

Для объявления процедурного типа используется заголовок процедуры или функции без указания имени. Например:

  type
    TProc1 = procedure (a, b, c: real; var d: real);
    TProc2 = procedure (var a, b: array of integer);
    TProc3 = procedure; {Процедура без параметров}
    TFunc1 = function: real; {Функция без параметров}
    TFunc2 = function (var x:array of integer): integer;
  var
    Proc1: TProc1;
    Proc2: TProc2;
    Proc3: TProc3;
    Func1: TFunc1;
    Func2: TFunc2;

Если в программе описаны процедуры или функции с подходящим видом заголовка, то их можно присваивать переменным процедурного типа. Например, если есть функция с заголовком

  function ArraySum(var a: array of integer):integer;

вычисляющая сумму элементов массива, то в программе допустимо присваивание:

  Func2:=ArraySum;

После такого присваивания инструкция

  s:=Func2(x);

запишет в переменную s сумму элементов массива x (фактически будет вызвана функция ArraySum).

Следующий раздел:

Предыдущий раздел:

3 комментария

  1. Игорёк

    Т.е Можно выполнить процедуру и присвоить её значение какой-либо переменной ? Немного не понятно для чего это

  2. Taras

    При присваивании

    Func2:=ArraySum;

    сама процедура не выполняется. По сути, в этот момент мы просто даем процедуре еще одно имя, по которому ее можно вызвать. Пример использования есть в следующем разделе.

  3. KPEDITmte

    Надежный кредит: 8(495)769-53-05 Игорь (Москва)

Добавить комментарий