Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на языке Delphi_1.doc
Скачиваний:
43
Добавлен:
28.03.2015
Размер:
710.14 Кб
Скачать
      1. 2.7.7. Процедурные типы данных

Наряду с уже известными типами данных в языке Delphi введен так называемый процедурный тип, с помощью которого обычные процедуры и функции можно интерпретировать как некоторую разновидность переменных. Определение процедурного типа состоит из зарезервированного слова procedure или function, за которым следует полное описание параметров. Для функции дополнительно указывается тип результата. Символические имена параметров никакой роли не играют, поскольку нигде не используются.

type

TProc = procedure (X, Y: Integer);

TFunc = function (X, Y: Integer): Boolean;

Определив процедурный тип, можно непосредственно перейти к так называемым процедурным переменным. Они объявляются точно так же, как и обычные переменные.

var

P: TProc;

F: TFunc;

Можно так же описать процедурную переменную без предварительного описания типа.

function Calc(X,Y: Integer): Integer;

var F: function(X,Y: Integer): Integer;

F := Calc;

Приведем еще примеры:

type

TIntegerFunction = function: Integer;

TProcedure = procedure;

TStrProc = procedure(const S: string);

TMathFunc = function(X: Double): Double;

var

F: TIntegerFunction;//F is a parameterless function that returns an integer

Proc: TProcedure; //Proc is a parameterless procedure

SP: TStrProc; //SP is a procedure that takes a string parameter

M: TMathFunc; // M is a function that takes a Double (real) parameter

and returns a Double

procedure FuncProc(P: TIntegerFunction);

При работе с процедурной переменной важно понимать, что она не дублирует код подпрограммы, а содержит лишь ее адрес. Если обратиться к такой переменной как к подпрограмме, произойдет выполнение подпрограммы, адрес которой записан в переменной.

type

TFunc = function (X, Y: Double): Double;

var

F: TFunc;

function Power(X, Y: Double): Double;

begin

Result := Exp(Y * Ln(X));

end;

F := Power; // В переменную F заносится адрес функции Power

ShowMessage(floattostr(F(2, 4))); // Вызов Power посредством F

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

      1. 2.7.8. Стандартные процедуры и функции

    1. 2.8. Структура программных единиц

Любая программа (будем употреблять также термины «приложение» или «проект»)в Delphi состоит из файлапроекта (файл с расширением dpr)и одного или несколькихмодулей (файлы с расширениями pas).

      1. 2.8.1. Структура файла проекта

Файл проекта представляет собой программу, написанную на языке Object Pascal и предназначенную для обработки компилятором. Эта программа автоматически создается и изменяется, и очень редко возникает необходимость изменять этот файл вручную.

Синтаксически программа состоит из:

  1. заголовка,

  2. списка подключаемых к программе модулей (может отсутствовать),

  3. программного блока (описательной и исполнительной части).

program <имя программы>; //Заголовок программы

uses <имя>, ..., <имя>; //Подключение модулей

{$<директивы>} //Директивы компилятора

const ...; //Константы

type ...; //Типы данных

var ...; //Переменные

procedure <имя>;

begin ... end; //Процедуры

function <имя>;

begin ... end; //Функции

begin

<операторы>

end.